From 6379645833967d1225b82c60419909b736a7d3ba Mon Sep 17 00:00:00 2001 From: cafriedb Date: Thu, 5 Sep 2024 14:55:37 +0200 Subject: [PATCH] clean repository --- dev/activity_filter.py | 139 - dev/archiv/archiv py/activity_filter.py | 151 - .../archiv py/compare_databases_to_excel.py | 143 - dev/archiv/archiv py/compare_db_to_xcl.py | 176 - dev/archiv/archiv py/cpc_inputs.py | 110 - dev/archiv/archiv py/dopo_excel.py | 537 -- dev/archiv/archiv py/functions_v2.py | 940 ---- dev/archiv/archiv py/lca_scores.py | 123 - dev/archiv/archiv py/lca_to_excl.py | 193 - dev/archiv/archiv py/lca_to_xcl.py | 210 - dev/archiv/archiv py/methods.py | 58 - dev/archiv/archiv py/plots.py | 439 -- dev/archiv/archiv py/plots_excl.py | 427 -- dev/archiv/archiv py/plots_in_xcl.py | 439 -- dev/archiv/archiv py/sector_lca_scores_old.py | 520 -- dev/archiv/archiv py/sector_score_dict.py | 154 - dev/cpc inputs code/cpc_inputs.py | 126 - dev/database_comparison.py | 328 -- dev/exchanges_stats.ipynb | 476 -- dev/filter_sectors.py | 115 - dev/methods.py | 62 - .../compare_scores_plot_v1.ipynb | 1373 ----- dev/notebook tests/comparing dbs_v2.ipynb | 2365 -------- dev/notebook tests/comparing dbs_v3.ipynb | 800 --- dev/notebook tests/general_scan.ipynb | 1101 ---- dev/notebook tests/general_scan_v2.ipynb | 797 --- dev/notebook tests/general_scan_v3.ipynb | 1006 ---- dev/notebook tests/general_scan_v4.ipynb | 937 ---- dev/notebook tests/general_scan_v5.ipynb | 1507 ----- dev/notebook tests/jupyter_dopo_test1.ipynb | 4913 ----------------- dev/notebook tests/test-1.ipynb | 1697 ------ dev/notebook tests/test-2.ipynb | 1304 ----- dev/notebook tests/test_dopo_0309.ipynb | 778 --- dev/notebook tests/test_dopo_0409.ipynb | 1403 ----- dev/notebook tests/test_dopo_2908.ipynb | 1046 ---- dev/notebook tests/test_excel_flow.ipynb | 297 - .../test_function_flow_v4.ipynb | 1294 ----- dev/notebook tests/test_unnamed_column.ipynb | 962 ---- dev/plots_sector_lca_scores.py | 325 -- dev/sector_lca_scores.py | 416 -- dopo/example notebook/0509_v1.xlsx | Bin 0 -> 80777 bytes dopo/example notebook/~$0509_v1.xlsx | Bin 0 -> 165 bytes 42 files changed, 30187 deletions(-) delete mode 100644 dev/activity_filter.py delete mode 100644 dev/archiv/archiv py/activity_filter.py delete mode 100644 dev/archiv/archiv py/compare_databases_to_excel.py delete mode 100644 dev/archiv/archiv py/compare_db_to_xcl.py delete mode 100644 dev/archiv/archiv py/cpc_inputs.py delete mode 100644 dev/archiv/archiv py/dopo_excel.py delete mode 100644 dev/archiv/archiv py/functions_v2.py delete mode 100644 dev/archiv/archiv py/lca_scores.py delete mode 100644 dev/archiv/archiv py/lca_to_excl.py delete mode 100644 dev/archiv/archiv py/lca_to_xcl.py delete mode 100644 dev/archiv/archiv py/methods.py delete mode 100644 dev/archiv/archiv py/plots.py delete mode 100644 dev/archiv/archiv py/plots_excl.py delete mode 100644 dev/archiv/archiv py/plots_in_xcl.py delete mode 100644 dev/archiv/archiv py/sector_lca_scores_old.py delete mode 100644 dev/archiv/archiv py/sector_score_dict.py delete mode 100644 dev/cpc inputs code/cpc_inputs.py delete mode 100644 dev/database_comparison.py delete mode 100644 dev/exchanges_stats.ipynb delete mode 100644 dev/filter_sectors.py delete mode 100644 dev/methods.py delete mode 100644 dev/notebook tests/compare_scores_plot_v1.ipynb delete mode 100644 dev/notebook tests/comparing dbs_v2.ipynb delete mode 100644 dev/notebook tests/comparing dbs_v3.ipynb delete mode 100644 dev/notebook tests/general_scan.ipynb delete mode 100644 dev/notebook tests/general_scan_v2.ipynb delete mode 100644 dev/notebook tests/general_scan_v3.ipynb delete mode 100644 dev/notebook tests/general_scan_v4.ipynb delete mode 100644 dev/notebook tests/general_scan_v5.ipynb delete mode 100644 dev/notebook tests/jupyter_dopo_test1.ipynb delete mode 100644 dev/notebook tests/test-1.ipynb delete mode 100644 dev/notebook tests/test-2.ipynb delete mode 100644 dev/notebook tests/test_dopo_0309.ipynb delete mode 100644 dev/notebook tests/test_dopo_0409.ipynb delete mode 100644 dev/notebook tests/test_dopo_2908.ipynb delete mode 100644 dev/notebook tests/test_excel_flow.ipynb delete mode 100644 dev/notebook tests/test_function_flow_v4.ipynb delete mode 100644 dev/notebook tests/test_unnamed_column.ipynb delete mode 100644 dev/plots_sector_lca_scores.py delete mode 100644 dev/sector_lca_scores.py create mode 100644 dopo/example notebook/0509_v1.xlsx create mode 100644 dopo/example notebook/~$0509_v1.xlsx diff --git a/dev/activity_filter.py b/dev/activity_filter.py deleted file mode 100644 index ff9425d..0000000 --- a/dev/activity_filter.py +++ /dev/null @@ -1,139 +0,0 @@ -# Imports -# ------- - -import yaml - -# Sector filter functions from premise -# --------------------------------------------------- - - -def _act_fltr( - database: list, - fltr=None, - mask=None, -): - """Filter `database` for activities_list matching field contents given by `fltr` excluding strings in `mask`. - `fltr`: string, list of strings or dictionary. - If a string is provided, it is used to match the name field from the start (*startswith*). - If a list is provided, all strings in the lists are used and dataframes_dict are joined (*or*). - A dict can be given in the form : to filter for in . - `mask`: used in the same way as `fltr`, but filters add up with each other (*and*). - `filter_exact` and `mask_exact`: boolean, set `True` to only allow for exact matches. - - :param database: A lice cycle inventory database - :type database: brightway2 database object - :param fltr: value(s) to filter with. - :type fltr: Union[str, lst, dict] - :param mask: value(s) to filter with. - :type mask: Union[str, lst, dict] - :return: list of activity data set names - :rtype: list - - """ - if fltr is None: - fltr = {} - if mask is None: - mask = {} - - # default field is name - if isinstance(fltr, (list, str)): - fltr = {"name": fltr} - if isinstance(mask, (list, str)): - mask = {"name": mask} - - assert len(fltr) > 0, "Filter dict must not be empty." - - # find `act` in `database` that match `fltr` - # and do not match `mask` - filters = database - for field, value in fltr.items(): - if isinstance(value, list): - for val in value: - filters = [a for a in filters if val in a[field]] - - # filters.extend([ws.either(*[ws.contains(field, v) for v in value])]) - else: - filters = [a for a in filters if value in a[field]] - - # filters.append(ws.contains(field, value)) - - if mask: - for field, value in mask.items(): - if isinstance(value, list): - for val in value: - filters = [f for f in filters if val not in f[field]] - # filters.extend([ws.exclude(ws.contains(field, v)) for v in value]) - else: - filters = [f for f in filters if value not in f[field]] - # filters.append(ws.exclude(ws.contains(field, value))) - - return filters - - -def generate_sets_from_filters(yaml_filepath, database) -> dict: - """ - Generate a dictionary with sets of activity names for - technologies from the filter specifications. - - :param filtr: - :func:`activity_maps.InventorySet._act_fltr`. - :return: dictionary with the same keys as provided in filter - and a set of activity data set names as values. - :rtype: dict - """ - - filtr = _get_mapping(yaml_filepath, var="ecoinvent_aliases") - - names = [] - - for entry in filtr.values(): - if "fltr" in entry: - if isinstance(entry["fltr"], dict): - if "name" in entry["fltr"]: - names.extend(entry["fltr"]["name"]) - elif isinstance(entry["fltr"], list): - names.extend(entry["fltr"]) - else: - names.append(entry["fltr"]) - - # subset = list( - # ws.get_many( - # database, - # ws.either(*[ws.contains("name", name) for name in names]), - # ) - # ) - - subset = [a for a in database if any(x in a["name"] for x in names)] - - techs = { - tech: _act_fltr(subset, fltr.get("fltr"), fltr.get("mask")) - for tech, fltr in filtr.items() - } - - mapping = {tech: {act for act in actlst} for tech, actlst in techs.items()} - - return mapping - - -def _get_mapping(filepath, var): - """ - Loa a YAML file and return a dictionary given a variable. - :param filepath: YAML file path - :param var: variable to return the dictionary for. - :param model: if provided, only return the dictionary for this model. - :return: a dictionary - """ - - with open(filepath, "r", encoding="utf-8") as stream: - techs = yaml.full_load(stream) - - mapping = {} - for key, val in techs.items(): - if var in val: - mapping[key] = val[var] - - return mapping - - -# Example on how to call the functions to create a set of filtered activities_list -# set_from_fltrs = generate_sets_from_filters(yaml_filepath, database=ei39SSP) diff --git a/dev/archiv/archiv py/activity_filter.py b/dev/archiv/archiv py/activity_filter.py deleted file mode 100644 index ff90eee..0000000 --- a/dev/archiv/archiv py/activity_filter.py +++ /dev/null @@ -1,151 +0,0 @@ -# Imports -# ------- - -import yaml - -# Sector filter functions from premise -# --------------------------------------------------- - -def act_fltr( - database: list, - fltr = None, - mask = None, -): - """Filter `database` for activities_list matching field contents given by `fltr` excluding strings in `mask`. - `fltr`: string, list of strings or dictionary. - If a string is provided, it is used to match the name field from the start (*startswith*). - If a list is provided, all strings in the lists are used and dataframes_dict are joined (*or*). - A dict can be given in the form : to filter for in . - `mask`: used in the same way as `fltr`, but filters add up with each other (*and*). - `filter_exact` and `mask_exact`: boolean, set `True` to only allow for exact matches. - - :param database: A lice cycle inventory database - :type database: brightway2 database object - :param fltr: value(s) to filter with. - :type fltr: Union[str, lst, dict] - :param mask: value(s) to filter with. - :type mask: Union[str, lst, dict] - :return: list of activity data set names - :rtype: list - - """ - if fltr is None: - fltr = {} - if mask is None: - mask = {} - - # default field is name - if isinstance(fltr, (list, str)): - fltr = {"name": fltr} - if isinstance(mask, (list, str)): - mask = {"name": mask} - - assert len(fltr) > 0, "Filter dict must not be empty." - - # find `act` in `database` that match `fltr` - # and do not match `mask` - filters = database - for field, value in fltr.items(): - if isinstance(value, list): - for val in value: - filters = [a for a in filters if val in a[field]] - - #filters.extend([ws.either(*[ws.contains(field, v) for v in value])]) - else: - filters = [ - a for a in filters if value in a[field] - ] - - #filters.append(ws.contains(field, value)) - - - if mask: - for field, value in mask.items(): - if isinstance(value, list): - for val in value: - filters = [f for f in filters if val not in f[field]] - #filters.extend([ws.exclude(ws.contains(field, v)) for v in value]) - else: - filters = [f for f in filters if value not in f[field]] - #filters.append(ws.exclude(ws.contains(field, value))) - - return filters - - -def generate_sets_from_filters(yaml_filepath, database=None) -> dict: - """ - Generate a dictionary with sets of activity names for - technologies from the filter specifications. - - :param filtr: - :func:`activity_maps.InventorySet.act_fltr`. - :return: dictionary with the same keys as provided in filter - and a set of activity data set names as values. - :rtype: dict - """ - - filtr=get_mapping(yaml_filepath, var='ecoinvent_aliases') - - names = [] - - for entry in filtr.values(): - if "fltr" in entry: - if isinstance(entry["fltr"], dict): - if "name" in entry["fltr"]: - names.extend(entry["fltr"]["name"]) - elif isinstance(entry["fltr"], list): - names.extend(entry["fltr"]) - else: - names.append(entry["fltr"]) - - #subset = list( - # ws.get_many( - # database, - # ws.either(*[ws.contains("name", name) for name in names]), - # ) - #) - - subset=[ - a for a in database if any( - - - x in a["name"] for x in names - ) - ] - - - techs = { - tech: act_fltr(subset, fltr.get("fltr"), fltr.get("mask")) - for tech, fltr in filtr.items() - } - - mapping = { - tech: {act for act in actlst} for tech, actlst in techs.items() - } - - - return mapping - -def get_mapping(filepath, var): - """ - Loa a YAML file and return a dictionary given a variable. - :param filepath: YAML file path - :param var: variable to return the dictionary for. - :param model: if provided, only return the dictionary for this model. - :return: a dictionary - """ - - with open(filepath, "r", encoding="utf-8") as stream: - techs = yaml.full_load(stream) - - mapping = {} - for key, val in techs.items(): - if var in val: - mapping[key] = val[var] - - return mapping - - -# Example on how to call the functions to create a set of filtered activities_list -#set_from_fltrs = generate_sets_from_filters(yaml_filepath, database=ei39SSP) - diff --git a/dev/archiv/archiv py/compare_databases_to_excel.py b/dev/archiv/archiv py/compare_databases_to_excel.py deleted file mode 100644 index 2800a0f..0000000 --- a/dev/archiv/archiv py/compare_databases_to_excel.py +++ /dev/null @@ -1,143 +0,0 @@ -import pandas as pd - -def _lca_scores_compare(database_dict, method_dict): - # Dictionary to store DataFrames for each sector - sector_dataframes = {} - - # Labels for the DataFrame columns - labels = [ - "activity", - "activity key", - "reference product", - "location", - "method name", - "method unit", - "total", - ] - - # Loop through each sector in the database_dict - for sector, sector_data in database_dict.items(): - # Initialize a dictionary to hold DataFrames for each method in the current sector - method_dataframes = {} - - # Loop through each method in method_dict - for meth_key, meth_info in method_dict.items(): - data = [] # Initialize a new list to hold data for the current method - - # Extract the 'method name' tuple from the current method info - method_name = meth_info['method name'] - method_unit = meth_info['unit'] - - # Now loop through each activity in the sector - for act in sector_data['activities']: - # Ensure the activity is an instance of the expected class - if not isinstance(act, bd.backends.peewee.proxies.Activity): - raise ValueError("`activities` must be an iterable of `Activity` instances") - - # Perform LCA calculations - lca = bw.LCA({act: 1}, method_name) - lca.lci() - lca.lcia() - - # Collect data for the current activity and method - data.append([ - act["name"], - act.key, - act.get("reference product"), - act.get("location", "")[:25], - method_name, - method_unit, - lca.score, - ]) - - # Convert the data list to a DataFrame and store it in the sector's dictionary - method_dataframes[meth_key] = pd.DataFrame(data, columns=labels) - - # Store the method_dataframes dictionary in the sector_dataframes dictionary - sector_dataframes[sector] = method_dataframes - - # Now `sector_dataframes` is a dictionary where each key is a sector, and the value is another dictionary with method names and their corresponding DataFrames - return sector_dataframes - - -import pandas as pd - -def _relative_changes_df(database_dict_eco, database_dict_premise): - - ecoinvent_scores = _lca_scores_compare(database_dict_eco) - premise_scores = _lca_scores_compare(database_dict_premise) - - relative_dict = {} - - # Iterate over sectors - for sector_key in ecoinvent_scores: - # Initialize the sector key in the output dictionary - if sector_key not in relative_dict: - relative_dict[sector_key] = {} - - # Iterate over methods within the sector - for method_key in ecoinvent_scores[sector_key]: - # Check if the method_key exists in both dictionaries to avoid KeyError - if method_key in premise_scores.get(sector_key, {}): - # Get the corresponding DataFrames - df_ei = ecoinvent_scores[sector_key][method_key] - df_premise = premise_scores[sector_key][method_key] - - #print(df_ei['activity key']) - #print(df_premise) - - # Split the 'activity key' to extract the second part - df_ei['activity_code'] = df_ei['activity key'].apply(lambda x: x[1]) # Access the second element of the tuple - df_premise['activity_code'] = df_premise['activity key'].apply(lambda x: x[1]) - - # Merge the two dataframes based on the activity code and method name - merged_df = pd.merge(df_ei, df_premise, on=['activity_code', 'method name'], how='outer', suffixes=('_ei', '_premise')) - - # Calculate the relative change - merged_df['relative_change'] = ((merged_df['total_premise'] - merged_df['total_ei']) / merged_df['total_ei']) * 100 - - # Store the result in the dictionary - relative_dict[sector_key][method_key] = merged_df - #merged_df=merged_df.drop('activity_code') - - return relative_dict - -from dopo_excel import add_sector_marker - -def relative_changes_db(database_dict_eco, database_dict_premise, excel_file): - - relative_dict = (_relative_changes_df(database_dict_eco, database_dict_premise)) - - # Prepare to save each LCA score table to a different worksheet in the same Excel file - - column_positions = {} #stores the indexes of columns for plotting - with pd.ExcelWriter(excel_file, engine='openpyxl') as writer: - for sector in relative_dict.keys(): - relative_changes = relative_dict[sector] - - for method, table in relative_changes.items(): - # Create a DataFrame for the current LCA score table - df = pd.DataFrame(table) - - # Add sector marker - df = add_sector_marker(df, sector) #!! ADJUST POSITION - - # Sort the DataFrame by 'relative_change' from largest negative to largest positive - df = df.sort_values(by='relative_change', ascending=False) - - # Add a 'rank' column based on the 'relative_change', ranking from most negative to least negative - df['rank'] = df['relative_change'].rank(ascending=False, method='dense').astype(int) - - # Get the index values of columns - columns_of_interest = ["rank", "relative_change", "method", "method unit", ] - positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns} - column_positions[method] = positions - - # Generate worksheet name - worksheet_name = f"{sector}_{method}" - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - - # Save the DataFrame to the Excel file in a new worksheet - df.to_excel(writer, sheet_name=worksheet_name, index=False) - return column_positions \ No newline at end of file diff --git a/dev/archiv/archiv py/compare_db_to_xcl.py b/dev/archiv/archiv py/compare_db_to_xcl.py deleted file mode 100644 index 062cb54..0000000 --- a/dev/archiv/archiv py/compare_db_to_xcl.py +++ /dev/null @@ -1,176 +0,0 @@ -import pandas as pd - -import re -import pandas as pd -from dopo import generate_sets_from_filters -from dopo import compare_activities_multiple_methods -from dopo import small_inputs_to_other_column -import openpyxl -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series -from openpyxl.chart import BarChart, Reference - -def _lca_scores_compare(database_dict, method_dict): - # Dictionary to store DataFrames for each sector - sector_dataframes = {} - - # Labels for the DataFrame columns - labels = [ - "activity", - "activity key", - "reference product", - "location", - "method name", - "method unit", - "total", - ] - - # Loop through each sector in the database_dict - for sector, sector_data in database_dict.items(): - # Initialize a dictionary to hold DataFrames for each method in the current sector - method_dataframes = {} - - # Loop through each method in method_dict - for meth_key, meth_info in method_dict.items(): - data = [] # Initialize a new list to hold data for the current method - - # Extract the 'method name' tuple from the current method info - method_name = meth_info['method name'] - method_unit = meth_info['unit'] - - # Now loop through each activity in the sector - for act in sector_data['activities']: - # Ensure the activity is an instance of the expected class - if not isinstance(act, bd.backends.peewee.proxies.Activity): - raise ValueError("`activities` must be an iterable of `Activity` instances") - - # Perform LCA calculations - lca = bw.LCA({act: 1}, method_name) - lca.lci() - lca.lcia() - - # Collect data for the current activity and method - data.append([ - act["name"], - act.key, - act.get("reference product"), - act.get("location", "")[:25], - method_name, - method_unit, - lca.score, - ]) - - # Convert the data list to a DataFrame and store it in the sector's dictionary - method_dataframes[meth_key] = pd.DataFrame(data, columns=labels) - - # Store the method_dataframes dictionary in the sector_dataframes dictionary - sector_dataframes[sector] = method_dataframes - - # Now `sector_dataframes` is a dictionary where each key is a sector, and the value is another dictionary with method names and their corresponding DataFrames - return sector_dataframes - - -import pandas as pd - -def _relative_changes_df(database_dict_eco, database_dict_premise): - - ecoinvent_scores = _lca_scores_compare(database_dict_eco) - premise_scores = _lca_scores_compare(database_dict_premise) - - relative_dict = {} - - # Iterate over sectors - for sector_key in ecoinvent_scores: - # Initialize the sector key in the output dictionary - if sector_key not in relative_dict: - relative_dict[sector_key] = {} - - # Iterate over methods within the sector - for method_key in ecoinvent_scores[sector_key]: - # Check if the method_key exists in both dictionaries to avoid KeyError - if method_key in premise_scores.get(sector_key, {}): - # Get the corresponding DataFrames - df_ei = ecoinvent_scores[sector_key][method_key] - df_premise = premise_scores[sector_key][method_key] - - #print(df_ei['activity key']) - #print(df_premise) - - # Split the 'activity key' to extract the second part - df_ei['activity_code'] = df_ei['activity key'].apply(lambda x: x[1]) # Access the second element of the tuple - df_premise['activity_code'] = df_premise['activity key'].apply(lambda x: x[1]) - - # Merge the two dataframes based on the activity code and method name - merged_df = pd.merge(df_ei, df_premise, on=['activity_code', 'method name'], suffixes=('_ei', '_premise')) - - # Calculate the relative change - merged_df['relative_change'] = ((merged_df['total_premise'] - merged_df['total_ei']) / merged_df['total_ei']) * 100 - - # Store the result in the dictionary - relative_dict[sector_key][method_key] = merged_df - - return relative_dict - -def _add_sector_marker(df, sector): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. - - It adds information about the sector for titel and labeling in plotting. - - Returns df with added column. - ''' - - # Add sector marker column - df['sector']=str(sector) # potentially remove! - # Reorder the columns to move 'sector' after 'product' - columns = list(df.columns) - - if 'product' in df.columns: - product_index = columns.index('product') - # Insert 'sector' after 'product' - columns.insert(product_index + 1, columns.pop(columns.index('sector'))) - else: - # If 'product' does not exist, 'sector' remains in the last column - columns.append(columns.pop(columns.index('sector'))) - - # Reassign the DataFrame with the new column order - df = df[columns] - return df - -def relative_changes_db(database_dict_eco, database_dict_premise, excel_file): - - relative_dict = (_relative_changes_df(database_dict_eco, database_dict_premise)) - - # Prepare to save each LCA score table to a different worksheet in the same Excel file - - column_positions = {} #stores the indexes of columns for plotting - with pd.ExcelWriter(excel_file, engine='openpyxl') as writer: - for sector in relative_dict.keys(): - relative_changes = relative_dict[sector] - - for method, table in relative_changes.items(): - # Create a DataFrame for the current LCA score table - df = pd.DataFrame(table) - - # Add sector marker - df = _add_sector_marker(df, sector) #!! ADJUST - - # Sort the DataFrame by 'relative_change' from largest negative to largest positive - df = df.sort_values(by='relative_change', ascending=False) - - # Add a 'rank' column based on the 'relative_change', ranking from most negative to least negative - df['rank'] = df['relative_change'].rank(ascending=False, method='dense').astype(int) - - # Get the index values of columns - columns_of_interest = ["rank", "relative_change", "method", "method unit", ] - positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns} - column_positions[method] = positions - - # Generate worksheet name - worksheet_name = f"{sector}_{method}" - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - - # Save the DataFrame to the Excel file in a new worksheet - df.to_excel(writer, sheet_name=worksheet_name, index=False) - return column_positions \ No newline at end of file diff --git a/dev/archiv/archiv py/cpc_inputs.py b/dev/archiv/archiv py/cpc_inputs.py deleted file mode 100644 index 5be3d61..0000000 --- a/dev/archiv/archiv py/cpc_inputs.py +++ /dev/null @@ -1,110 +0,0 @@ - -# Imports -# -------- - -#brightway -import brightway2 as bw -import bw2analyzer as ba - -#common -import pandas as pd -import numpy as np - -#to be completed -import ast - -# Function to generate dataframes containing inputs in cpc format not characterized from an activity list -# Level 2.3 plot dependency -# ------------------------------------------------------------------------------------------------------------------------------------ - -def get_cpc_inputs_of_activities(activities_list, input_type='list'): - - ''' - for param description see function lvl23_plot_input_comparison_plot_no_method - - NOTE: could adapt this function to get the outputs, or create another one. At the moment only inputs are considered. - - ''' - - def activity_list_inputs_cpc(activities_list, input_type): - all_inputs = [] - - if input_type == 'list': - activity_iterator = activities_list - elif input_type == 'dict': - activity_iterator = activities_list.values() - else: - raise ValueError("input_type must be either 'list' or 'dict'") - - for activity in activity_iterator: - inputs_keys = pd.Series({bw.get_activity(exc.input).key: exc.amount for exc in activity.technosphere()}, - name=activity['name'] + ', ' + activity['location']) - - # Adjust the way the key is presented - inputs_keys = inputs_keys.reset_index() - inputs_keys['full_key'] = inputs_keys.apply(lambda row: f"('{row['level_0']}', '{row['level_1']}')", axis=1) - inputs_keys = inputs_keys.drop(['level_0', 'level_1'], axis=1).set_index('full_key') - - # Add empty cpc column and activity information - inputs_keys.insert(0, 'identifier', activity['name'] + ', ' + activity['location']) - inputs_keys.insert(1, 'activity', activity['name']) - inputs_keys.insert(2, 'location', activity['location']) - inputs_keys.insert(3, 'unit', activity['unit']) - inputs_keys.insert(4, 'cpc', None) - - all_inputs.append(inputs_keys) - - # Combine all inputs into a single DataFrame - combined_inputs = pd.concat(all_inputs, axis=0) - - return combined_inputs - - def update_cpc_information(combined_inputs): - for index, row in combined_inputs.iterrows(): - # Transform each key to tuple - tuple_key = ast.literal_eval(index) - - # Get input activity for the key - input_activity = bw.get_activity(tuple_key) - - # Get cpc name for activity - cpc_name = ba.comparisons.get_cpc(input_activity) - - # Store cpc_name in the 'cpc' column of the combined_inputs dataframe - combined_inputs.at[index, 'cpc'] = cpc_name - - return combined_inputs - - def transform_dataframe(combined_inputs): - # Set 'identifier' as the new index and drop the 'full_key' index - combined_inputs = combined_inputs.reset_index().set_index('identifier').drop('full_key', axis=1) - - # Determine the index of the 'unit' column - unit_index = combined_inputs.columns.get_loc('unit') - - # Split the dataframe into two parts - combined_inputs_identifier = combined_inputs.iloc[:, :unit_index+1] - combined_inputs_cpc = combined_inputs.iloc[:, unit_index+1:] - #set index of to 'cpc' in combined_input_cpc - combined_inputs_cpc = combined_inputs_cpc.set_index('cpc') - - # Combine rows with the same index value in combined_inputs_cpc - combined_inputs_cpc = combined_inputs_cpc.groupby(level=0).agg(lambda x: np.sum(x) if x.dtype.kind in 'biufc' else x.iloc[0]) - # Transpose combined_inputs_cpc - combined_inputs_cpc_trans = combined_inputs_cpc.T - - # Merge combined_inputs_identifier and combined_inputs_cpc_trans - result = combined_inputs_identifier.join(combined_inputs_cpc_trans) - result = result.drop_duplicates() - - # Sort dataframe by activity and location aplphabetically and reset the index - result = result.sort_values(by=['activity', 'location']) - result = result.reset_index(drop=True) - return result - - # Execute the workflow - combined_inputs = activity_list_inputs_cpc(activities_list, input_type) - combined_inputs_with_cpc = update_cpc_information(combined_inputs) - final_result = transform_dataframe(combined_inputs_with_cpc) - - return final_result diff --git a/dev/archiv/archiv py/dopo_excel.py b/dev/archiv/archiv py/dopo_excel.py deleted file mode 100644 index 8fb9f3a..0000000 --- a/dev/archiv/archiv py/dopo_excel.py +++ /dev/null @@ -1,537 +0,0 @@ -# Functions for dopo in excel -# dependencies - -import re -import pandas as pd -from dopo import generate_sets_from_filters -from dopo import compare_activities_multiple_methods -from dopo import small_inputs_to_other_column -import openpyxl -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series -from openpyxl.chart import BarChart, Reference - -def process_yaml_files(files_dict, database): - ''' - - Runs through the files_dict reading the defined filters in the yaml files. - - With another function a list that contains the filtered activities is created from the chosen database. - - This activity list is saved within the corresponding key (sector) in the dictionary main_dict which is based on the files_dict. - - :param files_dict: dictionary of dictionaries. It should hold the yaml file path and the title in the first row of the yaml file. - Like so: files_dict['Cement']={'yaml': 'yamls\cement_small.yaml', 'yaml identifier': 'Cement'} - :param database: premise or ecoinvent database of choice. - - It returns an updated dictionary which contains filtered activity lists for each sector. - ''' - - main_dict=files_dict.copy() - for key, value in main_dict.items(): - yaml_file = value['yaml'] - yaml_identifier = value['yaml identifier'] - - # Generate the sector activities - sector_activities = generate_sets_from_filters(yaml_file, database=database) - - # Convert the set of activities to a list - activities_list = list(sector_activities[yaml_identifier]) - - # Add to the sectors_dict - main_dict[key]['activities'] = activities_list - - return main_dict - -def sector_lca_scores(main_dict, method_dict): - ''' - Generates the LCA score tables for activity list of each sector. - The tables contain total scores and cpc input contributions. - This is done by each method defined in the method dictionary. - - :param main_dict: dictionary which is returned by process_yaml_files function - :param method_dict: dictionary which is created with MethodFinder class - - It returns the main dictionary updated as scores dictionary which also holds the former information for each sector. - The LCA scores are stored by method name in the respective sector dictionary within the main dictionary. - ''' - - # Initialize scores_dict as a copy of main_dict - scores_dict = main_dict.copy() - - # Loop through each sector in main_dict - for sector in scores_dict.keys(): - # Extract activities for the current sector - sector_activities = scores_dict[sector]['activities'] - - # Calculate LCA scores using the specified method - lca_scores = compare_activities_multiple_methods( - activities_list=sector_activities, - methods=method_dict, - identifier=sector, - mode='absolute' - ) - - # Apply the small_inputs_to_other_column function with the cutoff value - lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02) - - # Save the LCA scores to the scores_dict - scores_dict[sector]['lca_scores'] = lca_scores - - return scores_dict - -# ----------------------------------------- -# CREATING EXCEL SHEETS WITH LCA TABLES -# ----------------------------------------- - -def sector_lca_scores_to_excel_and_column_positions(scores_dict, excel_file_name): - """ - What it does: - - Creates a dataframe for each method and sector from the lca scores dictionary - - Before storing each df in a worksheet in an excel file it: - - shortens the column labels of the input (removing cpc code) - - adds a sector name marker for keeping track in excel (when plotting can use it for labeling) - - adds statistics for plotting - - creates a dictionary which holds the indexes to the columns we need to call for plotting, this makes it dynamic. Otherwise need to hardcode index column number for openpxyl. - What it returns: - - Returns the index positions dictionary where the key is "sector_method" - - Creates excel file as defined by user - """ - - # Prepare to save each LCA score table to a different worksheet in the same Excel file - excel_file = excel_file_name - column_positions = {} #stores the indexes of columns for plotting - with pd.ExcelWriter(excel_file, engine='openpyxl') as writer: - for sector in scores_dict.keys(): - lca_scores = scores_dict[sector]['lca_scores'] - for method, table in lca_scores.items(): - # Create a DataFrame for the current LCA score table - df = pd.DataFrame(table) - - # Add sector marker - df = add_sector_marker(df, sector) #!! ADJUST POSITION - - # Add statistics to the DataFrame - df = add_statistics(df) - - # Get the index values of columns - columns_of_interest = ["total", "rank", "mean", "2std_abv", "2std_blw", "q1", "q3", "method", "method unit"] - positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns} - column_positions[method] = positions - - # Find the first input column and add it to the positions dictionary - first_input_col_index = find_first_input_column(df) - if first_input_col_index is not None: - positions["first_input"] = first_input_col_index - - # Store the positions for this method - column_positions[method] = positions - - # remove cpc from input labels - df = clean_column_labels(df) - - # Generate a worksheet name - worksheet_name = f"{method}" #f"{sector}_{method}" - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - - # Save the DataFrame to the Excel file in a new worksheet - df.to_excel(writer, sheet_name=worksheet_name, index=False) - return column_positions - - -def add_statistics(df, column_name='total'): - - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions - - It adds statistical indicators to a dataframe based on total column which are used for plotting. - - returns updated dataframe - ''' - - #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values) - df['rank'] = df[column_name].rank(method="first", ascending="False") - - # Calculate mean, standard deviation, and IQR - df['mean'] = df[column_name].mean() - df['2std_abv'] = df['mean'] + df[column_name].std() * 2 - df['2std_blw'] = df['mean'] - df[column_name].std() * 2 - df['q1'] = df[column_name].quantile(0.25) - df['q3'] = df[column_name].quantile(0.75) - - # Reorder the columns to place the new columns after 'total' - cols = df.columns.tolist() - total_index = cols.index(column_name) + 1 - new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3'] - cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)] - - return df[cols] - - -def find_first_input_column(df): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be called before clean_column_labels function. - Detects the first column in the dataframe which contains input contribution data and saves its index. - This is relevant for calling the right column for defining the to be plotted data dynamically as not all dataframes have the same column order (some contain "direct emissions" for instance). - ''' - - def clean_label(label): - return label if label is not None else 'Unnamed' - - # Apply the cleaning function to all column names - df.columns = [clean_label(col) for col in df.columns] - - # Regular expression pattern to match "Number: Name" - pattern = r'^\d+:\s*' - - for idx, column in enumerate(df.columns): - if (column is not None and re.match(pattern, column)) or column == 'Unnamed' or column == 'direct emissions': - return idx - - return None - -def clean_column_labels(df): - - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be run after find_first_input_column. - - It removes unnecessary numbers in the column header. - - Returns df with formated column labels. - ''' - # Function to remove numbers and colon from column names - def clean_label(label): - if label is None: - return 'Unnamed' # or return 'Unnamed' if you prefer a placeholder - return re.sub(r'^\d+:\s*', '', str(label)) - - # Apply the cleaning function to all column names - df.columns = [clean_label(col) for col in df.columns] - - return df - -def add_sector_marker(df, sector): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. - - It adds information about the sector for titel and labeling in plotting. - - Returns df with added column. - ''' - - # Add sector marker column - df['sector']=str(sector) # potentially remove! - # Reorder the columns to move 'sector' after 'product' - columns = list(df.columns) - product_index = columns.index('product') - # Insert 'sector' after 'product' - columns.insert(product_index + 1, columns.pop(columns.index('sector'))) - # Reassign the DataFrame with the new column order - df = df[columns] - return df - - -# IN EXCEL -def categorize_sheets_by_sector(file_path): - # Load the workbook - workbook = load_workbook(filename=file_path, read_only=True) - - # Initialize a dictionary to hold sectors and their corresponding sheet names - worksheet_dict = {} - - # Iterate over all sheet names in the workbook - for sheet_name in workbook.sheetnames: - # Split the sheet name to extract the sector (assumes sector is the first part) - sector = sheet_name.split('_')[0] - - # Add the sheet name to the corresponding sector in the dictionary - if sector in worksheet_dict: - worksheet_dict[sector].append(sheet_name) - else: - worksheet_dict[sector] = [sheet_name] - - return worksheet_dict - - -# ---- -#PLOTS -# ---- - -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series - -def dot_plots(filepath_workbook, worksheet_dict, index_positions): - - # Load the workbook - wb = load_workbook(filepath_workbook) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - current_row = 1 # Start placing charts from row 1 - current_col = 1 # Start placing charts from column 1 - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - charts_per_row = 3 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find min_row, max_row and max_column - max_row = ws.max_row - max_column = ws.max_column - min_row = 1 - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - total_col = positions.get("total", None) + 1 - rank_col = positions.get("rank", None) + 1 - mean_col = positions.get("mean", None) + 1 - std_adv_col = positions.get("2std_abv", None) + 1 - std_blw_col = positions.get("2std_blw", None) + 1 - q1_col = positions.get("q1", None) + 1 - q3_col = positions.get("q3", None) + 1 - method_col = positions.get("method", None) + 1 - method_unit_col = positions.get("method unit", None) + 1 - - # Ensure that all required columns are present - if None in [total_col, rank_col, mean_col, std_adv_col, std_blw_col, q1_col, q3_col, method_col, method_unit_col]: - print(f"Warning: Missing columns in worksheet '{worksheet_name}' for sector '{sector}'. Skipping...") - continue - - # Create a ScatterChart (or other chart type as needed) - chart = ScatterChart() - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{method_value} LCA scores for {sector} sector" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.y_axis.title = f"{method_unit_value}" - chart.x_axis.title = 'activity rank' - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - - # Define the data range for the chart - y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row) - x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row) - - # Create a series and add it to the chart - series = Series(y_values, x_values, title_from_data=True) - chart.series.append(series) - chart.style = 9 - - # Customize the series to show only markers (dots) - series.marker.symbol = "circle" - series.marker.size = 5 - series.graphicalProperties.line.noFill = True - - # ADJUST X-AXIS - chart.x_axis.tickLblPos = "low" - chart.x_axis.majorGridlines = None - chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines - chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work - - chart.x_axis.scaling.orientation = "minMax" - chart.x_axis.crosses = "autoZero" - chart.x_axis.axPos = "b" - chart.x_axis.delete = False - - # ADJUST Y-AXIS - chart.y_axis.tickLblPos = "nextTo" # Position the labels next to the tick marks - chart.y_axis.delete = False # Ensure axis is not deleted - chart.y_axis.number_format = '0.00000' - chart.y_axis.majorGridlines = None - - # ADD STATS - # MEAN - mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row) - mean_series = Series(mean_y, x_values, title_from_data="True") - chart.series.append(mean_series) - mean_series.marker.symbol = "none" # No markers, just a line - mean_series.graphicalProperties.line.solidFill = "FF0000" # Red line for mean value - mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # IQR - iqr1 = Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row) - iqr3 = Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row) - iqr1_series = Series(iqr1, x_values, title_from_data="True") - iqr3_series = Series(iqr3, x_values, title_from_data="True") - chart.series.append(iqr1_series) - chart.series.append(iqr3_series) - iqr1_series.marker.symbol = "none" # No markers, just a line - iqr3_series.marker.symbol = "none" - iqr1_series.graphicalProperties.line.solidFill = "6082B6" # Blue line - iqr3_series.graphicalProperties.line.solidFill = "6082B6" - iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # STD - std_abv = Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row) - std_blw = Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row) - std_abv_series = Series(std_abv, x_values, title_from_data="True") - std_blw_series = Series(std_blw, x_values, title_from_data="True") - chart.series.append(std_abv_series) - chart.series.append(std_blw_series) - std_abv_series.marker.symbol = "none" # No markers, just a line - std_blw_series.marker.symbol = "none" - std_abv_series.graphicalProperties.line.solidFill = "FFC300" # yellow line - std_blw_series.graphicalProperties.line.solidFill = "FFC300" - std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # Set legend position to the right of the plot area - chart.legend.position = 'r' # 'r' for right - chart.legend.overlay = False - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - wb.save(filepath_workbook) - return current_row - - -from openpyxl import load_workbook -from openpyxl.chart import BarChart, Reference - -def stacked_bars(filepath_workbook, worksheet_dict, index_positions, current_row_dot_plot): - # Load the workbook - wb = load_workbook(filepath_workbook) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - current_row = current_row_dot_plot + chart_height # Start placing charts from row where dot plots have left of - current_col = 1 # Start placing charts from column 1 - charts_per_row = 3 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - - # Find min_row, max_row and max_column - max_row = ws.max_row - max_column = ws.max_column - input_min_col = positions.get("first_input", None) + 1 - rank_col = positions.get("rank", None) + 1 - method_col = positions.get("method", None) + 1 - method_unit_col = positions.get("method unit", None) + 1 - - chart = BarChart() - chart.type = "bar" - chart.style = 2 - chart.grouping = "stacked" - chart.overlap = 100 - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{sector} sector inputs contributions to {method_value}" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.y_axis.title = f"{method_unit_value}" - - chart.x_axis.title = 'activity index' - - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - chart.legend.overlay = False - - # Define data - data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col=max_column) - cats = Reference(ws, min_col=rank_col, min_row=2, max_row=max_row) - - chart.add_data(data, titles_from_data=True) - chart.set_categories(cats) - chart.shape = 4 - - # Modify each series in the chart to disable the inversion of negative values - for series in chart.series: - series.invertIfNegative = False - - # y-axis ticks - chart.y_axis.tickLblPos = "nextTo" - chart.y_axis.delete = False # Ensure axis is not deleted - chart.y_axis.number_format = '0.000' - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Add the chart to the chart worksheet - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - wb.save(filepath_workbook) - diff --git a/dev/archiv/archiv py/functions_v2.py b/dev/archiv/archiv py/functions_v2.py deleted file mode 100644 index 39f939d..0000000 --- a/dev/archiv/archiv py/functions_v2.py +++ /dev/null @@ -1,940 +0,0 @@ -""" -This module contains functions for the premise validation framework. -It includes functions for filtering of premise transformed ecoinvent databases, collecting relevant -data in a suitable format, and visualizing datasets. -Some of the functions included are brightway2 functions. - -""" -#NOTE: The comments are not all up to date. - -# Python import dependencies -# -------------------------- -from premise import * - -# data?? -import os -import yaml -import peewee as pw - -#brightway -import brightway2 as bw -import bw2analyzer as ba -import bw2data as bd - -#common -import pandas as pd -import numpy as np - -#plotting -import matplotlib.pyplot as plt -import seaborn as sns - -#to be completed -import ast - -# ----------------------------------------------------------------------------- -# DATABASE FILTERING -# ----------------------------------------------------------------------------- - - -# Sector filter functions from premise -# --------------------------------------------------- - -def act_fltr( - database: list, - fltr = None, - mask = None, -): - """Filter `database` for activities_list matching field contents given by `fltr` excluding strings in `mask`. - `fltr`: string, list of strings or dictionary. - If a string is provided, it is used to match the name field from the start (*startswith*). - If a list is provided, all strings in the lists are used and dataframes_dict are joined (*or*). - A dict can be given in the form : to filter for in . - `mask`: used in the same way as `fltr`, but filters add up with each other (*and*). - `filter_exact` and `mask_exact`: boolean, set `True` to only allow for exact matches. - - :param database: A lice cycle inventory database - :type database: brightway2 database object - :param fltr: value(s) to filter with. - :type fltr: Union[str, lst, dict] - :param mask: value(s) to filter with. - :type mask: Union[str, lst, dict] - :return: list of activity data set names - :rtype: list - - """ - if fltr is None: - fltr = {} - if mask is None: - mask = {} - - # default field is name - if isinstance(fltr, (list, str)): - fltr = {"name": fltr} - if isinstance(mask, (list, str)): - mask = {"name": mask} - - assert len(fltr) > 0, "Filter dict must not be empty." - - # find `act` in `database` that match `fltr` - # and do not match `mask` - filters = database - for field, value in fltr.items(): - if isinstance(value, list): - for val in value: - filters = [a for a in filters if val in a[field]] - - #filters.extend([ws.either(*[ws.contains(field, v) for v in value])]) - else: - filters = [ - a for a in filters if value in a[field] - ] - - #filters.append(ws.contains(field, value)) - - - if mask: - for field, value in mask.items(): - if isinstance(value, list): - for val in value: - filters = [f for f in filters if val not in f[field]] - #filters.extend([ws.exclude(ws.contains(field, v)) for v in value]) - else: - filters = [f for f in filters if value not in f[field]] - #filters.append(ws.exclude(ws.contains(field, value))) - - return filters - - -def generate_sets_from_filters(yaml_filepath, database=None) -> dict: - """ - Generate a dictionary with sets of activity names for - technologies from the filter specifications. - - :param filtr: - :func:`activity_maps.InventorySet.act_fltr`. - :return: dictionary with the same keys as provided in filter - and a set of activity data set names as values. - :rtype: dict - """ - - filtr=get_mapping(yaml_filepath, var='ecoinvent_aliases') - - names = [] - - for entry in filtr.values(): - if "fltr" in entry: - if isinstance(entry["fltr"], dict): - if "name" in entry["fltr"]: - names.extend(entry["fltr"]["name"]) - elif isinstance(entry["fltr"], list): - names.extend(entry["fltr"]) - else: - names.append(entry["fltr"]) - - #subset = list( - # ws.get_many( - # database, - # ws.either(*[ws.contains("name", name) for name in names]), - # ) - #) - - subset=[ - a for a in database if any( - - - x in a["name"] for x in names - ) - ] - - - techs = { - tech: act_fltr(subset, fltr.get("fltr"), fltr.get("mask")) - for tech, fltr in filtr.items() - } - - mapping = { - tech: {act for act in actlst} for tech, actlst in techs.items() - } - - - return mapping - -def get_mapping(filepath, var): - """ - Loa a YAML file and return a dictionary given a variable. - :param filepath: YAML file path - :param var: variable to return the dictionary for. - :param model: if provided, only return the dictionary for this model. - :return: a dictionary - """ - - with open(filepath, "r", encoding="utf-8") as stream: - techs = yaml.full_load(stream) - - mapping = {} - for key, val in techs.items(): - if var in val: - mapping[key] = val[var] - - return mapping - - -# Example on how to call the functions to create a set of filtered activities_list -#set_from_fltrs = generate_sets_from_filters(filtr=get_mapping(yaml_filepath, "ecoinvent_aliases"), database=ei39SSP - -# ----------------------------------------------------------------------------- -# METHODS -# ----------------------------------------------------------------------------- - -# Class for generating method dictionary -# -------------------------------------- -class MethodFinder: - def __init__(self): - self.all_methods = {} - self.method_counter = 0 - - def find_and_create_method(self, criteria, exclude=None, custom_key=None): - methods = bw.methods - # Start with all methods - filtered_methods = methods - # Apply inclusion criteria - for criterion in criteria: - filtered_methods = [m for m in filtered_methods if criterion in str(m)] - # Apply exclusion criteria if provided - if exclude: - for exclusion in exclude: - filtered_methods = [m for m in filtered_methods if exclusion not in str(m)] - # Check if we found exactly one method - if len(filtered_methods) == 0: - raise ValueError("No methods found matching the given criteria.") - elif len(filtered_methods) > 1: - raise ValueError(f"Multiple methods found: {filtered_methods}. Please provide more specific criteria.") - # Get the first (and only) method - selected_method = filtered_methods[0] - # Create the Brightway Method object - method_object = bw.Method(selected_method) - - # Generate a key for storing the method - if custom_key is None: - self.method_counter += 1 - key = f"method_{self.method_counter}" - else: - key = custom_key - - # Store the method object and additional information in the dictionary - self.all_methods[key] = { - 'object': method_object, - 'method name': str(method_object.name), - 'short name' : str(method_object.name[2]), - 'unit': str(method_object.metadata.get('unit', 'Unknown')) - } - - # Return both the method object and its key - return {key: self.all_methods[key]} - - def get_all_methods(self): - return self.all_methods - -# Setting up the methods for outlier detection -# --------------------------------------------------------------------- - -def find_and_create_method(criteria, exclude=None): - """ - Find a method based on given criteria and create a Brightway Method object. This will choose the first method. - Thus, filter criteria need to be defined precisely to pick the right method. - - :param criteria: List of strings that should be in the method name - :param exclude: List of strings that should not be in the method name (optional) - :return: Brightway Method object - """ - methods = bw.methods - - # Start with all methods - filtered_methods = methods - - # Apply inclusion criteria - for criterion in criteria: - filtered_methods = [m for m in filtered_methods if criterion in str(m)] - - # Apply exclusion criteria if provided - if exclude: - for exclusion in exclude: - filtered_methods = [m for m in filtered_methods if exclusion not in str(m)] - - # Check if we found exactly one method - if len(filtered_methods) == 0: - raise ValueError("No methods found matching the given criteria.") - elif len(filtered_methods) > 1: - raise ValueError(f"Multiple methods found: {filtered_methods}. Please provide more specific criteria.") - - # Get the first (and only) method - selected_method = filtered_methods[0] - - # Create and return the Brightway Method object storing it in a defined variable outside of the funciton. - return bw.Method(selected_method) - -#NOTE: Would a yaml filter make it easier? OR Could have predefined methods?""" - -# Function for creating method dictionaries which holds method name and unit for later tracking of methods. -# --------------------------------------------------------------------------------------------------------- - -def create_method_dict(selected_methods_list): - ''' - :selected_methods_list: a list of variables which contain the selected methods - - ''' - method_dict = {} - for method in selected_methods_list: - method_dict[method] = { - 'short name': str(method.name[2]), - 'method name': str(method.name), - 'method unit': str(method.metadata['unit']) - } - - return method_dict - -# ------------------------------------------------------------------------------------------------------------------------------ -# CALCULATIONS -# ------------------------------------------------------------------------------------------------------------------------------ - -# Function based on brightways bw2analyzer (ba) function for generating dataframe containing total score and contribution by inputs -# ----------------------------------------------------------------------------------------------------------------------------- - -def compare_activities_multiple_methods(activities_list, methods, identifier, output_format='pandas', mode='absolute'): - """ - Compares a set of activities by multiple methods, stores each generated dataframe as a variable (the method is the variable name) in a dictionary. - - :param activities_list: List of activities to compare - :param methods: List of Brightway Method objects - :param identifier: A string used in defining the variable names to better identify comparisons (e.g. sector name). - :param output_format: Output format for the comparison (default: 'pandas') - :param mode: Mode for the comparison (default: 'absolute'; others: 'relative') - :return: Dictionary of resulting dataframes from the comparisons - """ - dataframes_dict = {} - - for method_key, method_details in methods.items(): - result = ba.comparisons.compare_activities_by_grouped_leaves( - activities_list, - method_details['object'].name, - output_format=output_format, - mode=mode - ) - - # Create a variable name using the method name tuple and identifier - method_name = method_details['object'].name[2].replace(' ', '_').lower() - var_name = f"{identifier}_{method_name}" - - #add two columns method and method unit to the df - result['method'] = str(method_details['object'].name[2]) - result['method unit'] = str(method_details['object'].metadata['unit']) - - #order the columns after column unit - cols = list(result.columns) - unit_index = cols.index('unit') - cols.insert(unit_index + 1, cols.pop(cols.index('method'))) - cols.insert(unit_index + 2, cols.pop(cols.index('method unit'))) - result = result[cols] - - # Order the rows based on 'activity' and 'location' columns - result = result.sort_values(['activity', 'location']) - - # Reset the index numbering - result = result.reset_index(drop=True) - - # Store the result in the dictionary - dataframes_dict[var_name] = result - - return dataframes_dict - - -# Function for creating 'other' category for insignificant input contributions (for dataframes generated with compare_activities_multiple_methods) -# ------------------------------------------------------------------------------------------------------------------------------------------------- - -def small_inputs_to_other_column(dataframes_dict, cutoff=0.01): - ''' - Aggregate values into a new 'other' column for those contributing less than or equal to the cutoff value to the 'total' column value. - Set the aggregated values to zero in their original columns. - Remove any columns that end up containing only zeros. - - :param dataframes_dict: the dictionary - - ''' - - processed_dict = {} - - for key, df in dataframes_dict.items(): - # Identify the 'total' column - total_col_index = df.columns.get_loc('total') - - # Separate string and numeric columns - string_cols = df.iloc[:, :total_col_index] - numeric_cols = df.iloc[:, total_col_index:] - numeric_cols = numeric_cols.astype(float) - - # Calculate the threshold for each row (1% of total) - threshold = numeric_cols['total'] * cutoff - - # Create 'other' column - numeric_cols['other'] = 0.0 - - # Process each numeric column (except 'total' and 'other') - for col in numeric_cols.columns[1:-1]: # Skip 'total' and 'other' - # Identify values less than the threshold - mask = abs(numeric_cols[col]) < threshold #abs() to include negative contributions - - # Add these values to 'other' - numeric_cols.loc[mask, 'other'] += numeric_cols.loc[mask, col] - - # Set these values to zero in the original column - numeric_cols.loc[mask, col] = 0 - - # Remove columns with all zeros (except 'total' and 'other') - cols_to_keep = ['total'] + [col for col in numeric_cols.columns[1:-1] - if not (numeric_cols[col] == 0).all()] - cols_to_keep.append('other') - - numeric_cols = numeric_cols[cols_to_keep] - - # Combine string and processed numeric columns - processed_df = pd.concat([string_cols, numeric_cols], axis=1) - - #Sort columns by total - processed_df = processed_df.sort_values('total', ascending=False) - - # Store the processed DataFrame in the result dictionary - processed_dict[key] = processed_df - - return processed_dict - -# Function for saving created sector impact score dataframes to excel -# ------------------------------------------------------------------- - -def save_dataframes_to_excel(dataframes_dict, filepath, filename): - ''' - :param dataframes_dict: processed with other catgeory or not processed - :param filename: should contain ".xlsx" - ''' - # Ensure the directory exists - os.makedirs(filepath, exist_ok=True) - - # Create the full path for the Excel file - full_path = os.path.join(filepath, filename) - - # Create a Pandas Excel writer using XlsxWriter as the engine - with pd.ExcelWriter(full_path, engine='xlsxwriter') as writer: - # Iterate through the dictionary - for original_name, df in dataframes_dict.items(): - # Truncate the sheet name to 31 characters - sheet_name = original_name[:31] - - # Write each dataframe to a different worksheet - df.to_excel(writer, sheet_name=sheet_name, index=False) - - # If the sheet name was truncated, print a warning - if sheet_name != original_name: - print(f"Warning: Sheet name '{original_name}' was truncated to '{sheet_name}'") - - print(f"Excel file '{full_path}' has been created successfully.") - - -# -------------------------------------------------------------------------------------------------- -# PLOTS -# -------------------------------------------------------------------------------------------------- - -# GENERAL LEGEND -# -------------- -# Level 1-2.3 plots dependency: Legend to map indexes on x-axis to activities -# --------------------------------------------------------------------------------------- - -def generate_legend_text(data): - ''' - Maps the indexes on the x-axis to the activities to list them in a legend. - - :param data: it can take in a dictionary of dataframes or just a single dataframe - ''' - - legend_text = [] - - # Check if the input is a dictionary or a DataFrame - if isinstance(data, dict): - # Use the first DataFrame in the dictionary - first_key = next(iter(data)) - df = data[first_key] - elif isinstance(data, pd.DataFrame): - # Use the input DataFrame directly - df = data - else: - raise ValueError("Input must be either a dictionary of DataFrames or a DataFrame") - - # Create a list of tuples with (index, activity, location) - items = [(str(i), row['activity'], row['location']) for i, row in df.iterrows()] - # Sort the items based on the index - sorted_items = sorted(items, key=lambda x: x[0]) - # Add sorted items to legend_text - for i, activity, location in sorted_items: - legend_text.append(f"{i}: {activity} - {location}") - return legend_text - -# LEVEL 1 -# ------- -# Function for plotting: Level 1 dot plot with standard deviation and IQR range -# ------------------------------------------------------------------------------ - -def lvl1_plot(dataframes_dict, title_key=None): - ''' - Plots the total score value for each activity sorted from largest to smallest. Visualizes IQR and standard deviation. - Generates as many plots as methods were defined. - - :param dataframes_dict: dictionary resulting from the function "compare_activities_multiple_methods" (and subsequently "small_inputs_to_other_column") - :param title_key: some string for the plot titles (e.g. sector name) - - ''' - #NOTE: Units are not correctly shown on the y-axis yet. - - # Iterate over each dataframe and create individual plots - for idx, df in dataframes_dict.items(): - # Create a new figure for each plot - fig, ax = plt.subplots(figsize=(12, 6)) - - # Sort the DataFrame in descending order based on the 'total' column - sorted_df = df.sort_values(by='total', ascending=False) - - # Save the sorted index to order variable and call order variable in sns.swarmplot - order = sorted_df.index.tolist() - - # Calculate statistics - q1 = df['total'].quantile(0.25) - q3 = df['total'].quantile(0.75) - mean_gwp = df['total'].mean() - std_gwp = df['total'].std() - - # Plot using seaborn swarmplot - sns.swarmplot(data=df, x=df.index, y='total', dodge=True, ax=ax, order=order) - - # Add mean line - ax.axhline(mean_gwp, color='grey', linestyle='--', linewidth=1, label='Mean') - - # Add horizontal lines for Q1 and Q3 - ax.hlines(y=q3, xmin=-0.5, xmax=len(df)-0.5, color='lightblue', linestyle='dotted', linewidth=1, label='Q3 (75th percentile)') - ax.hlines(y=q1, xmin=-0.5, xmax=len(df)-0.5, color='lightblue', linestyle='dotted', linewidth=1, label='Q1 (25th percentile)') - - # Add horizontal shading for areas above and below 2 standard deviations from the mean - ax.axhspan(mean_gwp - 2 * std_gwp, mean_gwp - 3 * std_gwp, color='grey', alpha=0.2, label=">2 std below mean") - ax.axhspan(mean_gwp + 2 * std_gwp, mean_gwp + 3 * std_gwp, color='grey', alpha=0.2, label=">2 std above mean") - - # Add titles and labels - ax.set_title(f"{str(title_key)} - {df['method'].iloc[0]} in {df['method unit'].iloc[0]}") - ax.set_xlabel('Activity/ Dataset') - ax.set_ylabel(f"{df['method unit'].iloc[0]}") - - # Rotate x-axis labels if needed - ax.tick_params(axis='x', rotation=90) - - # Add legend - ax.legend() - - # Generate the legend text using the first dataframe - legend_text = generate_legend_text(dataframes_dict) - - # Add the legend text to the right of the plot - plt.text(1.02, 0.5, '\n'.join(legend_text), transform=ax.transAxes, ha='left', va='center', fontsize=11, bbox=dict(facecolor='white', alpha=0.2, edgecolor='grey')) - - # Show the plot - plt.tight_layout() - plt.show() - -# LEVEL 2.1 -# -------- -# Function for plotting: Level 2.1 Absolute stacked bar plots -# ------------------------------------------------------------ - -def lvl21_plot_stacked_absolute(dataframes_dict, title_key=None): - ''' - Comparing activities and the input contributions to the total score by plotting a stacked absolute bar plot for each method. - - :param dataframes_dict: dictionary resulting from the function "compare_activities_multiple_methods" (and subsequently "small_inputs_to_other_column") - :param title_key: some string for the plot titles - ''' - - # Step 1: Collect all unique categories - all_categories = set() - - for df in dataframes_dict.values(): - if 'total' in df.columns: - total_index = df.columns.get_loc('total') - relevant_columns = df.columns[total_index + 1:] - else: - relevant_columns = df.columns - - # Update all_categories set with relevant columns - all_categories.update(relevant_columns) - - all_categories = list(all_categories) - - # Step 2: Create a consistent color palette and color map - distinct_colors = generate_distinct_colors(len(all_categories)) - color_map = dict(zip(all_categories, distinct_colors)) - - # Step 3: Plot each DataFrame - for key, df in dataframes_dict.items(): - if 'total' in df.columns: - df_og = df.copy() #for calling method and informative column in title and axis - total_index = df.columns.get_loc('total') - df = df.iloc[:, total_index + 1:] - - # Create a new figure for each plot - fig, ax = plt.subplots(figsize=(20, 10)) - - # Ensure columns match the categories used in the color map - df = df[[col for col in df.columns if col in color_map]] - - # Plotting the DataFrame with the custom color map - df.plot(kind='bar', stacked=True, ax=ax, color=[color_map[col] for col in df.columns]) - - # Add titles and labels - ax.set_title(f"{str(title_key)} - {df_og['method'].iloc[0]} in {df_og['method unit'].iloc[0]}") - ax.set_xlabel('Activity/ Dataset') - ax.set_ylabel(f"{df_og['method unit'].iloc[0]}") - - # First legend: Categories - first_legend = ax.legend(title='Categories', loc='center left', bbox_to_anchor=(1, 0.5), fontsize='small') - - # Add the first legend manually - ax.add_artist(first_legend) - - # Generate the legend text using the first dataframe - legend_text = generate_legend_text(dataframes_dict) - - # Create a second legend below the first one - fig.text(1.02, 0.1, '\n'.join(legend_text), transform=ax.transAxes, fontsize=11, - verticalalignment='bottom', bbox=dict(facecolor='white', alpha=0.2, edgecolor='grey')) - - # Rotate x-axis labels for better readability - plt.xticks(rotation=90, ha='right') - - # Adjust layout to make room for both legends - plt.tight_layout() - plt.subplots_adjust(right=0.75, bottom=0.2) - - # Display the plot - plt.show() - -# LEVEL 2.2 -# ---------- -# Function for plotting: Level 2.2 bar plot comparing one input characterized by one method across sector/ activity list -# ---------------------------------------------------------------------------------------------------------------------- - -def lvl22_plot_input_comparison_with_method(dataframes_dict, dataframe_key, input_number): - """ - Comparing one specific cpc input among activities for each method. - - :param dataframes_dict:dictionary resulting from the function "compare_activities_multiple_methods" (and subsequently "small_inputs_to_other_column") - :param dataframe_key: Key to access a specific DataFrame from the dictionary. - :param input_number: Unique cpc identifier number of the input that should be plotted. - """ - # Access the specific DataFrame - df = dataframes_dict.get(dataframe_key) - - if df is None: - print(f"No DataFrame found for key: {dataframe_key}") - return - - # Filter columns based on the input_number - columns_to_plot = [col for col in df.columns if str(input_number) in str(col)] - - if not columns_to_plot: - print(f"No columns found containing input number: {input_number}") - return - - # Plot the filtered columns - ax = df[columns_to_plot].plot(kind='bar', figsize=(14, 6)) - plt.xlabel('Activity/ Dataset') - plt.ylabel(f"{df['method unit'].iloc[0]}") - plt.title(f'Comparison Plot for Input Number {input_number}') - - # Add legend for identifying activities_list from index - # Generate the legend text using the first dataframe - legend_text = generate_legend_text(dataframes_dict.get(dataframe_key)) - - # Add the legend text to the right of the plot - plt.text(1.02, 0.5, '\n'.join(legend_text), transform=ax.transAxes, ha='left', va='center', fontsize=11, bbox=dict(facecolor='white', alpha=0.2, edgecolor='grey')) - - plt.show() - -# Level 2.2 plot dependencies: Function for formating plot: Unique colors for Level 2.1 Absolute stacked bar plots -# ----------------------------------------------------------------------------------- - -def generate_distinct_colors(n): - """Generate n distinct colors using HSV color space.""" - hues = np.linspace(0, 1, n, endpoint=False) - colors = [plt.cm.hsv(h) for h in hues] - return colors - -# LEVEL 2.3 -# --------- -# Function for plotting: Level 2.3 bar plot comparing input not characterized across sector/ activity list -# -------------------------------------------------------------------------------------------------------- - -def lvl23_plot_input_comparison_plot_no_method(activities_list, input_type, input_number,): - ''' - Comparing one specific cpc input among activities without method. - - :param activities_list: list of activities to plot inputs for. Perhabs the one defined at the beginning. - :param input_type: type of the activities input default 'list', other 'dict' - :param input_number: the cpc code of the input that is supposed to be plotted - - ''' - cpc_input_dataframe = get_cpc_inputs_of_activities(activities_list, input_type) - - x_input_fltr= [x for x in cpc_input_dataframe.columns if str(input_number) in str(x)][0] - - df= cpc_input_dataframe[x_input_fltr] - - df = df.sort_values(ascending=False) - ax = df.plot(kind='bar', x=x_input_fltr, figsize=(14, 6)) - ax.set_xlabel('Activity/ Dataset') - ax.set_ylabel(f"{cpc_input_dataframe['unit'].iloc[0]}") - ax.set_title(f'Comparison Plot for not characterized Input - {x_input_fltr}') - - # Generate the legend text to map index to activity - legend_text = generate_legend_text(cpc_input_dataframe) - # Add the legend text to the right of the plot - ax.text(1.02, 0.5, '\n'.join(legend_text), transform=ax.transAxes, ha='left', va='center', fontsize=11, bbox=dict(facecolor='white', alpha=0.2, edgecolor='grey')) - - -# Level 2.3 plot dependencies: Function to generate dataframes containing inputs in cpc format not characterized from an activity list -# --------------------------------------------------------------------------------------------------------- - -def get_cpc_inputs_of_activities(activities_list, input_type='list'): - - ''' - for param description see function lvl23_plot_input_comparison_plot_no_method - - !!! NOTE: Adapt this function to get the outputs !!! - - ''' - - def activity_list_inputs_cpc(activities_list, input_type): - all_inputs = [] - - if input_type == 'list': - activity_iterator = activities_list - elif input_type == 'dict': - activity_iterator = activities_list.values() - else: - raise ValueError("input_type must be either 'list' or 'dict'") - - for activity in activity_iterator: - inputs_keys = pd.Series({bw.get_activity(exc.input).key: exc.amount for exc in activity.technosphere()}, - name=activity['name'] + ', ' + activity['location']) - - # Adjust the way the key is presented - inputs_keys = inputs_keys.reset_index() - inputs_keys['full_key'] = inputs_keys.apply(lambda row: f"('{row['level_0']}', '{row['level_1']}')", axis=1) - inputs_keys = inputs_keys.drop(['level_0', 'level_1'], axis=1).set_index('full_key') - - # Add empty cpc column and activity information - inputs_keys.insert(0, 'identifier', activity['name'] + ', ' + activity['location']) - inputs_keys.insert(1, 'activity', activity['name']) - inputs_keys.insert(2, 'location', activity['location']) - inputs_keys.insert(3, 'unit', activity['unit']) - inputs_keys.insert(4, 'cpc', None) - - all_inputs.append(inputs_keys) - - # Combine all inputs into a single DataFrame - combined_inputs = pd.concat(all_inputs, axis=0) - - return combined_inputs - - def update_cpc_information(combined_inputs): - for index, row in combined_inputs.iterrows(): - # Transform each key to tuple - tuple_key = ast.literal_eval(index) - - # Get input activity for the key - input_activity = bw.get_activity(tuple_key) - - # Get cpc name for activity - cpc_name = ba.comparisons.get_cpc(input_activity) - - # Store cpc_name in the 'cpc' column of the combined_inputs dataframe - combined_inputs.at[index, 'cpc'] = cpc_name - - return combined_inputs - - def transform_dataframe(combined_inputs): - # Set 'identifier' as the new index and drop the 'full_key' index - combined_inputs = combined_inputs.reset_index().set_index('identifier').drop('full_key', axis=1) - - # Determine the index of the 'unit' column - unit_index = combined_inputs.columns.get_loc('unit') - - # Split the dataframe into two parts - combined_inputs_identifier = combined_inputs.iloc[:, :unit_index+1] - combined_inputs_cpc = combined_inputs.iloc[:, unit_index+1:] - #set index of to 'cpc' in combined_input_cpc - combined_inputs_cpc = combined_inputs_cpc.set_index('cpc') - - # Combine rows with the same index value in combined_inputs_cpc - combined_inputs_cpc = combined_inputs_cpc.groupby(level=0).agg(lambda x: np.sum(x) if x.dtype.kind in 'biufc' else x.iloc[0]) - # Transpose combined_inputs_cpc - combined_inputs_cpc_trans = combined_inputs_cpc.T - - # Merge combined_inputs_identifier and combined_inputs_cpc_trans - result = combined_inputs_identifier.join(combined_inputs_cpc_trans) - result = result.drop_duplicates() - - # Sort dataframe by activity and location aplphabetically and reset the index - result = result.sort_values(by=['activity', 'location']) - result = result.reset_index(drop=True) - return result - - # Execute the workflow - combined_inputs = activity_list_inputs_cpc(activities_list, input_type) - combined_inputs_with_cpc = update_cpc_information(combined_inputs) - final_result = transform_dataframe(combined_inputs_with_cpc) - - return final_result - - -# LEVEL 3 -# -------- -# Function for plotting: Level 3 S-curve difference of og database and premise adapted database by one meth -# ------------------------------------------------------------------------------------------------------------ - -def lvl3_plot_relative_changes(database, premise_database, method): - - ''' - A function that plots the relative changes in activitiy LCA scores (for one defined method) between a "raw" ecoinvent database and a premise transformed ecoinvent database. - - :param database: an ecoinvent database or set of activities from an ecoinvent database. - :premise_database: a premise transformed database or a set of activities which has intersections with the ecoinvent database. - :method: a method the relative changes should be calculated and plotted for. - - ''' - - ecoinvent_scores = calculate_lca_ecoinvent_scores(database, method) - premise_scores = calculate_lca_premise_scores(premise_database, method) - - relative_changes = calc_relative_changes(ecoinvent_scores, premise_scores) - - # Filter out entries where the value is a tuple (method) - filtered_changes = {k: v for k, v in relative_changes.items() if not isinstance(v, tuple)} - - # Sort the relative changes by magnitude - sorted_changes = sorted(filtered_changes.items(), key=lambda x: x[1]) - - # Prepare data for plotting - activities_list = [f"{key}" for key, _ in sorted_changes] - changes = [change for _, change in sorted_changes] - - # Create the plot - fig, ax = plt.subplots(figsize=(12, len(activities_list) * 0.4)) # Adjust figure height based on number of activities_list - fig.suptitle(f"Relative Changes in LCA Scores {relative_changes['method']}") - y_pos = np.arange(len(activities_list)) - ax.barh(y_pos, changes, align='center', color='lightgrey', alpha=0.7) - - # Plot curve through datapoints - ax.plot(changes, y_pos, color='darkblue', linewidth=2, marker='o', markersize=6) - - # Set labels and title - ax.set_yticks(y_pos) - ax.set_yticklabels(activities_list) - ax.invert_yaxis() # Labels read top-to-bottom - ax.set_xlabel('Relative Change') - - - # Add a vertical line at x=0 - ax.axvline(x=0, color='k', linestyle='--') - - # Adjust layout and display - plt.tight_layout() - plt.show() - -# Level 3 plot dependencies: Functions for generating lca scores of ecoinvent and premise database to plot their relative changes -# ------------------------------------------------------------------------------------------------------------------------------- - -def calculate_lca_ecoinvent_scores(database, method): - - ecoinvent_scores= {} - ecoinvent_scores['method']=method #save the method used for plotting the data - all_activities=[x for x in database] - - for activity in all_activities: - activity_LCA = bw.LCA({activity:1}, bw.Method(method).name) - activity_LCA.lci() - activity_LCA.lcia() - score=activity_LCA.score - - # Create a tuple key with relevant information - key = (activity['name'], activity['unit'], activity['location'], activity.get('reference product')) - - ecoinvent_scores[key]=score - - return ecoinvent_scores - -def calculate_lca_premise_scores(premise_database, method): - - premise_scores= {} - - premise_scores['method']=method #save the method used for plotting the data - - all_activities=[x for x in premise_database] - - for activity in all_activities: - activity_LCA = bw.LCA({activity:1}, bw.Method(method).name) - activity_LCA.lci() - activity_LCA.lcia() - score=activity_LCA.score - - # Create a tuple key with relevant information - key = (activity['name'], activity['unit'], activity['location'], activity.get('reference product')) - - premise_scores[key]=score - - return premise_scores - - -# relative_changes contains the activity names as keys and their relative changes as values - -def compute_relative_change(original, transformed): - if original == 0: - return float('inf') if transformed != 0 else 0 - return (transformed - original) / original - - -def calc_relative_changes(ecoinvent_scores, premise_scores): - - # Match activities_list and calculate relative changes - relative_changes = {} - relative_changes['method']=ecoinvent_scores['method'] - - # Track additional keys in premise_scores - additional_premise_keys = [] - - for key, original_score in ecoinvent_scores.items(): - if key in premise_scores: #activities only in premise_scores are according to this logic neglected. - # Skip if original_score is a tuple due to information tuple key - if isinstance(original_score, tuple): - continue - - transformed_score = premise_scores[key] - relative_change = compute_relative_change(original_score, transformed_score) - relative_changes[key] = relative_change - - # Identify additional keys in premise_scores - for key in premise_scores.keys(): - if key not in ecoinvent_scores: - additional_premise_keys.append(key) - - # Print the dataframes_dict - for key, change in relative_changes.items(): - print(f"{key}: {change}") - - if additional_premise_keys: - print("Additional keys in premise_scores not found in ecoinvent_scores:", additional_premise_keys) - - return relative_changes \ No newline at end of file diff --git a/dev/archiv/archiv py/lca_scores.py b/dev/archiv/archiv py/lca_scores.py deleted file mode 100644 index 00a2cf7..0000000 --- a/dev/archiv/archiv py/lca_scores.py +++ /dev/null @@ -1,123 +0,0 @@ -# imports -# ------- -from premise import * - -# brightway -import brightway2 as bw -import bw2analyzer as ba -import bw2data as bd - -# common -import pandas as pd -import numpy as np - -# plotting -import matplotlib.pyplot as plt -import seaborn as sns - -# to be completed -import ast - - -# Functions for generating lca scores of ecoinvent and premise database to plot their relative changes -# Level 3 plot dependency -# ------------------------------------------------------------------------------------------------------------------------------- - - -def _calculate_lca_ecoinvent_scores(database, method): - ecoinvent_scores = {} - ecoinvent_scores["method"] = method # save the method used for plotting the data - all_activities = [x for x in database] - - for activity in all_activities: - activity_LCA = bw.LCA({activity: 1}, bw.Method(method).name) - activity_LCA.lci() - activity_LCA.lcia() - score = activity_LCA.score - - # Create a tuple key with relevant information - key = ( - activity["name"], - activity["unit"], - activity["location"], - activity.get("reference product"), - ) - - ecoinvent_scores[key] = score - - return ecoinvent_scores - - -def _calculate_lca_premise_scores(premise_database, method): - premise_scores = {} - - premise_scores["method"] = method # save the method used for plotting the data - - all_activities = [x for x in premise_database] - - for activity in all_activities: - activity_LCA = bw.LCA({activity: 1}, bw.Method(method).name) - activity_LCA.lci() - activity_LCA.lcia() - score = activity_LCA.score - - # Create a tuple key with relevant information - key = ( - activity["name"], - activity["unit"], - activity["location"], - activity.get("reference product"), - ) - - premise_scores[key] = score - - return premise_scores - - -# relative_changes contains the activity names as keys and their relative changes as values - - -def _compute_relative_change(original, transformed): - if original == 0: - return float("inf") if transformed != 0 else 0 - return (transformed - original) / original - - -def _calc_relative_changes(ecoinvent_scores, premise_scores): - # Match activities_list and calculate relative changes - relative_changes = {} - relative_changes["method"] = ecoinvent_scores["method"] - - # Track additional keys in premise_scores - additional_premise_keys = [] - - for key, original_score in ecoinvent_scores.items(): - if ( - key in premise_scores - ): # activities only in premise_scores are according to this logic neglected. - # Skip if original_score is a tuple due to information tuple key - if isinstance(original_score, tuple): - continue - - transformed_score = premise_scores[key] - relative_change = _compute_relative_change( - original_score, transformed_score - ) - relative_changes[key] = relative_change - - # Identify additional keys in premise_scores - for key in premise_scores.keys(): - if key not in ecoinvent_scores: - additional_premise_keys.append(key) - - # Print the dataframes_dict - for key, change in relative_changes.items(): - print(f"{key}: {change}") - - if additional_premise_keys: - print( - "Additional keys in premise_scores not found in ecoinvent_scores:", - additional_premise_keys, - ) - - return relative_changes diff --git a/dev/archiv/archiv py/lca_to_excl.py b/dev/archiv/archiv py/lca_to_excl.py deleted file mode 100644 index 454bd20..0000000 --- a/dev/archiv/archiv py/lca_to_excl.py +++ /dev/null @@ -1,193 +0,0 @@ -def sector_lca_scores(main_dict, method_dict): - ''' - Generates the LCA score tables for activity list of each sector. - The tables contain total scores and cpc input contributions. - This is done by each method defined in the method dictionary. - - :param main_dict: dictionary which is returned by process_yaml_files function - :param method_dict: dictionary which is created with MethodFinder class - - It returns the main dictionary updated as scores dictionary which also holds the former information for each sector. - The LCA scores are stored by method name in the respective sector dictionary within the main dictionary. - ''' - - # Initialize scores_dict as a copy of main_dict - scores_dict = main_dict.copy() - - # Loop through each sector in main_dict - for sector in scores_dict.keys(): - # Extract activities for the current sector - sector_activities = scores_dict[sector]['activities'] - - # Calculate LCA scores using the specified method - lca_scores = compare_activities_multiple_methods( - activities_list=sector_activities, - methods=method_dict, - identifier=sector, - mode='absolute' - ) - - # Apply the small_inputs_to_other_column function with the cutoff value - lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02) - - # Save the LCA scores to the scores_dict - scores_dict[sector]['lca_scores'] = lca_scores - - return scores_dict - -# ----------------------------------------- -# CREATING EXCEL SHEETS WITH LCA TABLES -# ----------------------------------------- - -def sector_lca_scores_to_excel_and_column_positions(scores_dict, excel_file_name): - """ - What it does: - - Creates a dataframe for each method and sector from the lca scores dictionary - - Before storing each df in a worksheet in an excel file it: - - shortens the column labels of the input (removing cpc code) - - adds a sector name marker for keeping track in excel (when plotting can use it for labeling) - - adds statistics for plotting - - creates a dictionary which holds the indexes to the columns we need to call for plotting, this makes it dynamic. Otherwise need to hardcode index column number for openpxyl. - What it returns: - - Returns the index positions dictionary where the key is "sector_method" - - Creates excel file as defined by user - """ - - # Prepare to save each LCA score table to a different worksheet in the same Excel file - excel_file = excel_file_name - column_positions = {} #stores the indexes of columns for plotting - with pd.ExcelWriter(excel_file, engine='openpyxl') as writer: - for sector in scores_dict.keys(): - lca_scores = scores_dict[sector]['lca_scores'] - for method, table in lca_scores.items(): - # Create a DataFrame for the current LCA score table - df = pd.DataFrame(table) - - # Add sector marker - df = add_sector_marker(df, sector) #!! ADJUST POSITION - - # Add statistics to the DataFrame - df = add_statistics(df) - - # Get the index values of columns - columns_of_interest = ["total", "rank", "mean", "2std_abv", "2std_blw", "q1", "q3", "method", "method unit"] - positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns} - column_positions[method] = positions - - # Find the first input column and add it to the positions dictionary - first_input_col_index = find_first_input_column(df) - if first_input_col_index is not None: - positions["first_input"] = first_input_col_index - - # Store the positions for this method - column_positions[method] = positions - - # remove cpc from input labels - df = clean_column_labels(df) - - # Generate a worksheet name - worksheet_name = f"{method}" #f"{sector}_{method}" - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - - # Save the DataFrame to the Excel file in a new worksheet - df.to_excel(writer, sheet_name=worksheet_name, index=False) - return column_positions - - -def add_statistics(df, column_name='total'): - - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions - - It adds statistical indicators to a dataframe based on total column which are used for plotting. - - returns updated dataframe - ''' - - #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values) - df['rank'] = df[column_name].rank(method="first", ascending="False") - - # Calculate mean, standard deviation, and IQR - df['mean'] = df[column_name].mean() - df['2std_abv'] = df['mean'] + df[column_name].std() * 2 - df['2std_blw'] = df['mean'] - df[column_name].std() * 2 - df['q1'] = df[column_name].quantile(0.25) - df['q3'] = df[column_name].quantile(0.75) - - # Reorder the columns to place the new columns after 'total' - cols = df.columns.tolist() - total_index = cols.index(column_name) + 1 - new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3'] - cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)] - - return df[cols] - - -def find_first_input_column(df): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be called before clean_column_labels function. - Detects the first column in the dataframe which contains input contribution data and saves its index. - This is relevant for calling the right column for defining the to be plotted data dynamically as not all dataframes have the same column order (some contain "direct emissions" for instance). - ''' - - def clean_label(label): - return label if label is not None else 'Unnamed' - - # Apply the cleaning function to all column names - df.columns = [clean_label(col) for col in df.columns] - - # Regular expression pattern to match "Number: Name" - pattern = r'^\d+:\s*' - - for idx, column in enumerate(df.columns): - if (column is not None and re.match(pattern, column)) or column == 'Unnamed' or column == 'direct emissions': - return idx - - return None - -def clean_column_labels(df): - - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be run after find_first_input_column. - - It removes unnecessary numbers in the column header. - - Returns df with formated column labels. - ''' - # Function to remove numbers and colon from column names - def clean_label(label): - if label is None: - return 'Unnamed' # or return 'Unnamed' if you prefer a placeholder - return re.sub(r'^\d+:\s*', '', str(label)) - - # Apply the cleaning function to all column names - df.columns = [clean_label(col) for col in df.columns] - - return df - -def add_sector_marker(df, sector): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. - - It adds information about the sector for titel and labeling in plotting. - - Returns df with added column. - ''' - - # Add sector marker column - df['sector']=str(sector) # potentially remove! - # Reorder the columns to move 'sector' after 'product' - columns = list(df.columns) - - if 'product' in df.columns: - product_index = columns.index('product') - # Insert 'sector' after 'product' - columns.insert(product_index + 1, columns.pop(columns.index('sector'))) - else: - # If 'product' does not exist, 'sector' remains in the last column - columns.append(columns.pop(columns.index('sector'))) - - # Reassign the DataFrame with the new column order - df = df[columns] - return df diff --git a/dev/archiv/archiv py/lca_to_xcl.py b/dev/archiv/archiv py/lca_to_xcl.py deleted file mode 100644 index a30820d..0000000 --- a/dev/archiv/archiv py/lca_to_xcl.py +++ /dev/null @@ -1,210 +0,0 @@ - -from dopo import compare_activities_multiple_methods -from dopo import small_inputs_to_other_column -import pandas as pd -import re -import pandas as pd -from dopo import generate_sets_from_filters -from dopo import compare_activities_multiple_methods -from dopo import small_inputs_to_other_column -import openpyxl -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series -from openpyxl.chart import BarChart, Reference - -def sector_lca_scores(main_dict, method_dict, cutoff=0.02): - ''' - Generates the LCA score tables for activity list of each sector. - The tables contain total scores and cpc input contributions. - This is done by each method defined in the method dictionary. - - :param main_dict: dictionary which is returned by process_yaml_files function - :param method_dict: dictionary which is created with MethodFinder class - :param cutoff: cutoff value to summarize inputs below or equal to this threshhold in a "other" column - - It returns the main dictionary updated as scores dictionary which also holds the former information for each sector. - The LCA scores are stored by method name in the respective sector dictionary within the main dictionary. - ''' - - # Initialize scores_dict as a copy of main_dict - scores_dict = main_dict.copy() - - # Loop through each sector in main_dict - for sector in scores_dict.keys(): - # Extract activities for the current sector - sector_activities = scores_dict[sector]['activities'] - - # Calculate LCA scores using the specified method - lca_scores = compare_activities_multiple_methods( - activities_list=sector_activities, - methods=method_dict, - identifier=sector, - mode='absolute' - ) - - # Apply the small_inputs_to_other_column function with the cutoff value - lca_scores_cut = small_inputs_to_other_column(lca_scores, cutoff) - - # Save the LCA scores to the scores_dict - scores_dict[sector]['lca_scores'] = lca_scores_cut - - return scores_dict - -# ----------------------------------------- -# CREATING EXCEL SHEETS WITH LCA TABLES -# ----------------------------------------- - -def sector_lca_scores_to_excel_and_column_positions(scores_dict, excel_file_name): - """ - What it does: - - Creates a dataframe for each method and sector from the lca scores dictionary - - Before storing each df in a worksheet in an excel file it: - - shortens the column labels of the input (removing cpc code) - - adds a sector name marker for keeping track in excel (when plotting can use it for labeling) - - adds statistics for plotting - - creates a dictionary which holds the indexes to the columns we need to call for plotting, this makes it dynamic. Otherwise need to hardcode index column number for openpxyl. - What it returns: - - Returns the index positions dictionary where the key is "sector_method" - - Creates excel file as defined by user - """ - - # Prepare to save each LCA score table to a different worksheet in the same Excel file - excel_file = excel_file_name - column_positions = {} #stores the indexes of columns for plotting - with pd.ExcelWriter(excel_file, engine='openpyxl') as writer: - for sector in scores_dict.keys(): - lca_scores = scores_dict[sector]['lca_scores'] - - for method, table in lca_scores.items(): - # Create a DataFrame for the current LCA score table - df = pd.DataFrame(table) - - # Add sector marker - df = _add_sector_marker(df, sector) #!! ADJUST POSITION - - # Add statistics to the DataFrame - df = _add_statistics(df) - - # Get the index values of columns - columns_of_interest = ["total", "rank", "mean", "2std_abv", "2std_blw", "q1", "q3", "method", "method unit"] - positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns} - column_positions[method] = positions - - # Find the first input column and add it to the positions dictionary - first_input_col_index = _find_first_input_column(df) - if first_input_col_index is not None: - positions["first_input"] = first_input_col_index - - # Store the positions for this method - column_positions[method] = positions - - # remove cpc from input labels - df = _clean_column_labels(df) - - # Generate a worksheet name - worksheet_name = f"{method}" #f"{sector}_{method}" - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - - # Save the DataFrame to the Excel file in a new worksheet - df.to_excel(writer, sheet_name=worksheet_name, index=False) - - return column_positions - - -def _add_statistics(df, column_name='total'): - - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions - - It adds statistical indicators to a dataframe based on total column which are used for plotting. - - returns updated dataframe - ''' - - #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values) - df['rank'] = df[column_name].rank(method="first", ascending=False) - - # Calculate mean, standard deviation, and IQR - df['mean'] = df[column_name].mean() - df['2std_abv'] = df['mean'] + df[column_name].std() * 2 - df['2std_blw'] = df['mean'] - df[column_name].std() * 2 - df['q1'] = df[column_name].quantile(0.25) - df['q3'] = df[column_name].quantile(0.75) - - # Reorder the columns to place the new columns after 'total' - cols = df.columns.tolist() - total_index = cols.index(column_name) + 1 - new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3'] - cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)] - - return df[cols] - - -def _find_first_input_column(df): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be called before _clean_column_labels function. - Detects the first column in the dataframe which contains input contribution data and saves its index. - This is relevant for calling the right column for defining the to be plotted data dynamically as not all dataframes have the same column order (some contain "direct emissions" for instance). - ''' - - def clean_label(label): - return label if label is not None else 'Unnamed' - - # Apply the cleaning function to all column names - df.columns = [clean_label(col) for col in df.columns] - - # Regular expression pattern to match "Number: Name" - pattern = r'^\d+:\s*' - - for idx, column in enumerate(df.columns): - if (column is not None and re.match(pattern, column)) or column == 'Unnamed' or column == 'direct emissions': - return idx - - return None - -def _clean_column_labels(df): - - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be run after _find_first_input_column. - - It removes unnecessary numbers in the column header. - - Returns df with formated column labels. - ''' - # Function to remove numbers and colon from column names - def clean_label(label): - if label is None: - return 'Unnamed' # or return 'Unnamed' if you prefer a placeholder - return re.sub(r'^\d+:\s*', '', str(label)) - - # Apply the cleaning function to all column names - df.columns = [clean_label(col) for col in df.columns] - - return df - -def _add_sector_marker(df, sector): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. - - It adds information about the sector for titel and labeling in plotting. - - Returns df with added column. - ''' - - # Add sector marker column - df['sector']=str(sector) # potentially remove! - # Reorder the columns to move 'sector' after 'product' - columns = list(df.columns) - - if 'product' in df.columns: - product_index = columns.index('product') - # Insert 'sector' after 'product' - columns.insert(product_index + 1, columns.pop(columns.index('sector'))) - else: - # If 'product' does not exist, 'sector' remains in the last column - columns.append(columns.pop(columns.index('sector'))) - - # Reassign the DataFrame with the new column order - df = df[columns] - return df diff --git a/dev/archiv/archiv py/methods.py b/dev/archiv/archiv py/methods.py deleted file mode 100644 index e1b59fa..0000000 --- a/dev/archiv/archiv py/methods.py +++ /dev/null @@ -1,58 +0,0 @@ -# Dependencies -# ------------ - -#brightway -import brightway2 as bw -import bw2analyzer as ba -import bw2data as bd - -# Class for generating method dictionary -# -------------------------------------- - -class MethodFinder: - def __init__(self): - self.all_methods = {} - self.method_counter = 0 - - def find_and_create_method(self, criteria, exclude=None, custom_key=None): - methods = bw.methods - # Start with all methods - filtered_methods = methods - # Apply inclusion criteria - for criterion in criteria: - filtered_methods = [m for m in filtered_methods if criterion in str(m)] - # Apply exclusion criteria if provided - if exclude: - for exclusion in exclude: - filtered_methods = [m for m in filtered_methods if exclusion not in str(m)] - # Check if we found exactly one method - if len(filtered_methods) == 0: - raise ValueError("No methods found matching the given criteria.") - elif len(filtered_methods) > 1: - raise ValueError(f"Multiple methods found: {filtered_methods}. Please provide more specific criteria.") - # Get the first (and only) method - selected_method = filtered_methods[0] - # Create the Brightway Method object - method_object = bw.Method(selected_method) - - # Generate a key for storing the method - if custom_key is None: - self.method_counter += 1 - key = f"method_{self.method_counter}" - else: - key = custom_key - - # Store the method object and additional information in the dictionary - self.all_methods[key] = { - 'object': method_object, - 'method name': method_object.name, - 'short name' : method_object.name[2], - 'unit': method_object.metadata.get('unit', 'Unknown') - } - - # Return both the method object and its key - return {key: self.all_methods[key]} - - def get_all_methods(self): - return self.all_methods - diff --git a/dev/archiv/archiv py/plots.py b/dev/archiv/archiv py/plots.py deleted file mode 100644 index 8a42527..0000000 --- a/dev/archiv/archiv py/plots.py +++ /dev/null @@ -1,439 +0,0 @@ -# Imports -# ------- - -# common -import pandas as pd -import numpy as np - -# plotting -import matplotlib.pyplot as plt -import seaborn as sns - -# LEVEL 1 -# ------- -# Function for plotting: Level 1 dot plot with standard deviation -# and IQR range -# ------------------------------------------------------------------------------ - - -def scores_across_activities(dataframes_dict: dict, title_key: str=None) -> None: - """ - Plots the total score value for each activity sorted from largest - to smallest. Visualizes IQR and standard deviation. - Generates as many plots as methods were defined. - - :param dataframes_dict: dictionary resulting from the function "compare_activities_multiple_methods" (and subsequently "small_inputs_to_other_column") - :param title_key: some string for the plot titles (e.g. sector name) - - """ - - # Iterate over each dataframe and create individual plots - for idx, df in dataframes_dict.items(): - # Create a new figure for each plot - fig, ax = plt.subplots(figsize=(12, 6)) - - # Sort the DataFrame in descending order based on the 'total' column - sorted_df = df.sort_values(by="total", ascending=False) - - # Save the sorted index to order variable and call order variable in sns.swarmplot - order = sorted_df.index.tolist() - - # Calculate statistics - q1 = df["total"].quantile(0.25) - q3 = df["total"].quantile(0.75) - mean_gwp = df["total"].mean() - std_gwp = df["total"].std() - - # Plot using seaborn swarmplot - sns.swarmplot( - data=df, - x=df.index, - y="total", - dodge=True, - ax=ax, - order=order - ) - - # Add mean line - ax.axhline( - mean_gwp, - color="grey", - linestyle="--", - linewidth=1, - label="Mean" - ) - - # Add horizontal lines for Q1 and Q3 - ax.hlines( - y=q3, - xmin=-0.5, - xmax=len(df) - 0.5, - color="lightblue", - linestyle="dotted", - linewidth=1, - label="Q3 (75th percentile)", - ) - ax.hlines( - y=q1, - xmin=-0.5, - xmax=len(df) - 0.5, - color="lightblue", - linestyle="dotted", - linewidth=1, - label="Q1 (25th percentile)", - ) - - # Add horizontal shading for areas above - # and below 2 standard deviations from the mean - ax.axhspan( - mean_gwp - 2 * std_gwp, - mean_gwp - 3 * std_gwp, - color="grey", - alpha=0.2, - label=">2 std below mean", - ) - ax.axhspan( - mean_gwp + 2 * std_gwp, - mean_gwp + 3 * std_gwp, - color="grey", - alpha=0.2, - label=">2 std above mean", - ) - - # Add titles and labels - ax.set_title( - f"{str(title_key)} - {df['method'].iloc[0]} " - f"in {df['method unit'].iloc[0]}" - ) - ax.set_xlabel("Activity/ Dataset") - ax.set_ylabel(f"{df['method unit'].iloc[0]}") - - # Rotate x-axis labels if needed - ax.tick_params(axis="x", rotation=90) - - # Add legend - ax.legend() - - # Generate the legend text using the first dataframe - legend_text = generate_legend_text(dataframes_dict) - - # Add the legend text to the right of the plot - plt.text( - 1.02, - 0.5, - "\n".join(legend_text), - transform=ax.transAxes, - ha="left", - va="center", - fontsize=11, - bbox=dict(facecolor="white", alpha=0.2, edgecolor="grey"), - ) - - # Show the plot - plt.tight_layout() - plt.show() - - -# LEVEL 2.1 -# --------- -# Function for plotting: Level 2.1 Absolute stacked bar plots -# ------------------------------------------------------------ - - -def inputs_contributions(dataframes_dict: dict, title_key: str = None) -> None: - """ - Comparing activities and the input contributions to - the total score by plotting a stacked absolute - bar plot for each method. - - :param dataframes_dict: dictionary resulting from the function "compare_activities_multiple_methods" (and subsequently "small_inputs_to_other_column") - :param title_key: some string for the plot titles - """ - - # Step 1: Collect all unique categories - all_categories = set() - - for df in dataframes_dict.values(): - if "total" in df.columns: - total_index = df.columns.get_loc("total") - relevant_columns = df.columns[total_index + 1 :] - else: - relevant_columns = df.columns - - # Update all_categories set with relevant columns - all_categories.update(relevant_columns) - - all_categories = list(all_categories) - - # Step 2: Create a consistent color palette and color map - distinct_colors = generate_distinct_colors(len(all_categories)) - color_map = dict(zip(all_categories, distinct_colors)) - - # Step 3: Plot each DataFrame - for key, df in dataframes_dict.items(): - if "total" in df.columns: - df_og = ( - df.copy() - ) # for calling method and informative column in title and axis - total_index = df.columns.get_loc("total") - df = df.iloc[:, total_index + 1 :] - - # Create a new figure for each plot - fig, ax = plt.subplots(figsize=(20, 10)) - - # Ensure columns match the categories used in the color map - df = df[[col for col in df.columns if col in color_map]] - - # Plotting the DataFrame with the custom color map - df.plot( - kind="bar", - stacked=True, - ax=ax, - color=[color_map[col] for col in df.columns], - ) - - # Add titles and labels - ax.set_title( - f"{str(title_key)} - {df_og['method'].iloc[0]} " - f"in {df_og['method unit'].iloc[0]}" - ) - ax.set_xlabel("Activity/ Dataset") - ax.set_ylabel(f"{df_og['method unit'].iloc[0]}") - - # First legend: Categories - first_legend = ax.legend( - title="Categories", - loc="center left", - bbox_to_anchor=(1, 0.5), - fontsize="small", - ) - - # Add the first legend manually - ax.add_artist(first_legend) - - # Generate the legend text using the first dataframe - legend_text = generate_legend_text(dataframes_dict) - - # Create a second legend below the first one - fig.text( - 1.02, - 0.1, - "\n".join(legend_text), - transform=ax.transAxes, - fontsize=11, - verticalalignment="bottom", - bbox=dict(facecolor="white", alpha=0.2, edgecolor="grey"), - ) - - # Rotate x-axis labels for better readability - plt.xticks(rotation=90, ha="right") - - # Adjust layout to make room for both legends - plt.tight_layout() - plt.subplots_adjust(right=0.75, bottom=0.2) - - # Display the plot - plt.show() - - -# LEVEL 2.2 -# ---------- -# Function for plotting: Level 2.2 bar plot comparing one input characterized by one method across sector/ activity list -# ---------------------------------------------------------------------------------------------------------------------- - - -def inputs_contribution( - dataframes_dict: dict, dataframe_key: str, input_number: str -) -> None: - """ - Comparing one specific cpc input among activities for each method. - - :param dataframes_dict:dictionary resulting from the function "compare_activities_multiple_methods" (and subsequently "small_inputs_to_other_column") - :param dataframe_key: Key to access a specific DataFrame from the dictionary. - :param input_number: Unique cpc identifier number of the input that should be plotted. - """ - # Access the specific DataFrame - df = dataframes_dict.get(dataframe_key) - - if df is None: - print(f"No DataFrame found for key: {dataframe_key}") - return - - # Filter columns based on the input_number - columns_to_plot = [col for col in df.columns if str(input_number) in str(col)] - - if not columns_to_plot: - print(f"No columns found containing input number: {input_number}") - return - - # Plot the filtered columns - ax = df[columns_to_plot].plot(kind="bar", figsize=(14, 6)) - plt.xlabel("Activity/ Dataset") - plt.ylabel(f"{df['method unit'].iloc[0]}") - plt.title(f"Comparison Plot for Input Number {input_number}") - - # Add legend for identifying activities_list from index - # Generate the legend text using the first dataframe - legend_text = generate_legend_text(dataframes_dict.get(dataframe_key)) - - # Add the legend text to the right of the plot - plt.text( - 1.02, - 0.5, - "\n".join(legend_text), - transform=ax.transAxes, - ha="left", - va="center", - fontsize=11, - bbox=dict(facecolor="white", alpha=0.2, edgecolor="grey"), - ) - - plt.show() - - -# LEVEL 2.3 -# --------- -# Function for plotting: Level 2.3 bar plot comparing input not characterized across sector/ activity list -# -------------------------------------------------------------------------------------------------------- - - -def input_contribution_across_activities( - activities_list: list, - input_type, - input_number: str, -) -> None: - """ - Comparing one specific cpc input among activities without method. - - :param activities_list: list of activities to plot inputs for. Perhabs the one defined at the beginning. - :param input_type: type of the activities input default 'list', other 'dict' - :param input_number: the cpc code of the input that is supposed to be plotted - - """ - cpc_input_dataframe = get_cpc_inputs_of_activities(activities_list, input_type) - - x_input_fltr = [ - x for x in cpc_input_dataframe.columns if str(input_number) in str(x) - ][0] - - df = cpc_input_dataframe[x_input_fltr] - - df = df.sort_values(ascending=False) - ax = df.plot(kind="bar", x=x_input_fltr, figsize=(14, 6)) - ax.set_xlabel("Activity/ Dataset") - ax.set_ylabel(f"{cpc_input_dataframe['unit'].iloc[0]}") - ax.set_title(f"Comparison Plot for not characterized Input - {x_input_fltr}") - - # Generate the legend text to map index to activity - legend_text = generate_legend_text(cpc_input_dataframe) - # Add the legend text to the right of the plot - ax.text( - 1.02, - 0.5, - "\n".join(legend_text), - transform=ax.transAxes, - ha="left", - va="center", - fontsize=11, - bbox=dict(facecolor="white", alpha=0.2, edgecolor="grey"), - ) - - -# LEVEL 3 -# -------- -# Function for plotting: Level 3 S-curve difference of og database and premise adapted database by one meth -# ------------------------------------------------------------------------------------------------------------ - - -def activities_across_databases(database, premise_database, method): - """ - A function that plots the relative changes in activitiy LCA scores (for one defined method) between a "raw" ecoinvent database and a premise transformed ecoinvent database. - - :param database: an ecoinvent database or set of activities from an ecoinvent database. - :premise_database: a premise transformed database or a set of activities which has intersections with the ecoinvent database. - :method: a method the relative changes should be calculated and plotted for. - - """ - - ecoinvent_scores = calculate_lca_ecoinvent_scores(database, method) - premise_scores = calculate_lca_premise_scores(premise_database, method) - - relative_changes = calc_relative_changes(ecoinvent_scores, premise_scores) - - # Filter out entries where the value is a tuple (method) - filtered_changes = { - k: v for k, v in relative_changes.items() if not isinstance(v, tuple) - } - - # Sort the relative changes by magnitude - sorted_changes = sorted(filtered_changes.items(), key=lambda x: x[1]) - - # Prepare data for plotting - activities_list = [f"{key}" for key, _ in sorted_changes] - changes = [change for _, change in sorted_changes] - - # Create the plot - fig, ax = plt.subplots( - figsize=(12, len(activities_list) * 0.4) - ) # Adjust figure height based on number of activities_list - fig.suptitle(f"Relative Changes in LCA Scores {relative_changes['method']}") - y_pos = np.arange(len(activities_list)) - ax.barh(y_pos, changes, align="center", color="lightgrey", alpha=0.7) - - # Plot curve through datapoints - ax.plot(changes, y_pos, color="darkblue", linewidth=2, marker="o", markersize=6) - - # Set labels and title - ax.set_yticks(y_pos) - ax.set_yticklabels(activities_list) - ax.invert_yaxis() # Labels read top-to-bottom - ax.set_xlabel("Relative Change") - - -# Formatting -# ---------- -# Level 1-2.3 plots dependency: Legend to map indexes on x-axis to activities -# --------------------------------------------------------------------------------------- - - -def generate_legend_text(data): - """ - Maps the indexes on the x-axis to the activities to list them in a legend. - - :param data: it can take in a dictionary of dataframes or just a single dataframe - """ - - legend_text = [] - - # Check if the input is a dictionary or a DataFrame - if isinstance(data, dict): - # Use the first DataFrame in the dictionary - first_key = next(iter(data)) - df = data[first_key] - elif isinstance(data, pd.DataFrame): - # Use the input DataFrame directly - df = data - else: - raise ValueError( - "Input must be either a dictionary of DataFrames or a DataFrame" - ) - - # Create a list of tuples with (index, activity, location) - items = [(str(i), row["activity"], row["location"]) for i, row in df.iterrows()] - # Sort the items based on the index - sorted_items = sorted(items, key=lambda x: x[0]) - # Add sorted items to legend_text - for i, activity, location in sorted_items: - legend_text.append(f"{i}: {activity} - {location}") - return legend_text - - -# Level 2.1 plot dependencies: Function for formating plot: Unique colors for Level 2.1 Absolute stacked bar plots -# ----------------------------------------------------------------------------------- - - -def generate_distinct_colors(n): - """Generate n distinct colors using HSV color space.""" - hues = np.linspace(0, 1, n, endpoint=False) - colors = [plt.cm.hsv(h) for h in hues] - return colors \ No newline at end of file diff --git a/dev/archiv/archiv py/plots_excl.py b/dev/archiv/archiv py/plots_excl.py deleted file mode 100644 index 4e7668e..0000000 --- a/dev/archiv/archiv py/plots_excl.py +++ /dev/null @@ -1,427 +0,0 @@ -# IN EXCEL -def _categorize_sheets_by_sector(file_path): - # Load the workbook - workbook = load_workbook(filename=file_path, read_only=True) - - # Initialize a dictionary to hold sectors and their corresponding sheet names - worksheet_dict = {} - - # Iterate over all sheet names in the workbook - for sheet_name in workbook.sheetnames: - # Split the sheet name to extract the sector (assumes sector is the first part) - sector = sheet_name.split('_')[0] - - # Add the sheet name to the corresponding sector in the dictionary - if sector in worksheet_dict: - worksheet_dict[sector].append(sheet_name) - else: - worksheet_dict[sector] = [sheet_name] - - return worksheet_dict - - -# ---- -#PLOTS -# ---- - -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series - -def dot_plots(filepath_workbook, worksheet_dict, index_positions): - - worksheet_dict = _categorize_sheets_by_sector(filepath_workbook) - - # Load the workbook - wb = load_workbook(filepath_workbook) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - current_row = 1 # Start placing charts from row 1 - current_col = 1 # Start placing charts from column 1 - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - charts_per_row = 3 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find min_row, max_row and max_column - max_row = ws.max_row - max_column = ws.max_column - min_row = 1 - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - total_col = positions.get("total", None) + 1 - rank_col = positions.get("rank", None) + 1 - mean_col = positions.get("mean", None) + 1 - std_adv_col = positions.get("2std_abv", None) + 1 - std_blw_col = positions.get("2std_blw", None) + 1 - q1_col = positions.get("q1", None) + 1 - q3_col = positions.get("q3", None) + 1 - method_col = positions.get("method", None) + 1 - method_unit_col = positions.get("method unit", None) + 1 - - # Ensure that all required columns are present - if None in [total_col, rank_col, mean_col, std_adv_col, std_blw_col, q1_col, q3_col, method_col, method_unit_col]: - print(f"Warning: Missing columns in worksheet '{worksheet_name}' for sector '{sector}'. Skipping...") - continue - - # Create a ScatterChart (or other chart type as needed) - chart = ScatterChart() - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{method_value} LCA scores for {sector} sector" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.y_axis.title = f"{method_unit_value}" - chart.x_axis.title = 'activity rank' - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - - # Define the data range for the chart - y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row) - x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row) - - # Create a series and add it to the chart - series = Series(y_values, x_values, title_from_data=True) - chart.series.append(series) - chart.style = 9 - - # Customize the series to show only markers (dots) - series.marker.symbol = "circle" - series.marker.size = 5 - series.graphicalProperties.line.noFill = True - - # ADJUST X-AXIS - chart.x_axis.tickLblPos = "low" - chart.x_axis.majorGridlines = None - chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines - chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work - - chart.x_axis.scaling.orientation = "minMax" - chart.x_axis.crosses = "autoZero" - chart.x_axis.axPos = "b" - chart.x_axis.delete = False - - # ADJUST Y-AXIS - chart.y_axis.tickLblPos = "nextTo" # Position the labels next to the tick marks - chart.y_axis.delete = False # Ensure axis is not deleted - chart.y_axis.number_format = '0.00000' - chart.y_axis.majorGridlines = None - - # ADD STATS - # MEAN - mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row) - mean_series = Series(mean_y, x_values, title_from_data="True") - chart.series.append(mean_series) - mean_series.marker.symbol = "none" # No markers, just a line - mean_series.graphicalProperties.line.solidFill = "FF0000" # Red line for mean value - mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # IQR - iqr1 = Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row) - iqr3 = Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row) - iqr1_series = Series(iqr1, x_values, title_from_data="True") - iqr3_series = Series(iqr3, x_values, title_from_data="True") - chart.series.append(iqr1_series) - chart.series.append(iqr3_series) - iqr1_series.marker.symbol = "none" # No markers, just a line - iqr3_series.marker.symbol = "none" - iqr1_series.graphicalProperties.line.solidFill = "6082B6" # Blue line - iqr3_series.graphicalProperties.line.solidFill = "6082B6" - iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # STD - std_abv = Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row) - std_blw = Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row) - std_abv_series = Series(std_abv, x_values, title_from_data="True") - std_blw_series = Series(std_blw, x_values, title_from_data="True") - chart.series.append(std_abv_series) - chart.series.append(std_blw_series) - std_abv_series.marker.symbol = "none" # No markers, just a line - std_blw_series.marker.symbol = "none" - std_abv_series.graphicalProperties.line.solidFill = "FFC300" # yellow line - std_blw_series.graphicalProperties.line.solidFill = "FFC300" - std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # Set legend position to the right of the plot area - chart.legend.position = 'r' # 'r' for right - chart.legend.overlay = False - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - wb.save(filepath_workbook) - return current_row - - -from openpyxl import load_workbook -from openpyxl.chart import BarChart, Reference - -def stacked_bars(filepath_workbook, worksheet_dict, index_positions, current_row_dot_plot): - # Load the workbook - wb = load_workbook(filepath_workbook) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - current_row = current_row_dot_plot + chart_height # Start placing charts from row where dot plots have left of - current_col = 1 # Start placing charts from column 1 - charts_per_row = 3 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - - # Find min_row, max_row and max_column - max_row = ws.max_row - max_column = ws.max_column - input_min_col = positions.get("first_input", None) + 1 - rank_col = positions.get("rank", None) + 1 - method_col = positions.get("method", None) + 1 - method_unit_col = positions.get("method unit", None) + 1 - - chart = BarChart() - chart.type = "bar" - chart.style = 2 - chart.grouping = "stacked" - chart.overlap = 100 - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{sector} sector inputs contributions to {method_value}" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.y_axis.title = f"{method_unit_value}" - - chart.x_axis.title = 'activity index' - - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - chart.legend.overlay = False - - # Define data - data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col=max_column) - cats = Reference(ws, min_col=rank_col, min_row=2, max_row=max_row) - - chart.add_data(data, titles_from_data=True) - chart.set_categories(cats) - chart.shape = 4 - - # Modify each series in the chart to disable the inversion of negative values - for series in chart.series: - series.invertIfNegative = False - - # y-axis ticks - chart.y_axis.tickLblPos = "nextTo" - chart.y_axis.delete = False # Ensure axis is not deleted - chart.y_axis.number_format = '0.000' - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Add the chart to the chart worksheet - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - wb.save(filepath_workbook) - -# Plot 3: Comparing databases - -import pandas as pd -import openpyxl -from openpyxl.chart import BarChart, Reference - -def compare_database_charts(filename, worksheet_dict, index_positions=None): - - # Load the workbook and select the sheet - wb = openpyxl.load_workbook(filename) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - current_row = 1 # Start placing charts from row 1 - current_col = 1 # Start placing charts from column 1 - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - charts_per_row = 2 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # # Find the key in index_positions that contains worksheet_name - # matching_key = None - # for key in index_positions.keys(): - # if worksheet_name in key: - # matching_key = key - # break - - # if not matching_key: - # print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - # continue - - # Retrieve the column positions from the index_positions dictionary - # positions = index_positions[matching_key] - - # Find min_row, max_row and max_column - min_col_data = 15 #positions.get("relative_change", None) + 1 - rank_col = 17#positions.get("rank", None) + 1 - method_col = 5#positions.get("method", None) + 1 - method_unit_col = 6#positions.get("method unit", None) + 1 - - # Create a bar chart - chart = BarChart() - chart.type="bar" - chart.style=2 - chart.overlap= 100 - chart.title = "Relative Change in LCA Scores" - chart.x_axis.title = "Activity" - chart.y_axis.title = "Relative Change (%)" - - # Set the data for the chart - data = Reference(ws, min_col=min_col_data, min_row=1, max_row=ws.max_row) - categories = Reference(ws, min_col=rank_col, min_row=2, max_row=ws.max_row) - chart.add_data(data, titles_from_data=True) - chart.set_categories(categories) - - # Modify each series in the chart to disable the inversion of negative values - for series in chart.series: - series.invertIfNegative = False - - # x-axis tickes - chart.x_axis.tickLblPos = "low" - chart.x_axis.majorGridlines = None - chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines - chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work - chart.x_axis.delete = False # Ensure axis is not deleted - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{sector} {method_value} database lca scores relative changes" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.x_axis.title = f"{method_unit_value}" - - chart.y_axis.title = 'relative change (%)' #its switched..... should be x_axis - - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - chart.legend.overlay = False - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - # Add the chart to a new worksheet - # new_sheet = wb.create_sheet(title="LCA Chart") - # new_sheet.add_chart(chart, "A1") - - # Save the workbook - wb.save(filename) - - print(f"Results and chart saved to {filename}") \ No newline at end of file diff --git a/dev/archiv/archiv py/plots_in_xcl.py b/dev/archiv/archiv py/plots_in_xcl.py deleted file mode 100644 index 7709063..0000000 --- a/dev/archiv/archiv py/plots_in_xcl.py +++ /dev/null @@ -1,439 +0,0 @@ -import re -import pandas as pd -from dopo import generate_sets_from_filters -from dopo import compare_activities_multiple_methods -from dopo import small_inputs_to_other_column -import openpyxl -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series -from openpyxl.chart import BarChart, Reference - -# IN EXCEL -def _categorize_sheets_by_sector(file_path): - # Load the workbook - workbook = load_workbook(filename=file_path, read_only=True) - - # Initialize a dictionary to hold sectors and their corresponding sheet names - worksheet_dict = {} - - # Iterate over all sheet names in the workbook - for sheet_name in workbook.sheetnames: - # Split the sheet name to extract the sector (assumes sector is the first part) - sector = sheet_name.split('_')[0] - - # Add the sheet name to the corresponding sector in the dictionary - if sector in worksheet_dict: - worksheet_dict[sector].append(sheet_name) - else: - worksheet_dict[sector] = [sheet_name] - - return worksheet_dict - - -# ---- -#PLOTS -# ---- - -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series - -def dot_plots_xcl(filepath_workbook, index_positions): - - worksheet_dict = _categorize_sheets_by_sector(filepath_workbook) - - # Load the workbook - wb = load_workbook(filepath_workbook) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - current_row = 1 # Start placing charts from row 1 - current_col = 1 # Start placing charts from column 1 - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - charts_per_row = 3 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find min_row, max_row and max_column - max_row = ws.max_row - max_column = ws.max_column - min_row = 1 - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - total_col = positions.get("total", None) + 1 - rank_col = positions.get("rank", None) + 1 - mean_col = positions.get("mean", None) + 1 - std_adv_col = positions.get("2std_abv", None) + 1 - std_blw_col = positions.get("2std_blw", None) + 1 - q1_col = positions.get("q1", None) + 1 - q3_col = positions.get("q3", None) + 1 - method_col = positions.get("method", None) + 1 - method_unit_col = positions.get("method unit", None) + 1 - - # Ensure that all required columns are present - if None in [total_col, rank_col, mean_col, std_adv_col, std_blw_col, q1_col, q3_col, method_col, method_unit_col]: - print(f"Warning: Missing columns in worksheet '{worksheet_name}' for sector '{sector}'. Skipping...") - continue - - # Create a ScatterChart (or other chart type as needed) - chart = ScatterChart() - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{method_value} LCA scores for {sector} sector" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.y_axis.title = f"{method_unit_value}" - chart.x_axis.title = 'activity rank' - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - - # Define the data range for the chart - y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row) - x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row) - - # Create a series and add it to the chart - series = Series(y_values, x_values, title_from_data=True) - chart.series.append(series) - chart.style = 9 - - # Customize the series to show only markers (dots) - series.marker.symbol = "circle" - series.marker.size = 5 - series.graphicalProperties.line.noFill = True - - # ADJUST X-AXIS - chart.x_axis.tickLblPos = "low" - chart.x_axis.majorGridlines = None - chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines - chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work - - chart.x_axis.scaling.orientation = "minMax" - chart.x_axis.crosses = "autoZero" - chart.x_axis.axPos = "b" - chart.x_axis.delete = False - - # ADJUST Y-AXIS - chart.y_axis.tickLblPos = "nextTo" # Position the labels next to the tick marks - chart.y_axis.delete = False # Ensure axis is not deleted - chart.y_axis.number_format = '0.00000' - chart.y_axis.majorGridlines = None - - # ADD STATS - # MEAN - mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row) - mean_series = Series(mean_y, x_values, title_from_data="True") - chart.series.append(mean_series) - mean_series.marker.symbol = "none" # No markers, just a line - mean_series.graphicalProperties.line.solidFill = "FF0000" # Red line for mean value - mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # IQR - iqr1 = Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row) - iqr3 = Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row) - iqr1_series = Series(iqr1, x_values, title_from_data="True") - iqr3_series = Series(iqr3, x_values, title_from_data="True") - chart.series.append(iqr1_series) - chart.series.append(iqr3_series) - iqr1_series.marker.symbol = "none" # No markers, just a line - iqr3_series.marker.symbol = "none" - iqr1_series.graphicalProperties.line.solidFill = "6082B6" # Blue line - iqr3_series.graphicalProperties.line.solidFill = "6082B6" - iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # STD - std_abv = Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row) - std_blw = Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row) - std_abv_series = Series(std_abv, x_values, title_from_data="True") - std_blw_series = Series(std_blw, x_values, title_from_data="True") - chart.series.append(std_abv_series) - chart.series.append(std_blw_series) - std_abv_series.marker.symbol = "none" # No markers, just a line - std_blw_series.marker.symbol = "none" - std_abv_series.graphicalProperties.line.solidFill = "FFC300" # yellow line - std_blw_series.graphicalProperties.line.solidFill = "FFC300" - std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # Set legend position to the right of the plot area - chart.legend.position = 'r' # 'r' for right - chart.legend.overlay = False - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - wb.save(filepath_workbook) - return current_row - - -from openpyxl import load_workbook -from openpyxl.chart import BarChart, Reference - -def stacked_bars_xcl(filepath_workbook, index_positions, current_row_dot_plot): - - worksheet_dict = _categorize_sheets_by_sector(filepath_workbook) - # Load the workbook - wb = load_workbook(filepath_workbook) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - current_row = current_row_dot_plot + chart_height # Start placing charts from row where dot plots have left of - current_col = 1 # Start placing charts from column 1 - charts_per_row = 3 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - - # Find min_row, max_row and max_column - max_row = ws.max_row - max_column = ws.max_column - input_min_col = positions.get("first_input", None) + 1 - rank_col = positions.get("rank", None) + 1 - method_col = positions.get("method", None) + 1 - method_unit_col = positions.get("method unit", None) + 1 - - chart = BarChart() - chart.type = "bar" - chart.style = 2 - chart.grouping = "stacked" - chart.overlap = 100 - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{sector} sector inputs contributions to {method_value}" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.y_axis.title = f"{method_unit_value}" - - chart.x_axis.title = 'activity index' - - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - chart.legend.overlay = False - - # Define data - data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col=max_column) - cats = Reference(ws, min_col=rank_col, min_row=2, max_row=max_row) - - chart.add_data(data, titles_from_data=True) - chart.set_categories(cats) - chart.shape = 4 - - # Modify each series in the chart to disable the inversion of negative values - for series in chart.series: - series.invertIfNegative = False - - # y-axis ticks - chart.y_axis.tickLblPos = "nextTo" - chart.y_axis.delete = False # Ensure axis is not deleted - chart.y_axis.number_format = '0.000' - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Add the chart to the chart worksheet - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - wb.save(filepath_workbook) - -# Plot 3: Comparing databases - -import pandas as pd -import openpyxl -from openpyxl.chart import BarChart, Reference - -def barchart_compare_db_xcl(filename, worksheet_dict=None, index_positions=None): - - # Load the workbook and select the sheet - wb = openpyxl.load_workbook(filename) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - current_row = 1 # Start placing charts from row 1 - current_col = 1 # Start placing charts from column 1 - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - charts_per_row = 2 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # # Find the key in index_positions that contains worksheet_name - # matching_key = None - # for key in index_positions.keys(): - # if worksheet_name in key: - # matching_key = key - # break - - # if not matching_key: - # print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - # continue - - # Retrieve the column positions from the index_positions dictionary - # positions = index_positions[matching_key] - - # Find min_row, max_row and max_column - min_col_data = 15 #positions.get("relative_change", None) + 1 - rank_col = 17#positions.get("rank", None) + 1 - method_col = 5#positions.get("method", None) + 1 - method_unit_col = 6#positions.get("method unit", None) + 1 - - # Create a bar chart - chart = BarChart() - chart.type="bar" - chart.style=2 - chart.overlap= 100 - chart.title = "Relative Change in LCA Scores" - chart.x_axis.title = "Activity" - chart.y_axis.title = "Relative Change (%)" - - # Set the data for the chart - data = Reference(ws, min_col=min_col_data, min_row=1, max_row=ws.max_row) - categories = Reference(ws, min_col=rank_col, min_row=2, max_row=ws.max_row) - chart.add_data(data, titles_from_data=True) - chart.set_categories(categories) - - # Modify each series in the chart to disable the inversion of negative values - for series in chart.series: - series.invertIfNegative = False - - # x-axis tickes - chart.x_axis.tickLblPos = "low" - chart.x_axis.majorGridlines = None - chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines - chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work - chart.x_axis.delete = False # Ensure axis is not deleted - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{sector} {method_value} database lca scores relative changes" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.x_axis.title = f"{method_unit_value}" - - chart.y_axis.title = 'relative change (%)' #its switched..... should be x_axis - - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - chart.legend.overlay = False - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - # Add the chart to a new worksheet - # new_sheet = wb.create_sheet(title="LCA Chart") - # new_sheet.add_chart(chart, "A1") - - # Save the workbook - wb.save(filename) - - print(f"Results and chart saved to {filename}") \ No newline at end of file diff --git a/dev/archiv/archiv py/sector_lca_scores_old.py b/dev/archiv/archiv py/sector_lca_scores_old.py deleted file mode 100644 index 417ad2c..0000000 --- a/dev/archiv/archiv py/sector_lca_scores_old.py +++ /dev/null @@ -1,520 +0,0 @@ -""" -Generates and saves Life Cycle Assessment (LCA) scores plots for various sectors to an Excel file. - -The module computes LCA scores for activities and methods, generates plots (dot plots and -stacked bar charts), and saves them along with LCA scores tables to an Excel file. -Includes helper functions for processing, plotting, and formatting data. -""" - -import bw2analyzer as ba -import pandas as pd -import re - -def sector_lca_scores_plots(activity_dict, method_dict, excel_file_name, cutoff=0.01): - """ - Generate plots of Life Cycle Assessment (LCA) scores for different sectors and save them to an - Excel file. - - This function calculates LCA scores for a set of activities and methods, then generates plots - (dot plots and stacked bar charts) based on these scores. The generated plots are saved to an - Excel file. - - Args: - activity_dict (dict): A dictionary where keys are activity names or IDs and values are - corresponding activity data. - method_dict (dict): A dictionary where keys are method names or IDs and values are - corresponding method data. - excel_file_name (str): The name of the Excel file where the LCA scores tables and plots will - be saved. - cutoff (float, optional): A cutoff value for filtering LCA scores. Any scores below this - value will be excluded. Default is 0.01. - - Returns: - None - - The function performs the following steps: - 1. Generates LCA scores tables based on the provided activity and method dictionaries and the - cutoff value. - 2. Saves the generated LCA scores tables to the specified Excel file. - 3. Creates dot plots of the LCA scores and saves them in the Excel file. - 4. Creates stacked bar charts of the LCA scores and appends them to the Excel file. - 5. Prints the last row occupied in the Excel charts sheet, which indicates where the plots end. - - Note: - - The `dot_plots_xcl` and `stacked_bars_xcl` functions are imported inside this function to - avoid circular imports. - - The function relies on helper functions such as `sector_lca_scores` and - `sector_lca_scores_to_excel` to generate and save LCA scores, and `dot_plots_xcl` and - `stacked_bars_xcl` for generating plots. - """ - from dopo.plots_sector_lca_scores import dot_plots_xcl, stacked_bars_xcl - - scores_dict=_sector_lca_scores(activity_dict, method_dict, cutoff) - column_positions=_sector_lca_scores_to_excel(scores_dict, excel_file_name) - current_row=dot_plots_xcl(excel_file_name, column_positions) - current_row=stacked_bars_xcl(excel_file_name, column_positions, current_row) - - print("last row occupied in excel charts sheet") - print(current_row) - -def _sector_lca_scores(activity_dict, method_dict, cutoff=0.01): - """ - Generates LCA score tables for each sector's activity list, including total scores and CPC - input contributions. - - This function calculates LCA scores for activities within each sector using methods specified - in the `method_dict`. Inputs below or equal to the `cutoff` value are summarized in an "other" - column. - - Parameters - ---------- - activity_dict : dict - A dictionary returned by the `process_yaml_files` function. It should contain sector names - as keys, each with an 'activities' entry holding the list of activities for that sector. - method_dict : dict - A dictionary created with the `MethodFinder` class, containing methods for LCA score - calculation. - cutoff : float, optional - A threshold value for summarizing inputs below or equal to this value in an "other" column. - Default is 0.02. - - Returns - ------- - dict - The updated dictionary (formerly `activity_dict`) with an additional key 'lca_scores' - for each sector. This contains the calculated LCA scores by method. - """ - - # Initialize scores_dict as a copy of main_dict - scores_dict = activity_dict.copy() - - # Loop through each sector in scores_dict - for sector in scores_dict.keys(): - # Extract activities for the current sector - sector_activities = scores_dict[sector]['activities'] - - # Calculate LCA scores using the specified methods - lca_scores = _compare_activities_multiple_methods( - activities_list=sector_activities, - methods=method_dict, - identifier=sector, - mode='absolute' - ) - - # Apply cutoff to summarize small inputs in an "other" column - lca_scores_cut = _small_inputs_to_other_column(lca_scores, cutoff) - - # Save the LCA scores to the scores_dict - scores_dict[sector]['lca_scores'] = lca_scores_cut - - return scores_dict - -def _sector_lca_scores_to_excel(scores_dict, excel_file_name): - """ - Writes LCA scores to an Excel file, organizing data by sector and method. - - For each sector in the `scores_dict`, this function performs the following: - - Creates a DataFrame for each method within that sector. - - Shortens column labels by removing CPC codes. - - Adds a sector name marker to facilitate tracking in Excel. - - Adds statistical columns for plotting purposes. - - Creates a dictionary of column index positions used for plotting, making it dynamic and - avoiding hardcoded column indices. - - Parameters - ---------- - scores_dict : dict - A dictionary where each key is a sector name and each value contains LCA scores and other - relevant data. The structure should be compatible with the output of the `sector_lca_scores` - function. - excel_file_name : str - The name of the Excel file to be created, including the file extension - (e.g., 'lca_scores.xlsx'). - - Returns - ------- - dict - A dictionary where each key is a "sector_method" string and each value is another dictionary - mapping column names to their index positions. This dictionary aids in dynamic plotting. - """ - - # Dictionary to store positions of columns for each method - column_positions = {} - - # DataFrames to store combined sector data - combined_sector_dfs = {} - method_dfs = [] - - # Process each sector and its methods - for sector in scores_dict.keys(): - sector_dfs = [] - lca_scores = scores_dict[sector]['lca_scores'] - - # Process each method for the current sector - for method, table in lca_scores.items(): - df = pd.DataFrame(table) - - # Add sector marker - df = _add_sector_marker(df, sector) - - # Add statistics to the DataFrame - df = _add_statistics(df) - - # Get the index values of columns - columns_of_interest = ["total", "rank", "mean", "2std_abv", "2std_blw", "q1", "q3", - "method", "method unit"] - positions = {col: df.columns.get_loc(col) for col in columns_of_interest - if col in df.columns} - column_positions[f"{sector}_{method}"] = positions - - # Find the first input column and add it to the positions dictionary - first_input_col_index = _find_first_input_column(df) - if first_input_col_index is not None: - positions["first_input"] = first_input_col_index - - # Remove CPC from input labels - df = _clean_column_labels(df) - - sector_dfs.append(df) - - # Store method-specific DataFrames for later - # - # method_dfs.append((f"{sector}_{method}", df)) - method_dfs.append((f"{method}", df)) - print('key in method_dfs') - print(method) - - # Combine all dataframes for this sector - combined_df = pd.concat(sector_dfs, axis=0, ignore_index=True, sort=False).fillna(0) - combined_sector_dfs[sector] = combined_df - - # Write to Excel file - with pd.ExcelWriter(excel_file_name, engine='openpyxl') as writer: - # Write all combined sector sheets - for sector, combined_df in combined_sector_dfs.items(): - worksheet_name_big = f"{sector}" - if len(worksheet_name_big) > 31: - worksheet_name_big = worksheet_name_big[:31] - combined_df.to_excel(writer, sheet_name=worksheet_name_big, index=False) - - # Write all method-specific sheets - for worksheet_name, df in method_dfs: - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - df.to_excel(writer, sheet_name=worksheet_name, index=False) - - return column_positions - -def _compare_activities_multiple_methods( - activities_list, methods, identifier, output_format="pandas", mode="absolute" -): - """ - Compares a list of activities using multiple LCA methods and stores the results in a dictionary - of DataFrames. - - This function generates comparison results for each method in `methods`, formats them into - DataFrames, and organizes them in a dictionary where the keys are method-specific names derived - from the `identifier` and method details. Each DataFrame contains total scores and input - contributions, with columns ordered and indexed appropriately. - - Parameters - ---------- - activities_list : list - A list of activities to be compared. - methods : dict - A dictionary where keys are method names and values are dictionaries with the key "object" - being a Brightway Method object used for comparisons. - identifier : str - A string used to construct unique variable names for the comparison results - (e.g., sector name). - output_format : str, optional - The format for the output DataFrame. Default is "pandas". Other formats can be specified - if supported. - mode : str, optional - The mode of comparison. Options are "absolute" (default) and "relative". - - Returns - ------- - dict - A dictionary where each key is a unique name derived from the `identifier` and method name, - and each value is a DataFrame containing the comparison results. - """ - dataframes_dict = {} - - for method_key, method_details in methods.items(): # method_key is not called, but necessary - # Perform the comparison using the Brightway2 analyzer - result = ba.comparisons.compare_activities_by_grouped_leaves( - activities_list, - method_details["object"].name, - output_format=output_format, - mode=mode, - ) - - # Create a variable name using the method name and identifier - method_name = method_details["object"].name[2].replace(" ", "_").lower() - var_name = f"{identifier}_{method_name}" - - # Add method and method unit columns to the DataFrame - result["method"] = str(method_details["object"].name[2]) - result["method unit"] = str(method_details["object"].metadata["unit"]) - - # Reorder columns to place 'method' and 'method unit' after 'unit' - cols = list(result.columns) - unit_index = cols.index("unit") - cols.insert(unit_index + 1, cols.pop(cols.index("method"))) - cols.insert(unit_index + 2, cols.pop(cols.index("method unit"))) - result = result[cols] - - # Sort rows by 'total' column and reset index - result = result.sort_values('total').reset_index(drop=True) - - # Store the result DataFrame in the dictionary - dataframes_dict[var_name] = result - - return dataframes_dict - -def _small_inputs_to_other_column(dataframes_dict, cutoff=0.01): - """ - Aggregates insignificant input contributions into an 'other' column for each DataFrame in the - input dictionary. - - Contributions that are less than or equal to the specified cutoff value (relative to the 'total' - column) are combined into a new 'other' column. The original columns with these contributions - are set to zero. Columns that end up containing only zeros are removed, and columns named None - or "Unnamed" are also combined into the 'other' column before removal. - - Parameters - ---------- - dataframes_dict : dict - A dictionary where each key corresponds to a DataFrame. Each DataFrame should contain a - 'total' column and may include columns to be aggregated into the 'other' column based on - their contributions. - cutoff : float, optional - The cutoff value for determining insignificant contributions. Contributions less than or - equal to this value (relative to the 'total' column) are aggregated into the 'other' column. - Default is 0.01. - - Returns - ------- - dict - A dictionary with the same keys as `dataframes_dict`, but with each DataFrame updated to - include an 'other' column and without insignificant columns. - """ - - processed_dict = {} - - for key, df in dataframes_dict.items(): - # Identify the 'total' column - total_col_index = df.columns.get_loc('total') - - # Separate string and numeric columns - string_cols = df.iloc[:, :total_col_index] - numeric_cols = df.iloc[:, total_col_index:] - numeric_cols = numeric_cols.astype(float) - - # Create 'other' column - numeric_cols['other'] = 0.0 - - # Identify and handle columns that are None or called "Unnamed" - columns_to_remove = [] - for col in df.columns: - if col is None or col == "None" or str(col).startswith("Unnamed"): - numeric_cols['other'] += df[col].fillna(0) - columns_to_remove.append(col) - - # Drop the identified columns - numeric_cols.drop(columns=columns_to_remove, inplace=True) - - for col in numeric_cols.columns[1:-1]: # Skip 'total' and 'other' - mask_positive_total = numeric_cols['total'] > 0 - mask_negative_total = ~mask_positive_total - - # For rows with positive total values - mask_pos = mask_positive_total & ((numeric_cols[col] < numeric_cols['total'] * cutoff) & - (numeric_cols[col] > numeric_cols['total'] * (-cutoff))) - - # For rows with negative total values - mask_neg = mask_negative_total & ((numeric_cols[col] > numeric_cols['total'] * cutoff) & - (numeric_cols[col] < numeric_cols['total'] * (-cutoff))) - - # Apply the logic for both positive and negative totals - numeric_cols.loc[mask_pos | mask_neg, 'other'] += numeric_cols.loc[mask_pos | - mask_neg, col] - numeric_cols.loc[mask_pos | mask_neg, col] = 0 - - # Add these values to 'other' - numeric_cols.loc[mask_pos, 'other'] += numeric_cols.loc[mask_pos, col] - numeric_cols.loc[mask_neg, 'other'] += numeric_cols.loc[mask_neg, col] - - # Set these values to zero in the original column - numeric_cols.loc[mask_pos, col] = 0 - numeric_cols.loc[mask_neg,col] = 0 - - # Remove columns with all zeros (except 'total' and 'other') - cols_to_keep = ['total'] + [col for col in numeric_cols.columns[1:-1] - if not (numeric_cols[col] == 0).all()] - cols_to_keep.append('other') - - numeric_cols = numeric_cols[cols_to_keep] - - # Combine string and processed numeric columns - processed_df = pd.concat([string_cols, numeric_cols], axis=1) - - # Sort DataFrame by total (optional) - processed_df = processed_df.sort_values('total', ascending=False) - - # Store the processed DataFrame in the result dictionary - processed_dict[key] = processed_df - - return processed_dict - -def _add_statistics(df, column_name='total'): - """ - Adds statistical indicators to a DataFrame for plotting purposes. - - This function computes several statistics based on the values in the specified column - (`column_name`). It adds columns for ranking, mean, standard deviation bounds, - and interquartile range (IQR). The statistics are added to aid in visual analysis and plotting. - - Parameters - ---------- - df : pandas.DataFrame - The DataFrame to which statistical indicators will be added. - column_name : str, optional - The name of the column on which to base the statistics. Default is 'total'. - - Returns - ------- - pandas.DataFrame - The updated DataFrame with added columns for ranking, mean, standard deviation bounds, - and IQR. - """ - - # Add a rank column based on the specified column - df['rank'] = df[column_name].rank(method="first", ascending=False) - - # Calculate mean, standard deviation bounds, and IQR - df['mean'] = df[column_name].mean() - df['2std_abv'] = df['mean'] + df[column_name].std() * 2 - df['2std_blw'] = df['mean'] - df[column_name].std() * 2 - df['q1'] = df[column_name].quantile(0.25) - df['q3'] = df[column_name].quantile(0.75) - - # Reorder the columns to place the new columns after the specified column - cols = df.columns.tolist() - total_index = cols.index(column_name) + 1 - new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3'] - cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)] - - return df[cols] - -def _find_first_input_column(df): - """ - Identifies the index of the first column in a DataFrame that contains input contribution data. - - This function is used to locate the column in the DataFrame that holds input contribution data, - which is essential for dynamically selecting the correct column for plotting. - It ensures compatibility with DataFrames that may have different column orders or names, such as - those including "direct emissions." - - Parameters - ---------- - df : pandas.DataFrame - The DataFrame in which to find the first input contribution column. - - Returns - ------- - int or None - The index of the first column containing input data. Returns `None` if no such column - is found. - """ - - def _clean_label(label): - return label if label is not None else 'Unnamed' - - # Apply the cleaning function to all column names - df.columns = [_clean_label(col) for col in df.columns] - - # Regular expression pattern to match "Number: Name" - pattern = r'^\d+:\s*' - - for idx, column in enumerate(df.columns): - if (column is not None and re.match(pattern, column)) or column == 'Unnamed' or column == 'direct emissions': - return idx - - return None - -def _clean_column_labels(df): - """ - Cleans and formats column labels in the DataFrame by removing unnecessary numbers and colons. - - This function is used to standardize column headers by removing leading numbers and colons, - which can be present in columns used for input contributions or other data. It should be called - after `_find_first_input_column` to ensure column order and identification are correctly handled. - - Parameters - ---------- - df : pandas.DataFrame - The DataFrame whose column labels are to be cleaned. - - Returns - ------- - pandas.DataFrame - The DataFrame with formatted column labels, where unnecessary numbers and colons have - been removed. - """ - - # Function to remove numbers and colon from column names - def _clean_label(label): - if label is None: - return 'Unnamed' # Placeholder for missing or unnamed columns - return re.sub(r'^\d+:\s*', '', str(label)) - - # Apply the cleaning function to all column names - df.columns = [_clean_label(col) for col in df.columns] - - return df - -def _add_sector_marker(df, sector): - """ - Adds a sector marker to the DataFrame for labeling and identification purposes. - - This function is used to add a new column to the DataFrame that indicates the sector associated - with the data. The sector information is useful for identifying and labeling data in plots and - Excel sheets. The column is positioned immediately after the 'product' column if it exists, or - appended at the end if 'product' is not present. - - Parameters - ---------- - df : pandas.DataFrame - The DataFrame to which the sector marker will be added. - - sector : str - The name of the sector to be added as a marker. - - Returns - ------- - pandas.DataFrame - The DataFrame with an added 'sector' column, positioned immediately after the 'product' - column if present, - or at the end otherwise. - """ - - # Add sector marker column - df['sector'] = str(sector) - - # Reorder the columns to move 'sector' after 'product' - columns = list(df.columns) - - if 'product' in df.columns: - product_index = columns.index('product') - # Insert 'sector' after 'product' - columns.insert(product_index + 1, columns.pop(columns.index('sector'))) - else: - # If 'product' does not exist, 'sector' remains in the last column - columns.append(columns.pop(columns.index('sector'))) - - # Reassign the DataFrame with the new column order - df = df[columns] - - return df diff --git a/dev/archiv/archiv py/sector_score_dict.py b/dev/archiv/archiv py/sector_score_dict.py deleted file mode 100644 index f6221bb..0000000 --- a/dev/archiv/archiv py/sector_score_dict.py +++ /dev/null @@ -1,154 +0,0 @@ -# Inputs -# ------ -from premise import * - -# data?? -import os -import yaml -import peewee as pw - -# brightway -import brightway2 as bw -import bw2analyzer as ba -import bw2data as bd - -# common -import pandas as pd -import numpy as np - -# plotting -import matplotlib.pyplot as plt -import seaborn as sns - -# to be completed -import ast - - -# Function based on brightways bw2analyzer (ba) function for generating dataframe containing total score and contribution by inputs -# ----------------------------------------------------------------------------------------------------------------------------- - - -def compare_activities_multiple_methods( - activities_list, methods, identifier, output_format="pandas", mode="absolute" -): - """ - Compares a set of activities by multiple methods, stores each generated dataframe as a variable (the method is the variable name) in a dictionary. - - :param activities_list: List of activities to compare - :param methods: List of Brightway Method objects - :param identifier: A string used in defining the variable names to better identify comparisons (e.g. sector name). - :param output_format: Output format for the comparison (default: 'pandas') - :param mode: Mode for the comparison (default: 'absolute'; others: 'relative') - :return: Dictionary of resulting dataframes from the comparisons - """ - dataframes_dict = {} - - for method_key, method_details in methods.items(): - result = ba.comparisons.compare_activities_by_grouped_leaves( - activities_list, - method_details["object"].name, - output_format=output_format, - mode=mode, - ) - - # Create a variable name using the method name tuple and identifier - method_name = method_details["object"].name[2].replace(" ", "_").lower() - var_name = f"{identifier}_{method_name}" - - # add two columns method and method unit to the df - result["method"] = str(method_details["object"].name[2]) - result["method unit"] = str(method_details["object"].metadata["unit"]) - - # order the columns after column unit - cols = list(result.columns) - unit_index = cols.index("unit") - cols.insert(unit_index + 1, cols.pop(cols.index("method"))) - cols.insert(unit_index + 2, cols.pop(cols.index("method unit"))) - result = result[cols] - - # Order the rows based on 'activity' and 'location' columns - result = result.sort_values(["activity", "location"]) - - # Reset the index numbering - result = result.reset_index(drop=True) - - # Store the result in the dictionary - dataframes_dict[var_name] = result - - return dataframes_dict - - -# Function for creating 'other' category for insignificant input contributions (for dataframes generated with compare_activities_multiple_methods) -# ------------------------------------------------------------------------------------------------------------------------------------------------- - - -def small_inputs_to_other_column(dataframes_dict, cutoff=0.01): - ''' - Aggregate values into a new 'other' column for those contributing less than or equal to the cutoff value to the 'total' column value. - Set the aggregated values to zero in their original columns. - Remove any columns that end up containing only zeros. - - Additionally, if a column is named None or "Unnamed", its values will be added to the 'other' column and then the original column will be deleted. - - :param dataframes_dict: the dictionary - ''' - - processed_dict = {} - - for key, df in dataframes_dict.items(): - # Identify the 'total' column - total_col_index = df.columns.get_loc('total') - - # Separate string and numeric columns - string_cols = df.iloc[:, :total_col_index] - numeric_cols = df.iloc[:, total_col_index:] - numeric_cols = numeric_cols.astype(float) - - # Calculate the threshold for each row (cutoff% of total) - threshold = numeric_cols['total'] * cutoff - - # Create 'other' column - numeric_cols['other'] = 0.0 - print(numeric_cols['other']) - # Identify and handle columns that are None or called "Unnamed" - columns_to_remove = [] - for col in df.columns: - if col is None or col == "None" or str(col).startswith("Unnamed"): - numeric_cols['other'] += df[col].fillna(0) - print(numeric_cols['other']) # Add the values to the 'other' column, NaN values to zero to avoid complications of present - columns_to_remove.append(col) - - print(columns_to_remove) - - # Drop the identified columns - numeric_cols.drop(columns=columns_to_remove, inplace=True) - - # Process each numeric column (except 'total' and 'other') - for col in numeric_cols.columns[1:-1]: # Skip 'total' and 'other' - # Identify values less than the threshold - mask = abs(numeric_cols[col]) < threshold # abs() to include negative contributions - - # Add these values to 'other' - numeric_cols.loc[mask, 'other'] += numeric_cols.loc[mask, col] - - # Set these values to zero in the original column - numeric_cols.loc[mask, col] = 0 - - # Remove columns with all zeros (except 'total' and 'other') - cols_to_keep = ['total'] + [col for col in numeric_cols.columns[1:-1] - if not (numeric_cols[col] == 0).all()] - cols_to_keep.append('other') - - numeric_cols = numeric_cols[cols_to_keep] - - # Combine string and processed numeric columns - processed_df = pd.concat([string_cols, numeric_cols], axis=1) - - # Sort DataFrame by total (optional) - processed_df = processed_df.sort_values('total', ascending=False) - - # Store the processed DataFrame in the result dictionary - processed_dict[key] = processed_df - - return processed_dict - diff --git a/dev/cpc inputs code/cpc_inputs.py b/dev/cpc inputs code/cpc_inputs.py deleted file mode 100644 index 2bbe1d0..0000000 --- a/dev/cpc inputs code/cpc_inputs.py +++ /dev/null @@ -1,126 +0,0 @@ -# Imports -# -------- - -# brightway -import brightway2 as bw -import bw2analyzer as ba - -# common -import pandas as pd -import numpy as np - -# to be completed -import ast - -# Function to generate dataframes containing inputs in cpc format not characterized from an activity list -# Level 2.3 plot dependency -# ------------------------------------------------------------------------------------------------------------------------------------ - - -def _get_cpc_inputs_of_activities(activities_list, input_type="list"): - """ - for param description see function lvl23_plot_input_comparison_plot_no_method - - NOTE: could adapt this function to get the outputs, or create another one. At the moment only inputs are considered. - - """ - - def _activity_list_inputs_cpc(activities_list, input_type): - all_inputs = [] - - if input_type == "list": - activity_iterator = activities_list - elif input_type == "dict": - activity_iterator = activities_list.values() - else: - raise ValueError("input_type must be either 'list' or 'dict'") - - for activity in activity_iterator: - inputs_keys = pd.Series( - { - bw.get_activity(exc.input).key: exc.amount - for exc in activity.technosphere() - }, - name=activity["name"] + ", " + activity["location"], - ) - - # Adjust the way the key is presented - inputs_keys = inputs_keys.reset_index() - inputs_keys["full_key"] = inputs_keys.apply( - lambda row: f"('{row['level_0']}', '{row['level_1']}')", axis=1 - ) - inputs_keys = inputs_keys.drop(["level_0", "level_1"], axis=1).set_index( - "full_key" - ) - - # Add empty cpc column and activity information - inputs_keys.insert( - 0, "identifier", activity["name"] + ", " + activity["location"] - ) - inputs_keys.insert(1, "activity", activity["name"]) - inputs_keys.insert(2, "location", activity["location"]) - inputs_keys.insert(3, "unit", activity["unit"]) - inputs_keys.insert(4, "cpc", None) - - all_inputs.append(inputs_keys) - - # Combine all inputs into a single DataFrame - combined_inputs = pd.concat(all_inputs, axis=0) - - return combined_inputs - - def _update_cpc_information(combined_inputs): - for index, row in combined_inputs.iterrows(): - # Transform each key to tuple - tuple_key = ast.literal_eval(index) - - # Get input activity for the key - input_activity = bw.get_activity(tuple_key) - - # Get cpc name for activity - cpc_name = ba.comparisons.get_cpc(input_activity) - - # Store cpc_name in the 'cpc' column of the combined_inputs dataframe - combined_inputs.at[index, "cpc"] = cpc_name - - return combined_inputs - - def _transform_dataframe(combined_inputs): - # Set 'identifier' as the new index and drop the 'full_key' index - combined_inputs = ( - combined_inputs.reset_index() - .set_index("identifier") - .drop("full_key", axis=1) - ) - - # Determine the index of the 'unit' column - unit_index = combined_inputs.columns.get_loc("unit") - - # Split the dataframe into two parts - combined_inputs_identifier = combined_inputs.iloc[:, : unit_index + 1] - combined_inputs_cpc = combined_inputs.iloc[:, unit_index + 1 :] - # set index of to 'cpc' in combined_input_cpc - combined_inputs_cpc = combined_inputs_cpc.set_index("cpc") - - # Combine rows with the same index value in combined_inputs_cpc - combined_inputs_cpc = combined_inputs_cpc.groupby(level=0).agg( - lambda x: np.sum(x) if x.dtype.kind in "biufc" else x.iloc[0] - ) - # Transpose combined_inputs_cpc - combined_inputs_cpc_trans = combined_inputs_cpc.T - - # Merge combined_inputs_identifier and combined_inputs_cpc_trans - result = combined_inputs_identifier.join(combined_inputs_cpc_trans) - result = result.drop_duplicates() - - # Sort dataframe by activity and location aplphabetically and reset the index - result = result.sort_values(by=["activity", "location"]) - result = result.reset_index(drop=True) - return result - - # Execute the workflow - combined_inputs = _activity_list_inputs_cpc(activities_list, input_type) - combined_inputs_with_cpc = _update_cpc_information(combined_inputs) - final_result = _transform_dataframe(combined_inputs_with_cpc) - - return final_result diff --git a/dev/database_comparison.py b/dev/database_comparison.py deleted file mode 100644 index 5a66b94..0000000 --- a/dev/database_comparison.py +++ /dev/null @@ -1,328 +0,0 @@ - -import brightway2 as bw -import bw2data as bd -import bw2analyzer as ba - -#reduce? -import ast -import pandas as pd -import matplotlib.pyplot as plt -import seaborn as sns -import dopo -from dopo import* - -import pandas as pd -from openpyxl import load_workbook - -import pandas as pd - -import re -import pandas as pd - -from dopo import small_inputs_to_other_column -import openpyxl -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series -from openpyxl.chart import BarChart, Reference - -def _lca_scores_compare(database_dict, method_dict): - # Dictionary to store DataFrames for each sector - sector_dataframes = {} - - # Labels for the DataFrame columns - labels = [ - "activity", - "activity key", - "reference product", - "location", - "method", - "method unit", - "total", - ] - - # Loop through each sector in the database_dict - for sector, sector_data in database_dict.items(): - # Initialize a dictionary to hold DataFrames for each method in the current sector - method_dataframes = {} - - # Loop through each method in method_dict - for meth_key, meth_info in method_dict.items(): - data = [] # Initialize a new list to hold data for the current method - - # Extract the 'method name' tuple from the current method info - method_name = meth_info['method name'] - method_short_name=meth_info['short name'] - method_unit = meth_info['unit'] - - # Now loop through each activity in the sector - for act in sector_data['activities']: - # Ensure the activity is an instance of the expected class - if not isinstance(act, bd.backends.peewee.proxies.Activity): - raise ValueError("`activities` must be an iterable of `Activity` instances") - - # Perform LCA calculations - lca = bw.LCA({act: 1}, method_name) - lca.lci() - lca.lcia() - - # Collect data for the current activity and method - data.append([ - act["name"], - act.key, - act.get("reference product"), - act.get("location", "")[:25], - method_short_name, - method_unit, - lca.score, - ]) - - # Convert the data list to a DataFrame and store it in the sector's dictionary - method_dataframes[method_short_name] = pd.DataFrame(data, columns=labels) - - # Store the method_dataframes dictionary in the sector_dataframes dictionary - sector_dataframes[sector] = method_dataframes - - # Now `sector_dataframes` is a dictionary where each key is a sector, and the value is another dictionary with method names and their corresponding DataFrames - return sector_dataframes - - -import pandas as pd - -def _relative_changes_df(database_dict_eco, database_dict_premise, method_dict): - - ecoinvent_scores = _lca_scores_compare(database_dict_eco, method_dict) - premise_scores = _lca_scores_compare(database_dict_premise, method_dict) - - relative_dict = {} - - # Iterate over sectors - for sector_key in ecoinvent_scores: - # Initialize the sector key in the output dictionary - if sector_key not in relative_dict: - relative_dict[sector_key] = {} - - # Iterate over methods within the sector - for method_key in ecoinvent_scores[sector_key]: - # Check if the method_key exists in both dictionaries to avoid KeyError - if method_key in premise_scores.get(sector_key, {}): - # Get the corresponding DataFrames - df_ei = ecoinvent_scores[sector_key][method_key] - df_premise = premise_scores[sector_key][method_key] - - #print(df_ei['activity key']) - #print(df_premise) - - # Split the 'activity key' to extract the second part - df_ei['activity_code'] = df_ei['activity key'].apply(lambda x: x[1]) # Access the second element of the tuple - df_premise['activity_code'] = df_premise['activity key'].apply(lambda x: x[1]) - - # Merge the two dataframes based on the activity code and method name - merged_df = pd.merge(df_ei, df_premise, on=['activity_code', 'method'], suffixes=('_ei', '_premise')) - - # Calculate the relative change - merged_df['relative_change'] = ((merged_df['total_premise'] - merged_df['total_ei']) / merged_df['total_ei']) * 100 - - # Store the result in the dictionary - relative_dict[sector_key][method_key] = merged_df - - return relative_dict - -def relative_changes_db(database_dict_eco, database_dict_premise, method_dict, excel_file): - relative_dict = _relative_changes_df(database_dict_eco, database_dict_premise, method_dict) - - # Load existing workbook and get existing sheet names - try: - book = load_workbook(excel_file) - existing_sheets = book.sheetnames - except FileNotFoundError: - # If the file does not exist, we will create a new one, so no need to check existing sheets - existing_sheets = [] - - column_positions = {} # stores the indexes of columns for plotting - - with pd.ExcelWriter(excel_file, engine='openpyxl', mode='a') as writer: - for sector in relative_dict.keys(): - relative_changes = relative_dict[sector] - - for method, table in relative_changes.items(): - # Create a DataFrame for the current LCA score table - df = pd.DataFrame(table) - - # Add sector marker - df = _add_sector_marker(df, sector) #!! ADJUST - - # Sort the DataFrame by 'relative_change' from largest negative to largest positive - df = df.sort_values(by='relative_change', ascending=False) - - # Add a 'rank' column based on the 'relative_change', ranking from most negative to least negative - df['rank'] = df['relative_change'].rank(ascending=False, method='dense').astype(int) - - # Get the index values of columns - columns_of_interest = ["rank", "relative_change", "method", "method unit_ei"] - positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns} - column_positions[f"{sector}_comparison_{method}"] = positions - - # Generate worksheet name - worksheet_name = f"{sector}_comparison_{method}" - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - - # Ensure unique sheet name - original_worksheet_name = worksheet_name - counter = 1 - while worksheet_name in existing_sheets: - worksheet_name = f"{original_worksheet_name}_{counter}" - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - counter += 1 - - # Save the DataFrame to the Excel file in a new worksheet - df.to_excel(writer, sheet_name=worksheet_name, index=False) - - return column_positions - - -def _categorize_sheets_by_sector_comparison(file_path): - # Load the workbook - workbook = load_workbook(filename=file_path, read_only=True) - - # Initialize a dictionary to hold sectors and their corresponding sheet names - worksheet_dict = {} - - # Iterate over all sheet names in the workbook - for sheet_name in workbook.sheetnames: - # Skip combined sector sheets (assuming these sheets don't have an underscore) - if '_comparison' not in sheet_name: - continue - - # Split the sheet name to extract the sector (assumes sector is the first part) - sector = sheet_name.split('_')[0] - - # Add the sheet name to the corresponding sector in the dictionary - if sector in worksheet_dict: - worksheet_dict[sector].append(sheet_name) - else: - worksheet_dict[sector] = [sheet_name] - - return worksheet_dict - - -from openpyxl import load_workbook -from openpyxl.chart import BarChart, Reference -from openpyxl.chart.axis import ChartLines - -def barchart_compare_db_xcl(filename, index_positions, current_row_stacked_bar): #, index_positions=None): - - worksheet_dict =_categorize_sheets_by_sector_comparison(file_path=filename) - # Load the workbook and select the sheet - wb = load_workbook(filename) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - current_col = 1 # Start placing charts from column 1 - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - charts_per_row = 3 # Number of charts per row - current_row = current_row_stacked_bar + chart_height - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - - # Find min_row, max_row and max_column - min_col_data = positions.get("relative_change", None) + 1 #15 - rank_col = positions.get("rank", None) + 1 #17 - method_col = positions.get("method", None) + 1 #5 - method_unit_col = positions.get("method unit_ei", None) + 1 #6 - - # Create a bar chart - chart = BarChart() - chart.type="bar" - chart.style=2 - chart.overlap= 100 - - # Set the data for the chart - data = Reference(ws, min_col=min_col_data, min_row=2, max_row=ws.max_row) - categories = Reference(ws, min_col=rank_col, min_row=2, max_row=ws.max_row) - chart.add_data(data, titles_from_data=False) - chart.set_categories(categories) - - # Modify each series in the chart to disable the inversion of negative values - for series in chart.series: - series.invertIfNegative = False - - # Y-axis (categories) settings - chart.y_axis.majorGridlines = ChartLines() - chart.y_axis.delete = False - chart.y_axis.tickLblPos = "low" - - # X-axis (values) settings - chart.x_axis.majorGridlines = None - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.title = f"{sector} - Database relatvie comparison for method: {method_value}" - - - chart.x_axis.title = "Activity" - chart.y_axis.title = "Relative Change (%)" - - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - chart.legend.overlay = False - - # Adjust chart dimensions - chart.width = 30 # Increased width for better readability - chart.height = 15 - - # Adjust chart dimensions - chart.width = 20 - chart.height = 14 - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - # Add the chart to a new worksheet - # new_sheet = wb.create_sheet(title="LCA Chart") - # new_sheet.add_chart(chart, "A1") - - # Save the workbook - wb.save(filename) - - print(f"Results and chart saved to {filename}") diff --git a/dev/exchanges_stats.ipynb b/dev/exchanges_stats.ipynb deleted file mode 100644 index 70d524b..0000000 --- a/dev/exchanges_stats.ipynb +++ /dev/null @@ -1,476 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import dopo\n", - "from dopo import*\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'}}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder=dopo.methods.MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "# finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "# finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "# finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Clinker': {'yaml': 'C:\\\\Users\\\\fried\\\\premise_validation\\\\dopo\\\\yamls\\\\cement_steel_clinker.yaml',\n", - " 'yaml identifier': 'Clinker'}}" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Clinker']={'yaml': r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\cement_steel_clinker.yaml', \n", - " 'yaml identifier': 'Clinker'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "#files_dict['Steel']= {'yaml':r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\steel_small.yaml',\n", - " # 'yaml identifier': 'Steel'}\n", - "#files_dict['Fuel']={'yaml': r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\fuels_small.yaml',\n", - " # 'yaml identifier': 'Fuels' } \n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Clinker with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Clinker:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'd97ecce7cc2c13235fc2a239d2db7b1e')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '6ac3c0cfa9991b7f49bc8427de214c87')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a1fe25988545581c0a1a3dc14c9bd703')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '9afc6ff64b5057d4e5b6c57d6a4bc584')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '464b1477852d24d39a82d30d48c15235')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '7daf2fa9e506e92babcf867fc555b319')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'b98e8c5e4e7c1dd7bd580ce67bc5e387')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'e6b12fe3a84a44f96d41173737cf46ef')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '6370363f34fe796680af3499429857f5')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '728233823577bef32e1b2e3c8ecabad2')\n" - ] - } - ], - "source": [ - "#for comparison\n", - "premise_dict = dopo.sector_filter.process_yaml_files(files_dict, ei39SSP2)\n", - "#ecoinvent_dict = dopo.sector_filter.process_yaml_files(files_dict, ei39)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['clinker production' (kilogram, IN, None),\n", - " 'clinker production' (kilogram, ZA, None),\n", - " 'clinker production' (kilogram, PE, None),\n", - " 'clinker production' (kilogram, CH, None),\n", - " 'clinker production' (kilogram, US, None),\n", - " 'clinker production' (kilogram, CO, None),\n", - " 'clinker production' (kilogram, Europe without Switzerland, None),\n", - " 'clinker production' (kilogram, CA-QC, None),\n", - " 'clinker production' (kilogram, RoW, None),\n", - " 'clinker production' (kilogram, BR, None)]" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "premise_dict['Clinker']['activities']" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(premise_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "premise_dict_1=premise_dict['Clinker']['activities'][0]" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "premise_dict_small=premise_dict['Clinker']['activities'][0:3]" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(premise_dict_small)" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Results for key: Clinker\n", - " Activity: 'clinker production' (kilogram, IN, None)\n", - " Total Exchanges: 5\n", - " Median Exchange Amount: 0.955\n", - " Exchange Amounts: [0.66, 1.0, 1.0, 0.496, 0.955]\n", - " Activity: 'clinker production' (kilogram, ZA, None)\n", - " Total Exchanges: 2\n", - " Median Exchange Amount: 1.0\n", - " Exchange Amounts: [1.0, 1.0]\n", - " Activity: 'clinker production' (kilogram, PE, None)\n", - " Total Exchanges: 2\n", - " Median Exchange Amount: 1.0\n", - " Exchange Amounts: [1.0, 1.0]\n", - "----------------------------------------\n" - ] - } - ], - "source": [ - "import numpy as np # To calculate the median\n", - "\n", - "database_name=ei39SSP2\n", - "\n", - "# Initialize a results dictionary to store exchange data for each key\n", - "results = {}\n", - "\n", - "# Iterate over each key in the premise_dict\n", - "for key, value in premise_dict.items():\n", - " # Dictionary to store exchange data for each activity under the current key\n", - " activities_data = {}\n", - "\n", - " try:\n", - " # Get the list of activities for the current key\n", - " activities_list = premise_dict[key]['activities'][:3]\n", - " except KeyError:\n", - " print(f\"KeyError: 'activities' not found for key: {key}\")\n", - " continue\n", - "\n", - " # Check if there are activities to process\n", - " if not activities_list:\n", - " print(f\"No activities found for key: {key}\")\n", - " continue\n", - " \n", - " # Iterate over each activity in the activities_list\n", - " for activity in activities_list:\n", - " # Initialize the counter and amounts list for this activity\n", - " exchange_count = 0\n", - " exchange_amounts = []\n", - "\n", - " # Retrieve the unique identifier for the activity (e.g., activity.key)\n", - " activity_key = activity.key # Adjust this line to match the correct attribute for key\n", - "\n", - " # Loop through all activities in the database\n", - " for act in database_name: # Replace 'database_name' with your actual database object\n", - " # Loop through all exchanges in the current activity of the database\n", - " for exc in act.exchanges():\n", - " # Compare unique keys of exchange input and activity\n", - " if exc.input.key == activity_key: # Ensure we compare keys, not objects\n", - " exchange_count += 1\n", - " # Store the amount of the exchange\n", - " exchange_amounts.append(exc['amount'])\n", - "\n", - " # Calculate the median of the exchange amounts if there are any\n", - " median_value = np.median(exchange_amounts) if exchange_amounts else None\n", - " \n", - " # Store the exchange data for the current activity\n", - " activities_data[str(activity)] = {\n", - " \"exchange_count\": exchange_count,\n", - " \"exchange_amounts\": exchange_amounts,\n", - " \"median_exchange_amount\": median_value,\n", - " \"activitiy_key\": activity_key\n", - " }\n", - "\n", - " # Store the activities data in the results dictionary under the current key\n", - " results[key] = activities_data\n", - "\n", - "# Print or process the results as needed\n", - "for key, activity_data in results.items():\n", - " print(f\"Results for key: {key}\")\n", - " for activity, data in activity_data.items():\n", - " print(f\" Activity: {activity}\")\n", - " print(f\" Total Exchanges: {data['exchange_count']}\")\n", - " print(f\" Median Exchange Amount: {data['median_exchange_amount']}\")\n", - " print(f\" Exchange Amounts: {data['exchange_amounts']}\")\n", - " print(\"-\" * 40)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Clinker': {\"'clinker production' (kilogram, IN, None)\": {'exchange_count': 5,\n", - " 'exchange_amounts': [0.66, 1.0, 1.0, 0.496, 0.955],\n", - " 'median_exchange_amount': 0.955},\n", - " \"'clinker production' (kilogram, ZA, None)\": {'exchange_count': 2,\n", - " 'exchange_amounts': [1.0, 1.0],\n", - " 'median_exchange_amount': 1.0},\n", - " \"'clinker production' (kilogram, PE, None)\": {'exchange_count': 2,\n", - " 'exchange_amounts': [1.0, 1.0],\n", - " 'median_exchange_amount': 1.0}}}" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "results" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Key: classifications, Type of Value: , Value: [('ISIC rev.4 ecoinvent', '2394:Manufacture of cement, lime and plaster'), ('CPC', '37440: Portland cement, aluminous cement, slag cement and similar hydraulic cements, except in the form of clinkers')]\n", - "----------------------------------------\n", - "Key: comment, Type of Value: , Value: The dataset represents an average production of cement in South Africa. The dataset describes the production of Portland cement (CEM I) and covers some relevant process steps as shown in the Figure. Portland cement production involves the chemical transformation of raw materials: calcium oxides; silica; alumina and iron oxide into various types of cementitious products, by-products and wastes. The Portland cement manufacturing process consists of four main steps: (1) Quarrying of limestone and transportation of raw materials to the processing plant. (2) Preparation of “raw meal” for pyroprocessing (3) Pyroprocessing of raw materials to produce Portland cement clinker using the dry process. (4) Final grinding of the clinker together with inter-grinding with a small proportion of gypsum to produce Portland cement. Steps (1) to (4) are not considered in dataset.\n", - "Image: https://db3.ecoinvent.org/images/decb5103-25ff-4485-b6f9-07320ff02e47\n", - "Geography: The dataset represents the Portland cement production for South Africa.\n", - "Technology: In South Africa, all cement production is through dry kiln process. The clinker is ground in mills with gypsum (5%) and depending on the type of cement and technical standard (SAN 50197-1) with other materials such as blast furnace slag, fly ash, pozzolan and lime fillers to produce the Portland cement.\n", - "----------------------------------------\n", - "Key: location, Type of Value: , Value: ZA\n", - "----------------------------------------\n", - "Key: database, Type of Value: , Value: ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "----------------------------------------\n", - "Key: code, Type of Value: , Value: 86841f8c7ee2668f244d3b8e34f41932\n", - "----------------------------------------\n", - "Key: name, Type of Value: , Value: cement production, Portland\n", - "----------------------------------------\n", - "Key: reference product, Type of Value: , Value: cement, Portland\n", - "----------------------------------------\n", - "Key: unit, Type of Value: , Value: kilogram\n", - "----------------------------------------\n", - "Key: parameters, Type of Value: , Value: [{'name': 'annualProduction', 'amount': 12400000000.0}]\n", - "----------------------------------------\n", - "Key: parameters full, Type of Value: , Value: [{'description': 'annual production', 'id': '1293672c-00a0-4d7a-9774-01462a98ec60', 'unit': 'kilogram', 'comment': \"Total production volume of hydraulic cement in South Africa in 2019: 12'400'000 ton. Source: USGS (2019). U.S. Geological Survey, Minerals Yearbook Annual Tables, 2019. Available at: \", 'amount': 12400000000.0, 'pedigree': {'reliability': 5, 'completeness': 5, 'temporal correlation': 5, 'geographical correlation': 5, 'further technological correlation': 5}, 'uncertainty type': 2, 'loc': 23.241, 'scale': 0.458257569495584, 'scale without pedigree': 0.0, 'name': 'annualProduction'}]\n", - "----------------------------------------\n" - ] - } - ], - "source": [ - "# Debugging code to inspect the structure of main_dict\n", - "for key, value in premise_dict.items():\n", - " print(f\"Key: {key}, Type of Value: {type(value)}, Value: {value}\")\n", - " print(\"-\" * 40)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n" - ] - } - ], - "source": [ - "key = ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '4fbb4cf48eb2fd3dd8cef6069e5223ce')\n", - "\n", - "# Extract the first string from the tuple\n", - "first_string = key[0]\n", - "\n", - "# Split by underscores and take the first part\n", - "database_name = first_string.split('_')[0]\n", - "\n", - "print(first_string)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The activity '('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'c38f699f4ad0e18953c86ede8d9a611a')' is used as an exchange 2 times in the 'Brightway2 SQLiteBackend: ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27' database.\n", - "Exchange amounts: [0.04699399422050376, 1.0]\n", - "The median of the exchange amounts is: 0.5234969971102519\n" - ] - } - ], - "source": [ - "import numpy as np \n", - "\n", - "database_name=ei39SSP2\n", - "activity_key=('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27',\n", - " 'c38f699f4ad0e18953c86ede8d9a611a')\n", - "\n", - "# Initialize the counter\n", - "exchange_count = 0\n", - "exchange_amounts = []\n", - "\n", - "# Loop through all activities in the database\n", - "for act in database_name:\n", - " # Loop through all exchanges in the current activity\n", - " for exc in act.exchanges():\n", - " # Check if the input of the exchange matches the activity key\n", - " if exc.input == activity_key:\n", - " exchange_count += 1\n", - " # Store the amount of the exchange\n", - " exchange_amounts.append(exc['amount'])\n", - "\n", - "# Print the total count of exchanges\n", - "print(f\"The activity '{activity_key}' is used as an exchange {exchange_count} times in the '{database_name}' database.\")\n", - "\n", - "# Print the amounts of the exchanges\n", - "print(f\"Exchange amounts: {exchange_amounts}\")\n", - "\n", - "# Calculate and print the median of the exchange amounts\n", - "if exchange_amounts:\n", - " median_amount = np.median(exchange_amounts)\n", - " print(f\"The median of the exchange amounts is: {median_amount}\")\n", - "else:\n", - " print(\"No exchanges found for the specified activity.\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/filter_sectors.py b/dev/filter_sectors.py deleted file mode 100644 index 18d2592..0000000 --- a/dev/filter_sectors.py +++ /dev/null @@ -1,115 +0,0 @@ -import re -import pandas as pd -from dopo import generate_sets_from_filters -from dopo import compare_activities_multiple_methods -from dopo import small_inputs_to_other_column -import openpyxl -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series -from openpyxl.chart import BarChart, Reference -import copy - - -def process_yaml_files(files_dict, database): - ''' - - Runs through the files_dict reading the defined filters in the yaml files. - - With another function a list that contains the filtered activities is created from the chosen database. - - This activity list is saved within the corresponding key (sector) in the dictionary main_dict which is based on the files_dict. - - :param files_dict: dictionary of dictionaries. It should hold the yaml file path and the title in the first row of the yaml file. - Like so: files_dict['Cement']={'yaml': 'yamls\cement_small.yaml', 'yaml identifier': 'Cement'} - :param database: premise or ecoinvent database of choice. - - It returns an updated dictionary which contains filtered activity lists for each sector. - ''' - - main_dict = copy.deepcopy(files_dict) - - for key, value in main_dict.items(): - yaml_file = value['yaml'] - yaml_identifier = value['yaml identifier'] - - #debug - print(f"Processing {key} with database {database.name}") # check for right database - - # Generate the sector activities - sector_activities = generate_sets_from_filters(yaml_file, database) - - #debug - print(f"Activities for {key}:") - for activity in sector_activities[yaml_identifier]: - print(f" {activity.key}") - - # Convert the set of activities to a list - activities_list = list(sector_activities[yaml_identifier]) - - # Add to the sectors_dict - main_dict[key]['activities'] = activities_list - - return main_dict - - # To calculate the median - -database_name=ei39SSP2 - -# Initialize a results dictionary to store exchange data for each key -results = {} - -# Iterate over each key in the premise_dict -for key, value in premise_dict.items(): - # Dictionary to store exchange data for each activity under the current key - activities_data = {} - - try: - # Get the list of activities for the current key - activities_list = premise_dict[key]['activities'][:3] - except KeyError: - print(f"KeyError: 'activities' not found for key: {key}") - continue - - # Check if there are activities to process - if not activities_list: - print(f"No activities found for key: {key}") - continue - - # Iterate over each activity in the activities_list - for activity in activities_list: - # Initialize the counter and amounts list for this activity - exchange_count = 0 - exchange_amounts = [] - - # Retrieve the unique identifier for the activity (e.g., activity.key) - activity_key = activity.key # Adjust this line to match the correct attribute for key - - # Loop through all activities in the database - for act in database_name: # Replace 'database_name' with your actual database object - # Loop through all exchanges in the current activity of the database - for exc in act.exchanges(): - # Compare unique keys of exchange input and activity - if exc.input.key == activity_key: # Ensure we compare keys, not objects - exchange_count += 1 - # Store the amount of the exchange - exchange_amounts.append(exc['amount']) - - # Calculate the median of the exchange amounts if there are any - median_value = np.median(exchange_amounts) if exchange_amounts else None - - # Store the exchange data for the current activity - activities_data[str(activity)] = { - "exchange_count": exchange_count, - "exchange_amounts": exchange_amounts, - "median_exchange_amount": median_value - } - - # Store the activities data in the results dictionary under the current key - results[key] = activities_data - -# Print or process the results as needed -for key, activity_data in results.items(): - print(f"Results for key: {key}") - for activity, data in activity_data.items(): - print(f" Activity: {activity}") - print(f" Total Exchanges: {data['exchange_count']}") - print(f" Median Exchange Amount: {data['median_exchange_amount']}") - print(f" Exchange Amounts: {data['exchange_amounts']}") - print("-" * 40) diff --git a/dev/methods.py b/dev/methods.py deleted file mode 100644 index 1c48194..0000000 --- a/dev/methods.py +++ /dev/null @@ -1,62 +0,0 @@ -# Dependencies -# ------------ - -# brightway -import brightway2 as bw -import bw2analyzer as ba -import bw2data as bd - -# Class for generating method dictionary -# -------------------------------------- - - -class MethodFinder: - def __init__(self): - self.all_methods = {} - self.method_counter = 0 - - def find_and_create_method(self, criteria, exclude=None, custom_key=None): - methods = bw.methods - # Start with all methods - filtered_methods = methods - # Apply inclusion criteria - for criterion in criteria: - filtered_methods = [m for m in filtered_methods if criterion in str(m)] - # Apply exclusion criteria if provided - if exclude: - for exclusion in exclude: - filtered_methods = [ - m for m in filtered_methods if exclusion not in str(m) - ] - # Check if we found exactly one method - if len(filtered_methods) == 0: - raise ValueError("No methods found matching the given criteria.") - elif len(filtered_methods) > 1: - raise ValueError( - f"Multiple methods found: {filtered_methods}. Please provide more specific criteria." - ) - # Get the first (and only) method - selected_method = filtered_methods[0] - # Create the Brightway Method object - method_object = bw.Method(selected_method) - - # Generate a key for storing the method - if custom_key is None: - self.method_counter += 1 - key = f"method_{self.method_counter}" - else: - key = custom_key - - # Store the method object and additional information in the dictionary - self.all_methods[key] = { - "object": method_object, - "method name": method_object.name, - "short name": method_object.name[2], - "unit": method_object.metadata.get("unit", "Unknown"), - } - - # Return both the method object and its key - return {key: self.all_methods[key]} - - def get_all_methods(self): - return self.all_methods diff --git a/dev/notebook tests/compare_scores_plot_v1.ipynb b/dev/notebook tests/compare_scores_plot_v1.ipynb deleted file mode 100644 index 95b41c5..0000000 --- a/dev/notebook tests/compare_scores_plot_v1.ipynb +++ /dev/null @@ -1,1373 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "from functions_v2 import*\n", - "from methods import MethodFinder\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "import bw2calc as bc\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "import dopo" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict_premise = dopo.dopo_excel.process_yaml_files(files_dict=files_dict, database=ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement',\n", - " 'activities': ['cement production, Portland' (kilogram, CH, None),\n", - " 'cement production, Portland' (kilogram, US, None),\n", - " 'cement production, Portland' (kilogram, IN, None),\n", - " 'cement production, Portland' (kilogram, CA-QC, None),\n", - " 'cement production, Portland' (kilogram, BR, None),\n", - " 'cement production, Portland' (kilogram, ZA, None),\n", - " 'cement production, Portland' (kilogram, PE, None)]},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity',\n", - " 'activities': []}}" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sectors_dict_premise" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict_ecoinvent = dopo.dopo_excel.process_yaml_files(files_dict=files_dict, database=ei39)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Get Methods\n", - "finder=MethodFinder()\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "lcia_method=method_dict['method_1']['method name']" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('IPCC 2013', 'climate change', 'global warming potential (GWP100)')" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lcia_method" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [], - "source": [ - "lcia_method_unit=method_dict['method_1']['unit']" - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "metadata": {}, - "outputs": [], - "source": [ - "activities=sectors_dict_premise[\"Cement\"]['activities']" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 93, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(activities_list)" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('ecoinvent 3.9.1 cutoff', 'df49e8f525497f2fbd56bcdc80ff0cde')" - ] - }, - "execution_count": 103, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "activities_list[0].key" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LCA Scores" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def compare_activities_by_grouped_leaves(\n", - " activities,\n", - " lcia_method,\n", - " mode=\"relative\",\n", - " max_level=4,\n", - " cutoff=7.5e-3,\n", - " output_format=\"list\",\n", - " str_length=50,\n", - "):\n", - " \"\"\"Compare activities by the impact of their different inputs, aggregated by the product classification of those inputs.\n", - "\n", - " Args:\n", - " activities: list of ``Activity`` instances.\n", - " lcia_method: tuple. LCIA method to use when traversing supply chain graph.\n", - " mode: str. If \"relative\" (default), results are returned as a fraction of total input. Otherwise, results are absolute impact per input exchange.\n", - " max_level: int. Maximum level in supply chain to examine.\n", - " cutoff: float. Fraction of total impact to cutoff supply chain graph traversal at.\n", - " output_format: str. See below.\n", - " str_length; int. If ``output_format`` is ``html``, this controls how many characters each column label can have.\n", - "\n", - " Raises:\n", - " ValueError: ``activities`` is malformed.\n", - "\n", - " Returns:\n", - " Depends on ``output_format``:\n", - "\n", - " * ``list``: Tuple of ``(column labels, data)``\n", - " * ``html``: HTML string that will print nicely in Jupyter notebooks.\n", - " * ``pandas``: a pandas ``DataFrame``.\n", - "\n", - " \"\"\"\n", - " for act in activities:\n", - " if not isinstance(act, bd.backends.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - "\n", - " objs = [\n", - " group_leaves(find_leaves(act, lcia_method, max_level=max_level, cutoff=cutoff))\n", - " for act in activities\n", - " ]\n", - " sorted_keys = sorted(\n", - " [\n", - " (max([el[0] for obj in objs for el in obj if el[2] == key]), key)\n", - " for key in {el[2] for obj in objs for el in obj}\n", - " ],\n", - " reverse=True,\n", - " )\n", - " name_common = commonprefix([act[\"name\"] for act in activities])\n", - "\n", - " if \" \" not in name_common:\n", - " name_common = \"\"\n", - " else:\n", - " last_space = len(name_common) - operator.indexOf(reversed(name_common), \" \")\n", - " name_common = name_common[:last_space]\n", - " print(\"Omitting activity name common prefix: '{}'\".format(name_common))\n", - "\n", - " product_common = commonprefix(\n", - " [act.get(\"reference product\", \"\") for act in activities]\n", - " )\n", - "\n", - " lca = bc.LCA({act: 1 for act in activities}, lcia_method)\n", - " lca.lci()\n", - " lca.lcia()\n", - "\n", - " labels = [\n", - " \"activity\",\n", - " \"product\",\n", - " \"location\",\n", - " \"unit\",\n", - " \"total\",\n", - " \"direct emissions\",\n", - " ] + [key for _, key in sorted_keys]\n", - " data = []\n", - " for act, lst in zip(activities, objs):\n", - " lca.redo_lcia({act.id: 1})\n", - " data.append(\n", - " [\n", - " act[\"name\"].replace(name_common, \"\"),\n", - " act.get(\"reference product\", \"\").replace(product_common, \"\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " act.get(\"unit\", \"\"),\n", - " lca.score,\n", - " ]\n", - " + [\n", - " (\n", - " lca.characterization_matrix\n", - " * lca.biosphere_matrix\n", - " * lca.demand_array\n", - " ).sum()\n", - " ]\n", - " + [get_value_for_cpc(lst, key) for _, key in sorted_keys]\n", - " )\n", - "\n", - " data.sort(key=lambda x: x[4], reverse=True)\n", - "\n", - " if mode == \"relative\":\n", - " for row in data:\n", - " for index, point in enumerate(row[5:]):\n", - " row[index + 5] = point / row[4]\n", - "\n", - " if output_format == \"list\":\n", - " return labels, data\n", - " elif output_format == \"pandas\":\n", - " return pd.DataFrame(data, columns=labels)\n", - " elif output_format == \"html\":\n", - " return tabulate.tabulate(\n", - " data,\n", - " [x[:str_length] for x in labels],\n", - " tablefmt=\"html\",\n", - " floatfmt=\".3f\",\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 112, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "\n", - "\n", - "for act in activities_list:\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - "\n", - "data=[]\n", - "\n", - "labels = [\n", - " \"activity\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method name\",\n", - " \"method unit\",\n", - " \"total\",\n", - "] #+ [key for _, key in sorted_keys]\n", - "\n", - "# for act in activities_list:\n", - "# activities=[act for act in ei39SSP2 if act in activities_list]\n", - "# print(type(act.metadata))\n", - "# print(activities)\n", - "for act in activities:\n", - " lca = bc.LCA({act: 1}, lcia_method)\n", - " lca.lci()\n", - " lca.lcia()\n", - "\n", - " data.append(\n", - " [ #adapt this to access method better\n", - " act[\"name\"],\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " lcia_method,\n", - " lcia_method_unit,\n", - " lca.score,\n", - " ]\n", - " )\n", - "\n", - "data_premise=pd.DataFrame(data, columns=labels)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 113, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityreference productlocationmethod namemethod unittotal
0cement production, Portlandcement, PortlandCH(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.742421
1cement production, Portlandcement, PortlandUS(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.885515
2cement production, Portlandcement, PortlandIN(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.891756
3cement production, Portlandcement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.845772
4cement production, Portlandcement, PortlandBR(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.851799
5cement production, Portlandcement, PortlandZA(IPCC 2013, climate change, global warming pot...kg CO2-Eq1.000588
6cement production, Portlandcement, PortlandPE(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.895198
\n", - "
" - ], - "text/plain": [ - " activity reference product location \\\n", - "0 cement production, Portland cement, Portland CH \n", - "1 cement production, Portland cement, Portland US \n", - "2 cement production, Portland cement, Portland IN \n", - "3 cement production, Portland cement, Portland CA-QC \n", - "4 cement production, Portland cement, Portland BR \n", - "5 cement production, Portland cement, Portland ZA \n", - "6 cement production, Portland cement, Portland PE \n", - "\n", - " method name method unit total \n", - "0 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.742421 \n", - "1 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.885515 \n", - "2 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.891756 \n", - "3 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.845772 \n", - "4 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.851799 \n", - "5 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 1.000588 \n", - "6 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.895198 " - ] - }, - "execution_count": 113, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_premise" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [], - "source": [ - "activities_ecoinvent=sectors_dict_ecoinvent['Cement']['activities'][:]" - ] - }, - { - "cell_type": "code", - "execution_count": 116, - "metadata": {}, - "outputs": [], - "source": [ - "for act in activities_ecoinvent:\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - "\n", - "data_ecoinvent=[]\n", - "\n", - "labels = [\n", - " \"activity\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method name\",\n", - " \"method unit\",\n", - " \"total\",\n", - "] #+ [key for _, key in sorted_keys]\n", - "\n", - "activities_ecoinvent=[act for act in ei39SSP2 if act in activities_ecoinvent]\n", - "for act in activities_ecoinvent:\n", - " lca = bc.LCA({act: 1} , lcia_method)\n", - " lca.lci()\n", - " lca.lcia()\n", - "\n", - " data.append(\n", - " [ #adapt this to access method better\n", - " act[\"name\"],\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " lcia_method,\n", - " lcia_method_unit,\n", - " lca.score,\n", - " ]\n", - " )\n", - "\n", - "data_ecoinvent=pd.DataFrame(data, columns=labels)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 117, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityreference productlocationmethod namemethod unittotal
0cement production, Portlandcement, PortlandCH(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.742421
1cement production, Portlandcement, PortlandUS(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.885515
2cement production, Portlandcement, PortlandIN(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.891756
3cement production, Portlandcement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.845772
4cement production, Portlandcement, PortlandBR(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.851799
5cement production, Portlandcement, PortlandZA(IPCC 2013, climate change, global warming pot...kg CO2-Eq1.000588
6cement production, Portlandcement, PortlandPE(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.895198
7cement production, Portlandcement, PortlandCH(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.742421
8cement production, Portlandcement, PortlandUS(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.885515
9cement production, Portlandcement, PortlandBR(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.851799
10cement production, Portlandcement, PortlandIN(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.891756
11cement production, Portlandcement, PortlandZA(IPCC 2013, climate change, global warming pot...kg CO2-Eq1.000588
12cement production, Portlandcement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.845772
13cement production, Portlandcement, PortlandPE(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.895198
\n", - "
" - ], - "text/plain": [ - " activity reference product location \\\n", - "0 cement production, Portland cement, Portland CH \n", - "1 cement production, Portland cement, Portland US \n", - "2 cement production, Portland cement, Portland IN \n", - "3 cement production, Portland cement, Portland CA-QC \n", - "4 cement production, Portland cement, Portland BR \n", - "5 cement production, Portland cement, Portland ZA \n", - "6 cement production, Portland cement, Portland PE \n", - "7 cement production, Portland cement, Portland CH \n", - "8 cement production, Portland cement, Portland US \n", - "9 cement production, Portland cement, Portland BR \n", - "10 cement production, Portland cement, Portland IN \n", - "11 cement production, Portland cement, Portland ZA \n", - "12 cement production, Portland cement, Portland CA-QC \n", - "13 cement production, Portland cement, Portland PE \n", - "\n", - " method name method unit total \n", - "0 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.742421 \n", - "1 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.885515 \n", - "2 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.891756 \n", - "3 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.845772 \n", - "4 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.851799 \n", - "5 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 1.000588 \n", - "6 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.895198 \n", - "7 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.742421 \n", - "8 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.885515 \n", - "9 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.851799 \n", - "10 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.891756 \n", - "11 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 1.000588 \n", - "12 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.845772 \n", - "13 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.895198 " - ] - }, - "execution_count": 117, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_ecoinvent" - ] - }, - { - "cell_type": "code", - "execution_count": 115, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityreference productlocationmethod namemethod unittotal
0cement production, Portlandcement, PortlandCH(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.742421
1cement production, Portlandcement, PortlandUS(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.885515
2cement production, Portlandcement, PortlandIN(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.891756
3cement production, Portlandcement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.845772
4cement production, Portlandcement, PortlandBR(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.851799
5cement production, Portlandcement, PortlandZA(IPCC 2013, climate change, global warming pot...kg CO2-Eq1.000588
6cement production, Portlandcement, PortlandPE(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.895198
7cement production, Portlandcement, PortlandCH(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.742421
8cement production, Portlandcement, PortlandUS(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.885515
9cement production, Portlandcement, PortlandBR(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.851799
10cement production, Portlandcement, PortlandIN(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.891756
11cement production, Portlandcement, PortlandZA(IPCC 2013, climate change, global warming pot...kg CO2-Eq1.000588
12cement production, Portlandcement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.845772
13cement production, Portlandcement, PortlandPE(IPCC 2013, climate change, global warming pot...kg CO2-Eq0.895198
\n", - "
" - ], - "text/plain": [ - " activity reference product location \\\n", - "0 cement production, Portland cement, Portland CH \n", - "1 cement production, Portland cement, Portland US \n", - "2 cement production, Portland cement, Portland IN \n", - "3 cement production, Portland cement, Portland CA-QC \n", - "4 cement production, Portland cement, Portland BR \n", - "5 cement production, Portland cement, Portland ZA \n", - "6 cement production, Portland cement, Portland PE \n", - "7 cement production, Portland cement, Portland CH \n", - "8 cement production, Portland cement, Portland US \n", - "9 cement production, Portland cement, Portland BR \n", - "10 cement production, Portland cement, Portland IN \n", - "11 cement production, Portland cement, Portland ZA \n", - "12 cement production, Portland cement, Portland CA-QC \n", - "13 cement production, Portland cement, Portland PE \n", - "\n", - " method name method unit total \n", - "0 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.742421 \n", - "1 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.885515 \n", - "2 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.891756 \n", - "3 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.845772 \n", - "4 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.851799 \n", - "5 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 1.000588 \n", - "6 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.895198 \n", - "7 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.742421 \n", - "8 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.885515 \n", - "9 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.851799 \n", - "10 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.891756 \n", - "11 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 1.000588 \n", - "12 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.845772 \n", - "13 (IPCC 2013, climate change, global warming pot... kg CO2-Eq 0.895198 " - ] - }, - "execution_count": 115, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_ecoinvent" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['activity', 'product', 'location', 'unit', 'total', 'direct emissions']" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "labels" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'objs' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[48], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m data \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m act, lst \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(activities, objs):\n\u001b[0;32m 3\u001b[0m lca\u001b[38;5;241m.\u001b[39mredo_lcia({act\u001b[38;5;241m.\u001b[39mid: \u001b[38;5;241m1\u001b[39m})\n\u001b[0;32m 4\u001b[0m data\u001b[38;5;241m.\u001b[39mappend(\n\u001b[0;32m 5\u001b[0m [\n\u001b[0;32m 6\u001b[0m act[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mreplace(name_common, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;241m+\u001b[39m [get_value_for_cpc(lst, key) \u001b[38;5;28;01mfor\u001b[39;00m _, key \u001b[38;5;129;01min\u001b[39;00m sorted_keys]\n\u001b[0;32m 20\u001b[0m )\n", - "\u001b[1;31mNameError\u001b[0m: name 'objs' is not defined" - ] - } - ], - "source": [ - "data = []\n", - "for act, lst in zip(activities, objs):\n", - " lca.redo_lcia({act.id: 1})\n", - " data.append(\n", - " [\n", - " act[\"name\"].replace(name_common, \"\"),\n", - " act.get(\"reference product\", \"\").replace(product_common, \"\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " act.get(\"unit\", \"\"),\n", - " lca.score,\n", - " ]\n", - " + [\n", - " (\n", - " lca.characterization_matrix\n", - " * lca.biosphere_matrix\n", - " * lca.demand_array\n", - " ).sum()\n", - " ]\n", - " + [get_value_for_cpc(lst, key) for _, key in sorted_keys]\n", - " )\n", - "\n", - "data.sort(key=lambda x: x[4], reverse=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores(main_dict, method_dict):\n", - " '''\n", - " Generates the LCA scores for the sectors activities in the main dictionary \n", - " for the different methods in the method dictionary.\n", - "\n", - " It returns the main dictionary updated as scores dictionary which also holds the former information for each sector.\n", - " The LCA scores are stored by method name in the respective sector dictionary within the main dictionary.\n", - " '''\n", - "\n", - " # Initialize scores_dict as a copy of main_dict\n", - " scores_dict = main_dict.copy()\n", - "\n", - " #Loop through methods\n", - " for method_key in method_dict.keys():\n", - " method = method_dict[method_key]['method name']\n", - "\n", - " # Loop through each sector in main_dict\n", - " for sector in scores_dict.keys():\n", - " # Extract activities for the current sector\n", - " sector_activities = scores_dict[sector]['activities']\n", - "\n", - " if method not in scores_dict[sector]:\n", - " scores_dict[sector][method] = {}\n", - "\n", - " # Initialize a list to store activitiy scores by method\n", - " if 'lca_score' not in scores_dict[sector][method]:\n", - " scores_dict[sector][method]['lca_score'] = []\n", - " \n", - " for activity in sector_activities:\n", - " activity_LCA = bw.LCA({activity: 1}, method)\n", - " activity_LCA.lci()\n", - " activity_LCA.lcia()\n", - " score = activity_LCA.score\n", - "\n", - " # Create a tuple key with relevant information\n", - " activity_score= {\n", - " 'activity':activity,\n", - " 'score':score,\n", - " 'method':method\n", - " #'unit': activity.metadata\n", - " # activity[\"name\"],\n", - " # activity[\"unit\"],\n", - " # activity[\"location\"],\n", - " # activity.get(\"reference product\"),\n", - " }\n", - "\n", - " scores_dict[sector][method]['lca_score'].append(activity_score)\n", - " \n", - " #ecoinvent_scores[key] = score\n", - "\n", - " return scores_dict\n", - "\n", - " # Calculate LCA scores using the specified method\n", - " # lca_scores = compare_activities_multiple_methods(\n", - " # activities_list=sector_activities,\n", - " # methods=method_dict,\n", - " # identifier=sector,\n", - " # mode='absolute'\n", - " # )\n", - " \n", - " # # Apply the small_inputs_to_other_column function with the cutoff value\n", - " # lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - " \n", - " # # Save the LCA scores to the scores_dict\n", - " # scores_dict[sector]['lca_scores'] = lca_scores\n", - "\n", - " # return scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lca_premise_dict=sector_lca_scores(sectors_dict_premise, method_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lca_ecoinvent_dict=sector_lca_scores(sectors_dict_premise, method_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lca_premise_dict" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lca_ecoinvent_dict" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "type(lca_ecoinvent_dict['Cement']['IPCC 2013', 'climate change', 'global warming potential (GWP100)'][0][\"activitiy\"])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Iterating through the dictionary to access the scores\n", - "for key in lca_ecoinvent_dict.items():\n", - " \n", - " for method, method_data in lca_ecoinvent_dict.items():\n", - " # Check if the key is a tuple (representing a method)\n", - " if isinstance(method, tuple):\n", - " print(f\" Method: {method}\")\n", - " \n", - " for score_entry in method_data.get('lca_score', []):\n", - " activity = score_entry.get('activity')\n", - " score = score_entry.get('score')\n", - " print(f\" Activity: {activity}, Score: {score}\")\n", - "\n", - " #####################################################\n", - " ####################################################\n", - " #####################################################" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def _compute_relative_change(original, transformed):\n", - " if original == 0:\n", - " return float(\"inf\") if transformed != 0 else 0\n", - " return (transformed - original) / original\n", - "\n", - "\n", - "def _calc_relative_changes_new(ecoinvent_dict, premise_dict):\n", - " # Match activities_list and calculate relative changes\n", - " relative_changes = {}\n", - " relative_changes[\"method\"] = ecoinvent_scores[\"method\"]\n", - " print(relative_changes)\n", - "\n", - " # Iterating through the dictionary to access the scores\n", - " for key in ecoinvent_dict.items():\n", - " \n", - " for method, method_data in ecoinvent_dict.items():\n", - " # Check if the key is a tuple (representing a method)\n", - " if isinstance(method, tuple):\n", - " print(f\" Method: {method}\")\n", - " \n", - " for score_entry in method_data.get('lca_score', []):\n", - " activity = score_entry.get('activity')\n", - " score = score_entry.get('score')\n", - " print(f\" Activity: {activity}, Score: {score}\")\n", - "\n", - " #####################################################\n", - " ####################################################\n", - " #####################################################\n", - "\n", - " # Track additional keys in premise_scores\n", - " additional_premise_keys = []\n", - "\n", - " for key, original_score in ecoinvent_scores.items():\n", - " if (\n", - " key in premise_scores\n", - " ): # activities only in premise_scores are according to this logic neglected.\n", - " # Skip if original_score is a tuple due to information tuple key\n", - " if isinstance(original_score, tuple):\n", - " continue\n", - "\n", - " transformed_score = premise_scores[key]\n", - " relative_change = _compute_relative_change(\n", - " original_score, transformed_score\n", - " )\n", - " relative_changes[key] = relative_change\n", - "\n", - " # Identify additional keys in premise_scores\n", - " for key in premise_scores.keys():\n", - " if key not in ecoinvent_scores:\n", - " additional_premise_keys.append(key)\n", - "\n", - " # Print the dataframes_dict\n", - " for key, change in relative_changes.items():\n", - " print(f\"{key}: {change}\")\n", - "\n", - " if additional_premise_keys:\n", - " print(\n", - " \"Additional keys in premise_scores not found in ecoinvent_scores:\",\n", - " additional_premise_keys,\n", - " )\n", - "\n", - " return relative_changes\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lca_smpl #which database is used??" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/comparing dbs_v2.ipynb b/dev/notebook tests/comparing dbs_v2.ipynb deleted file mode 100644 index f7b4611..0000000 --- a/dev/notebook tests/comparing dbs_v2.ipynb +++ /dev/null @@ -1,2365 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "#from functions_v2 import*\n", - "from methods import MethodFinder\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "import bw2calc as bc\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "import dopo" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "activities_premise=[x for x in ei39SSP2 if 'cement' in x['name'] and 'Portland' in x['reference product'] and 'market' not in x['name']]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27',\n", - " '86841f8c7ee2668f244d3b8e34f41932')" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[x for x in activities_premise if 'ZA' in x['location']][0].key" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27',\n", - " '86841f8c7ee2668f244d3b8e34f41932')" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "activities_premise[0].key #checking database" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "activities_eco=[x for x in ei39 if 'cement' in x['name'] and 'Portland' in x['reference product'] and 'market' not in x['name']]" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('ecoinvent 3.9.1 cutoff', '86841f8c7ee2668f244d3b8e34f41932')" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[x for x in activities_eco if 'ZA' in x['location']][0].key" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('ecoinvent 3.9.1 cutoff', 'a3c2064d83411f7963af550c04c869a1')" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "activities_eco[0].key #checking database" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Get Methods\n", - "finder=MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "methods=[method_dict['method_1']['method name'], method_dict['method_2']['method name']]" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "for act in activities_premise:\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - "\n", - "data_premise=[]\n", - "\n", - "labels_premise = [\n", - " \"activity\",\n", - " \"activity key\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method name\",\n", - " #\"method unit\",\n", - " \"total\",\n", - "] #+ [key for _, key in sorted_keys]\n", - "\n", - "# for act in activities_list:\n", - "# activities=[act for act in ei39SSP2 if act in activities_list]\n", - "# print(type(act.metadata))\n", - "# print(activities)\n", - "for meth in methods:\n", - " for act in activities_premise:\n", - "\n", - " lca=bw.LCA({act: 1}, meth)\n", - " lca.lci()\n", - " lca.lcia()\n", - " # for category in methods:\n", - " # lca.switch_method(category)\n", - " # lca.lcia()\n", - "\n", - " data_premise.append(\n", - " [ #adapt this to access method better\n", - " act[\"name\"],\n", - " act.key,\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " meth,\n", - " #methods_unit,\n", - " lca.score,\n", - " ]\n", - " )\n", - "\n", - "data_premise=pd.DataFrame(data_premise, columns=labels_premise)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityactivity keyreference productlocationmethod nametotal
0cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandZA(IPCC 2013, climate change, global warming pot...0.814768
1cement production, Pozzolana Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, Pozzolana PortlandIN(IPCC 2013, climate change, global warming pot...0.536510
2cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandRoW(IPCC 2013, climate change, global warming pot...0.827825
3cement production, Portland Slag(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, Portland SlagIN(IPCC 2013, climate change, global warming pot...0.471488
4cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandEurope without Switzerlan(IPCC 2013, climate change, global warming pot...0.815993
5cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandUS(IPCC 2013, climate change, global warming pot...0.821278
6cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandPE(IPCC 2013, climate change, global warming pot...0.869433
7cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandCH(IPCC 2013, climate change, global warming pot...0.737734
8cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandIN(IPCC 2013, climate change, global warming pot...0.774079
9cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandBR(IPCC 2013, climate change, global warming pot...0.832335
10cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...0.841855
11cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandZA(EN15804, inventory indicators ISO21930, Cumul...4.025051
12cement production, Pozzolana Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, Pozzolana PortlandIN(EN15804, inventory indicators ISO21930, Cumul...2.503883
13cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandRoW(EN15804, inventory indicators ISO21930, Cumul...3.275430
14cement production, Portland Slag(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, Portland SlagIN(EN15804, inventory indicators ISO21930, Cumul...2.579477
15cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandEurope without Switzerlan(EN15804, inventory indicators ISO21930, Cumul...2.659676
16cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandUS(EN15804, inventory indicators ISO21930, Cumul...2.672874
17cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandPE(EN15804, inventory indicators ISO21930, Cumul...3.836765
18cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandCH(EN15804, inventory indicators ISO21930, Cumul...2.020362
19cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandIN(EN15804, inventory indicators ISO21930, Cumul...3.581588
20cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandBR(EN15804, inventory indicators ISO21930, Cumul...3.419633
21cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandCA-QC(EN15804, inventory indicators ISO21930, Cumul...3.997485
\n", - "
" - ], - "text/plain": [ - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Pozzolana Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland Slag \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "7 cement production, Portland \n", - "8 cement production, Portland \n", - "9 cement production, Portland \n", - "10 cement production, Portland \n", - "11 cement production, Portland \n", - "12 cement production, Pozzolana Portland \n", - "13 cement production, Portland \n", - "14 cement production, Portland Slag \n", - "15 cement production, Portland \n", - "16 cement production, Portland \n", - "17 cement production, Portland \n", - "18 cement production, Portland \n", - "19 cement production, Portland \n", - "20 cement production, Portland \n", - "21 cement production, Portland \n", - "\n", - " activity key \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "7 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "8 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "9 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "10 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "11 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "12 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "13 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "14 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "15 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "16 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "17 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "18 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "19 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "20 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "21 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product location \\\n", - "0 cement, Portland ZA \n", - "1 cement, Pozzolana Portland IN \n", - "2 cement, Portland RoW \n", - "3 cement, Portland Slag IN \n", - "4 cement, Portland Europe without Switzerlan \n", - "5 cement, Portland US \n", - "6 cement, Portland PE \n", - "7 cement, Portland CH \n", - "8 cement, Portland IN \n", - "9 cement, Portland BR \n", - "10 cement, Portland CA-QC \n", - "11 cement, Portland ZA \n", - "12 cement, Pozzolana Portland IN \n", - "13 cement, Portland RoW \n", - "14 cement, Portland Slag IN \n", - "15 cement, Portland Europe without Switzerlan \n", - "16 cement, Portland US \n", - "17 cement, Portland PE \n", - "18 cement, Portland CH \n", - "19 cement, Portland IN \n", - "20 cement, Portland BR \n", - "21 cement, Portland CA-QC \n", - "\n", - " method name total \n", - "0 (IPCC 2013, climate change, global warming pot... 0.814768 \n", - "1 (IPCC 2013, climate change, global warming pot... 0.536510 \n", - "2 (IPCC 2013, climate change, global warming pot... 0.827825 \n", - "3 (IPCC 2013, climate change, global warming pot... 0.471488 \n", - "4 (IPCC 2013, climate change, global warming pot... 0.815993 \n", - "5 (IPCC 2013, climate change, global warming pot... 0.821278 \n", - "6 (IPCC 2013, climate change, global warming pot... 0.869433 \n", - "7 (IPCC 2013, climate change, global warming pot... 0.737734 \n", - "8 (IPCC 2013, climate change, global warming pot... 0.774079 \n", - "9 (IPCC 2013, climate change, global warming pot... 0.832335 \n", - "10 (IPCC 2013, climate change, global warming pot... 0.841855 \n", - "11 (EN15804, inventory indicators ISO21930, Cumul... 4.025051 \n", - "12 (EN15804, inventory indicators ISO21930, Cumul... 2.503883 \n", - "13 (EN15804, inventory indicators ISO21930, Cumul... 3.275430 \n", - "14 (EN15804, inventory indicators ISO21930, Cumul... 2.579477 \n", - "15 (EN15804, inventory indicators ISO21930, Cumul... 2.659676 \n", - "16 (EN15804, inventory indicators ISO21930, Cumul... 2.672874 \n", - "17 (EN15804, inventory indicators ISO21930, Cumul... 3.836765 \n", - "18 (EN15804, inventory indicators ISO21930, Cumul... 2.020362 \n", - "19 (EN15804, inventory indicators ISO21930, Cumul... 3.581588 \n", - "20 (EN15804, inventory indicators ISO21930, Cumul... 3.419633 \n", - "21 (EN15804, inventory indicators ISO21930, Cumul... 3.997485 " - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_premise" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "def lca_scores_database()\n", - "# Assuming `activities_eco` and `methods` are predefined\n", - "dataframes = {}\n", - "\n", - "# Labels for the DataFrame columns\n", - "labels_eco = [\n", - " \"activity\",\n", - " \"activity key\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method name\",\n", - " \"total\",\n", - "]\n", - "\n", - "# Loop through each method\n", - "for meth in methods:\n", - " data_eco = [] # Initialize a new list to hold data for the current method\n", - " \n", - " for act in activities_eco:\n", - " # Ensure the activity is an instance of the expected class\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - " \n", - " # Perform LCA calculations\n", - " lca = bw.LCA({act: 1}, meth)\n", - " lca.lci()\n", - " lca.lcia()\n", - " \n", - " # Collect data for the current activity and method\n", - " data_eco.append([\n", - " act[\"name\"],\n", - " act.key,\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " meth,\n", - " lca.score,\n", - " ])\n", - " \n", - " # Convert the data list to a DataFrame\n", - " dataframes[meth] = pd.DataFrame(data_eco, columns=labels_eco)\n", - "\n", - "# Now `dataframes` is a dictionary where each key is a method name and the value is the corresponding DataFrame\n" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityactivity keyreference productlocationmethod nametotal
0cement production, Portland(ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5...cement, PortlandBR(IPCC 2013, climate change, global warming pot...0.851799
1cement production, Portland(ecoinvent 3.9.1 cutoff, 7011b57a11b423e3a22f6...cement, PortlandRoW(IPCC 2013, climate change, global warming pot...0.915427
2cement production, Pozzolana Portland(ecoinvent 3.9.1 cutoff, dddde503e9bdf9cc25e2e...cement, Pozzolana PortlandIN(IPCC 2013, climate change, global warming pot...0.622312
3cement production, Portland(ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe...cement, PortlandIN(IPCC 2013, climate change, global warming pot...0.891756
4cement production, Portland Slag(ecoinvent 3.9.1 cutoff, 461fa0b26e14337c73141...cement, Portland SlagIN(IPCC 2013, climate change, global warming pot...0.587870
5cement production, Portland(ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3...cement, PortlandZA(IPCC 2013, climate change, global warming pot...1.000588
6cement production, Portland(ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e...cement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...0.845772
7cement production, Portland(ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b...cement, PortlandUS(IPCC 2013, climate change, global warming pot...0.885515
8cement production, Portland(ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b...cement, PortlandCH(IPCC 2013, climate change, global warming pot...0.742421
9cement production, Portland(ecoinvent 3.9.1 cutoff, 19afbe085b8798fd8c85e...cement, PortlandEurope without Switzerlan(IPCC 2013, climate change, global warming pot...0.858576
10cement production, Portland(ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6...cement, PortlandPE(IPCC 2013, climate change, global warming pot...0.895198
\n", - "
" - ], - "text/plain": [ - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Pozzolana Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland Slag \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "7 cement production, Portland \n", - "8 cement production, Portland \n", - "9 cement production, Portland \n", - "10 cement production, Portland \n", - "\n", - " activity key \\\n", - "0 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... \n", - "1 (ecoinvent 3.9.1 cutoff, 7011b57a11b423e3a22f6... \n", - "2 (ecoinvent 3.9.1 cutoff, dddde503e9bdf9cc25e2e... \n", - "3 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... \n", - "4 (ecoinvent 3.9.1 cutoff, 461fa0b26e14337c73141... \n", - "5 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... \n", - "7 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... \n", - "8 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... \n", - "9 (ecoinvent 3.9.1 cutoff, 19afbe085b8798fd8c85e... \n", - "10 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... \n", - "\n", - " reference product location \\\n", - "0 cement, Portland BR \n", - "1 cement, Portland RoW \n", - "2 cement, Pozzolana Portland IN \n", - "3 cement, Portland IN \n", - "4 cement, Portland Slag IN \n", - "5 cement, Portland ZA \n", - "6 cement, Portland CA-QC \n", - "7 cement, Portland US \n", - "8 cement, Portland CH \n", - "9 cement, Portland Europe without Switzerlan \n", - "10 cement, Portland PE \n", - "\n", - " method name total \n", - "0 (IPCC 2013, climate change, global warming pot... 0.851799 \n", - "1 (IPCC 2013, climate change, global warming pot... 0.915427 \n", - "2 (IPCC 2013, climate change, global warming pot... 0.622312 \n", - "3 (IPCC 2013, climate change, global warming pot... 0.891756 \n", - "4 (IPCC 2013, climate change, global warming pot... 0.587870 \n", - "5 (IPCC 2013, climate change, global warming pot... 1.000588 \n", - "6 (IPCC 2013, climate change, global warming pot... 0.845772 \n", - "7 (IPCC 2013, climate change, global warming pot... 0.885515 \n", - "8 (IPCC 2013, climate change, global warming pot... 0.742421 \n", - "9 (IPCC 2013, climate change, global warming pot... 0.858576 \n", - "10 (IPCC 2013, climate change, global warming pot... 0.895198 " - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "first_method = list(dataframes.keys())[0] # Get the first key in the dictionary as a list\n", - "first_dataframe = dataframes[first_method] # Access the corresponding DataFrame\n", - "first_dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "for act in activities_eco:\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - "\n", - "data_eco=[]\n", - "\n", - "labels_eco = [\n", - " \"activity\",\n", - " \"activity key\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method name\",\n", - " #\"method unit\",\n", - " \"total\",\n", - "] #+ [key for _, key in sorted_keys]\n", - "\n", - "# for act in activities_list:\n", - "# activities=[act for act in ei39SSP2 if act in activities_list]\n", - "# print(type(act.metadata))\n", - "# print(activities)\n", - "for meth in methods:\n", - " for act in activities_eco:\n", - " lca=bw.LCA({act: 1}, meth)\n", - " lca.lci()\n", - " lca.lcia()\n", - " for category in methods:\n", - " lca.switch_method(category)\n", - " lca.lcia()\n", - "\n", - " data_eco.append(\n", - " [ #adapt this to access method better\n", - " act[\"name\"],\n", - " act.key,\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " meth,\n", - " #methods_unit,\n", - " lca.score,\n", - " ]\n", - " )\n", - "\n", - "data_eco=pd.DataFrame(data_eco, columns=labels_eco)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityactivity keyreference productlocationmethod nametotal
0cement production, Portland(ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5...cement, PortlandBR(IPCC 2013, climate change, global warming pot...3.606791
1cement production, Portland(ecoinvent 3.9.1 cutoff, 7011b57a11b423e3a22f6...cement, PortlandRoW(IPCC 2013, climate change, global warming pot...3.944373
2cement production, Pozzolana Portland(ecoinvent 3.9.1 cutoff, dddde503e9bdf9cc25e2e...cement, Pozzolana PortlandIN(IPCC 2013, climate change, global warming pot...3.381439
3cement production, Portland(ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe...cement, PortlandIN(IPCC 2013, climate change, global warming pot...4.785940
4cement production, Portland Slag(ecoinvent 3.9.1 cutoff, 461fa0b26e14337c73141...cement, Portland SlagIN(IPCC 2013, climate change, global warming pot...3.766643
5cement production, Portland(ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3...cement, PortlandZA(IPCC 2013, climate change, global warming pot...6.186147
6cement production, Portland(ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e...cement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...3.992977
7cement production, Portland(ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b...cement, PortlandUS(IPCC 2013, climate change, global warming pot...3.599198
8cement production, Portland(ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b...cement, PortlandCH(IPCC 2013, climate change, global warming pot...2.164824
9cement production, Portland(ecoinvent 3.9.1 cutoff, 19afbe085b8798fd8c85e...cement, PortlandEurope without Switzerlan(IPCC 2013, climate change, global warming pot...3.350089
10cement production, Portland(ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6...cement, PortlandPE(IPCC 2013, climate change, global warming pot...4.172537
11cement production, Portland(ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5...cement, PortlandBR(EN15804, inventory indicators ISO21930, Cumul...3.606791
12cement production, Portland(ecoinvent 3.9.1 cutoff, 7011b57a11b423e3a22f6...cement, PortlandRoW(EN15804, inventory indicators ISO21930, Cumul...3.944373
13cement production, Pozzolana Portland(ecoinvent 3.9.1 cutoff, dddde503e9bdf9cc25e2e...cement, Pozzolana PortlandIN(EN15804, inventory indicators ISO21930, Cumul...3.381439
14cement production, Portland(ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe...cement, PortlandIN(EN15804, inventory indicators ISO21930, Cumul...4.785940
15cement production, Portland Slag(ecoinvent 3.9.1 cutoff, 461fa0b26e14337c73141...cement, Portland SlagIN(EN15804, inventory indicators ISO21930, Cumul...3.766643
16cement production, Portland(ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3...cement, PortlandZA(EN15804, inventory indicators ISO21930, Cumul...6.186147
17cement production, Portland(ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e...cement, PortlandCA-QC(EN15804, inventory indicators ISO21930, Cumul...3.992977
18cement production, Portland(ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b...cement, PortlandUS(EN15804, inventory indicators ISO21930, Cumul...3.599198
19cement production, Portland(ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b...cement, PortlandCH(EN15804, inventory indicators ISO21930, Cumul...2.164824
20cement production, Portland(ecoinvent 3.9.1 cutoff, 19afbe085b8798fd8c85e...cement, PortlandEurope without Switzerlan(EN15804, inventory indicators ISO21930, Cumul...3.350089
21cement production, Portland(ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6...cement, PortlandPE(EN15804, inventory indicators ISO21930, Cumul...4.172537
\n", - "
" - ], - "text/plain": [ - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Pozzolana Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland Slag \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "7 cement production, Portland \n", - "8 cement production, Portland \n", - "9 cement production, Portland \n", - "10 cement production, Portland \n", - "11 cement production, Portland \n", - "12 cement production, Portland \n", - "13 cement production, Pozzolana Portland \n", - "14 cement production, Portland \n", - "15 cement production, Portland Slag \n", - "16 cement production, Portland \n", - "17 cement production, Portland \n", - "18 cement production, Portland \n", - "19 cement production, Portland \n", - "20 cement production, Portland \n", - "21 cement production, Portland \n", - "\n", - " activity key \\\n", - "0 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... \n", - "1 (ecoinvent 3.9.1 cutoff, 7011b57a11b423e3a22f6... \n", - "2 (ecoinvent 3.9.1 cutoff, dddde503e9bdf9cc25e2e... \n", - "3 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... \n", - "4 (ecoinvent 3.9.1 cutoff, 461fa0b26e14337c73141... \n", - "5 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... \n", - "7 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... \n", - "8 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... \n", - "9 (ecoinvent 3.9.1 cutoff, 19afbe085b8798fd8c85e... \n", - "10 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... \n", - "11 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... \n", - "12 (ecoinvent 3.9.1 cutoff, 7011b57a11b423e3a22f6... \n", - "13 (ecoinvent 3.9.1 cutoff, dddde503e9bdf9cc25e2e... \n", - "14 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... \n", - "15 (ecoinvent 3.9.1 cutoff, 461fa0b26e14337c73141... \n", - "16 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... \n", - "17 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... \n", - "18 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... \n", - "19 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... \n", - "20 (ecoinvent 3.9.1 cutoff, 19afbe085b8798fd8c85e... \n", - "21 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... \n", - "\n", - " reference product location \\\n", - "0 cement, Portland BR \n", - "1 cement, Portland RoW \n", - "2 cement, Pozzolana Portland IN \n", - "3 cement, Portland IN \n", - "4 cement, Portland Slag IN \n", - "5 cement, Portland ZA \n", - "6 cement, Portland CA-QC \n", - "7 cement, Portland US \n", - "8 cement, Portland CH \n", - "9 cement, Portland Europe without Switzerlan \n", - "10 cement, Portland PE \n", - "11 cement, Portland BR \n", - "12 cement, Portland RoW \n", - "13 cement, Pozzolana Portland IN \n", - "14 cement, Portland IN \n", - "15 cement, Portland Slag IN \n", - "16 cement, Portland ZA \n", - "17 cement, Portland CA-QC \n", - "18 cement, Portland US \n", - "19 cement, Portland CH \n", - "20 cement, Portland Europe without Switzerlan \n", - "21 cement, Portland PE \n", - "\n", - " method name total \n", - "0 (IPCC 2013, climate change, global warming pot... 3.606791 \n", - "1 (IPCC 2013, climate change, global warming pot... 3.944373 \n", - "2 (IPCC 2013, climate change, global warming pot... 3.381439 \n", - "3 (IPCC 2013, climate change, global warming pot... 4.785940 \n", - "4 (IPCC 2013, climate change, global warming pot... 3.766643 \n", - "5 (IPCC 2013, climate change, global warming pot... 6.186147 \n", - "6 (IPCC 2013, climate change, global warming pot... 3.992977 \n", - "7 (IPCC 2013, climate change, global warming pot... 3.599198 \n", - "8 (IPCC 2013, climate change, global warming pot... 2.164824 \n", - "9 (IPCC 2013, climate change, global warming pot... 3.350089 \n", - "10 (IPCC 2013, climate change, global warming pot... 4.172537 \n", - "11 (EN15804, inventory indicators ISO21930, Cumul... 3.606791 \n", - "12 (EN15804, inventory indicators ISO21930, Cumul... 3.944373 \n", - "13 (EN15804, inventory indicators ISO21930, Cumul... 3.381439 \n", - "14 (EN15804, inventory indicators ISO21930, Cumul... 4.785940 \n", - "15 (EN15804, inventory indicators ISO21930, Cumul... 3.766643 \n", - "16 (EN15804, inventory indicators ISO21930, Cumul... 6.186147 \n", - "17 (EN15804, inventory indicators ISO21930, Cumul... 3.992977 \n", - "18 (EN15804, inventory indicators ISO21930, Cumul... 3.599198 \n", - "19 (EN15804, inventory indicators ISO21930, Cumul... 2.164824 \n", - "20 (EN15804, inventory indicators ISO21930, Cumul... 3.350089 \n", - "21 (EN15804, inventory indicators ISO21930, Cumul... 4.172537 " - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_eco" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
method nameactivity_codetotal_eitotal_premiserelative_change
0(IPCC 2013, climate change, global warming pot...a3c2064d83411f7963af550c04c869a13.6067910.832335-76.923124
1(IPCC 2013, climate change, global warming pot...7011b57a11b423e3a22f6ba29e6bb1db3.9443730.827825-79.012507
2(IPCC 2013, climate change, global warming pot...dddde503e9bdf9cc25e2e54c2d3cbac53.3814390.536510-84.133681
3(IPCC 2013, climate change, global warming pot...f8b84f45f50d3bd7ff4feaabdb493f6a4.7859400.774079-83.825989
4(IPCC 2013, climate change, global warming pot...461fa0b26e14337c731415cbb2df33003.7666430.471488-87.482550
5(IPCC 2013, climate change, global warming pot...86841f8c7ee2668f244d3b8e34f419326.1861470.814768-86.829161
6(IPCC 2013, climate change, global warming pot...fcb666edf2a01467e555eeff5b4a5bbb3.9929770.841855-78.916614
7(IPCC 2013, climate change, global warming pot...36a53c174f34e672bc15b7e55563685e3.5991980.821278-77.181634
8(IPCC 2013, climate change, global warming pot...df49e8f525497f2fbd56bcdc80ff0cde2.1648240.737734-65.921770
9(IPCC 2013, climate change, global warming pot...19afbe085b8798fd8c85eb1d14ebcca63.3500890.815993-75.642651
10(IPCC 2013, climate change, global warming pot...3c16b45db40210cd97de6574b2f47aaf4.1725370.869433-79.162956
11(EN15804, inventory indicators ISO21930, Cumul...a3c2064d83411f7963af550c04c869a13.6067913.419633-5.189055
12(EN15804, inventory indicators ISO21930, Cumul...7011b57a11b423e3a22f6ba29e6bb1db3.9443733.275430-16.959422
13(EN15804, inventory indicators ISO21930, Cumul...dddde503e9bdf9cc25e2e54c2d3cbac53.3814392.503883-25.952148
14(EN15804, inventory indicators ISO21930, Cumul...f8b84f45f50d3bd7ff4feaabdb493f6a4.7859403.581588-25.164373
15(EN15804, inventory indicators ISO21930, Cumul...461fa0b26e14337c731415cbb2df33003.7666432.579477-31.517898
16(EN15804, inventory indicators ISO21930, Cumul...86841f8c7ee2668f244d3b8e34f419326.1861474.025051-34.934447
17(EN15804, inventory indicators ISO21930, Cumul...fcb666edf2a01467e555eeff5b4a5bbb3.9929773.9974850.112896
18(EN15804, inventory indicators ISO21930, Cumul...36a53c174f34e672bc15b7e55563685e3.5991982.672874-25.736953
19(EN15804, inventory indicators ISO21930, Cumul...df49e8f525497f2fbd56bcdc80ff0cde2.1648242.020362-6.673179
20(EN15804, inventory indicators ISO21930, Cumul...19afbe085b8798fd8c85eb1d14ebcca63.3500892.659676-20.608781
21(EN15804, inventory indicators ISO21930, Cumul...3c16b45db40210cd97de6574b2f47aaf4.1725373.836765-8.047184
\n", - "
" - ], - "text/plain": [ - " method name \\\n", - "0 (IPCC 2013, climate change, global warming pot... \n", - "1 (IPCC 2013, climate change, global warming pot... \n", - "2 (IPCC 2013, climate change, global warming pot... \n", - "3 (IPCC 2013, climate change, global warming pot... \n", - "4 (IPCC 2013, climate change, global warming pot... \n", - "5 (IPCC 2013, climate change, global warming pot... \n", - "6 (IPCC 2013, climate change, global warming pot... \n", - "7 (IPCC 2013, climate change, global warming pot... \n", - "8 (IPCC 2013, climate change, global warming pot... \n", - "9 (IPCC 2013, climate change, global warming pot... \n", - "10 (IPCC 2013, climate change, global warming pot... \n", - "11 (EN15804, inventory indicators ISO21930, Cumul... \n", - "12 (EN15804, inventory indicators ISO21930, Cumul... \n", - "13 (EN15804, inventory indicators ISO21930, Cumul... \n", - "14 (EN15804, inventory indicators ISO21930, Cumul... \n", - "15 (EN15804, inventory indicators ISO21930, Cumul... \n", - "16 (EN15804, inventory indicators ISO21930, Cumul... \n", - "17 (EN15804, inventory indicators ISO21930, Cumul... \n", - "18 (EN15804, inventory indicators ISO21930, Cumul... \n", - "19 (EN15804, inventory indicators ISO21930, Cumul... \n", - "20 (EN15804, inventory indicators ISO21930, Cumul... \n", - "21 (EN15804, inventory indicators ISO21930, Cumul... \n", - "\n", - " activity_code total_ei total_premise relative_change \n", - "0 a3c2064d83411f7963af550c04c869a1 3.606791 0.832335 -76.923124 \n", - "1 7011b57a11b423e3a22f6ba29e6bb1db 3.944373 0.827825 -79.012507 \n", - "2 dddde503e9bdf9cc25e2e54c2d3cbac5 3.381439 0.536510 -84.133681 \n", - "3 f8b84f45f50d3bd7ff4feaabdb493f6a 4.785940 0.774079 -83.825989 \n", - "4 461fa0b26e14337c731415cbb2df3300 3.766643 0.471488 -87.482550 \n", - "5 86841f8c7ee2668f244d3b8e34f41932 6.186147 0.814768 -86.829161 \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb 3.992977 0.841855 -78.916614 \n", - "7 36a53c174f34e672bc15b7e55563685e 3.599198 0.821278 -77.181634 \n", - "8 df49e8f525497f2fbd56bcdc80ff0cde 2.164824 0.737734 -65.921770 \n", - "9 19afbe085b8798fd8c85eb1d14ebcca6 3.350089 0.815993 -75.642651 \n", - "10 3c16b45db40210cd97de6574b2f47aaf 4.172537 0.869433 -79.162956 \n", - "11 a3c2064d83411f7963af550c04c869a1 3.606791 3.419633 -5.189055 \n", - "12 7011b57a11b423e3a22f6ba29e6bb1db 3.944373 3.275430 -16.959422 \n", - "13 dddde503e9bdf9cc25e2e54c2d3cbac5 3.381439 2.503883 -25.952148 \n", - "14 f8b84f45f50d3bd7ff4feaabdb493f6a 4.785940 3.581588 -25.164373 \n", - "15 461fa0b26e14337c731415cbb2df3300 3.766643 2.579477 -31.517898 \n", - "16 86841f8c7ee2668f244d3b8e34f41932 6.186147 4.025051 -34.934447 \n", - "17 fcb666edf2a01467e555eeff5b4a5bbb 3.992977 3.997485 0.112896 \n", - "18 36a53c174f34e672bc15b7e55563685e 3.599198 2.672874 -25.736953 \n", - "19 df49e8f525497f2fbd56bcdc80ff0cde 2.164824 2.020362 -6.673179 \n", - "20 19afbe085b8798fd8c85eb1d14ebcca6 3.350089 2.659676 -20.608781 \n", - "21 3c16b45db40210cd97de6574b2f47aaf 4.172537 3.836765 -8.047184 " - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import pandas as pd\n", - "\n", - "# Assuming df_ei and df_premise are your dataframes for ecoinvent and premise respectively\n", - "df_ei= data_eco\n", - "df_premise=data_premise\n", - "\n", - "# Split the 'activity key' to extract the second part\n", - "df_ei['activity_code'] = df_ei['activity key'].apply(lambda x: x[1])\n", - "df_premise['activity_code'] = df_premise['activity key'].apply(lambda x: x[1])\n", - "\n", - "# Merge the two dataframes based on the activity code\n", - "merged_df = pd.merge(df_ei, df_premise, on=['activity_code', 'method name'], suffixes=('_ei', '_premise'))\n", - "\n", - "# Calculate the relative change\n", - "merged_df['relative_change'] = ((merged_df['total_premise'] - merged_df['total_ei']) / merged_df['total_ei']) * 100\n", - "\n", - "# Keep only relevant columns if needed\n", - "final_df = merged_df[['method name', 'activity_code', 'total_ei', 'total_premise', 'relative_change']]\n", - "\n", - "# Output the result\n", - "final_df\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activity_codetotal_eitotal_premiserelative_change
0a3c2064d83411f7963af550c04c869a13.6067910.832335-76.923124
17011b57a11b423e3a22f6ba29e6bb1db3.9443730.827825-79.012507
2dddde503e9bdf9cc25e2e54c2d3cbac53.3814390.536510-84.133681
3f8b84f45f50d3bd7ff4feaabdb493f6a4.7859400.774079-83.825989
4461fa0b26e14337c731415cbb2df33003.7666430.471488-87.482550
586841f8c7ee2668f244d3b8e34f419326.1861470.814768-86.829161
6fcb666edf2a01467e555eeff5b4a5bbb3.9929770.841855-78.916614
736a53c174f34e672bc15b7e55563685e3.5991980.821278-77.181634
8df49e8f525497f2fbd56bcdc80ff0cde2.1648240.737734-65.921770
919afbe085b8798fd8c85eb1d14ebcca63.3500890.815993-75.642651
103c16b45db40210cd97de6574b2f47aaf4.1725370.869433-79.162956
\n", - "
" - ], - "text/plain": [ - " activity_code total_ei total_premise relative_change\n", - "0 a3c2064d83411f7963af550c04c869a1 3.606791 0.832335 -76.923124\n", - "1 7011b57a11b423e3a22f6ba29e6bb1db 3.944373 0.827825 -79.012507\n", - "2 dddde503e9bdf9cc25e2e54c2d3cbac5 3.381439 0.536510 -84.133681\n", - "3 f8b84f45f50d3bd7ff4feaabdb493f6a 4.785940 0.774079 -83.825989\n", - "4 461fa0b26e14337c731415cbb2df3300 3.766643 0.471488 -87.482550\n", - "5 86841f8c7ee2668f244d3b8e34f41932 6.186147 0.814768 -86.829161\n", - "6 fcb666edf2a01467e555eeff5b4a5bbb 3.992977 0.841855 -78.916614\n", - "7 36a53c174f34e672bc15b7e55563685e 3.599198 0.821278 -77.181634\n", - "8 df49e8f525497f2fbd56bcdc80ff0cde 2.164824 0.737734 -65.921770\n", - "9 19afbe085b8798fd8c85eb1d14ebcca6 3.350089 0.815993 -75.642651\n", - "10 3c16b45db40210cd97de6574b2f47aaf 4.172537 0.869433 -79.162956" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_df" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Value must be one of {'bar', 'col'}", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[23], line 16\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[38;5;66;03m# Create a bar chart\u001b[39;00m\n\u001b[0;32m 15\u001b[0m chart \u001b[38;5;241m=\u001b[39m BarChart()\n\u001b[1;32m---> 16\u001b[0m chart\u001b[38;5;241m.\u001b[39mtype\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcolumn\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 17\u001b[0m chart\u001b[38;5;241m.\u001b[39mstyle\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m\n\u001b[0;32m 18\u001b[0m chart\u001b[38;5;241m.\u001b[39moverlap\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m100\u001b[39m\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\descriptors\\base.py:231\u001b[0m, in \u001b[0;36mAlias.__set__\u001b[1;34m(self, instance, value)\u001b[0m\n\u001b[0;32m 230\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__set__\u001b[39m(\u001b[38;5;28mself\u001b[39m, instance, value):\n\u001b[1;32m--> 231\u001b[0m \u001b[38;5;28msetattr\u001b[39m(instance, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39malias, value)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\descriptors\\nested.py:33\u001b[0m, in \u001b[0;36mNested.__set__\u001b[1;34m(self, instance, value)\u001b[0m\n\u001b[0;32m 30\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTag does not match attribute\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 32\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfrom_tree(value)\n\u001b[1;32m---> 33\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__set__\u001b[39m(instance, value)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\descriptors\\base.py:132\u001b[0m, in \u001b[0;36mSet.__set__\u001b[1;34m(self, instance, value)\u001b[0m\n\u001b[0;32m 130\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__set__\u001b[39m(\u001b[38;5;28mself\u001b[39m, instance, value):\n\u001b[0;32m 131\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m value \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalues:\n\u001b[1;32m--> 132\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__doc__\u001b[39m)\n\u001b[0;32m 133\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__set__\u001b[39m(instance, value)\n", - "\u001b[1;31mValueError\u001b[0m: Value must be one of {'bar', 'col'}" - ] - } - ], - "source": [ - "import pandas as pd\n", - "import openpyxl\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "# Save the results to an Excel file\n", - "filename = \"LCA_comparison_v8.xlsx\"\n", - "with pd.ExcelWriter(filename, engine='openpyxl') as writer:\n", - " merged_df.to_excel(writer, index=False, sheet_name='LCA Results')\n", - "\n", - "# Load the workbook and select the sheet\n", - "wb = openpyxl.load_workbook(filename)\n", - "ws = wb['LCA Results']\n", - "\n", - "# Create a bar chart\n", - "chart = BarChart()\n", - "chart.type=\"column\"\n", - "chart.style=2\n", - "chart.overlap= 100\n", - "chart.title = \"Relative Change in LCA Scores\"\n", - "chart.x_axis.title = \"Activity\"\n", - "chart.y_axis.title = \"Relative Change (%)\"\n", - "\n", - "# Set the data for the chart\n", - "data = Reference(ws, min_col=14, min_row=1, max_row=ws.max_row)\n", - "categories = Reference(ws, min_col=4, min_row=2, max_row=ws.max_row)\n", - "chart.add_data(data, titles_from_data=True)\n", - "chart.set_categories(categories)\n", - "\n", - "# x-axis tickes\n", - "chart.x_axis.tickLblPos = \"nextTo\"\n", - "chart.x_axis.delete = False # Ensure axis is not deleted\n", - "chart.x_axis.number_format = '0.00'\n", - "\n", - "# Avoid overlap\n", - "chart.title.overlay = False\n", - "chart.x_axis.title.overlay = False\n", - "chart.y_axis.title.overlay = False \n", - "chart.legend.overlay = False\n", - "\n", - "for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - "# Adjust chart dimensions\n", - "chart.width = 20 # Width of the chart\n", - "chart.height = 14 # Height of the chart\n", - "\n", - "# Add the chart to a new worksheet\n", - "new_sheet = wb.create_sheet(title=\"LCA Chart\")\n", - "new_sheet.add_chart(chart, \"A1\")\n", - "\n", - "# Save the workbook\n", - "wb.save(filename)\n", - "\n", - "print(f\"Results and chart saved to {filename}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "WITH DICTIONARIES " - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "premise_dict = dopo.dopo_excel.process_yaml_files(files_dict=files_dict, database=ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "eco_dict = dopo.dopo_excel.process_yaml_files(files_dict=files_dict, database=ei39)" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27',\n", - " 'df49e8f525497f2fbd56bcdc80ff0cde')" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "premise_dict['Cement']['activities'][0].key" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "def lca_scores_compare(database_dict, method_dict):\n", - " # Dictionary to store DataFrames for each method\n", - " dataframes = {}\n", - "\n", - " # Labels for the DataFrame columns\n", - " labels = [\n", - " \"activity\",\n", - " \"activity key\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method name\",\n", - " \"total\",\n", - " ]\n", - "\n", - " # Loop through each method in method_dict\n", - " for meth_key, meth_info in method_dict.items():\n", - " data = [] # Initialize a new list to hold data for the current method\n", - " \n", - " # Extract the 'method name' tuple from the current method info\n", - " method_name = meth_info['method name']\n", - "\n", - " # Loop through each sector in the database_dict\n", - " for sector, sector_data in database_dict.items():\n", - " # Now loop through each activity in the sector\n", - " for act in sector_data['activities']:\n", - " # Ensure the activity is an instance of the expected class\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - " \n", - " # Perform LCA calculations\n", - " lca = bw.LCA({act: 1}, method_name)\n", - " lca.lci()\n", - " lca.lcia()\n", - " \n", - " # Collect data for the current activity and method\n", - " data.append([\n", - " act[\"name\"],\n", - " act.key,\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " method_name,\n", - " lca.score,\n", - " ])\n", - " \n", - " # Convert the data list to a DataFrame and store it in the dictionary\n", - " dataframes[meth_key] = pd.DataFrame(data, columns=labels)\n", - "\n", - " # Now `dataframes` is a dictionary where each key is a method name and the value is the corresponding DataFrame\n", - " return dataframes\n" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [], - "source": [ - "eco_scores=lca_scores_compare(eco_dict,method_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityactivity keyreference productlocationmethod nametotal
0cement production, Portland(ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3...cement, PortlandZA(IPCC 2013, climate change, global warming pot...1.000588
1cement production, Portland(ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b...cement, PortlandUS(IPCC 2013, climate change, global warming pot...0.885515
2cement production, Portland(ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b...cement, PortlandCH(IPCC 2013, climate change, global warming pot...0.742421
3cement production, Portland(ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5...cement, PortlandBR(IPCC 2013, climate change, global warming pot...0.851799
4cement production, Portland(ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe...cement, PortlandIN(IPCC 2013, climate change, global warming pot...0.891756
5cement production, Portland(ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e...cement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...0.845772
6cement production, Portland(ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6...cement, PortlandPE(IPCC 2013, climate change, global warming pot...0.895198
\n", - "
" - ], - "text/plain": [ - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "\n", - " location method name total \n", - "0 ZA (IPCC 2013, climate change, global warming pot... 1.000588 \n", - "1 US (IPCC 2013, climate change, global warming pot... 0.885515 \n", - "2 CH (IPCC 2013, climate change, global warming pot... 0.742421 \n", - "3 BR (IPCC 2013, climate change, global warming pot... 0.851799 \n", - "4 IN (IPCC 2013, climate change, global warming pot... 0.891756 \n", - "5 CA-QC (IPCC 2013, climate change, global warming pot... 0.845772 \n", - "6 PE (IPCC 2013, climate change, global warming pot... 0.895198 " - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "eco_scores['method_1']" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "metadata": {}, - "outputs": [], - "source": [ - "premise_scores=lca_scores_compare(premise_dict,method_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityactivity keyreference productlocationmethod nametotal
0cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandCH(IPCC 2013, climate change, global warming pot...0.737734
1cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandBR(IPCC 2013, climate change, global warming pot...0.832335
2cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandUS(IPCC 2013, climate change, global warming pot...0.821278
3cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandIN(IPCC 2013, climate change, global warming pot...0.774079
4cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandCA-QC(IPCC 2013, climate change, global warming pot...0.841855
5cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandPE(IPCC 2013, climate change, global warming pot...0.869433
6cement production, Portland(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...cement, PortlandZA(IPCC 2013, climate change, global warming pot...0.814768
7electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageTUR(IPCC 2013, climate change, global warming pot...0.033589
8electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageSAF(IPCC 2013, climate change, global warming pot...0.032775
9electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageRUS(IPCC 2013, climate change, global warming pot...0.033344
10electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageKOR(IPCC 2013, climate change, global warming pot...0.032052
11electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageBRA(IPCC 2013, climate change, global warming pot...0.032326
12electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageUKR(IPCC 2013, climate change, global warming pot...0.033533
13electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageCEU(IPCC 2013, climate change, global warming pot...0.032553
14electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageRSAM(IPCC 2013, climate change, global warming pot...0.032650
15electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageUSA(IPCC 2013, climate change, global warming pot...0.031852
16electricity production, at biomass-fired IGCC ...(ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2...electricity, high voltageCHN(IPCC 2013, climate change, global warming pot...0.032993
\n", - "
" - ], - "text/plain": [ - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "7 electricity production, at biomass-fired IGCC ... \n", - "8 electricity production, at biomass-fired IGCC ... \n", - "9 electricity production, at biomass-fired IGCC ... \n", - "10 electricity production, at biomass-fired IGCC ... \n", - "11 electricity production, at biomass-fired IGCC ... \n", - "12 electricity production, at biomass-fired IGCC ... \n", - "13 electricity production, at biomass-fired IGCC ... \n", - "14 electricity production, at biomass-fired IGCC ... \n", - "15 electricity production, at biomass-fired IGCC ... \n", - "16 electricity production, at biomass-fired IGCC ... \n", - "\n", - " activity key \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "7 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "8 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "9 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "10 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "11 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "12 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "13 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "14 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "15 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "16 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product location \\\n", - "0 cement, Portland CH \n", - "1 cement, Portland BR \n", - "2 cement, Portland US \n", - "3 cement, Portland IN \n", - "4 cement, Portland CA-QC \n", - "5 cement, Portland PE \n", - "6 cement, Portland ZA \n", - "7 electricity, high voltage TUR \n", - "8 electricity, high voltage SAF \n", - "9 electricity, high voltage RUS \n", - "10 electricity, high voltage KOR \n", - "11 electricity, high voltage BRA \n", - "12 electricity, high voltage UKR \n", - "13 electricity, high voltage CEU \n", - "14 electricity, high voltage RSAM \n", - "15 electricity, high voltage USA \n", - "16 electricity, high voltage CHN \n", - "\n", - " method name total \n", - "0 (IPCC 2013, climate change, global warming pot... 0.737734 \n", - "1 (IPCC 2013, climate change, global warming pot... 0.832335 \n", - "2 (IPCC 2013, climate change, global warming pot... 0.821278 \n", - "3 (IPCC 2013, climate change, global warming pot... 0.774079 \n", - "4 (IPCC 2013, climate change, global warming pot... 0.841855 \n", - "5 (IPCC 2013, climate change, global warming pot... 0.869433 \n", - "6 (IPCC 2013, climate change, global warming pot... 0.814768 \n", - "7 (IPCC 2013, climate change, global warming pot... 0.033589 \n", - "8 (IPCC 2013, climate change, global warming pot... 0.032775 \n", - "9 (IPCC 2013, climate change, global warming pot... 0.033344 \n", - "10 (IPCC 2013, climate change, global warming pot... 0.032052 \n", - "11 (IPCC 2013, climate change, global warming pot... 0.032326 \n", - "12 (IPCC 2013, climate change, global warming pot... 0.033533 \n", - "13 (IPCC 2013, climate change, global warming pot... 0.032553 \n", - "14 (IPCC 2013, climate change, global warming pot... 0.032650 \n", - "15 (IPCC 2013, climate change, global warming pot... 0.031852 \n", - "16 (IPCC 2013, climate change, global warming pot... 0.032993 " - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "premise_scores['method_1'] #what is happening here?, something wrong with sector!" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/comparing dbs_v3.ipynb b/dev/notebook tests/comparing dbs_v3.ipynb deleted file mode 100644 index 029ae52..0000000 --- a/dev/notebook tests/comparing dbs_v3.ipynb +++ /dev/null @@ -1,800 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Dependencies" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "#from functions_v2 import*\n", - "from methods import MethodFinder\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "import bw2calc as bc\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "import dopo\n", - "import activity_filter\n", - "from activity_filter import generate_sets_from_filters\n", - "\n", - "import copy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setup up bw project and databases" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setup method dictionary" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'}}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Get Methods\n", - "finder=MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "# finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "# finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define sectors & setup databse dictionaries containing sector activity lists" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Steel': {'yaml': 'yamls\\\\steel_small.yaml', 'yaml identifier': 'Steel'}}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "#files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " #'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict['Steel']={'yaml':'yamls\\steel_small.yaml',\n", - " 'yaml identifier': 'Steel'}\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def process_yaml_files(files_dict, database):\n", - " '''\n", - " - Runs through the files_dict reading the defined filters in the yaml files.\n", - " - With another function a list that contains the filtered activities is created from the chosen database.\n", - " - This activity list is saved within the corresponding key (sector) in the dictionary main_dict which is based on the files_dict.\n", - "\n", - " :param files_dict: dictionary of dictionaries. It should hold the yaml file path and the title in the first row of the yaml file. \n", - " Like so: files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml', 'yaml identifier': 'Cement'}\n", - " :param database: premise or ecoinvent database of choice.\n", - "\n", - " It returns an updated dictionary which contains filtered activity lists for each sector.\n", - " '''\n", - "\n", - " main_dict = copy.deepcopy(files_dict)\n", - "\n", - " for key, value in main_dict.items():\n", - " yaml_file = value['yaml']\n", - " yaml_identifier = value['yaml identifier']\n", - " \n", - " #debug\n", - " print(f\"Processing {key} with database {database.name}\")\n", - " \n", - " # Generate the sector activities\n", - " sector_activities = generate_sets_from_filters(yaml_file, database)\n", - " \n", - " #debug\n", - " print(f\"Activities for {key}:\")\n", - " for activity in sector_activities[yaml_identifier]:\n", - " print(f\" {activity.key}\")\n", - "\n", - " # Convert the set of activities to a list\n", - " activities_list = list(sector_activities[yaml_identifier])\n", - " \n", - " # Add to the sectors_dict\n", - " main_dict[key]['activities'] = activities_list\n", - " \n", - " return main_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - "Processing Steel with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Steel:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '18b0dcf01dd401e1549b3796e3786213')\n" - ] - } - ], - "source": [ - "premise_dict = process_yaml_files(files_dict=files_dict, database=ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Cement with database ecoinvent 3.9.1 cutoff\n", - "Activities for Cement:\n", - " ('ecoinvent 3.9.1 cutoff', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ecoinvent 3.9.1 cutoff', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ecoinvent 3.9.1 cutoff', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ecoinvent 3.9.1 cutoff', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ecoinvent 3.9.1 cutoff', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ecoinvent 3.9.1 cutoff', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ecoinvent 3.9.1 cutoff', '36a53c174f34e672bc15b7e55563685e')\n", - "Processing Steel with database ecoinvent 3.9.1 cutoff\n", - "Activities for Steel:\n", - " ('ecoinvent 3.9.1 cutoff', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ecoinvent 3.9.1 cutoff', '18b0dcf01dd401e1549b3796e3786213')\n", - " ('ecoinvent 3.9.1 cutoff', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ecoinvent 3.9.1 cutoff', 'af6bd1221fc0206541fbaf481397bf0d')\n" - ] - } - ], - "source": [ - "eco_dict = process_yaml_files(files_dict=files_dict, database=ei39)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "keys_prem = [activity.key for activity in premise_dict['Cement']['activities']]\n", - "keys_eco = [activity.key for activity in eco_dict['Cement']['activities']]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "keys_prem" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "keys_eco" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "premise_dict['Cement']['activities'][0].key" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "eco_dict['Cement']['activities'][0].key" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate lca scores for each sectors activities, store them each in a dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "def lca_scores_compare(database_dict, method_dict):\n", - " # Dictionary to store DataFrames for each sector\n", - " sector_dataframes = {}\n", - "\n", - " # Labels for the DataFrame columns\n", - " labels = [\n", - " \"activity\",\n", - " \"activity key\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method name\",\n", - " \"method unit\",\n", - " \"total\",\n", - " ]\n", - "\n", - " # Loop through each sector in the database_dict\n", - " for sector, sector_data in database_dict.items():\n", - " # Initialize a dictionary to hold DataFrames for each method in the current sector\n", - " method_dataframes = {}\n", - "\n", - " # Loop through each method in method_dict\n", - " for meth_key, meth_info in method_dict.items():\n", - " data = [] # Initialize a new list to hold data for the current method\n", - " \n", - " # Extract the 'method name' tuple from the current method info\n", - " method_name = meth_info['method name']\n", - " method_unit = meth_info['unit']\n", - "\n", - " # Now loop through each activity in the sector\n", - " for act in sector_data['activities']:\n", - " # Ensure the activity is an instance of the expected class\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - " \n", - " # Perform LCA calculations\n", - " lca = bw.LCA({act: 1}, method_name)\n", - " lca.lci()\n", - " lca.lcia()\n", - " \n", - " # Collect data for the current activity and method\n", - " data.append([\n", - " act[\"name\"],\n", - " act.key,\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " method_name,\n", - " method_unit,\n", - " lca.score,\n", - " ])\n", - " \n", - " # Convert the data list to a DataFrame and store it in the sector's dictionary\n", - " method_dataframes[meth_key] = pd.DataFrame(data, columns=labels)\n", - "\n", - " # Store the method_dataframes dictionary in the sector_dataframes dictionary\n", - " sector_dataframes[sector] = method_dataframes\n", - "\n", - " # Now `sector_dataframes` is a dictionary where each key is a sector, and the value is another dictionary with method names and their corresponding DataFrames\n", - " return sector_dataframes\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Ecoinvent scores" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "eco_scores=lca_scores_compare(eco_dict,method_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "eco_scores['Cement']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "eco_scores['Cement']['method_1']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "eco_scores['Steel']['method_2']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Premise scores" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "premise_scores=lca_scores_compare(premise_dict,method_dict) #dictionary containing sectors = keys and dataframes by method = values" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "premise_scores['Steel']['method_1'] #what is happening here?, something wrong with sector!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Relative changes" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "def relative_changes_df(ecoinvent_scores, premise_scores):\n", - "\n", - " dictionary = {}\n", - "\n", - " # Iterate over sectors\n", - " for sector_key in ecoinvent_scores:\n", - " # Initialize the sector key in the output dictionary\n", - " if sector_key not in dictionary:\n", - " dictionary[sector_key] = {}\n", - "\n", - " # Iterate over methods within the sector\n", - " for method_key in ecoinvent_scores[sector_key]:\n", - " # Check if the method_key exists in both dictionaries to avoid KeyError\n", - " if method_key in premise_scores.get(sector_key, {}):\n", - " # Get the corresponding DataFrames\n", - " df_ei = ecoinvent_scores[sector_key][method_key]\n", - " df_premise = premise_scores[sector_key][method_key]\n", - "\n", - " #print(df_ei['activity key'])\n", - " #print(df_premise)\n", - "\n", - " # Split the 'activity key' to extract the second part\n", - " df_ei['activity_code'] = df_ei['activity key'].apply(lambda x: x[1]) # Access the second element of the tuple\n", - " df_premise['activity_code'] = df_premise['activity key'].apply(lambda x: x[1])\n", - "\n", - " # Merge the two dataframes based on the activity code and method name\n", - " merged_df = pd.merge(df_ei, df_premise, on=['activity_code', 'method name'], suffixes=('_ei', '_premise'))\n", - "\n", - " # Calculate the relative change\n", - " merged_df['relative_change'] = ((merged_df['total_premise'] - merged_df['total_ei']) / merged_df['total_ei']) * 100\n", - "\n", - " # Store the result in the dictionary\n", - " dictionary[sector_key][method_key] = merged_df\n", - "\n", - " return dictionary\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "relative_dict = relative_changes_df(eco_scores, premise_scores)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "relative_dict['Cement']['method_1']" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'method_1': {'rank': 16, 'relative_change': 14}, 'method_2': {'rank': 16, 'relative_change': 14}}\n" - ] - } - ], - "source": [ - "from dopo_excel import add_sector_marker\n", - "\n", - "# Prepare to save each LCA score table to a different worksheet in the same Excel file\n", - "excel_file = 'compare_tables_v7.xlsx'\n", - "column_positions = {} #stores the indexes of columns for plotting\n", - "with pd.ExcelWriter(excel_file, engine='openpyxl') as writer:\n", - " for sector in relative_dict.keys():\n", - " relative_changes = relative_dict[sector]\n", - " \n", - " for method, table in relative_changes.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - "\n", - " # Add sector marker\n", - " df = add_sector_marker(df, sector) #!! ADJUST POSITION \n", - "\n", - " # Sort the DataFrame by 'relative_change' from largest negative to largest positive\n", - " df = df.sort_values(by='relative_change', ascending=False)\n", - "\n", - " # Add a 'rank' column based on the 'relative_change', ranking from most negative to least negative\n", - " df['rank'] = df['relative_change'].rank(ascending=False, method='dense').astype(int)\n", - " \n", - " # Get the index values of columns\n", - " columns_of_interest = [\"rank\", \"relative_change\", \"method\", \"method unit\", ]\n", - " positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns}\n", - " column_positions[method] = positions\n", - "\n", - " # Generate worksheet name\n", - " worksheet_name = f\"{sector}_{method}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - "\n", - " # Save the DataFrame to the Excel file in a new worksheet\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)\n", - "print(column_positions)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plots" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "\n", - "def categorize_sheets_by_sector(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import openpyxl\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def compare_database_charts(filename, worksheet_dict, index_positions=None):\n", - "\n", - " # Load the workbook and select the sheet\n", - " wb = openpyxl.load_workbook(filename)\n", - "\n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name) \n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " current_col = 1 # Start placing charts from column 1\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " charts_per_row = 2 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # # Find the key in index_positions that contains worksheet_name\n", - " # matching_key = None\n", - " # for key in index_positions.keys():\n", - " # if worksheet_name in key:\n", - " # matching_key = key\n", - " # break\n", - "\n", - " # if not matching_key:\n", - " # print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " # continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " # positions = index_positions[matching_key]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " min_col_data = 15 #positions.get(\"relative_change\", None) + 1\n", - " rank_col = 17#positions.get(\"rank\", None) + 1\n", - " method_col = 5#positions.get(\"method\", None) + 1\n", - " method_unit_col = 6#positions.get(\"method unit\", None) + 1\n", - "\n", - " # Create a bar chart\n", - " chart = BarChart()\n", - " chart.type=\"bar\"\n", - " chart.style=2\n", - " chart.overlap= 100\n", - " chart.title = \"Relative Change in LCA Scores\"\n", - " chart.x_axis.title = \"Activity\"\n", - " chart.y_axis.title = \"Relative Change (%)\"\n", - "\n", - " # Set the data for the chart\n", - " data = Reference(ws, min_col=min_col_data, min_row=1, max_row=ws.max_row)\n", - " categories = Reference(ws, min_col=rank_col, min_row=2, max_row=ws.max_row)\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(categories)\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # x-axis tickes\n", - " chart.x_axis.tickLblPos = \"low\"\n", - " chart.x_axis.majorGridlines = None \n", - " chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines \n", - " chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work\n", - " chart.x_axis.delete = False # Ensure axis is not deleted\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"{sector} {method_value} database lca scores relative changes\"\n", - "\n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.x_axis.title = f\"{method_unit_value}\"\n", - " \n", - " chart.y_axis.title = 'relative change (%)' #its switched..... should be x_axis\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - "\n", - " # Update position for the next chart\n", - " current_col += chart_width +1 \n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - "\n", - " # Add the chart to a new worksheet\n", - " # new_sheet = wb.create_sheet(title=\"LCA Chart\")\n", - " # new_sheet.add_chart(chart, \"A1\")\n", - "\n", - " # Save the workbook\n", - " wb.save(filename)\n", - "\n", - " print(f\"Results and chart saved to {filename}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': ['Cement_method_1', 'Cement_method_2'],\n", - " 'Steel': ['Steel_method_1', 'Steel_method_2'],\n", - " 'LCA Chart': ['LCA Chart']}" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "categorize_sheets_by_sector('compare_tables_v4.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Results and chart saved to compare_tables_v7.xlsx\n" - ] - } - ], - "source": [ - "compare_database_charts('compare_tables_v7.xlsx',categorize_sheets_by_sector('compare_tables_v7.xlsx')) #index_positions=column_positions)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/general_scan.ipynb b/dev/notebook tests/general_scan.ipynb deleted file mode 100644 index 43e4b61..0000000 --- a/dev/notebook tests/general_scan.ipynb +++ /dev/null @@ -1,1101 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "from functions_v2 import*\n", - "from methods import MethodFinder\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LCA DATA TO EXCEL " - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 138, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 138, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 139, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement',\n", - " 'activities': ['cement production, Portland' (kilogram, IN, None),\n", - " 'cement production, Portland' (kilogram, CH, None),\n", - " 'cement production, Portland' (kilogram, US, None),\n", - " 'cement production, Portland' (kilogram, ZA, None),\n", - " 'cement production, Portland' (kilogram, CA-QC, None),\n", - " 'cement production, Portland' (kilogram, BR, None),\n", - " 'cement production, Portland' (kilogram, PE, None)]},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 139, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n", - "yaml_file=files_dict['Cement']['yaml']\n", - "cement_sector_activities=generate_sets_from_filters(yaml_file, database=ei39SSP2)\n", - "cement_sector_activities_to_list=list(cement_sector_activities['Cement'])[:]\n", - "cement_sector_activities_to_list\n", - "main_dict=files_dict.copy()\n", - "main_dict['Cement']['activities']=cement_sector_activities_to_list\n", - "main_dict\n" - ] - }, - { - "cell_type": "code", - "execution_count": 140, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement',\n", - " 'activities': ['cement production, Portland' (kilogram, IN, None),\n", - " 'cement production, Portland' (kilogram, CH, None),\n", - " 'cement production, Portland' (kilogram, US, None),\n", - " 'cement production, Portland' (kilogram, ZA, None),\n", - " 'cement production, Portland' (kilogram, CA-QC, None),\n", - " 'cement production, Portland' (kilogram, BR, None),\n", - " 'cement production, Portland' (kilogram, PE, None)]},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity',\n", - " 'activities': ['electricity production, at biomass-fired IGCC power plant' (kilowatt hour, CEU, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, BRA, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, USA, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, TUR, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, RUS, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, RSAM, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, CHN, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, SAF, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, KOR, None),\n", - " 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, UKR, None)]}}" - ] - }, - "execution_count": 140, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "yaml_file=files_dict['Electricity']['yaml']\n", - "electricity_sector_activities=generate_sets_from_filters(yaml_file, database=ei39SSP2)\n", - "electricity_sector_activities_to_list=list(electricity_sector_activities['Electricity'])[:]\n", - "electricity_sector_activities_to_list\n", - "main_dict=files_dict.copy()\n", - "main_dict['Electricity']['activities']=electricity_sector_activities_to_list\n", - "main_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 142, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement', 'activities': ['cement production, Portland' (kilogram, IN, None), 'cement production, Portland' (kilogram, US, None), 'cement production, Portland' (kilogram, CH, None), 'cement production, Portland' (kilogram, ZA, None), 'cement production, Portland' (kilogram, CA-QC, None), 'cement production, Portland' (kilogram, BR, None), 'cement production, Portland' (kilogram, PE, None)]}, 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml', 'yaml identifier': 'Electricity', 'activities': ['electricity production, at biomass-fired IGCC power plant' (kilowatt hour, CEU, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, BRA, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, USA, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, TUR, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, RUS, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, RSAM, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, SAF, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, CHN, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, KOR, None), 'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, UKR, None)]}}\n" - ] - } - ], - "source": [ - "# Assuming generate_sets_from_filters is a predefined function\n", - "def process_yaml_files(files_dict, database):\n", - " main_dict=files_dict.copy()\n", - " for key, value in main_dict.items():\n", - " yaml_file = value['yaml']\n", - " yaml_identifier = value['yaml identifier']\n", - " \n", - " # Generate the sector activities\n", - " sector_activities = generate_sets_from_filters(yaml_file, database=database)\n", - " \n", - " # Convert the set of activities to a list\n", - " activities_list = list(sector_activities[yaml_identifier])\n", - " \n", - " # Add to the sectors_dict\n", - " main_dict[key]['activities'] = activities_list\n", - " \n", - " return main_dict\n" - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict= process_yaml_files(files_dict, ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": 217, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'electricity production, at biomass-fired IGCC power plant' (kilowatt hour, BRA, None)" - ] - }, - "execution_count": 217, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sectors_dict['Electricity']['activities'][1]" - ] - }, - { - "cell_type": "code", - "execution_count": 144, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'}}" - ] - }, - "execution_count": 144, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Get Methods\n", - "finder=MethodFinder()\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "# finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "# finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 145, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n" - ] - } - ], - "source": [ - "sector_activities=main_dict['Cement']['activities']\n", - "\n", - "lca_scores=compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier='Cement',\n", - " mode='absolute'\n", - " )\n", - "\n", - "lca_scores=small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - "\n", - "scores_dict=main_dict.copy()\n", - "scores_dict['Cement']['lca_tables_different_methods']=lca_scores" - ] - }, - { - "cell_type": "code", - "execution_count": 149, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Cement_global_warming_potential_(gwp100)', 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources'])" - ] - }, - "execution_count": 149, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Cement']['lca_tables_different_methods'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n" - ] - } - ], - "source": [ - "sector_activities=main_dict['Electricity']['activities']\n", - "\n", - "lca_scores=compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier='Electricity',\n", - " mode='absolute'\n", - " )\n", - "\n", - "lca_scores=small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - "\n", - "scores_dict['Electricity']['lca_tables_different_methods']=lca_scores" - ] - }, - { - "cell_type": "code", - "execution_count": 152, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Electricity_global_warming_potential_(gwp100)', 'Electricity_cumulative_energy_demand_-_non-renewable_energy_resources'])" - ] - }, - "execution_count": 152, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Electricity']['lca_tables_different_methods'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 157, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores(main_dict, method_dict):\n", - " '''\n", - " Generates the LCA scores for the sectors activities in the main dictionary \n", - " for the different methods in the method dictionary.\n", - "\n", - " It returns the main dictionary updated as scores dictionary which also holds the former information for each sector.\n", - " The LCA scores are stored by method name in the respective sector dictionary within the main dictionary.\n", - " '''\n", - "\n", - " # Initialize scores_dict as a copy of main_dict\n", - " scores_dict = main_dict.copy()\n", - "\n", - " # Loop through each sector in main_dict\n", - " for sector in main_dict.keys():\n", - " # Extract activities for the current sector\n", - " sector_activities = main_dict[sector]['activities']\n", - " \n", - " # Calculate LCA scores using the specified method\n", - " lca_scores = compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier=sector,\n", - " mode='absolute'\n", - " )\n", - " \n", - " # Apply the small_inputs_to_other_column function with the cutoff value\n", - " lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - " \n", - " # Save the LCA scores to the scores_dict\n", - " scores_dict[sector]['lca_tables_different_methods'] = lca_scores\n", - "\n", - " return scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 158, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n" - ] - } - ], - "source": [ - "scores_dict=sector_lca_scores(sectors_dict, method_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Cement_global_warming_potential_(gwp100)', 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources'])" - ] - }, - "execution_count": 156, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Cement']['lca_tables_different_methods'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 185, - "metadata": {}, - "outputs": [], - "source": [ - "# Function to add statistics to DataFrame\n", - "def add_statistics(df, column_name='total'):\n", - " # Calculate mean, standard deviation, and IQR\n", - " df['mean'] = df[column_name].mean()\n", - " df['std'] = df[column_name].std()\n", - " df['q1'] = df[column_name].quantile(0.25)\n", - " df['q3'] = df[column_name].quantile(0.75)\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": 196, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores_to_excel(scores_dict, excel_file_name):\n", - " # Prepare to save each LCA score table to a different worksheet in the same Excel file\n", - " excel_file = excel_file_name\n", - " with pd.ExcelWriter(excel_file, engine='openpyxl') as writer:\n", - " for sector in scores_dict.keys():\n", - " lca_tables = scores_dict[sector]['lca_tables_different_methods']\n", - " for method, table in lca_tables.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - " # Add statistics to the DataFrame\n", - " df = add_statistics(df)\n", - " # Add sector marker column\n", - " df['sector']=str(sector)\n", - " # Generate a worksheet name\n", - " worksheet_name = f\"{sector}_{method}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " # Save the DataFrame to the Excel file in a new worksheet\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 197, - "metadata": {}, - "outputs": [], - "source": [ - "lca_scores_in_excel=sector_lca_scores_to_excel(scores_dict, 'output_v2.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 202, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores_to_df(scores_dict):\n", - " df_list=[]\n", - " for sector in scores_dict.keys():\n", - " lca_tables = scores_dict[sector]['lca_tables_different_methods']\n", - " for method, table in lca_tables.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - " # Add statistics to the DataFrame\n", - " df = add_statistics(df)\n", - " \n", - " df_list.append(df)\n", - " return df_list" - ] - }, - { - "cell_type": "code", - "execution_count": 204, - "metadata": {}, - "outputs": [], - "source": [ - "df_list=sector_lca_scores_to_df(sectors_dict)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 210, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityproductlocationunitmethodmethod unittotal37430: Cement clinkers33: Coke oven products; refined petroleum products; nuclear fuel6511: Road transport services of freight11010: Hard coalothermeanstdq1q3
4PortlandPEkilogramglobal warming potential (GWP100)kg CO2-Eq0.8694330.8247940.0000000.0000000.0000000.0439890.8130690.044050.7944230.837095
1PortlandCA-QCkilogramglobal warming potential (GWP100)kg CO2-Eq0.8418550.7815890.0000000.0000000.0000000.0594570.8130690.044050.7944230.837095
0PortlandBRkilogramglobal warming potential (GWP100)kg CO2-Eq0.8323350.7424140.0438550.0000000.0000000.0453010.8130690.044050.7944230.837095
5PortlandUSkilogramglobal warming potential (GWP100)kg CO2-Eq0.8212780.7591660.0000000.0000000.0000000.0612350.8130690.044050.7944230.837095
6PortlandZAkilogramglobal warming potential (GWP100)kg CO2-Eq0.8147680.7586330.0000000.0270840.0000000.0286880.8130690.044050.7944230.837095
3PortlandINkilogramglobal warming potential (GWP100)kg CO2-Eq0.7740790.7183960.0000000.0000000.0160890.0391420.8130690.044050.7944230.837095
2PortlandCHkilogramglobal warming potential (GWP100)kg CO2-Eq0.7377340.7012630.0000000.0000000.0000000.0360280.8130690.044050.7944230.837095
\n", - "
" - ], - "text/plain": [ - " activity product location unit method \\\n", - "4 Portland PE kilogram global warming potential (GWP100) \n", - "1 Portland CA-QC kilogram global warming potential (GWP100) \n", - "0 Portland BR kilogram global warming potential (GWP100) \n", - "5 Portland US kilogram global warming potential (GWP100) \n", - "6 Portland ZA kilogram global warming potential (GWP100) \n", - "3 Portland IN kilogram global warming potential (GWP100) \n", - "2 Portland CH kilogram global warming potential (GWP100) \n", - "\n", - " method unit total 37430: Cement clinkers \\\n", - "4 kg CO2-Eq 0.869433 0.824794 \n", - "1 kg CO2-Eq 0.841855 0.781589 \n", - "0 kg CO2-Eq 0.832335 0.742414 \n", - "5 kg CO2-Eq 0.821278 0.759166 \n", - "6 kg CO2-Eq 0.814768 0.758633 \n", - "3 kg CO2-Eq 0.774079 0.718396 \n", - "2 kg CO2-Eq 0.737734 0.701263 \n", - "\n", - " 33: Coke oven products; refined petroleum products; nuclear fuel \\\n", - "4 0.000000 \n", - "1 0.000000 \n", - "0 0.043855 \n", - "5 0.000000 \n", - "6 0.000000 \n", - "3 0.000000 \n", - "2 0.000000 \n", - "\n", - " 6511: Road transport services of freight 11010: Hard coal other \\\n", - "4 0.000000 0.000000 0.043989 \n", - "1 0.000000 0.000000 0.059457 \n", - "0 0.000000 0.000000 0.045301 \n", - "5 0.000000 0.000000 0.061235 \n", - "6 0.027084 0.000000 0.028688 \n", - "3 0.000000 0.016089 0.039142 \n", - "2 0.000000 0.000000 0.036028 \n", - "\n", - " mean std q1 q3 \n", - "4 0.813069 0.04405 0.794423 0.837095 \n", - "1 0.813069 0.04405 0.794423 0.837095 \n", - "0 0.813069 0.04405 0.794423 0.837095 \n", - "5 0.813069 0.04405 0.794423 0.837095 \n", - "6 0.813069 0.04405 0.794423 0.837095 \n", - "3 0.813069 0.04405 0.794423 0.837095 \n", - "2 0.813069 0.04405 0.794423 0.837095 " - ] - }, - "execution_count": 210, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df=df_list[0]\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 208, - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "dataframe_to_rows() got an unexpected keyword argument 'index'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[208], line 29\u001b[0m\n\u001b[0;32m 27\u001b[0m \u001b[38;5;66;03m# Write the dataframe to the first worksheet\u001b[39;00m\n\u001b[0;32m 28\u001b[0m ws_data \u001b[38;5;241m=\u001b[39m wb\u001b[38;5;241m.\u001b[39mactive\n\u001b[1;32m---> 29\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m dataframe_to_rows(df, index\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, header\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[0;32m 30\u001b[0m ws_data\u001b[38;5;241m.\u001b[39mappend(r)\n\u001b[0;32m 32\u001b[0m \u001b[38;5;66;03m# Create a new worksheet for the chart\u001b[39;00m\n", - "\u001b[1;31mTypeError\u001b[0m: dataframe_to_rows() got an unexpected keyword argument 'index'" - ] - } - ], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "PLOTS IN EXCEL" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#for each sector create a worksheet which holds scatter plots where the x axis shows the index and the y axis the total score" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the Excel file\n", - "wb = openpyxl.load_workbook('output_v2.xlsx')\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 224, - "metadata": {}, - "outputs": [ - { - "ename": "error", - "evalue": "Error -3 while decompressing data: invalid distance too far back", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31merror\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[224], line 6\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mopenpyxl\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchart\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ScatterChart, Series\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# Load the Excel file\u001b[39;00m\n\u001b[1;32m----> 6\u001b[0m wb \u001b[38;5;241m=\u001b[39m openpyxl\u001b[38;5;241m.\u001b[39mload_workbook(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124moutput_v2.xlsx\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# Create a dictionary to store the charts for each sector\u001b[39;00m\n\u001b[0;32m 9\u001b[0m sector_charts \u001b[38;5;241m=\u001b[39m {}\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\reader\\excel.py:348\u001b[0m, in \u001b[0;36mload_workbook\u001b[1;34m(filename, read_only, keep_vba, data_only, keep_links, rich_text)\u001b[0m\n\u001b[0;32m 318\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Open the given filename and return the workbook\u001b[39;00m\n\u001b[0;32m 319\u001b[0m \n\u001b[0;32m 320\u001b[0m \u001b[38;5;124;03m:param filename: the path to open or a file-like object\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 344\u001b[0m \n\u001b[0;32m 345\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 346\u001b[0m reader \u001b[38;5;241m=\u001b[39m ExcelReader(filename, read_only, keep_vba,\n\u001b[0;32m 347\u001b[0m data_only, keep_links, rich_text)\n\u001b[1;32m--> 348\u001b[0m reader\u001b[38;5;241m.\u001b[39mread()\n\u001b[0;32m 349\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m reader\u001b[38;5;241m.\u001b[39mwb\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\reader\\excel.py:303\u001b[0m, in \u001b[0;36mExcelReader.read\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 301\u001b[0m apply_stylesheet(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39marchive, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwb)\n\u001b[0;32m 302\u001b[0m action \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mread worksheets\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m--> 303\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mread_worksheets()\n\u001b[0;32m 304\u001b[0m action \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124massign names\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 305\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparser\u001b[38;5;241m.\u001b[39massign_names()\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\reader\\excel.py:237\u001b[0m, in \u001b[0;36mExcelReader.read_worksheets\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 235\u001b[0m ws\u001b[38;5;241m.\u001b[39m_rels \u001b[38;5;241m=\u001b[39m rels\n\u001b[0;32m 236\u001b[0m ws_parser \u001b[38;5;241m=\u001b[39m WorksheetReader(ws, fh, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshared_strings, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_only, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrich_text)\n\u001b[1;32m--> 237\u001b[0m ws_parser\u001b[38;5;241m.\u001b[39mbind_all()\n\u001b[0;32m 238\u001b[0m fh\u001b[38;5;241m.\u001b[39mclose()\n\u001b[0;32m 240\u001b[0m \u001b[38;5;66;03m# assign any comments to cells\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\worksheet\\_reader.py:465\u001b[0m, in \u001b[0;36mWorksheetReader.bind_all\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 464\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mbind_all\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m--> 465\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbind_cells()\n\u001b[0;32m 466\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbind_merged_cells()\n\u001b[0;32m 467\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbind_hyperlinks()\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\worksheet\\_reader.py:368\u001b[0m, in \u001b[0;36mWorksheetReader.bind_cells\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 367\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mbind_cells\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m--> 368\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m idx, row \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparser\u001b[38;5;241m.\u001b[39mparse():\n\u001b[0;32m 369\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m cell \u001b[38;5;129;01min\u001b[39;00m row:\n\u001b[0;32m 370\u001b[0m style \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mws\u001b[38;5;241m.\u001b[39mparent\u001b[38;5;241m.\u001b[39m_cell_styles[cell[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mstyle_id\u001b[39m\u001b[38;5;124m'\u001b[39m]]\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\worksheet\\_reader.py:156\u001b[0m, in \u001b[0;36mWorkSheetParser.parse\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 137\u001b[0m properties \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m 138\u001b[0m PRINT_TAG: (\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mprint_options\u001b[39m\u001b[38;5;124m'\u001b[39m, PrintOptions),\n\u001b[0;32m 139\u001b[0m MARGINS_TAG: (\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpage_margins\u001b[39m\u001b[38;5;124m'\u001b[39m, PageMargins),\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 151\u001b[0m \n\u001b[0;32m 152\u001b[0m }\n\u001b[0;32m 154\u001b[0m it \u001b[38;5;241m=\u001b[39m iterparse(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msource) \u001b[38;5;66;03m# add a finaliser to close the source when this becomes possible\u001b[39;00m\n\u001b[1;32m--> 156\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m _, element \u001b[38;5;129;01min\u001b[39;00m it:\n\u001b[0;32m 157\u001b[0m tag_name \u001b[38;5;241m=\u001b[39m element\u001b[38;5;241m.\u001b[39mtag\n\u001b[0;32m 158\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m tag_name \u001b[38;5;129;01min\u001b[39;00m dispatcher:\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\xml\\etree\\ElementTree.py:1253\u001b[0m, in \u001b[0;36miterparse..iterator\u001b[1;34m(source)\u001b[0m\n\u001b[0;32m 1251\u001b[0m \u001b[38;5;28;01myield from\u001b[39;00m pullparser\u001b[38;5;241m.\u001b[39mread_events()\n\u001b[0;32m 1252\u001b[0m \u001b[38;5;66;03m# load event buffer\u001b[39;00m\n\u001b[1;32m-> 1253\u001b[0m data \u001b[38;5;241m=\u001b[39m source\u001b[38;5;241m.\u001b[39mread(\u001b[38;5;241m16\u001b[39m \u001b[38;5;241m*\u001b[39m \u001b[38;5;241m1024\u001b[39m)\n\u001b[0;32m 1254\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m data:\n\u001b[0;32m 1255\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\zipfile.py:965\u001b[0m, in \u001b[0;36mZipExtFile.read\u001b[1;34m(self, n)\u001b[0m\n\u001b[0;32m 963\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_offset \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m 964\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m n \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_eof:\n\u001b[1;32m--> 965\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_read1(n)\n\u001b[0;32m 966\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mlen\u001b[39m(data):\n\u001b[0;32m 967\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_readbuffer \u001b[38;5;241m=\u001b[39m data\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\zipfile.py:1041\u001b[0m, in \u001b[0;36mZipExtFile._read1\u001b[1;34m(self, n)\u001b[0m\n\u001b[0;32m 1039\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compress_type \u001b[38;5;241m==\u001b[39m ZIP_DEFLATED:\n\u001b[0;32m 1040\u001b[0m n \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mmax\u001b[39m(n, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mMIN_READ_SIZE)\n\u001b[1;32m-> 1041\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_decompressor\u001b[38;5;241m.\u001b[39mdecompress(data, n)\n\u001b[0;32m 1042\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_eof \u001b[38;5;241m=\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_decompressor\u001b[38;5;241m.\u001b[39meof \u001b[38;5;129;01mor\u001b[39;00m\n\u001b[0;32m 1043\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compress_left \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[0;32m 1044\u001b[0m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_decompressor\u001b[38;5;241m.\u001b[39munconsumed_tail)\n\u001b[0;32m 1045\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_eof:\n", - "\u001b[1;31merror\u001b[0m: Error -3 while decompressing data: invalid distance too far back" - ] - } - ], - "source": [ - "import openpyxl\n", - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "\n", - "# Load the Excel file\n", - "wb = openpyxl.load_workbook('output_v2.xlsx')\n", - "\n", - "# Create a dictionary to store the charts for each sector\n", - "sector_charts = {}\n", - "\n", - "# Loop through each worksheet\n", - "for ws_name in wb.sheetnames:\n", - " ws = wb[ws_name]\n", - "\n", - " #read the worksheet into a DataFrame\n", - " df = pd.read_excel(wb, sheet_name = ws_name)\n", - "\n", - " # Create the scatter chart\n", - " chart = ScatterChart()\n", - " chart.title = f\"LCA Scores\"\n", - " chart.y_axis.title = df[df.columns['method unit']]\n", - " chart.x_axis.title = 'activities indexes'\n", - "\n", - " # Define the data range for the chart\n", - " y_values = df[df.columns['total']] # Assuming the data starts in column 2\n", - " x_values = df[df.index]\n", - " # Create a series and add it to the chart\n", - " series = Series(y_values, x_values, title_from_data=False)\n", - " chart.series.append(series)\n", - "\n", - " # Customize the series to show only markers (dots)\n", - " series.marker.symbol = \"circle\"\n", - " series.marker.size = 5\n", - " series.graphicalProperties.line.noFill = True\n", - "\n", - " # Add the chart to the dictionary\n", - " sector_charts[ws_name] = chart\n", - "\n", - "# Save the updated workbook\n", - "for ws_name, chart in sector_charts.items():\n", - " ws = wb[ws_name]\n", - " ws.add_chart(chart, \"A1\")\n", - "wb.save('output_v2.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 198, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\openpyxl\\workbook\\child.py:99: UserWarning: Title is more than 31 characters. Some applications may not be able to read the file\n", - " warnings.warn(\"Title is more than 31 characters. Some applications may not be able to read the file\")\n" - ] - } - ], - "source": [ - "# Load the Excel file\n", - "wb = openpyxl.load_workbook('output_v2.xlsx')\n", - "\n", - "# Create a dictionary to store the charts for each sector\n", - "sector_charts = {}\n", - "\n", - "# Iterate through the worksheets in the workbook\n", - "for ws in wb.worksheets:\n", - " # Find the column with the 'method' label\n", - " for col in range(1, ws.max_column + 1):\n", - " if str(ws.cell(row=1, column=col).value) == 'method':\n", - " sector_name = str(ws.cell(row=2, column=col).value)\n", - " break\n", - " else:\n", - " # If 'method' column not found, skip this worksheet\n", - " continue\n", - "\n", - " # Check if the sector is already in the dictionary\n", - " if sector_name not in sector_charts:\n", - " # Create a new worksheet for the sector\n", - " sector_ws = wb.create_sheet(sector_name)\n", - " sector_charts[sector_name] = sector_ws\n", - "\n", - " # Get the number of rows in the worksheet\n", - " row_count = ws.max_row\n", - "\n", - " # Create the scatter chart\n", - " chart = ScatterChart()\n", - " chart.title = f\"LCA Scores - {sector_name}\"\n", - " chart.y_axis.title = sector_name\n", - " chart.x_axis.title = 'activities indexes'\n", - "\n", - " # Define the data range for the chart\n", - " y_col = next(col for col in range(1, ws.max_column + 1) if str(ws.cell(row=1, column=col).value) != 'method') # Assuming the data starts in the column after 'method'\n", - " y_values = Reference(ws, min_col=y_col, min_row=2, max_row=row_count)\n", - " x_values = Reference(ws, min_col=1, min_row=2, max_row=row_count)\n", - "\n", - " # Create a series and add it to the chart\n", - " series = Series(y_values, x_values, title_from_data=False)\n", - " chart.series.append(series)\n", - "\n", - " # Customize the series to show only markers (dots)\n", - " series.marker.symbol = \"circle\"\n", - " series.marker.size = 5\n", - " series.graphicalProperties.line.noFill = True\n", - "\n", - " # Add the chart to the sector worksheet\n", - " sector_charts[sector_name].add_chart(chart, \"A1\")\n", - "\n", - "# Save the workbook\n", - "wb.save('output_v2.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scatter chart with dots has been created and saved in data.xlsx\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from openpyxl import load_workbook\n", - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "\n", - "# Assuming you have a DataFrame called 'df' with a column named 'total'\n", - "# If not, replace 'df' with your actual DataFrame name\n", - "\n", - "# Step 1: Save the DataFrame to an Excel file\n", - "excel_file = 'output_v1.xlsx'\n", - "df.to_excel(excel_file, index=False)\n", - "\n", - "# Step 2: Use openpyxl to create the scatter chart\n", - "wb = load_workbook(excel_file)\n", - "ws = wb.active\n", - "\n", - "# Determine the number of rows in the worksheet\n", - "row_count = ws.max_row\n", - "\n", - "# Create the scatter chart\n", - "chart = ScatterChart()\n", - "chart.title = \"LCA Scores\"\n", - "chart.y_axis.title = str(df['method'])\n", - "chart.x_axis.title = 'activities indexes'\n", - "\n", - "# Define the data range for the chart\n", - "y_values = Reference(ws, min_col=df.columns.get_loc('total') + 1, min_row=2, max_row=row_count) #add sorting step?\n", - "x_values = Reference(ws, min_col=1, min_row=2, max_row=row_count)\n", - "\n", - "# Create a series and add it to the chart\n", - "series = Series(y_values, x_values, title_from_data=False)\n", - "chart.series.append(series)\n", - "\n", - "# Customize the series to show only markers (dots)\n", - "series.marker.symbol = \"circle\"\n", - "series.marker.size = 5\n", - "series.graphicalProperties.line.noFill = True\n", - "\n", - "# Add the chart to the worksheet\n", - "ws.add_chart(chart, \"H2\")\n", - "\n", - "# Save the workbook\n", - "wb.save(excel_file)\n", - "\n", - "print(f\"Scatter chart with dots has been created and saved in {excel_file}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import openpyxl\n", - "import openpyxl.chart\n", - "\n", - "wb = openpyxl.Workbook()\n", - "ws = wb.active\n", - "\n", - "data=lca_scores_agg\n", - "\n", - "# Write dictionary keys to the first row (header)\n", - "for col_num, key in enumerate(data.keys(), start=1):\n", - " ws.cell(row=1, column=col_num, value=key)\n", - "\n", - "# Write dictionary values to subsequent rows\n", - "for row_num, row_values in enumerate(zip(*data.values()), start=2):\n", - " for col_num, value in enumerate(row_values, start=1):\n", - " ws.cell(row=row_num, column=col_num, value=value)\n", - "\n", - "wb.save('test_wb.xlsx')\n", - "#openpyxl.chart.scatter_chart(scatterStyle='marker')\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Run bw 2 analyzer for the 5 sectors to then get stacked bar plots for several methods. Save each method in a different sheet." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Get ecoinvent and filter it also for the sectors. Plot level 3. Different methods in one sheet" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/general_scan_v2.ipynb b/dev/notebook tests/general_scan_v2.ipynb deleted file mode 100644 index 2c7f2a3..0000000 --- a/dev/notebook tests/general_scan_v2.ipynb +++ /dev/null @@ -1,797 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from functions_v2 import*\n", - "from methods import MethodFinder\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LCA DATA TO EXCEL " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Assuming generate_sets_from_filters is a predefined function\n", - "def process_yaml_files(files_dict, database):\n", - " main_dict=files_dict.copy()\n", - " for key, value in main_dict.items():\n", - " yaml_file = value['yaml']\n", - " yaml_identifier = value['yaml identifier']\n", - " \n", - " # Generate the sector activities\n", - " sector_activities = generate_sets_from_filters(yaml_file, database=database)\n", - " \n", - " # Convert the set of activities to a list\n", - " activities_list = list(sector_activities[yaml_identifier])\n", - " \n", - " # Add to the sectors_dict\n", - " main_dict[key]['activities'] = activities_list\n", - " \n", - " return main_dict\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict= process_yaml_files(files_dict, ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "bw2data.backends.peewee.proxies.Activity" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(sectors_dict['Electricity']['activities'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'electricity production, at biomass-fired IGCC power plant'" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sectors_dict['Electricity']['activities'][0].as_dict()['name']" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'electricity production, at biomass-fired IGCC power plant'" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sectors_dict['Electricity']['activities'][4].as_dict()['name']" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Get Methods\n", - "finder=MethodFinder()\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "# finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "# finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores(main_dict, method_dict):\n", - " '''\n", - " Generates the LCA scores for the sectors activities in the main dictionary \n", - " for the different methods in the method dictionary.\n", - "\n", - " It returns the main dictionary updated as scores dictionary which also holds the former information for each sector.\n", - " The LCA scores are stored by method name in the respective sector dictionary within the main dictionary.\n", - " '''\n", - "\n", - " # Initialize scores_dict as a copy of main_dict\n", - " scores_dict = main_dict.copy()\n", - "\n", - " # Loop through each sector in main_dict\n", - " for sector in scores_dict.keys():\n", - " # Extract activities for the current sector\n", - " sector_activities = scores_dict[sector]['activities']\n", - " \n", - " # Calculate LCA scores using the specified method\n", - " lca_scores = compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier=sector,\n", - " mode='absolute'\n", - " )\n", - " \n", - " # Apply the small_inputs_to_other_column function with the cutoff value\n", - " lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - " \n", - " # Save the LCA scores to the scores_dict\n", - " scores_dict[sector]['lca_scores'] = lca_scores\n", - "\n", - " return scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n" - ] - } - ], - "source": [ - "scores_dict=sector_lca_scores(sectors_dict, method_dict) \n", - "\n", - "# this function is omitting common parts in the activities names, because only one type of activity portland and biomass from ICGGC is looked at \n", - "# the results are 'Portland' and 'plant' in the activity column" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Cement_global_warming_potential_(gwp100)', 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources'])" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Cement']['lca_scores'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Electricity_global_warming_potential_(gwp100)', 'Electricity_cumulative_energy_demand_-_non-renewable_energy_resources'])" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Electricity']['lca_scores'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['yaml', 'yaml identifier', 'activities', 'lca_scores'])" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Cement'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "def add_statistics(df, column_name='total'):\n", - " # Calculate mean, standard deviation, and IQR\n", - " df['mean'] = df[column_name].mean()\n", - " df['2std_abv'] = df['mean'] + df[column_name].std() * 2\n", - " df['2std_blw'] = df['mean'] - df[column_name].std() * 2\n", - " df['q1'] = df[column_name].quantile(0.25)\n", - " df['q3'] = df[column_name].quantile(0.75)\n", - " \n", - " # Reorder the columns to place the new columns after 'total'\n", - " cols = df.columns.tolist()\n", - " total_index = cols.index(column_name) + 1\n", - " new_cols = ['mean', '2std_abv', '2std_blw', 'q1', 'q3']\n", - " cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)]\n", - " \n", - " return df[cols]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores_to_excel(scores_dict, excel_file_name):\n", - " # Prepare to save each LCA score table to a different worksheet in the same Excel file\n", - " excel_file = excel_file_name\n", - " with pd.ExcelWriter(excel_file, engine='openpyxl') as writer:\n", - " for sector in scores_dict.keys():\n", - " lca_scores = scores_dict[sector]['lca_scores']\n", - " for method, table in lca_scores.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - " # Add the index as a new column at the beginning\n", - " df.insert(0, 'Index', df.index)\n", - " # Add statistics to the DataFrame\n", - " df = add_statistics(df)\n", - " # Add sector marker column\n", - " df['sector']=str(sector) # potentially remove!\n", - " # Generate a worksheet name\n", - " worksheet_name = f\"{sector}_{method}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " # Save the DataFrame to the Excel file in a new worksheet\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [], - "source": [ - "lca_scores_in_excel=sector_lca_scores_to_excel(scores_dict, 'output_v2_2.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "PLOTS IN EXCEL" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Input : one excel file which holds the sector workesheets\n", - "# create a dictionary of worksheet names which fullfill the criteria.\n", - "# iterate through the list to get the worksheets\n", - "# Grouping sector graphs in one worksheet - for worksheets with same sector create a chart each in a worksheet called sector_charts\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "def categorize_sheets_by_sector(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': ['Cement_Cement_global_warming_po',\n", - " 'Cement_Cement_cumulative_energy'],\n", - " 'Electricity': ['Electricity_Electricity_global_',\n", - " 'Electricity_Electricity_cumulat'],\n", - " 'Charts': ['Charts_cement']}" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "categorize_sheets_by_sector('output_v2_2.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Just for one dataframe at the moment, but at least it works" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "from openpyxl import load_workbook\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "\n", - "wb = load_workbook('output_v2_2.xlsx')\n", - "ws = wb['Cement_Cement_global_warming_po']\n", - "ws_charts = wb.create_sheet('Charts_cement')\n", - "\n", - "chart = ScatterChart() # thats the name of the chart, we could also give it a different one\n", - "location_chart=[\"B3\", \"M3\", \"X3\",\n", - " \"B25\", \"M25\", \"X25\",\n", - " \"B46\", \"M46\", \"X46\" \n", - " ]\n", - "#add max_row= len(df)... smthn like this\n", - "\n", - "# Chart titles\n", - "chart.title = 'LCA scores of portland cement production'\n", - "chart.x_axis.title = 'activities'\n", - "chart.y_axis.title = 'method unit'\n", - "# Avoid overlap\n", - "chart.title.overlay = False\n", - "chart.x_axis.title.overlay = False\n", - "chart.y_axis.title.overlay = False \n", - "\n", - "\n", - "# Define the data range for the chart\n", - "y_values = Reference(ws, min_col=8, min_row=1, max_row=8)\n", - "x_values = Reference(ws, min_col=4, min_row=2, max_row=8)\n", - "\n", - "# Create a series and add it to the chart\n", - "series = Series(y_values, x_values, title_from_data=True)\n", - "chart.series.append(series)\n", - "chart.style = 9\n", - "\n", - "# Customize the series to show only markers (dots)\n", - "series.marker.symbol = \"circle\"\n", - "series.marker.size = 5\n", - "series.graphicalProperties.line.noFill = True\n", - "\n", - "# ADJUST X-AXIS\n", - "\n", - "# # ADJUST X-AXIS\n", - "chart.x_axis.tickLblPos = \"low\"\n", - "chart.x_axis.majorGridlines = None\n", - "chart.x_axis.tickMarkSkip = 0 # Show all tick marks\n", - "chart.x_axis.tickLblSkip = 0 # Show all labels\n", - "\n", - "# Set x-axis to be a value axis instead of a category axis\n", - "chart.x_axis.scaling.orientation = \"minMax\"\n", - "chart.x_axis.crosses = \"autoZero\"\n", - "chart.x_axis.axPos = \"b\"\n", - "chart.x_axis.delete = False\n", - "\n", - "# ADJUST Y-AXIS\n", - "\n", - "# Calculate the min and max y-values to determine the axis range\n", - "y_values_list = [ws.cell(row=row, column=8).value for row in range(2,8)] #number of rows need to be defined based on dataframe\n", - "min_y_value = min(y_values_list)\n", - "max_y_value = max(y_values_list)\n", - "\n", - "# Set y-axis range with some padding\n", - "padding = (max_y_value - min_y_value) * 0.1 # 10% padding on each side\n", - "chart.y_axis.scaling.min = min_y_value - padding\n", - "chart.y_axis.scaling.max = max_y_value + padding\n", - "\n", - "# Explicitly set tick labels to be visible\n", - "chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - "#chart.y_axis.majorGridlines = True # Ensure major gridlines are enabled (though you mentioned they're visible)\n", - "chart.y_axis.delete = False # Ensure axis is not deleted\n", - "# Format the y-axis to show 2 decimal places\n", - "chart.y_axis.number_format = '0.00'\n", - "\n", - "\n", - "# ---------\n", - "# ADD STATS\n", - "# ---------\n", - "# MEAN\n", - "# Add a new series to the chart for the mean line\n", - "mean_y = Reference(ws, min_col=9, min_row=1, max_row=8)\n", - "mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - "chart.series.append(mean_series)\n", - "\n", - "# Customize the mean series to show as a line\n", - "mean_series.marker.symbol = \"none\" # No markers, just a line\n", - "mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - "mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# IQR\n", - "# Add a new series to the chart for the iqr lines\n", - "iqr1= Reference(ws, min_col=12, min_row=1, max_row=8)\n", - "iqr3= Reference(ws, min_col=13, min_row=1, max_row=8)\n", - "iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - "iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - "chart.series.append(iqr1_series)\n", - "chart.series.append(iqr3_series)\n", - "\n", - "# Customize the iqr 1,3 series to show as a line\n", - "iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - "iqr3_series.marker.symbol = \"none\"\n", - "iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - "iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - "iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# STD\n", - "# Add a new series to the chart for the std lines\n", - "std_abv= Reference(ws, min_col=10, min_row=1, max_row=8)\n", - "std_blw= Reference(ws, min_col=11, min_row=1, max_row=8)\n", - "std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - "std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - "chart.series.append(std_abv_series)\n", - "chart.series.append(std_blw_series)\n", - "\n", - "# Customize the iqr 1,3 series to show as a line\n", - "std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - "std_blw_series.marker.symbol = \"none\"\n", - "std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - "std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - "std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# Set legend position to the right of the plot area\n", - "chart.legend.position = 'r' # 'r' for right\n", - "chart.legend.overlay= False\n", - "\n", - "# Adjust chart dimensions and position to make space for the legend\n", - "chart.width = 18 # Example width, adjust as needed\n", - "chart.height = 10 # Example height, adjust as needed\n", - "\n", - "ws_charts.add_chart(chart, location_chart) #wher top left corner begins\n", - "wb.save('output_v2_2.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "from openpyxl import load_workbook\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "\n", - "wb = load_workbook('output_v2_2.xlsx')\n", - "ws = wb['Cement_Cement_cumulative_energy']\n", - "\n", - "#add clause... if sheet already existst... add to sheet. If not create as new sheet.\n", - "ws_charts = wb['Charts_cement']\n", - "\n", - "chart = ScatterChart() # thats the name of the chart, we could also give it a different one\n", - "\n", - "# Chart titles\n", - "chart.title = 'LCA scores of portland cement production'\n", - "chart.x_axis.title = 'activities'\n", - "chart.y_axis.title = 'method unit'\n", - "# Avoid overlap\n", - "chart.title.overlay = False\n", - "chart.x_axis.title.overlay = False\n", - "chart.y_axis.title.overlay = False \n", - "\n", - "\n", - "# Define the data range for the chart\n", - "y_values = Reference(ws, min_col=8, min_row=1, max_row=8)\n", - "x_values = Reference(ws, min_col=4, min_row=2, max_row=8)\n", - "\n", - "# Create a series and add it to the chart\n", - "series = Series(y_values, x_values, title_from_data=True)\n", - "chart.series.append(series)\n", - "chart.style = 9\n", - "\n", - "# Customize the series to show only markers (dots)\n", - "series.marker.symbol = \"circle\"\n", - "series.marker.size = 5\n", - "series.graphicalProperties.line.noFill = True\n", - "\n", - "# ADJUST X-AXIS\n", - "\n", - "# # ADJUST X-AXIS\n", - "chart.x_axis.tickLblPos = \"low\"\n", - "chart.x_axis.majorGridlines = None\n", - "chart.x_axis.tickMarkSkip = 0 # Show all tick marks\n", - "chart.x_axis.tickLblSkip = 0 # Show all labels\n", - "\n", - "# Set x-axis to be a value axis instead of a category axis\n", - "chart.x_axis.scaling.orientation = \"minMax\"\n", - "chart.x_axis.crosses = \"autoZero\"\n", - "chart.x_axis.axPos = \"b\"\n", - "chart.x_axis.delete = False\n", - "\n", - "# ADJUST Y-AXIS\n", - "\n", - "# Calculate the min and max y-values to determine the axis range\n", - "y_values_list = [ws.cell(row=row, column=8).value for row in range(2, 9)]\n", - "min_y_value = min(y_values_list)\n", - "max_y_value = max(y_values_list)\n", - "\n", - "# Set y-axis range with some padding\n", - "padding = (max_y_value - min_y_value) * 0.1 # 10% padding on each side\n", - "chart.y_axis.scaling.min = min_y_value - padding\n", - "chart.y_axis.scaling.max = max_y_value + padding\n", - "\n", - "# Explicitly set tick labels to be visible\n", - "chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - "#chart.y_axis.majorGridlines = True # Ensure major gridlines are enabled (though you mentioned they're visible)\n", - "chart.y_axis.delete = False # Ensure axis is not deleted\n", - "# Format the y-axis to show 2 decimal places\n", - "chart.y_axis.number_format = '0.00'\n", - "\n", - "# ---------\n", - "# ADD STATS\n", - "# ---------\n", - "# MEAN\n", - "# Add a new series to the chart for the mean line\n", - "mean_y = Reference(ws, min_col=9, min_row=1, max_row=8)\n", - "mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - "chart.series.append(mean_series)\n", - "\n", - "# Customize the mean series to show as a line\n", - "mean_series.marker.symbol = \"none\" # No markers, just a line\n", - "mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - "mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# IQR\n", - "# Add a new series to the chart for the iqr lines\n", - "iqr1= Reference(ws, min_col=12, min_row=1, max_row=8)\n", - "iqr3= Reference(ws, min_col=13, min_row=1, max_row=8)\n", - "iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - "iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - "chart.series.append(iqr1_series)\n", - "chart.series.append(iqr3_series)\n", - "\n", - "# Customize the iqr 1,3 series to show as a line\n", - "iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - "iqr3_series.marker.symbol = \"none\"\n", - "iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - "iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - "iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# STD\n", - "# Add a new series to the chart for the std lines\n", - "std_abv= Reference(ws, min_col=10, min_row=1, max_row=8)\n", - "std_blw= Reference(ws, min_col=11, min_row=1, max_row=8)\n", - "std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - "std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - "chart.series.append(std_abv_series)\n", - "chart.series.append(std_blw_series)\n", - "\n", - "# Customize the iqr 1,3 series to show as a line\n", - "std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - "std_blw_series.marker.symbol = \"none\"\n", - "std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - "std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - "std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# Set legend position to the right of the plot area\n", - "chart.legend.position = 'r' # 'r' for right\n", - "chart.legend.overlay= False\n", - "\n", - "# Adjust chart dimensions and position to make space for the legend\n", - "chart.width = 18 # Example width, adjust as needed\n", - "chart.height = 10 # Example height, adjust as needed\n", - "\n", - "ws_charts.add_chart(chart, \"M3\") #wher top left corner begins\n", - "wb.save('output_v2_2.xlsx')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/general_scan_v3.ipynb b/dev/notebook tests/general_scan_v3.ipynb deleted file mode 100644 index 5fa7f00..0000000 --- a/dev/notebook tests/general_scan_v3.ipynb +++ /dev/null @@ -1,1006 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from functions_v2 import*\n", - "from methods import MethodFinder\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LCA DATA TO EXCEL " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Assuming generate_sets_from_filters is a predefined function\n", - "def process_yaml_files(files_dict, database):\n", - " main_dict=files_dict.copy()\n", - " for key, value in main_dict.items():\n", - " yaml_file = value['yaml']\n", - " yaml_identifier = value['yaml identifier']\n", - " \n", - " # Generate the sector activities\n", - " sector_activities = generate_sets_from_filters(yaml_file, database=database)\n", - " \n", - " # Convert the set of activities to a list\n", - " activities_list = list(sector_activities[yaml_identifier])\n", - " \n", - " # Add to the sectors_dict\n", - " main_dict[key]['activities'] = activities_list\n", - " \n", - " return main_dict\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict= process_yaml_files(files_dict, ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "bw2data.backends.peewee.proxies.Activity" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(sectors_dict['Electricity']['activities'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'electricity production, at biomass-fired IGCC power plant'" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sectors_dict['Electricity']['activities'][0].as_dict()['name']" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'electricity production, at biomass-fired IGCC power plant'" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sectors_dict['Electricity']['activities'][4].as_dict()['name']" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Get Methods\n", - "finder=MethodFinder()\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "# finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "# finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores(main_dict, method_dict):\n", - " '''\n", - " Generates the LCA scores for the sectors activities in the main dictionary \n", - " for the different methods in the method dictionary.\n", - "\n", - " It returns the main dictionary updated as scores dictionary which also holds the former information for each sector.\n", - " The LCA scores are stored by method name in the respective sector dictionary within the main dictionary.\n", - " '''\n", - "\n", - " # Initialize scores_dict as a copy of main_dict\n", - " scores_dict = main_dict.copy()\n", - "\n", - " # Loop through each sector in main_dict\n", - " for sector in scores_dict.keys():\n", - " # Extract activities for the current sector\n", - " sector_activities = scores_dict[sector]['activities']\n", - " \n", - " # Calculate LCA scores using the specified method\n", - " lca_scores = compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier=sector,\n", - " mode='absolute'\n", - " )\n", - " \n", - " # Apply the small_inputs_to_other_column function with the cutoff value\n", - " lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - " \n", - " # Save the LCA scores to the scores_dict\n", - " scores_dict[sector]['lca_scores'] = lca_scores\n", - "\n", - " return scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n" - ] - } - ], - "source": [ - "scores_dict=sector_lca_scores(sectors_dict, method_dict) \n", - "\n", - "# this function is omitting common parts in the activities names, because only one type of activity portland and biomass from ICGGC is looked at \n", - "# the results are 'Portland' and 'plant' in the activity column" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Cement_global_warming_potential_(gwp100)', 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources'])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Cement']['lca_scores'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Electricity_global_warming_potential_(gwp100)', 'Electricity_cumulative_energy_demand_-_non-renewable_energy_resources'])" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Electricity']['lca_scores'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['yaml', 'yaml identifier', 'activities', 'lca_scores'])" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Cement'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "def add_statistics(df, column_name='total'):\n", - "\n", - " #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values)\n", - " df['rank'] = df[column_name].rank(method=\"first\", ascending=\"False\")\n", - " # Calculate mean, standard deviation, and IQR\n", - " df['mean'] = df[column_name].mean()\n", - " df['2std_abv'] = df['mean'] + df[column_name].std() * 2\n", - " df['2std_blw'] = df['mean'] - df[column_name].std() * 2\n", - " df['q1'] = df[column_name].quantile(0.25)\n", - " df['q3'] = df[column_name].quantile(0.75)\n", - " \n", - " # Reorder the columns to place the new columns after 'total'\n", - " cols = df.columns.tolist()\n", - " total_index = cols.index(column_name) + 1\n", - " new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3']\n", - " cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)]\n", - " \n", - " return df[cols]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores_to_excel(scores_dict, excel_file_name):\n", - " # Prepare to save each LCA score table to a different worksheet in the same Excel file\n", - " excel_file = excel_file_name\n", - " with pd.ExcelWriter(excel_file, engine='openpyxl') as writer:\n", - " for sector in scores_dict.keys():\n", - " lca_scores = scores_dict[sector]['lca_scores']\n", - " for method, table in lca_scores.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - " # Add the index as a new column at the beginning\n", - " df.insert(0, 'Index', df.index)\n", - " # Add statistics to the DataFrame\n", - " df = add_statistics(df)\n", - " # Add sector marker column\n", - " df['sector']=str(sector) # potentially remove!\n", - " # Generate a worksheet name\n", - " worksheet_name = f\"{sector}_{method}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " # Save the DataFrame to the Excel file in a new worksheet\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "lca_scores_in_excel=sector_lca_scores_to_excel(scores_dict, 'output_v26_2.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "PLOTS IN EXCEL" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Input : one excel file which holds the sector workesheets\n", - "# create a dictionary of worksheet names which fullfill the criteria.\n", - "# iterate through the list to get the worksheets\n", - "# Grouping sector graphs in one worksheet - for worksheets with same sector create a chart each in a worksheet called sector_charts\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "\n", - "def categorize_sheets_by_sector(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "worksheet_dict=categorize_sheets_by_sector('output_v26_2.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Just for one dataframe at the moment, but at least it works" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "from openpyxl import load_workbook\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "from openpyxl.chart.label import DataLabelList\n", - "\n", - "\n", - "def plot(filepath_workbook, worksheet_dict):\n", - " \n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_dot_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " chart_height = 21 # Number of rows a chart occupies, adjust as needed\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for worksheet_name in worksheet_names:\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " print(max_row)\n", - " max_column = ws.max_column\n", - " min_row=1\n", - "\n", - " #define columns\n", - " total_col=8\n", - " rank_col=9\n", - " index_col=1\n", - " mean_col=10\n", - " std_adv_col=11\n", - " std_blw_col=12\n", - " q1_col=13\n", - " q3_col=14\n", - " \n", - " # Create a ScatterChart (or other chart type as needed)\n", - " chart = ScatterChart()\n", - "\n", - " # Chart titles\n", - " chart.title = f\"{ws['F2'].value} LCA scores for {sector} sector\"\n", - " chart.y_axis.title = f\"{ws['G2'].value}\"\n", - " chart.x_axis.title = 'activity rank'\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - "\n", - "\n", - " # Define the data range for the chart\n", - " y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row)\n", - " print(y_values)\n", - " x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row)\n", - " print(x_values)\n", - "\n", - " # Create a series and add it to the chart\n", - " series = Series(y_values, x_values, title_from_data=True)\n", - " chart.series.append(series)\n", - " chart.style = 9\n", - "\n", - " # Customize the series to show only markers (dots)\n", - " series.marker.symbol = \"circle\"\n", - " series.marker.size = 5\n", - " series.graphicalProperties.line.noFill = True\n", - "\n", - "\n", - " # ADJUST X-AXIS\n", - " chart.x_axis.tickLblPos = \"low\"\n", - " chart.x_axis.majorGridlines = None\n", - " chart.x_axis.tickMarkSkip = 0 # Show all tick marks\n", - " chart.x_axis.tickLblSkip = 0 # Show all labels\n", - "\n", - " chart.x_axis.scaling.orientation = \"minMax\"\n", - " chart.x_axis.crosses = \"autoZero\"\n", - " chart.x_axis.axPos = \"b\"\n", - " chart.x_axis.delete = False\n", - "\n", - " # ADJUST Y-AXIS\n", - "\n", - " # Calculate the min and max y-values to determine the axis range\n", - " y_values_list = [ws.cell(row=row, column=total_col).value for row in range(2,max_row+1)] #number of rows need to be defined based on dataframe\n", - " min_y_value = min(y_values_list)-min(y_values_list)*0.1\n", - " max_y_value = max(y_values_list)+ max(y_values_list)*0.1\n", - "\n", - " # Set y-axis range with some padding\n", - " padding = (max_y_value - min_y_value) * 0.1 # 10% padding on each side\n", - " chart.y_axis.scaling.min = min_y_value - padding\n", - " chart.y_axis.scaling.max = max_y_value + padding\n", - "\n", - " # Explicitly set tick labels to be visible\n", - " chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - " #chart.y_axis.majorGridlines = True # Ensure major gridlines are enabled (though you mentioned they're visible)\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " # Format the y-axis to show 2 decimal places\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - "\n", - " # ---------\n", - " # ADD STATS\n", - " # ---------\n", - " # MEAN\n", - " # Add a new series to the chart for the mean line\n", - " mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row)\n", - " mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - " chart.series.append(mean_series)\n", - "\n", - " # Customize the mean series to show as a line\n", - " mean_series.marker.symbol = \"none\" # No markers, just a line\n", - " mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - " mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # IQR\n", - " # Add a new series to the chart for the iqr lines\n", - " iqr1= Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row)\n", - " iqr3= Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row)\n", - " iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - " iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - " chart.series.append(iqr1_series)\n", - " chart.series.append(iqr3_series)\n", - "\n", - " # Customize the iqr 1,3 series to show as a line\n", - " iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - " iqr3_series.marker.symbol = \"none\"\n", - " iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - " iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - " iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # STD\n", - " # Add a new series to the chart for the std lines\n", - " std_abv= Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row)\n", - " std_blw= Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row)\n", - " std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - " std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - " chart.series.append(std_abv_series)\n", - " chart.series.append(std_blw_series)\n", - "\n", - " # Customize the iqr 1,3 series to show as a line\n", - " std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - " std_blw_series.marker.symbol = \"none\"\n", - " std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - " std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - " std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # Set legend position to the right of the plot area\n", - " chart.legend.position = 'r' # 'r' for right\n", - " chart.legend.overlay= False\n", - "\n", - " # Adjust chart dimensions and position to make space for the legend\n", - " chart.width = 18 # Example width, adjust as needed\n", - " chart.height = 10 # Example height, adjust as needed\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = f\"A{current_row}\"\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update current_row to position the next chart below the current one\n", - " current_row += chart_height\n", - "\n", - " wb.save(filepath_workbook)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "8\n", - "'Cement_Cement_global_warming_po'!$H$1:$H$8\n", - "'Cement_Cement_global_warming_po'!$I$1:$I$8\n", - "8\n", - "'Cement_Cement_cumulative_energy'!$H$1:$H$8\n", - "'Cement_Cement_cumulative_energy'!$I$1:$I$8\n", - "11\n", - "'Electricity_Electricity_global_'!$H$1:$H$11\n", - "'Electricity_Electricity_global_'!$I$1:$I$11\n", - "11\n", - "'Electricity_Electricity_cumulat'!$H$1:$H$11\n", - "'Electricity_Electricity_cumulat'!$I$1:$I$11\n" - ] - } - ], - "source": [ - "plot('output_v26_2.xlsx', worksheet_dict=worksheet_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "ename": "IndentationError", - "evalue": "expected an indented block after 'for' statement on line 5 (571549965.py, line 7)", - "output_type": "error", - "traceback": [ - "\u001b[1;36m Cell \u001b[1;32mIn[21], line 7\u001b[1;36m\u001b[0m\n\u001b[1;33m def plot1 (filepath_workbook):\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mIndentationError\u001b[0m\u001b[1;31m:\u001b[0m expected an indented block after 'for' statement on line 5\n" - ] - } - ], - "source": [ - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "from openpyxl import load_workbook\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "\n", - "for key, value in worksheets_dict.items():\n", - "\n", - "def plot1 (filepath_workbook):\n", - " \n", - "wb = load_workbook('output_v25_2.xlsx')\n", - "\n", - "\n", - "ws = wb['Cement_Cement_global_warming_po']\n", - "ws_charts = wb.create_sheet('Charts_cement')\n", - "\n", - "chart = ScatterChart() # thats the name of the chart, we could also give it a different one\n", - "location_chart=[\"B3\", \"M3\", \"X3\",\n", - " \"B25\", \"M25\", \"X25\",\n", - " \"B46\", \"M46\", \"X46\" \n", - " ]\n", - "\n", - "\n", - "\n", - "#add max_row= len(df)... smthn like this\n", - "\n", - "# Chart titles\n", - "chart.title = 'LCA scores of portland cement production'\n", - "chart.x_axis.title = 'activities'\n", - "chart.y_axis.title = 'method unit'\n", - "# Avoid overlap\n", - "chart.title.overlay = False\n", - "chart.x_axis.title.overlay = False\n", - "chart.y_axis.title.overlay = False \n", - "\n", - "\n", - "# Define the data range for the chart\n", - "y_values = Reference(ws, min_col=8, min_row=1, max_row=8)\n", - "x_values = Reference(ws, min_col=4, min_row=2, max_row=8)\n", - "\n", - "# Create a series and add it to the chart\n", - "series = Series(y_values, x_values, title_from_data=True)\n", - "chart.series.append(series)\n", - "chart.style = 9\n", - "\n", - "# Customize the series to show only markers (dots)\n", - "series.marker.symbol = \"circle\"\n", - "series.marker.size = 5\n", - "series.graphicalProperties.line.noFill = True\n", - "\n", - "# ADJUST X-AXIS\n", - "\n", - "# # ADJUST X-AXIS\n", - "chart.x_axis.tickLblPos = \"low\"\n", - "chart.x_axis.majorGridlines = None\n", - "chart.x_axis.tickMarkSkip = 0 # Show all tick marks\n", - "chart.x_axis.tickLblSkip = 0 # Show all labels\n", - "\n", - "# Set x-axis to be a value axis instead of a category axis\n", - "chart.x_axis.scaling.orientation = \"minMax\"\n", - "chart.x_axis.crosses = \"autoZero\"\n", - "chart.x_axis.axPos = \"b\"\n", - "chart.x_axis.delete = False\n", - "\n", - "# ADJUST Y-AXIS\n", - "\n", - "# Calculate the min and max y-values to determine the axis range\n", - "y_values_list = [ws.cell(row=row, column=8).value for row in range(2,8)] #number of rows need to be defined based on dataframe\n", - "min_y_value = min(y_values_list)\n", - "max_y_value = max(y_values_list)\n", - "\n", - "# Set y-axis range with some padding\n", - "padding = (max_y_value - min_y_value) * 0.1 # 10% padding on each side\n", - "chart.y_axis.scaling.min = min_y_value - padding\n", - "chart.y_axis.scaling.max = max_y_value + padding\n", - "\n", - "# Explicitly set tick labels to be visible\n", - "chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - "#chart.y_axis.majorGridlines = True # Ensure major gridlines are enabled (though you mentioned they're visible)\n", - "chart.y_axis.delete = False # Ensure axis is not deleted\n", - "# Format the y-axis to show 2 decimal places\n", - "chart.y_axis.number_format = '0.00'\n", - "\n", - "\n", - "# ---------\n", - "# ADD STATS\n", - "# ---------\n", - "# MEAN\n", - "# Add a new series to the chart for the mean line\n", - "mean_y = Reference(ws, min_col=9, min_row=1, max_row=8)\n", - "mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - "chart.series.append(mean_series)\n", - "\n", - "# Customize the mean series to show as a line\n", - "mean_series.marker.symbol = \"none\" # No markers, just a line\n", - "mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - "mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# IQR\n", - "# Add a new series to the chart for the iqr lines\n", - "iqr1= Reference(ws, min_col=12, min_row=1, max_row=8)\n", - "iqr3= Reference(ws, min_col=13, min_row=1, max_row=8)\n", - "iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - "iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - "chart.series.append(iqr1_series)\n", - "chart.series.append(iqr3_series)\n", - "\n", - "# Customize the iqr 1,3 series to show as a line\n", - "iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - "iqr3_series.marker.symbol = \"none\"\n", - "iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - "iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - "iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# STD\n", - "# Add a new series to the chart for the std lines\n", - "std_abv= Reference(ws, min_col=10, min_row=1, max_row=8)\n", - "std_blw= Reference(ws, min_col=11, min_row=1, max_row=8)\n", - "std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - "std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - "chart.series.append(std_abv_series)\n", - "chart.series.append(std_blw_series)\n", - "\n", - "# Customize the iqr 1,3 series to show as a line\n", - "std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - "std_blw_series.marker.symbol = \"none\"\n", - "std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - "std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - "std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# Set legend position to the right of the plot area\n", - "chart.legend.position = 'r' # 'r' for right\n", - "chart.legend.overlay= False\n", - "\n", - "# Adjust chart dimensions and position to make space for the legend\n", - "chart.width = 18 # Example width, adjust as needed\n", - "chart.height = 10 # Example height, adjust as needed\n", - "\n", - "ws_charts.add_chart(chart, location_chart) #wher top left corner begins\n", - "wb.save('output_v2_2.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "from openpyxl import load_workbook\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "\n", - "wb = load_workbook('output_v25_2.xlsx')\n", - "ws_charts = wb.create_sheet('Charts_cement')\n", - "#ws = wb['Cement_Cement_cumulative_energy']\n", - "\n", - "#add clause... if sheet already existst... add to sheet. If not create as new sheet.\n", - "#ws_charts = wb['Charts_cement']\n", - "ws_charts = wb.create_sheet('Charts_cement')\n", - "\n", - "chart = ScatterChart() # thats the name of the chart, we could also give it a different one\n", - "\n", - "# Chart titles\n", - "chart.title = 'LCA scores of portland cement production'\n", - "chart.x_axis.title = 'activities'\n", - "chart.y_axis.title = 'method unit'\n", - "# Avoid overlap\n", - "chart.title.overlay = False\n", - "chart.x_axis.title.overlay = False\n", - "chart.y_axis.title.overlay = False \n", - "\n", - "\n", - "# Define the data range for the chart\n", - "y_values = Reference(ws, min_col=8, min_row=1, max_row=8)\n", - "x_values = Reference(ws, min_col=4, min_row=2, max_row=8)\n", - "\n", - "# Create a series and add it to the chart\n", - "series = Series(y_values, x_values, title_from_data=True)\n", - "chart.series.append(series)\n", - "chart.style = 9\n", - "\n", - "# Customize the series to show only markers (dots)\n", - "series.marker.symbol = \"circle\"\n", - "series.marker.size = 5\n", - "series.graphicalProperties.line.noFill = True\n", - "\n", - "# ADJUST X-AXIS\n", - "\n", - "# # ADJUST X-AXIS\n", - "chart.x_axis.tickLblPos = \"low\"\n", - "chart.x_axis.majorGridlines = None\n", - "chart.x_axis.tickMarkSkip = 0 # Show all tick marks\n", - "chart.x_axis.tickLblSkip = 0 # Show all labels\n", - "\n", - "# Set x-axis to be a value axis instead of a category axis\n", - "chart.x_axis.scaling.orientation = \"minMax\"\n", - "chart.x_axis.crosses = \"autoZero\"\n", - "chart.x_axis.axPos = \"b\"\n", - "chart.x_axis.delete = False\n", - "\n", - "# ADJUST Y-AXIS\n", - "\n", - "# Calculate the min and max y-values to determine the axis range\n", - "y_values_list = [ws.cell(row=row, column=8).value for row in range(2, 9)]\n", - "min_y_value = min(y_values_list)\n", - "max_y_value = max(y_values_list)\n", - "\n", - "# Set y-axis range with some padding\n", - "padding = (max_y_value - min_y_value) * 0.1 # 10% padding on each side\n", - "chart.y_axis.scaling.min = min_y_value - padding\n", - "chart.y_axis.scaling.max = max_y_value + padding\n", - "\n", - "# Explicitly set tick labels to be visible\n", - "chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - "#chart.y_axis.majorGridlines = True # Ensure major gridlines are enabled (though you mentioned they're visible)\n", - "chart.y_axis.delete = False # Ensure axis is not deleted\n", - "# Format the y-axis to show 2 decimal places\n", - "chart.y_axis.number_format = '0.00'\n", - "\n", - "# ---------\n", - "# ADD STATS\n", - "# ---------\n", - "# MEAN\n", - "# Add a new series to the chart for the mean line\n", - "mean_y = Reference(ws, min_col=9, min_row=1, max_row=8)\n", - "mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - "chart.series.append(mean_series)\n", - "\n", - "# Customize the mean series to show as a line\n", - "mean_series.marker.symbol = \"none\" # No markers, just a line\n", - "mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - "mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# IQR\n", - "# Add a new series to the chart for the iqr lines\n", - "iqr1= Reference(ws, min_col=12, min_row=1, max_row=8)\n", - "iqr3= Reference(ws, min_col=13, min_row=1, max_row=8)\n", - "iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - "iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - "chart.series.append(iqr1_series)\n", - "chart.series.append(iqr3_series)\n", - "\n", - "# Customize the iqr 1,3 series to show as a line\n", - "iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - "iqr3_series.marker.symbol = \"none\"\n", - "iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - "iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - "iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# STD\n", - "# Add a new series to the chart for the std lines\n", - "std_abv= Reference(ws, min_col=10, min_row=1, max_row=8)\n", - "std_blw= Reference(ws, min_col=11, min_row=1, max_row=8)\n", - "std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - "std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - "chart.series.append(std_abv_series)\n", - "chart.series.append(std_blw_series)\n", - "\n", - "# Customize the iqr 1,3 series to show as a line\n", - "std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - "std_blw_series.marker.symbol = \"none\"\n", - "std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - "std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - "std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - "# Set legend position to the right of the plot area\n", - "chart.legend.position = 'r' # 'r' for right\n", - "chart.legend.overlay= False\n", - "\n", - "# Adjust chart dimensions and position to make space for the legend\n", - "chart.width = 18 # Example width, adjust as needed\n", - "chart.height = 10 # Example height, adjust as needed\n", - "\n", - "ws_charts.add_chart(chart, \"M3\") #wher top left corner begins\n", - "wb.save('output_v25_2.xlsx')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/general_scan_v4.ipynb b/dev/notebook tests/general_scan_v4.ipynb deleted file mode 100644 index fc9969f..0000000 --- a/dev/notebook tests/general_scan_v4.ipynb +++ /dev/null @@ -1,937 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 175, - "metadata": {}, - "outputs": [], - "source": [ - "from functions_v2 import*\n", - "from methods import MethodFinder\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "code", - "execution_count": 176, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LCA DATA TO EXCEL " - ] - }, - { - "cell_type": "code", - "execution_count": 177, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 178, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 178, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 179, - "metadata": {}, - "outputs": [], - "source": [ - "# Assuming generate_sets_from_filters is a predefined function\n", - "def process_yaml_files(files_dict, database):\n", - " main_dict=files_dict.copy()\n", - " for key, value in main_dict.items():\n", - " yaml_file = value['yaml']\n", - " yaml_identifier = value['yaml identifier']\n", - " \n", - " # Generate the sector activities\n", - " sector_activities = generate_sets_from_filters(yaml_file, database=database)\n", - " \n", - " # Convert the set of activities to a list\n", - " activities_list = list(sector_activities[yaml_identifier])\n", - " \n", - " # Add to the sectors_dict\n", - " main_dict[key]['activities'] = activities_list\n", - " \n", - " return main_dict\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict= process_yaml_files(files_dict, ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "type(sectors_dict['Electricity']['activities'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict['Electricity']['activities'][0].as_dict()['name']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict['Electricity']['activities'][4].as_dict()['name']" - ] - }, - { - "cell_type": "code", - "execution_count": 180, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'}}" - ] - }, - "execution_count": 180, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Get Methods\n", - "finder=MethodFinder()\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "# finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "# finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 181, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores(main_dict, method_dict):\n", - " '''\n", - " Generates the LCA scores for the sectors activities in the main dictionary \n", - " for the different methods in the method dictionary.\n", - "\n", - " It returns the main dictionary updated as scores dictionary which also holds the former information for each sector.\n", - " The LCA scores are stored by method name in the respective sector dictionary within the main dictionary.\n", - " '''\n", - "\n", - " # Initialize scores_dict as a copy of main_dict\n", - " scores_dict = main_dict.copy()\n", - "\n", - " # Loop through each sector in main_dict\n", - " for sector in scores_dict.keys():\n", - " # Extract activities for the current sector\n", - " sector_activities = scores_dict[sector]['activities']\n", - " \n", - " # Calculate LCA scores using the specified method\n", - " lca_scores = compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier=sector,\n", - " mode='absolute'\n", - " )\n", - " \n", - " # Apply the small_inputs_to_other_column function with the cutoff value\n", - " lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - " \n", - " # Save the LCA scores to the scores_dict\n", - " scores_dict[sector]['lca_scores'] = lca_scores\n", - "\n", - " return scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 182, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n" - ] - } - ], - "source": [ - "scores_dict=sector_lca_scores(sectors_dict, method_dict) \n", - "\n", - "# this function is omitting common parts in the activities names, because only one type of activity portland and biomass from ICGGC is looked at \n", - "# the results are 'Portland' and 'plant' in the activity column" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "scores_dict['Cement']['lca_scores'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "scores_dict['Electricity']['lca_scores'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "scores_dict['Cement'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 183, - "metadata": {}, - "outputs": [], - "source": [ - "def add_statistics(df, column_name='total'):\n", - "\n", - " #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values)\n", - " df['rank'] = df[column_name].rank(method=\"first\", ascending=\"False\")\n", - "\n", - " # Calculate mean, standard deviation, and IQR\n", - " df['mean'] = df[column_name].mean()\n", - " df['2std_abv'] = df['mean'] + df[column_name].std() * 2\n", - " df['2std_blw'] = df['mean'] - df[column_name].std() * 2\n", - " df['q1'] = df[column_name].quantile(0.25)\n", - " df['q3'] = df[column_name].quantile(0.75)\n", - " \n", - " # Reorder the columns to place the new columns after 'total'\n", - " cols = df.columns.tolist()\n", - " total_index = cols.index(column_name) + 1\n", - " new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3']\n", - " cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)]\n", - " \n", - " return df[cols]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 184, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores_to_excel(scores_dict, excel_file_name):\n", - " # Prepare to save each LCA score table to a different worksheet in the same Excel file\n", - " excel_file = excel_file_name\n", - " with pd.ExcelWriter(excel_file, engine='openpyxl') as writer:\n", - " for sector in scores_dict.keys():\n", - " lca_scores = scores_dict[sector]['lca_scores']\n", - " for method, table in lca_scores.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - " # Add the index as a new column at the beginning\n", - " df.insert(0, 'Index', df.index)\n", - " # Add statistics to the DataFrame\n", - " df = add_statistics(df)\n", - " # Add sector marker column\n", - " df['sector']=str(sector) # potentially remove!\n", - " # Reorder the columns to move 'sector' after 'product'\n", - " columns = list(df.columns)\n", - " product_index = columns.index('product')\n", - " # Insert 'sector' after 'product'\n", - " columns.insert(product_index + 1, columns.pop(columns.index('sector')))\n", - " # Reassign the DataFrame with the new column order\n", - " df = df[columns]\n", - "\n", - " # Generate a worksheet name\n", - " worksheet_name = f\"{method}\" #f\"{sector}_{method}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " # Save the DataFrame to the Excel file in a new worksheet\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 205, - "metadata": {}, - "outputs": [], - "source": [ - "lca_scores_in_excel=sector_lca_scores_to_excel(scores_dict, 'output_v51_2.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "PLOTS IN EXCEL" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Input : one excel file which holds the sector workesheets\n", - "# create a dictionary of worksheet names which fullfill the criteria.\n", - "# iterate through the list to get the worksheets\n", - "# Grouping sector graphs in one worksheet - for worksheets with same sector create a chart each in a worksheet called sector_charts\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "\n", - "def categorize_sheets_by_sector(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 206, - "metadata": {}, - "outputs": [], - "source": [ - "worksheet_dict=categorize_sheets_by_sector('output_v51_2.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Function to plot categorical scatter plots (Note: Axis can't take on categorical labels)" - ] - }, - { - "cell_type": "code", - "execution_count": 186, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "from openpyxl import load_workbook\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "from openpyxl.chart.label import DataLabelList\n", - "\n", - "\n", - "def dot_plots(filepath_workbook, worksheet_dict):\n", - " \n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_dot_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " chart_height = 21 # Number of rows a chart occupies, adjust as needed\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for worksheet_name in worksheet_names:\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " print(max_row)\n", - " max_column = ws.max_column\n", - " min_row=1\n", - "\n", - " #define columns\n", - " total_col=9\n", - " rank_col=10\n", - " index_col=1\n", - " mean_col=11\n", - " std_adv_col=12\n", - " std_blw_col=13\n", - " q1_col=14\n", - " q3_col=15\n", - " \n", - " # Create a ScatterChart (or other chart type as needed)\n", - " chart = ScatterChart()\n", - "\n", - " # Chart titles\n", - " chart.title = f\"{ws['F2'].value} LCA scores for {sector} sector\"\n", - " chart.y_axis.title = f\"{ws['G2'].value}\"\n", - " chart.x_axis.title = 'activity rank'\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - "\n", - "\n", - " # Define the data range for the chart\n", - " y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row)\n", - " print(y_values)\n", - " x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row)\n", - " print(x_values)\n", - "\n", - " # Create a series and add it to the chart\n", - " series = Series(y_values, x_values, title_from_data=True)\n", - " chart.series.append(series)\n", - " chart.style = 9\n", - "\n", - " # Customize the series to show only markers (dots)\n", - " series.marker.symbol = \"circle\"\n", - " series.marker.size = 5\n", - " series.graphicalProperties.line.noFill = True\n", - "\n", - "\n", - " # ADJUST X-AXIS\n", - " chart.x_axis.tickLblPos = \"low\"\n", - " chart.x_axis.majorGridlines = None\n", - " chart.x_axis.tickMarkSkip = 0 # Show all tick marks\n", - " chart.x_axis.tickLblSkip = 0 # Show all labels\n", - "\n", - " chart.x_axis.scaling.orientation = \"minMax\"\n", - " chart.x_axis.crosses = \"autoZero\"\n", - " chart.x_axis.axPos = \"b\"\n", - " chart.x_axis.delete = False\n", - "\n", - " # ADJUST Y-AXIS\n", - "\n", - " # Calculate the min and max y-values to determine the axis range\n", - " y_values_list = [ws.cell(row=row, column=total_col).value for row in range(2,max_row+1)] #number of rows need to be defined based on dataframe\n", - " min_y_value = min(y_values_list)-min(y_values_list)*0.1\n", - " max_y_value = max(y_values_list)+ max(y_values_list)*0.1\n", - "\n", - " # Set y-axis range with some padding\n", - " padding = (max_y_value - min_y_value) * 0.1 # 10% padding on each side\n", - " chart.y_axis.scaling.min = min_y_value - padding\n", - " chart.y_axis.scaling.max = max_y_value + padding\n", - "\n", - " # Explicitly set tick labels to be visible\n", - " chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - " #chart.y_axis.majorGridlines = True # Ensure major gridlines are enabled (though you mentioned they're visible)\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " # Format the y-axis to show 2 decimal places\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - "\n", - " # ---------\n", - " # ADD STATS\n", - " # ---------\n", - " # MEAN\n", - " # Add a new series to the chart for the mean line\n", - " mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row)\n", - " mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - " chart.series.append(mean_series)\n", - "\n", - " # Customize the mean series to show as a line\n", - " mean_series.marker.symbol = \"none\" # No markers, just a line\n", - " mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - " mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # IQR\n", - " # Add a new series to the chart for the iqr lines\n", - " iqr1= Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row)\n", - " iqr3= Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row)\n", - " iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - " iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - " chart.series.append(iqr1_series)\n", - " chart.series.append(iqr3_series)\n", - "\n", - " # Customize the iqr 1,3 series to show as a line\n", - " iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - " iqr3_series.marker.symbol = \"none\"\n", - " iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - " iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - " iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # STD\n", - " # Add a new series to the chart for the std lines\n", - " std_abv= Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row)\n", - " std_blw= Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row)\n", - " std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - " std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - " chart.series.append(std_abv_series)\n", - " chart.series.append(std_blw_series)\n", - "\n", - " # Customize the iqr 1,3 series to show as a line\n", - " std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - " std_blw_series.marker.symbol = \"none\"\n", - " std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - " std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - " std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # Set legend position to the right of the plot area\n", - " chart.legend.position = 'r' # 'r' for right\n", - " chart.legend.overlay= False\n", - "\n", - " # Adjust chart dimensions and position to make space for the legend\n", - " chart.width = 18 # Example width, adjust as needed\n", - " chart.height = 10 # Example height, adjust as needed\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = f\"A{current_row}\"\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update current_row to position the next chart below the current one\n", - " current_row += chart_height\n", - "\n", - " wb.save(filepath_workbook)" - ] - }, - { - "cell_type": "code", - "execution_count": 190, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': ['Cement_global_warming_potential',\n", - " 'Cement_cumulative_energy_demand'],\n", - " 'Electricity': ['Electricity_global_warming_pote',\n", - " 'Electricity_cumulative_energy_d']}" - ] - }, - "execution_count": 190, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "worksheet_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 207, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "8\n", - "'Cement_global_warming_potential'!$I$1:$I$8\n", - "'Cement_global_warming_potential'!$J$1:$J$8\n", - "8\n", - "'Cement_cumulative_energy_demand'!$I$1:$I$8\n", - "'Cement_cumulative_energy_demand'!$J$1:$J$8\n", - "11\n", - "'Electricity_global_warming_pote'!$I$1:$I$11\n", - "'Electricity_global_warming_pote'!$J$1:$J$11\n", - "11\n", - "'Electricity_cumulative_energy_d'!$I$1:$I$11\n", - "'Electricity_cumulative_energy_d'!$J$1:$J$11\n" - ] - } - ], - "source": [ - "dot_plots('output_v51_2.xlsx', worksheet_dict=worksheet_dict)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setup Stacked Plots" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import Workbook\n", - "from openpyxl.chart import BarChart, Series, Reference\n", - "from openpyxl.chart.text import RichText\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "\n", - "def stacked_bars(filepath_workbook, worksheet_dict):\n", - "\n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_stacked_bars\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " chart_height = 21 # Number of rows a chart occupies, adjust as needed\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for worksheet_name in worksheet_names:\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " input_min_col=15\n", - "\n", - " chart = BarChart()\n", - " chart.type = \"col\"\n", - " chart.style = 2\n", - " chart.grouping = \"stacked\"\n", - " chart.overlap = 100\n", - "\n", - " # Chart titles\n", - " chart.title = f\"{ws['F2'].value} input contributions to LCA scores for {sector} sector\"\n", - " chart.y_axis.title = f\"{ws['G2'].value}\"\n", - " chart.x_axis.title = 'activity index'\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # define data\n", - " data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col = max_column)\n", - " cats = Reference(ws, min_col=1, min_row=2, max_row=max_row)\n", - "\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(cats)\n", - " chart.shape = 4\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis ticks\n", - " chart.y_axis.tickLblPos = \"nextTo\"\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - " # Set legend position to the right of the plot area\n", - " chart.legend.position = 'r' # 'r' for right\n", - " chart.legend.overlay= False\n", - "\n", - " # Adjust chart dimensions and position to make space for the legend\n", - " chart.width = 15 # Example width, adjust as needed\n", - " chart.height = 25 # Example height, adjust as needed\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = f\"A{current_row}\"\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update current_row to position the next chart below the current one\n", - " current_row += chart_height+4\n", - "\n", - " wb.save(filepath_workbook)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# stacked_bars('output_v4_2.xlsx', worksheet_dict=worksheet_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 202, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def stacked_bars(filepath_workbook, worksheet_dict):\n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_stacked_bars\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " current_col = 1 # Start placing charts from column 1\n", - " chart_height = 18 # Number of rows a chart occupies\n", - " chart_width = 15 # Number of columns a chart occupies\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " input_min_col = 16\n", - "\n", - " chart = BarChart()\n", - " chart.type = \"col\"\n", - " chart.style = 2\n", - " chart.grouping = \"stacked\"\n", - " chart.overlap = 100\n", - "\n", - " # Chart titles\n", - " chart.title = f\"{ws['F2'].value} input contributions to LCA scores for {sector} sector\"\n", - " chart.y_axis.title = f\"{ws['G2'].value}\"\n", - " chart.x_axis.title = 'activity index'\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Define data\n", - " data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col=max_column)\n", - " cats = Reference(ws, min_col=1, min_row=2, max_row=max_row)\n", - "\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(cats)\n", - " chart.shape = 4\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis ticks\n", - " chart.y_axis.tickLblPos = \"nextTo\"\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - " # Set legend position to the right of the plot area\n", - " chart.legend.position = 'r' # 'r' for right\n", - " chart.legend.overlay = False\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 15 # Example width, adjust as needed\n", - " chart.height = 25 # Example height, adjust as needed\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width -4\n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +2\n", - " current_col = 1 # Reset to the first column\n", - " \n", - " wb.save(filepath_workbook)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 208, - "metadata": {}, - "outputs": [], - "source": [ - "stacked_bars('output_v51_2.xlsx', worksheet_dict=worksheet_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import Workbook\n", - "from openpyxl.chart import BarChart, Series, Reference\n", - "from openpyxl.chart.text import RichText\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "\n", - "wb = load_workbook('output_v45_2.xlsx')\n", - "ws = wb['Electricity_Electricity_cumulat']\n", - "ws_charts=wb.create_sheet('stacked_bar_charts_cumulat_10')\n", - "\n", - "chart = BarChart()\n", - "chart.type = \"col\"\n", - "chart.style = 2\n", - "chart.grouping = \"stacked\"\n", - "chart.overlap = 100\n", - "\n", - "chart.title = \"Stacked bar chart\"\n", - "chart.y_axis.title = \"method unit\"\n", - "chart.x_axis.title = \"activity indexes\"\n", - "\n", - "# Avoid overlap\n", - "chart.title.overlay = False\n", - "chart.x_axis.title.overlay = False\n", - "chart.y_axis.title.overlay = False \n", - "chart.legend.overlay = False\n", - "\n", - "# define data\n", - "data = Reference(ws, min_col=15, min_row=1, max_row=11, max_col = 19)\n", - "cats = Reference(ws, min_col=1, min_row=2, max_row=11)\n", - "\n", - "chart.add_data(data, titles_from_data=True)\n", - "chart.set_categories(cats)\n", - "chart.shape = 7 #what is this for?\n", - "\n", - "# Modify each series in the chart to disable the inversion of negative values \n", - "for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - "# y-axis ticks\n", - "chart.y_axis.tickLblPos = \"nextTo\"\n", - "chart.y_axis.delete = False # Ensure axis is not deleted\n", - "chart.y_axis.number_format = '0.000'\n", - "\n", - "ws_charts.add_chart(chart, \"B1\")\n", - "wb.save('output_v47_2.xlsx')\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/general_scan_v5.ipynb b/dev/notebook tests/general_scan_v5.ipynb deleted file mode 100644 index 81b7323..0000000 --- a/dev/notebook tests/general_scan_v5.ipynb +++ /dev/null @@ -1,1507 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from functions_v2 import*\n", - "from methods import MethodFinder\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LCA DATA TO EXCEL " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Assuming generate_sets_from_filters is a predefined function\n", - "def process_yaml_files(files_dict, database):\n", - " main_dict=files_dict.copy()\n", - " for key, value in main_dict.items():\n", - " yaml_file = value['yaml']\n", - " yaml_identifier = value['yaml identifier']\n", - " \n", - " # Generate the sector activities\n", - " sector_activities = generate_sets_from_filters(yaml_file, database=database)\n", - " \n", - " # Convert the set of activities to a list\n", - " activities_list = list(sector_activities[yaml_identifier])\n", - " \n", - " # Add to the sectors_dict\n", - " main_dict[key]['activities'] = activities_list\n", - " \n", - " return main_dict\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict= process_yaml_files(files_dict, ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "type(sectors_dict['Electricity']['activities'][0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict['Electricity']['activities'][0].as_dict()['name']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict['Electricity']['activities'][4].as_dict()['name']" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Get Methods\n", - "finder=MethodFinder()\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores(main_dict, method_dict):\n", - " '''\n", - " Generates the LCA scores for the sectors activities in the main dictionary \n", - " for the different methods in the method dictionary.\n", - "\n", - " It returns the main dictionary updated as scores dictionary which also holds the former information for each sector.\n", - " The LCA scores are stored by method name in the respective sector dictionary within the main dictionary.\n", - " '''\n", - "\n", - " # Initialize scores_dict as a copy of main_dict\n", - " scores_dict = main_dict.copy()\n", - "\n", - " # Loop through each sector in main_dict\n", - " for sector in scores_dict.keys():\n", - " # Extract activities for the current sector\n", - " sector_activities = scores_dict[sector]['activities']\n", - " \n", - " # Calculate LCA scores using the specified method\n", - " lca_scores = compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier=sector,\n", - " mode='absolute'\n", - " )\n", - " \n", - " # Apply the small_inputs_to_other_column function with the cutoff value\n", - " lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - " \n", - " # Save the LCA scores to the scores_dict\n", - " scores_dict[sector]['lca_scores'] = lca_scores\n", - "\n", - " return scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n" - ] - } - ], - "source": [ - "scores_dict=sector_lca_scores(sectors_dict, method_dict) \n", - "\n", - "# this function is omitting common parts in the activities names, because only one type of activity portland and biomass from ICGGC is looked at \n", - "# the results are 'Portland' and 'plant' in the activity column" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Cement_global_warming_potential_(gwp100)', 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources', 'Cement_land_occupation', 'Cement_use_of_net_fresh_water'])" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Cement']['lca_scores'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
activityproductlocationunitmethodmethod unittotal6511: Road transport services of freight15310: Natural sands8614: Support and operation services to forestry and logging88311: Wood manufacturing services37510: Non-refractory mortars and concretes12020: Natural gas, liquefied or in the gaseous state15320: Pebbles, gravel, broken or crushed stone, macadam; granules, chippings and powder of stoneother
8plantUKRkilowatt houruse of net fresh watercubic meter0.0001210.0000240.0000180.0000170.0000070.0000040.000000-0.0000250.000016
7plantTURkilowatt houruse of net fresh watercubic meter0.0001210.0000240.0000180.0000170.0000070.0000040.000003-0.0000250.000013
5plantRUSkilowatt houruse of net fresh watercubic meter0.0001200.0000240.0000180.0000170.0000070.0000040.000000-0.0000250.000015
2plantCHNkilowatt houruse of net fresh watercubic meter0.0001200.0000240.0000180.0000170.0000070.0000040.000000-0.0000250.000014
6plantSAFkilowatt houruse of net fresh watercubic meter0.0001190.0000240.0000170.0000170.0000070.0000040.000000-0.0000240.000016
4plantRSAMkilowatt houruse of net fresh watercubic meter0.0001170.0000240.0000170.0000170.0000070.0000040.000000-0.0000240.000014
3plantKORkilowatt houruse of net fresh watercubic meter0.0001160.0000230.0000170.0000170.0000070.0000030.000000-0.0000240.000015
1plantCEUkilowatt houruse of net fresh watercubic meter0.0001160.0000230.0000170.0000170.0000070.0000030.000003-0.0000240.000012
9plantUSAkilowatt houruse of net fresh watercubic meter0.0001150.0000230.0000170.0000170.0000070.0000030.000000-0.0000240.000014
0plantBRAkilowatt houruse of net fresh watercubic meter0.0001040.0000250.0000020.0000170.0000070.0000040.000000-0.0000240.000015
\n", - "
" - ], - "text/plain": [ - " activity product location unit method \\\n", - "8 plant UKR kilowatt hour use of net fresh water \n", - "7 plant TUR kilowatt hour use of net fresh water \n", - "5 plant RUS kilowatt hour use of net fresh water \n", - "2 plant CHN kilowatt hour use of net fresh water \n", - "6 plant SAF kilowatt hour use of net fresh water \n", - "4 plant RSAM kilowatt hour use of net fresh water \n", - "3 plant KOR kilowatt hour use of net fresh water \n", - "1 plant CEU kilowatt hour use of net fresh water \n", - "9 plant USA kilowatt hour use of net fresh water \n", - "0 plant BRA kilowatt hour use of net fresh water \n", - "\n", - " method unit total 6511: Road transport services of freight \\\n", - "8 cubic meter 0.000121 0.000024 \n", - "7 cubic meter 0.000121 0.000024 \n", - "5 cubic meter 0.000120 0.000024 \n", - "2 cubic meter 0.000120 0.000024 \n", - "6 cubic meter 0.000119 0.000024 \n", - "4 cubic meter 0.000117 0.000024 \n", - "3 cubic meter 0.000116 0.000023 \n", - "1 cubic meter 0.000116 0.000023 \n", - "9 cubic meter 0.000115 0.000023 \n", - "0 cubic meter 0.000104 0.000025 \n", - "\n", - " 15310: Natural sands \\\n", - "8 0.000018 \n", - "7 0.000018 \n", - "5 0.000018 \n", - "2 0.000018 \n", - "6 0.000017 \n", - "4 0.000017 \n", - "3 0.000017 \n", - "1 0.000017 \n", - "9 0.000017 \n", - "0 0.000002 \n", - "\n", - " 8614: Support and operation services to forestry and logging \\\n", - "8 0.000017 \n", - "7 0.000017 \n", - "5 0.000017 \n", - "2 0.000017 \n", - "6 0.000017 \n", - "4 0.000017 \n", - "3 0.000017 \n", - "1 0.000017 \n", - "9 0.000017 \n", - "0 0.000017 \n", - "\n", - " 88311: Wood manufacturing services \\\n", - "8 0.000007 \n", - "7 0.000007 \n", - "5 0.000007 \n", - "2 0.000007 \n", - "6 0.000007 \n", - "4 0.000007 \n", - "3 0.000007 \n", - "1 0.000007 \n", - "9 0.000007 \n", - "0 0.000007 \n", - "\n", - " 37510: Non-refractory mortars and concretes \\\n", - "8 0.000004 \n", - "7 0.000004 \n", - "5 0.000004 \n", - "2 0.000004 \n", - "6 0.000004 \n", - "4 0.000004 \n", - "3 0.000003 \n", - "1 0.000003 \n", - "9 0.000003 \n", - "0 0.000004 \n", - "\n", - " 12020: Natural gas, liquefied or in the gaseous state \\\n", - "8 0.000000 \n", - "7 0.000003 \n", - "5 0.000000 \n", - "2 0.000000 \n", - "6 0.000000 \n", - "4 0.000000 \n", - "3 0.000000 \n", - "1 0.000003 \n", - "9 0.000000 \n", - "0 0.000000 \n", - "\n", - " 15320: Pebbles, gravel, broken or crushed stone, macadam; granules, chippings and powder of stone \\\n", - "8 -0.000025 \n", - "7 -0.000025 \n", - "5 -0.000025 \n", - "2 -0.000025 \n", - "6 -0.000024 \n", - "4 -0.000024 \n", - "3 -0.000024 \n", - "1 -0.000024 \n", - "9 -0.000024 \n", - "0 -0.000024 \n", - "\n", - " other \n", - "8 0.000016 \n", - "7 0.000013 \n", - "5 0.000015 \n", - "2 0.000014 \n", - "6 0.000016 \n", - "4 0.000014 \n", - "3 0.000015 \n", - "1 0.000012 \n", - "9 0.000014 \n", - "0 0.000015 " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dict['Electricity']['lca_scores']['Electricity_use_of_net_fresh_water']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "scores_dict['Cement'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def add_statistics(df, column_name='total'): #call fctn data mainpulation?\n", - "\n", - " #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values)\n", - " df['rank'] = df[column_name].rank(method=\"first\", ascending=\"False\")\n", - "\n", - " # Calculate mean, standard deviation, and IQR\n", - " df['mean'] = df[column_name].mean()\n", - " df['2std_abv'] = df['mean'] + df[column_name].std() * 2\n", - " df['2std_blw'] = df['mean'] - df[column_name].std() * 2\n", - " df['q1'] = df[column_name].quantile(0.25)\n", - " df['q3'] = df[column_name].quantile(0.75)\n", - " \n", - " # Reorder the columns to place the new columns after 'total'\n", - " cols = df.columns.tolist()\n", - " total_index = cols.index(column_name) + 1\n", - " new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3']\n", - " cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)]\n", - " \n", - " return df[cols]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "import pandas as pd\n", - "\n", - "def clean_column_labels(df):\n", - " # Function to remove numbers and colon from column names\n", - " def clean_label(label):\n", - " if label is None:\n", - " return 'Unnamed' # or return 'Unnamed' if you prefer a placeholder\n", - " return re.sub(r'^\\d+:\\s*', '', str(label))\n", - "\n", - " # Apply the cleaning function to all column names\n", - " df.columns = [clean_label(col) for col in df.columns]\n", - "\n", - " return df\n", - "\n", - "# Example usage:\n", - "# df = pd.read_csv('your_file.csv') # or however you're loading your DataFrame\n", - "# cleaned_df = clean_column_labels(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 193, - "metadata": {}, - "outputs": [], - "source": [ - "def add_sector_marker(df, sector):\n", - " # Add sector marker column\n", - " df['sector']=str(sector) # potentially remove!\n", - " # Reorder the columns to move 'sector' after 'product'\n", - " columns = list(df.columns)\n", - " product_index = columns.index('product')\n", - " # Insert 'sector' after 'product'\n", - " columns.insert(product_index + 1, columns.pop(columns.index('sector')))\n", - " # Reassign the DataFrame with the new column order\n", - " df = df[columns]\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": 197, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "\n", - "def find_first_input_column(df):\n", - " pattern = r'^\\d+:\\s*' # Regular expression pattern to match \"Number: Name\" or \"Number Name\"\n", - "\n", - " for idx, column in enumerate(df.columns):\n", - " if column is not None and re.match(pattern, column):\n", - " return idx\n", - "\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 198, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores_to_excel_and_column_positions(scores_dict, excel_file_name):\n", - " \"\"\" \n", - " What it does:\n", - " - Creates a dataframe for each method and sector from the lca scores dictionary\n", - " - Before storing each df in a worksheet in an excel file it:\n", - " - shortens the column labels of the input (removing cpc code)\n", - " - adds a sector name marker for keeping track in excel (when plotting can use it for labeling)\n", - " - adds statistics for plotting\n", - " - creates a dictionary which holds the indexes to the columns we need to call for plotting, this makes it dynamic. Otherwise need to hardcode index column number for openpxyl.\n", - " What it returns:\n", - " - Returns the index positions dictionary where the key is \"sector_method\"\n", - " - Creates excel file as defined by user\n", - " \"\"\"\n", - "\n", - " # Prepare to save each LCA score table to a different worksheet in the same Excel file\n", - " excel_file = excel_file_name\n", - " column_positions = {} #stores the indexes of columns for plotting\n", - " with pd.ExcelWriter(excel_file, engine='openpyxl') as writer:\n", - " for sector in scores_dict.keys():\n", - " lca_scores = scores_dict[sector]['lca_scores']\n", - " for method, table in lca_scores.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - "\n", - " # Add sector marker\n", - " df = add_sector_marker(df, sector) #!! ADJUST POSITION\n", - "\n", - " # Add statistics to the DataFrame\n", - " df = add_statistics(df)\n", - "\n", - " # Get the index values of columns\n", - " columns_of_interest = [\"total\", \"rank\", \"mean\", \"2std_abv\", \"2std_blw\", \"q1\", \"q3\", \"method\", \"method unit\"]\n", - " positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns}\n", - " column_positions[method] = positions\n", - "\n", - " # Find the first input column and add it to the positions dictionary\n", - " first_input_col_index = find_first_input_column(df)\n", - " if first_input_col_index is not None:\n", - " positions[\"first_input\"] = first_input_col_index\n", - " print(first_input_col_index)\n", - " # Store the positions for this method\n", - " column_positions[method] = positions\n", - "\n", - " # remove cpc from input labels\n", - " df = clean_column_labels(df)\n", - "\n", - " # Generate a worksheet name\n", - " worksheet_name = f\"{method}\" #f\"{sector}_{method}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " \n", - " # Save the DataFrame to the Excel file in a new worksheet\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)\n", - " return column_positions" - ] - }, - { - "cell_type": "code", - "execution_count": 199, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "14\n", - "14\n", - "15\n", - "16\n", - "15\n", - "14\n", - "14\n", - "14\n" - ] - } - ], - "source": [ - "index_positions=sector_lca_scores_to_excel_and_column_positions(scores_dict, 'output_v22_3.xlsx') #the variable holds the index positions of the columns!!" - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement_global_warming_potential_(gwp100)': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 10},\n", - " 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 10},\n", - " 'Cement_land_occupation': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 10},\n", - " 'Cement_use_of_net_fresh_water': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 10},\n", - " 'Electricity_global_warming_potential_(gwp100)': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 10},\n", - " 'Electricity_cumulative_energy_demand_-_non-renewable_energy_resources': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 10},\n", - " 'Electricity_land_occupation': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 10},\n", - " 'Electricity_use_of_net_fresh_water': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 10}}" - ] - }, - "execution_count": 105, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "index_positions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "PLOTS IN EXCEL" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Input : one excel file which holds the sector workesheets\n", - "# create a dictionary of worksheet names which fullfill the criteria.\n", - "# iterate through the list to get the worksheets\n", - "# Grouping sector graphs in one worksheet - for worksheets with same sector create a chart each in a worksheet called sector_charts\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 200, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "\n", - "def categorize_sheets_by_sector(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 135, - "metadata": {}, - "outputs": [], - "source": [ - "worksheet_dict=categorize_sheets_by_sector('output_v8_3.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'total': 7, 'rank': 8, 'mean': 9, 'q1': 12, 'q3': 13}" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "positions = index_positions.get(\"Cement_global_warming_potential_(gwp100)\", {})\n", - "positions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Dot Plot" - ] - }, - { - "cell_type": "code", - "execution_count": 220, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "\n", - "def dot_plots(filepath_workbook, worksheet_dict, index_positions):\n", - " \n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name) \n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " current_col = 1 # Start placing charts from column 1\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " min_row = 1\n", - "\n", - " # Find the key in index_positions that contains worksheet_name\n", - " matching_key = None\n", - " for key in index_positions.keys():\n", - " if worksheet_name in key:\n", - " matching_key = key\n", - " break\n", - "\n", - " if not matching_key:\n", - " print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = index_positions[matching_key]\n", - " total_col = positions.get(\"total\", None) + 1\n", - " rank_col = positions.get(\"rank\", None) + 1\n", - " mean_col = positions.get(\"mean\", None) + 1\n", - " std_adv_col = positions.get(\"2std_abv\", None) + 1\n", - " std_blw_col = positions.get(\"2std_blw\", None) + 1\n", - " q1_col = positions.get(\"q1\", None) + 1\n", - " q3_col = positions.get(\"q3\", None) + 1\n", - " method_col = positions.get(\"method\", None) + 1\n", - " method_unit_col = positions.get(\"method unit\", None) + 1\n", - " \n", - " # Ensure that all required columns are present\n", - " if None in [total_col, rank_col, mean_col, std_adv_col, std_blw_col, q1_col, q3_col, method_col, method_unit_col]:\n", - " print(f\"Warning: Missing columns in worksheet '{worksheet_name}' for sector '{sector}'. Skipping...\")\n", - " continue\n", - " \n", - " # Create a ScatterChart (or other chart type as needed)\n", - " chart = ScatterChart()\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"{method_value} LCA scores for {sector} sector\" \n", - " \n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.y_axis.title = f\"{method_unit_value}\"\n", - " chart.x_axis.title = 'activity rank'\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - "\n", - " # Define the data range for the chart\n", - " y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row)\n", - " x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row)\n", - "\n", - " # Create a series and add it to the chart\n", - " series = Series(y_values, x_values, title_from_data=True)\n", - " chart.series.append(series)\n", - " chart.style = 9\n", - "\n", - " # Customize the series to show only markers (dots)\n", - " series.marker.symbol = \"circle\"\n", - " series.marker.size = 5\n", - " series.graphicalProperties.line.noFill = True\n", - "\n", - " # ADJUST X-AXIS\n", - " chart.x_axis.tickLblPos = \"low\"\n", - " chart.x_axis.majorGridlines = None \n", - " chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines \n", - " chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work\n", - "\n", - " chart.x_axis.scaling.orientation = \"minMax\"\n", - " chart.x_axis.crosses = \"autoZero\"\n", - " chart.x_axis.axPos = \"b\"\n", - " chart.x_axis.delete = False\n", - "\n", - " # ADJUST Y-AXIS\n", - " chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.00000'\n", - " chart.y_axis.majorGridlines = None \n", - "\n", - " # ADD STATS\n", - " # MEAN\n", - " mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row)\n", - " mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - " chart.series.append(mean_series)\n", - " mean_series.marker.symbol = \"none\" # No markers, just a line\n", - " mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - " mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # IQR\n", - " iqr1 = Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row)\n", - " iqr3 = Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row)\n", - " iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - " iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - " chart.series.append(iqr1_series)\n", - " chart.series.append(iqr3_series)\n", - " iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - " iqr3_series.marker.symbol = \"none\"\n", - " iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - " iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - " iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # STD\n", - " std_abv = Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row)\n", - " std_blw = Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row)\n", - " std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - " std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - " chart.series.append(std_abv_series)\n", - " chart.series.append(std_blw_series)\n", - " std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - " std_blw_series.marker.symbol = \"none\"\n", - " std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - " std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - " std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # Set legend position to the right of the plot area\n", - " chart.legend.position = 'r' # 'r' for right\n", - " chart.legend.overlay = False\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width +1 \n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - "\n", - " wb.save(filepath_workbook)\n", - " return current_row" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setup Stacked Plots" - ] - }, - { - "cell_type": "code", - "execution_count": 216, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def stacked_bars(filepath_workbook, worksheet_dict, current_row_dot_plot):\n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " current_row = current_row_dot_plot + chart_height # Start placing charts from row where dot plots have left of\n", - " current_col = 1 # Start placing charts from column 1\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find the key in index_positions that contains worksheet_name\n", - " matching_key = None\n", - " for key in index_positions.keys():\n", - " if worksheet_name in key:\n", - " matching_key = key\n", - " break\n", - "\n", - " if not matching_key:\n", - " print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = index_positions[matching_key]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " input_min_col = positions.get(\"first_input\", None) + 1\n", - " rank_col = positions.get(\"rank\", None) + 1\n", - " method_col = positions.get(\"method\", None) + 1\n", - " method_unit_col = positions.get(\"method unit\", None) + 1\n", - "\n", - " chart = BarChart()\n", - " chart.type = \"bar\"\n", - " chart.style = 2\n", - " chart.grouping = \"stacked\"\n", - " chart.overlap = 100\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"{sector} sector inputs contributions to {method_value}\"\n", - "\n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.y_axis.title = f\"{method_unit_value}\"\n", - " \n", - " chart.x_axis.title = 'activity index'\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Define data\n", - " data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col=max_column)\n", - " cats = Reference(ws, min_col=rank_col, min_row=2, max_row=max_row)\n", - "\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(cats)\n", - " chart.shape = 4\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis ticks\n", - " chart.y_axis.tickLblPos = \"nextTo\"\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width +1\n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - " \n", - " wb.save(filepath_workbook)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 221, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "14\n", - "14\n", - "15\n", - "16\n", - "15\n", - "14\n", - "14\n", - "14\n" - ] - } - ], - "source": [ - "index_positions=sector_lca_scores_to_excel_and_column_positions(scores_dict, 'output_v26_3.xlsx') #the variable holds the index positions of the columns!!\n", - "worksheet_dict=categorize_sheets_by_sector('output_v26_3.xlsx')\n", - "current_row_dots = dot_plots('output_v26_3.xlsx', worksheet_dict=worksheet_dict, index_positions=index_positions)\n", - "stacked_bars('output_v26_3.xlsx', worksheet_dict=worksheet_dict, current_row_dot_plot=current_row_dots)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "archiv" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import Workbook\n", - "from openpyxl.chart import BarChart, Series, Reference\n", - "from openpyxl.chart.text import RichText\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "\n", - "def stacked_bars(filepath_workbook, worksheet_dict):\n", - "\n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_stacked_bars\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " chart_height = 21 # Number of rows a chart occupies, adjust as needed\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for worksheet_name in worksheet_names:\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " input_min_col=15\n", - "\n", - " chart = BarChart()\n", - " chart.type = \"col\"\n", - " chart.style = 2\n", - " chart.grouping = \"stacked\"\n", - " chart.overlap = 100\n", - "\n", - " # Chart titles\n", - " chart.title = f\"{ws['F2'].value} input contributions to LCA scores for {sector} sector\"\n", - " chart.y_axis.title = f\"{ws['G2'].value}\"\n", - " chart.x_axis.title = 'activity index'\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # define data\n", - " data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col = max_column)\n", - " cats = Reference(ws, min_col=1, min_row=2, max_row=max_row)\n", - "\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(cats)\n", - " chart.shape = 4\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis ticks\n", - " chart.y_axis.tickLblPos = \"nextTo\"\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - " # Set legend position to the right of the plot area\n", - " chart.legend.position = 'r' # 'r' for right\n", - " chart.legend.overlay= False\n", - "\n", - " # Adjust chart dimensions and position to make space for the legend\n", - " chart.width = 15 # Example width, adjust as needed\n", - " chart.height = 25 # Example height, adjust as needed\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = f\"A{current_row}\"\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update current_row to position the next chart below the current one\n", - " current_row += chart_height+4\n", - "\n", - " wb.save(filepath_workbook)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import Workbook\n", - "from openpyxl.chart import BarChart, Series, Reference\n", - "from openpyxl.chart.text import RichText\n", - "from openpyxl.drawing.text import CharacterProperties\n", - "\n", - "wb = load_workbook('output_v45_2.xlsx')\n", - "ws = wb['Electricity_Electricity_cumulat']\n", - "ws_charts=wb.create_sheet('stacked_bar_charts_cumulat_10')\n", - "\n", - "chart = BarChart()\n", - "chart.type = \"col\"\n", - "chart.style = 2\n", - "chart.grouping = \"stacked\"\n", - "chart.overlap = 100\n", - "\n", - "chart.title = \"Stacked bar chart\"\n", - "chart.y_axis.title = \"method unit\"\n", - "chart.x_axis.title = \"activity indexes\"\n", - "\n", - "# Avoid overlap\n", - "chart.title.overlay = False\n", - "chart.x_axis.title.overlay = False\n", - "chart.y_axis.title.overlay = False \n", - "chart.legend.overlay = False\n", - "\n", - "# define data\n", - "data = Reference(ws, min_col=15, min_row=1, max_row=11, max_col = 19)\n", - "cats = Reference(ws, min_col=1, min_row=2, max_row=11)\n", - "\n", - "chart.add_data(data, titles_from_data=True)\n", - "chart.set_categories(cats)\n", - "chart.shape = 7 #what is this for?\n", - "\n", - "# Modify each series in the chart to disable the inversion of negative values \n", - "for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - "# y-axis ticks\n", - "chart.y_axis.tickLblPos = \"nextTo\"\n", - "chart.y_axis.delete = False # Ensure axis is not deleted\n", - "chart.y_axis.number_format = '0.000'\n", - "\n", - "ws_charts.add_chart(chart, \"B1\")\n", - "wb.save('output_v47_2.xlsx')\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/jupyter_dopo_test1.ipynb b/dev/notebook tests/jupyter_dopo_test1.ipynb deleted file mode 100644 index 0c79494..0000000 --- a/dev/notebook tests/jupyter_dopo_test1.ipynb +++ /dev/null @@ -1,4913 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "3e1ffe53-e204-4ccf-bd45-f29f2f3f0d45", - "metadata": {}, - "outputs": [], - "source": [ - "import dopo" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "aa0ef4e3-b2a6-46ef-b0bf-324559920d0f", - "metadata": {}, - "outputs": [], - "source": [ - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "7516140d-2999-4f80-8c76-a6518d0ce40e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2e79a2fe-f182-4ac7-8c20-03746e7cf3d6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\u001b[1;31mType:\u001b[0m Databases\n", - "\u001b[1;31mString form:\u001b[0m\n", - "Databases dictionary with 4 object(s):\n", - "\tbiosphere3\n", - "\tecoinvent 3.8 cutoff\n", - "\tecoinvent 3.9.1 cutoff\n", - "\tei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "\u001b[1;31mLength:\u001b[0m 4\n", - "\u001b[1;31mFile:\u001b[0m c:\\users\\fried\\miniconda3\\envs\\premise\\lib\\site-packages\\bw2data\\meta.py\n", - "\u001b[1;31mDocstring:\u001b[0m A dictionary for database metadata. This class includes methods to manage database versions. File data is saved in ``databases.json``." - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "bw.databases?" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "47a7d1ca-98a5-4b86-a72a-e808cdedff5a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "21238" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(ei39)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0748dd99-1d5c-4a49-9ebe-88427f73d014", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "25049" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(ei39SSP2)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "0490cc16-bba4-45ac-94e8-cec08da0620a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'carbon dioxide storage from hard coal, oxy, pipeline 400km, storage 3000m' (kilogram, RSAF, None)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ei39SSP2.random()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "fc59dd39-a878-4ede-9a4c-2e97a5b64bca", - "metadata": {}, - "outputs": [], - "source": [ - "fp_yaml='cement_concrete.yaml'\n", - "material_sectors=dopo.generate_sets_from_filters(fp_yaml, database=ei39)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b867fd79-4ebb-4656-be93-d09959c8863f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'cement production, CP II-F' (kilogram, BR, None),\n", - " 'cement production, CEM V/A' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, type S' (kilogram, US, None),\n", - " 'cement production, Portland' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM II/A-V' (kilogram, ZA, None),\n", - " 'cement production, CEM II/B-S' (kilogram, ZA, None),\n", - " 'cement production, CEM III/A' (kilogram, CH, None),\n", - " 'cement production, CP V RS' (kilogram, BR, None),\n", - " 'cement production, Portland' (kilogram, US, None),\n", - " 'cement production, CEM IV/B' (kilogram, RoW, None),\n", - " 'cement production, Portland' (kilogram, PE, None),\n", - " 'cement production, Portland Slag' (kilogram, IN, None),\n", - " 'cement production, CP II-Z' (kilogram, BR, None),\n", - " 'cement production, CEM III/A' (kilogram, RoW, None),\n", - " 'cement production, CEM V/A' (kilogram, CH, None),\n", - " 'cement production, CEM V/B' (kilogram, CH, None),\n", - " 'cement production, CEM III/B' (kilogram, RoW, None),\n", - " 'cement production, CEM III/C' (kilogram, RoW, None),\n", - " 'cement production, CEM III/B' (kilogram, CH, None),\n", - " 'cement production, CEM II/A-S' (kilogram, ZA, None),\n", - " 'cement production, CEM III/C' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM II/A' (kilogram, RoW, None),\n", - " 'cement production, CEM IV/A' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, Portland' (kilogram, RoW, None),\n", - " 'cement production, CEM IV/A' (kilogram, CH, None),\n", - " 'cement production, CEM II/B' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM IV/A' (kilogram, RoW, None),\n", - " 'cement production, CEM III/A' (kilogram, ZA, None),\n", - " 'cement production, CEM II/A-L' (kilogram, ZA, None),\n", - " 'cement production, CEM II/B-V' (kilogram, ZA, None),\n", - " 'cement production, CEM III/B' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM II/A' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, Portland' (kilogram, ZA, None),\n", - " 'cement production, CEM II/B-L' (kilogram, ZA, None),\n", - " 'cement production, CEM II/B' (kilogram, CH, None),\n", - " 'cement production, CP IV' (kilogram, BR, None),\n", - " 'cement production, CEM V/B' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CP III' (kilogram, BR, None),\n", - " 'cement production, type IP' (kilogram, PE, None),\n", - " 'cement production, type general use' (kilogram, CO, None),\n", - " 'cement production, CP II-E' (kilogram, BR, None),\n", - " 'cement production, Portland' (kilogram, BR, None),\n", - " 'cement production, CEM V/A' (kilogram, RoW, None),\n", - " 'cement production, type IS' (kilogram, US, None),\n", - " 'cement production, CEM II/B' (kilogram, RoW, None),\n", - " 'cement production, CEM II/A' (kilogram, CA-QC, None),\n", - " 'cement production, CEM V/B' (kilogram, RoW, None),\n", - " 'cement production, ART' (kilogram, CO, None),\n", - " 'cement production, CEM III/A' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, type I (SM)' (kilogram, US, None),\n", - " 'cement production, CEM II/A' (kilogram, CH, None),\n", - " 'cement production, CEM IV/B' (kilogram, CH, None),\n", - " 'cement production, Pozzolana Portland' (kilogram, IN, None),\n", - " 'cement production, Portland' (kilogram, CH, None),\n", - " 'cement production, CEM IV/B' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM III/C' (kilogram, CH, None),\n", - " 'cement production, type ICo' (kilogram, PE, None),\n", - " 'cement production, type IP/P' (kilogram, US, None),\n", - " 'cement production, Portland' (kilogram, IN, None),\n", - " 'cement production, Portland' (kilogram, CA-QC, None),\n", - " 'cement production, type I-PM' (kilogram, US, None)},\n", - " 'Concrete': {'concrete production, 25MPa, for building construction, with cement, CEM II/A' (cubic meter, RoW, None),\n", - " 'concrete production, 37MPa, for civil engineering, with cement, CEM II/B' (cubic meter, CH, None),\n", - " 'concrete production, 50MPa, with cement, Portland' (cubic meter, RoW, None),\n", - " 'unreinforced concrete production, 15MPa, with cement ZN/D' (cubic meter, CH, None),\n", - " 'concrete production, 25MPa, for building construction, for interior use, with cement ZN/D, with 50% RC-C aggregates' (cubic meter, CH, None),\n", - " 'concrete production, 37MPa, for building construction, for exterior use, with cement ZN/D' (cubic meter, CH, None),\n", - " 'concrete production, 30MPa, exposure classes XC3/XD2/XF1/XA1, with cement, unspecified' (cubic meter, AT, None),\n", - " 'concrete production, 25MPa, for building construction, for interior use, with cement ZN/D, with <30% RC-M aggregates' (cubic meter, CH, None),\n", - " 'concrete production, 30MPa, for drilled piles, with cement ZN/D' (cubic meter, CH, None),\n", - " 'concrete production, 35MPa, with cement, CEM II/B-V' (cubic meter, ZA, None),\n", - " 'concrete production, 40MPa, for civil engineering, with cement, CEM II/B' (cubic meter, GLO, None),\n", - " 'concrete production, 20MPa, with cement, CEM II/B-V' (cubic meter, ZA, None),\n", - " 'concrete production, 25MPa, for building construction, exposure class XC1, with cement, unspecified' (cubic meter, AT, None),\n", - " 'concrete production, 25MPa, for building construction, for interior use, with cement, Portland' (cubic meter, CA-QC, None),\n", - " 'concrete production, 20MPa, for building construction, with cement, ART' (cubic meter, CO, None),\n", - " 'concrete production, 50MPa, with cement, CEM II/B' (cubic meter, GLO, None),\n", - " 'concrete production, 35MPa, for civil engineering, for exterior use, with cement, Portland' (cubic meter, North America without Quebec, None),\n", - " 'concrete production, 30MPa, for building construction, with cement, CEM III/A' (cubic meter, GLO, None),\n", - " 'concrete production, 25MPa, for building construction, with cement, CP-II-F' (cubic meter, BR, None),\n", - " 'concrete production, 25MPa, for building construction, for interior use, with cement, Portland' (cubic meter, North America without Quebec, None),\n", - " 'concrete production, 30MPa, for building construction, for interior use, with cement ZN/D, with 50% RC-C aggregates' (cubic meter, CH, None),\n", - " 'concrete production, 40MPa, for building construction, with cement, CP-II-E' (cubic meter, BR, None),\n", - " 'concrete production, 40MPa, for civil engineering, with cement, Portland' (cubic meter, RoW, None),\n", - " 'concrete production, 30MPa, with cement, CEM II/B-V' (cubic meter, ZA, None),\n", - " 'concrete production, 50MPa, with cement, Portland' (cubic meter, North America without Quebec, None),\n", - " 'concrete production, 30MPa, for drilled piles, with cement, CEM II/A' (cubic meter, CH, None),\n", - " 'concrete production, 40MPa, for civil engineering, with cement, type IP' (cubic meter, PE, None),\n", - " 'concrete production, 35MPa, for building construction, with cement, CEM III/A' (cubic meter, GLO, None),\n", - " 'concrete production, 25MPa, for building construction, for interior use, with cement ZN/D' (cubic meter, CH, None),\n", - " 'concrete production, 37MPa, for building construction, for interior use, with cement ZN/D, with 35% RC-C aggregates' (cubic meter, CH, None),\n", - " 'concrete production, 40MPa, for civil engineering, with cement, Portland' (cubic meter, PE, None),\n", - " 'concrete production, 40MPa, for building construction, with cement, CP-II-F' (cubic meter, BR, None),\n", - " 'concrete production, 37MPa, for civil engineering, with cement, CEM II/A' (cubic meter, CH, None),\n", - " 'concrete production, 20MPa, for building construction, with cement, Portland' (cubic meter, PE, None),\n", - " 'concrete production, 30MPa, for building construction, for interior use, with cement ZN/D' (cubic meter, CH, None),\n", - " 'concrete production, 40MPa, for civil engineering, with cement, type ICo' (cubic meter, PE, None),\n", - " 'concrete production, 35MPa, for building construction, with cement, CEM II/A' (cubic meter, GLO, None),\n", - " 'concrete production, 40MPa, for civil engineering, with cement, ART' (cubic meter, CO, None),\n", - " 'concrete production, 40MPa, with cement, CEM II/B-V' (cubic meter, ZA, None),\n", - " 'concrete production, 37MPa, for civil engineering, with cement, Portland' (cubic meter, CH, None),\n", - " 'concrete production, 37MPa, for civil engineering, for deicing salt contact, with cement ZN/D' (cubic meter, CH, None),\n", - " 'concrete production, 35MPa, for building construction, with cement, CP-II-F' (cubic meter, BR, None),\n", - " 'concrete production, 20MPa, with cement, Portland' (cubic meter, North America without Quebec, None),\n", - " 'lean concrete production, for building construction, with cement ZN/D, with 100% RC-M aggregates' (cubic meter, CH, None),\n", - " 'concrete production, 30MPa, for building construction, with cement, CP-II-F' (cubic meter, BR, None),\n", - " 'concrete production, 25MPa, for building construction, with cement, CP-II-E' (cubic meter, BR, None),\n", - " 'concrete production, 20MPa, with cement, Portland' (cubic meter, RoW, None),\n", - " 'lean concrete production, with cement CEM II/B' (cubic meter, CH, None),\n", - " 'concrete production, 30-32MPa, with cement, Portland' (cubic meter, CA-QC, None),\n", - " 'concrete production, 50MPa, with cement, Portland' (cubic meter, CA-QC, None),\n", - " 'concrete production, 40MPa, for building construction, with cement, CEM II/A' (cubic meter, GLO, None),\n", - " 'concrete production, 35MPa, for civil engineering, for exterior use, with cement, Portland' (cubic meter, CA-QC, None),\n", - " 'concrete production, 20MPa, self-construction, for building construction, with cement, type general use' (cubic meter, CO, None),\n", - " 'concrete production, 30MPa, for building construction, exposure class XC3, with cement, unspecified' (cubic meter, AT, None),\n", - " 'concrete production, 30MPa, for building construction, with cement, CP III' (cubic meter, BR, None),\n", - " 'concrete production, 30-32MPa, with cement, Portland' (cubic meter, North America without Quebec, None),\n", - " 'concrete production, 35MPa, for building construction, with cement, CP-II-E' (cubic meter, BR, None),\n", - " 'concrete production, 30MPa, for building construction, with cement, CP-II-E' (cubic meter, BR, None),\n", - " 'concrete production, 35MPa, with cement, CEM II/B' (cubic meter, GLO, None),\n", - " 'concrete production, 45MPa, with cement, CEM II/B-V' (cubic meter, ZA, None),\n", - " 'concrete production, 25MPa, for building construction, with cement, CEM III/A' (cubic meter, GLO, None),\n", - " 'concrete production, 40MPa, for building construction, with cement, CP III' (cubic meter, BR, None),\n", - " 'concrete production, 20MPa, self-construction, for building construction, with cement, type IP' (cubic meter, PE, None),\n", - " 'concrete production, 25MPa, for building construction, exposure class XC2, with cement, unspecified' (cubic meter, AT, None),\n", - " 'unreinforced concrete production, 15MPa, with cement, CEM II/A' (cubic meter, CH, None),\n", - " 'concrete production, 30MPa, for drilled piles, with cement, CEM II/B' (cubic meter, RoW, None),\n", - " 'concrete production, 45MPa, for building construction, with cement, CEM II/B' (cubic meter, GLO, None),\n", - " 'concrete production, 25MPa, for building construction, with cement, CEM II/B' (cubic meter, RoW, None),\n", - " 'concrete production, 25MPa, for building construction, with cement, CEM II/B' (cubic meter, CH, None),\n", - " 'concrete production, 25MPa, for building construction, with cement, CEM II/B-V' (cubic meter, ZA, None),\n", - " 'concrete production, 30MPa, for drilled piles, with cement, Portland' (cubic meter, RoW, None),\n", - " 'concrete production, 25-30MPa, with cement, Portland' (cubic meter, IN, None),\n", - " 'concrete production, 20MPa, self-construction, for building construction, with cement, Portland' (cubic meter, PE, None),\n", - " 'lean concrete production, with cement CEM II/A' (cubic meter, CH, None),\n", - " 'concrete production, 20MPa, self-construction, for building construction, with cement, type ICo' (cubic meter, PE, None),\n", - " 'concrete production, 20MPa, for building construction, with cement, type ICo' (cubic meter, PE, None),\n", - " 'lean concrete production, with cement CEM II/B' (cubic meter, RoW, None),\n", - " 'lean concrete production, with cement CEM II/A' (cubic meter, RoW, None),\n", - " 'concrete production, 35MPa, for building construction, with cement, CP III' (cubic meter, BR, None),\n", - " 'lean concrete production, for building construction, with cement ZN/D' (cubic meter, CH, None),\n", - " 'concrete production, 25MPa, for building construction, with cement, CEM II/A' (cubic meter, CH, None),\n", - " 'concrete production, 30MPa, for drilled piles, with cement, Portland' (cubic meter, CH, None),\n", - " 'concrete production, 20MPa, with cement, CEM II/B' (cubic meter, GLO, None),\n", - " 'concrete production, 20MPa, with cement, Portland' (cubic meter, CA-QC, None),\n", - " 'concrete production, 20MPa, for building construction, with cement, type IP' (cubic meter, PE, None),\n", - " 'concrete production, 40MPa, for building construction, with cement, CEM III/A' (cubic meter, GLO, None),\n", - " 'concrete production, 40MPa, for civil engineering, with cement, CEM IV/B' (cubic meter, GLO, None),\n", - " 'concrete production, 35MPa, for civil engineering, for exterior use, with cement, Portland' (cubic meter, RoW, None),\n", - " 'concrete production, 30MPa, for drilled piles, with cement, CEM II/B' (cubic meter, CH, None),\n", - " 'concrete production, 50MPa, with cement, CEM II/B-V' (cubic meter, ZA, None),\n", - " 'concrete production, 30MPa, for building construction, for interior use, with cement ZN/D, with 30% RC-M aggregates' (cubic meter, CH, None),\n", - " 'concrete production, 30MPa, for drilled piles, with cement, CEM II/A' (cubic meter, RoW, None),\n", - " 'unreinforced concrete production, 15MPa, with cement, CEM II/B' (cubic meter, CH, None),\n", - " 'concrete production, 25MPa, for building construction, with cement, CP III' (cubic meter, BR, None),\n", - " 'concrete production, 25MPa, for building construction, for interior use, with cement, Portland' (cubic meter, RoW, None)},\n", - " 'Steel': {'steel production, low-alloyed, hot rolled' (kilogram, RoW, None),\n", - " 'steel production, low-alloyed, hot rolled' (kilogram, RER, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, CH, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, AT, None),\n", - " 'steel production, converter, unalloyed' (kilogram, RoW, None),\n", - " 'steel production, converter, unalloyed' (kilogram, RER, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, IN, None),\n", - " 'steel production, chromium steel 18/8, hot rolled' (kilogram, RoW, None),\n", - " 'steel production, electric, chromium steel 18/8' (kilogram, RER, None),\n", - " 'reinforcing steel production' (kilogram, AT, None),\n", - " 'reinforcing steel production' (kilogram, Europe without Austria, None),\n", - " 'steel production, converter, low-alloyed' (kilogram, RER, None),\n", - " 'reinforcing steel production' (kilogram, RoW, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, CA-QC, None),\n", - " 'steel production, chromium steel 18/8, hot rolled' (kilogram, RER, None),\n", - " 'steel production, electric, chromium steel 18/8' (kilogram, RoW, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, Europe without Switzerland and Austria, None),\n", - " 'steel production, converter, low-alloyed' (kilogram, IN, None),\n", - " 'steel production, converter, low-alloyed' (kilogram, RoW, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, RoW, None)},\n", - " 'Electricity production all': {'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, SK, None),\n", - " 'electricity production, peat' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, LT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, EE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, SE, None),\n", - " 'electricity production, lignite' (kilowatt hour, ID, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, ID, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TW, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RS, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, oil' (kilowatt hour, RU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CL, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, natural gas, aluminium industry' (kilowatt hour, IAI Area, South America, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, hard coal' (kilowatt hour, AR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, GB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, EE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, ID, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, AT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TH, None),\n", - " 'electricity production, oil' (kilowatt hour, SI, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SK, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, oil' (kilowatt hour, BG, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, NL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, NO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, TH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, BE, None),\n", - " 'electricity production, lignite' (kilowatt hour, SI, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MT, None),\n", - " 'electricity production, compressed air energy storage, adiabatic' (kilowatt hour, RoW, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, DE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, HR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, oil' (kilowatt hour, PE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, FI, None),\n", - " 'electricity production, hard coal' (kilowatt hour, GB, None),\n", - " 'electricity production, oil' (kilowatt hour, FR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, PL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, CO, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, LV, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, oil, aluminium industry' (kilowatt hour, IAI Area, EU27 & EFTA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, BG, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, oil, aluminium industry' (kilowatt hour, IAI Area, Gulf Cooperation Council, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-PY, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DD, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, KR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, FI, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, HR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SK, None),\n", - " 'electricity production, oil' (kilowatt hour, GB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, BG, None),\n", - " 'electricity production, hard coal' (kilowatt hour, HR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, oil' (kilowatt hour, NP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BG, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, compressed air energy storage, adiabatic' (kilowatt hour, RER, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, AR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hard coal' (kilowatt hour, MX, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, NO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, EE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, LU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IT, None),\n", - " 'electricity production, lignite' (kilowatt hour, IT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PL, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, IE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, FR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, lignite' (kilowatt hour, HU, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CY, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, oil' (kilowatt hour, RO, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, BE, None),\n", - " 'electricity production, oil' (kilowatt hour, GR, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, compressed air energy storage' (kilowatt hour, RER, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, CH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, TR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AT, None),\n", - " 'electricity production, oil' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ID, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, LV, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, JP, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, HU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, GR, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, KE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, UA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, DE, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, MX, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, ES, None),\n", - " 'electricity production, oil' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CL, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, SI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, IAI Area, Africa, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, HU, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, 2.3MW turbine, precast concrete tower, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, GB, None),\n", - " 'electricity production, peat' (kilowatt hour, EE, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, AT, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, PL, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, AR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SI, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, IS, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, DE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, LU, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, lignite' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, DE, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, HU, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-SK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, GR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, LU, None),\n", - " 'electricity production, lignite' (kilowatt hour, TH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, MX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, GB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, PH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, MX, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, GB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, PE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, GB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-JK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, HR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, ES, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-PY, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, DK, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, RU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, MX, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, GB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, FI, None),\n", - " 'electricity production, hard coal' (kilowatt hour, FI, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, SK, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, ZA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, KR, None),\n", - " 'electricity production, high voltage, for Swiss Federal Railways' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, AU, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, RU, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IE, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MZ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, oil' (kilowatt hour, MK, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, GR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, lignite' (kilowatt hour, BA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, GR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, CA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, ZA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, HU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MK, None),\n", - " 'electricity production, oil' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, ZA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, IR, None),\n", - " 'electricity production, hard coal, at coal mine power plant' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, NL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, UA, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, PT, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, IT, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, UA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, TW, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, RO, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, RU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, RO, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, JP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, PE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, NO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-CH, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, peat' (kilowatt hour, FI, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TW, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, Africa, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, RO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, ES, None),\n", - " 'electricity production, hard coal' (kilowatt hour, KR, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, SV, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, oil' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, MK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, BG, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, UA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, HU, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, CN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, HU, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, KR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, JP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, MX, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, oil' (kilowatt hour, SK, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, oil' (kilowatt hour, TH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, TR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, BA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TZ, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, SI, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, medium voltage, petroleum refinery operation' (kilowatt hour, CO, None),\n", - " 'electricity production, lignite' (kilowatt hour, MX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, oil' (kilowatt hour, SA, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-GA, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, single-Si' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, FI, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, IAI Area, EU27 & EFTA, None),\n", - " 'electricity production, oil' (kilowatt hour, ES, None),\n", - " 'electricity production, hard coal' (kilowatt hour, FR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, AT, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, NL, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CIS, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, LV, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IS, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, MX, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, DE, None),\n", - " 'electricity production, peat' (kilowatt hour, RU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-JK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CY, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted, renewable energy product' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, MY, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, UA, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, multi-Si' (kilowatt hour, CH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, TH, None),\n", - " 'electricity production, oil' (kilowatt hour, DK, None),\n", - " 'electricity production, lignite' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, RU, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, KR, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, EU27 & EFTA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, oil' (kilowatt hour, ID, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, BA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, TW, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, JP, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, LT, None),\n", - " 'electricity production, oil' (kilowatt hour, TZ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SA, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, FR, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, oil' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IR, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, ES, None),\n", - " 'electricity production, peat' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, oil' (kilowatt hour, HR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, FR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, lignite' (kilowatt hour, TR, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, oil' (kilowatt hour, PL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, FR, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-GA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted, renewable energy produc' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, NP, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, compressed air energy storage' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BG, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, medium voltage, petroleum refinery operation' (kilowatt hour, IN, None),\n", - " 'electricity production, lignite' (kilowatt hour, UA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CY, None),\n", - " 'electricity production, oil' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, PT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CIS, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, AT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, NL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, PT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, ES, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, GB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, oil' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, oil' (kilowatt hour, LV, None),\n", - " 'electricity production, nuclear, aluminium industry' (kilowatt hour, RNA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CZ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, oil' (kilowatt hour, LT, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, UN-OCEANIA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RO, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, NZ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, PE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, lignite' (kilowatt hour, HR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, oil' (kilowatt hour, BA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, NP, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, oil' (kilowatt hour, MY, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, SI, None),\n", - " 'electricity production, oil' (kilowatt hour, BE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, ZA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, GB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, NO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, UN-OCEANIA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, TW, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, RoW, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TW, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, PT, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, MY, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, DK, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BG, None),\n", - " 'electricity production, hard coal' (kilowatt hour, RoW, None),\n", - " 'electricity production, oil' (kilowatt hour, CY, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, LV, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, DE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, GR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, JP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, RoW, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TZ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, GR, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, oil' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, UA, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CY, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, lignite' (kilowatt hour, TW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PT, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SI, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, peat' (kilowatt hour, LT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, AT, None),\n", - " 'electricity production, nuclear, boiling water reactor' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, NL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, oil' (kilowatt hour, FI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AR, None),\n", - " 'electricity production, lignite' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, oil' (kilowatt hour, IE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, MY, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, PT, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BG, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, HU, None),\n", - " 'electricity production, lignite' (kilowatt hour, MK, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-DN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, LT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, DK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, ZA, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, IT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, BE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, oil' (kilowatt hour, CO, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, TW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-JL, None),\n", - " ...},\n", - " 'Electricity production fossil': {'electricity production, oil' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CL, None),\n", - " 'electricity production, oil' (kilowatt hour, RoW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, oil' (kilowatt hour, AR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, MX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, FR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, MX, None),\n", - " 'electricity production, lignite' (kilowatt hour, ES, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, oil' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, SI, None),\n", - " 'electricity production, oil' (kilowatt hour, PE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, oil' (kilowatt hour, IR, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, ID, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, TR, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-DN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, LV, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, NO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-GA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, SE, None),\n", - " 'electricity production, oil' (kilowatt hour, GB, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, oil' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IE, None),\n", - " 'electricity production, lignite' (kilowatt hour, RS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-TR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, oil' (kilowatt hour, PT, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, lignite' (kilowatt hour, IT, None),\n", - " 'electricity production, oil' (kilowatt hour, AU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, high voltage, for Swiss Federal Railways' (kilowatt hour, CH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, PT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, AT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, JP, None),\n", - " 'electricity production, lignite' (kilowatt hour, GR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, oil' (kilowatt hour, BG, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, UA, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-JK, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, PE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, oil' (kilowatt hour, IT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, UA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, GR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, lignite' (kilowatt hour, RO, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, CH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, oil' (kilowatt hour, TH, None),\n", - " 'electricity production, oil' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, oil' (kilowatt hour, CO, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, oil' (kilowatt hour, DK, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, PL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AU, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, lignite' (kilowatt hour, ID, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, PT, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, GB, None),\n", - " 'electricity production, oil' (kilowatt hour, MX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, FI, None),\n", - " 'electricity production, oil' (kilowatt hour, HR, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SA, None),\n", - " 'electricity production, lignite' (kilowatt hour, PL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, GR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, oil' (kilowatt hour, FI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, MX, None),\n", - " 'electricity production, lignite' (kilowatt hour, TW, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, oil' (kilowatt hour, BA, None),\n", - " 'electricity production, peat' (kilowatt hour, RoW, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, FR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, PE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, TH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, PT, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IR, None),\n", - " 'electricity production, lignite' (kilowatt hour, TH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IE, None),\n", - " 'electricity production, oil' (kilowatt hour, ZA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, oil' (kilowatt hour, IS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, oil' (kilowatt hour, HU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hard coal, conventional' (kilowatt hour, ZA, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, oil' (kilowatt hour, MY, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, GB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IT, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, FI, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, GB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TR, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, MY, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, oil' (kilowatt hour, PL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, ID, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CZ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, lignite' (kilowatt hour, AU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-DN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BG, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, oil' (kilowatt hour, NL, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-GA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-GA, None),\n", - " 'electricity production, hard coal, supercritical' (kilowatt hour, ZA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, lignite' (kilowatt hour, TR, None),\n", - " 'electricity production, lignite' (kilowatt hour, HR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, JP, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, MY, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, lignite' (kilowatt hour, BG, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, oil' (kilowatt hour, CZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, EE, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, oil' (kilowatt hour, ES, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, oil' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, lignite' (kilowatt hour, RU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, NL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, oil' (kilowatt hour, LU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, lignite' (kilowatt hour, RoW, None),\n", - " 'electricity production, oil' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, lignite' (kilowatt hour, UA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IE, None),\n", - " 'electricity production, hard coal, at coal mine power plant' (kilowatt hour, RoW, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, hard coal, at coal mine power plant' (kilowatt hour, CN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, TW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, oil' (kilowatt hour, RO, None),\n", - " 'electricity production, lignite' (kilowatt hour, MX, None),\n", - " 'electricity production, lignite' (kilowatt hour, HU, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, oil' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, oil' (kilowatt hour, CL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, FI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, oil' (kilowatt hour, NO, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, oil' (kilowatt hour, NP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, HR, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, oil' (kilowatt hour, ID, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TZ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, KR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, HR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, FR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, oil' (kilowatt hour, LT, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, HU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, HR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, AU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TH, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, LV, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, oil' (kilowatt hour, SK, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, KR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, oil' (kilowatt hour, SI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TZ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, RoW, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, lignite' (kilowatt hour, MK, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, oil' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, peat' (kilowatt hour, EE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, cobalt industry' (kilowatt hour, GLO, None),\n", - " 'electricity production, oil' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, lignite' (kilowatt hour, BA, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, peat' (kilowatt hour, IE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, SK, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, oil' (kilowatt hour, LV, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, oil' (kilowatt hour, AT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, ES, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MZ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hard coal' (kilowatt hour, UA, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, oil' (kilowatt hour, UA, None),\n", - " 'electricity production, oil' (kilowatt hour, MT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, NO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, LU, None),\n", - " 'electricity production, oil' (kilowatt hour, BE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, RoW, None),\n", - " 'electricity production, oil' (kilowatt hour, SA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BG, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-TR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CO, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-SK, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, SA, None),\n", - " 'electricity production, oil' (kilowatt hour, IE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, lignite' (kilowatt hour, SI, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, oil' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, ES, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, RoW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, RoW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, LU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, MT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, oil' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, peat' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CY, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, ZA, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, AR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, oil' (kilowatt hour, FR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BG, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CL, None),\n", - " 'electricity production, peat' (kilowatt hour, LT, None),\n", - " 'electricity production, oil' (kilowatt hour, TZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-PY, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-PY, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, JP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, RO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, oil' (kilowatt hour, JP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, RO, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, NL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, KR, None),\n", - " 'electricity production, peat' (kilowatt hour, FI, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SK, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TW, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SE, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, oil' (kilowatt hour, GR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, PE, None),\n", - " 'electricity production, oil' (kilowatt hour, EE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, HU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, DE, None),\n", - " 'electricity production, lignite' (kilowatt hour, DE, None),\n", - " 'electricity production, oil' (kilowatt hour, TR, None),\n", - " 'electricity production, oil' (kilowatt hour, MK, None),\n", - " 'electricity production, lignite' (kilowatt hour, KR, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, lignite' (kilowatt hour, CZ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, ES, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, peat' (kilowatt hour, SE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, TW, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, oil' (kilowatt hour, CY, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, MY, None),\n", - " 'electricity production, oil' (kilowatt hour, KR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HN, None)},\n", - " 'Electricity production renewables': {'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, peat' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, SK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, KR, None),\n", - " 'electricity production, high voltage, for Swiss Federal Railways' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, NO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, DK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CZ, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, SK, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, EE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, GR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, AU, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, GR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RO, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, NZ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, CA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, ZA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, NP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, ID, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TW, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CZ, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, ZA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, DK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, NO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, NL, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, UN-OCEANIA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, KR, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RS, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, DK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, UA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, ES, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, GB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, UA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, LV, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, LV, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, EE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, GR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CdTe, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, TW, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, ID, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, GR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, ID, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TH, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, CN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, UA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RO, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, BE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SK, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, BE, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, NO, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, TH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, LT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, LU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, NP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, NO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CY, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, TR, None),\n", - " 'electricity production, peat' (kilowatt hour, FI, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RO, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, single-Si' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, ES, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BE, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MT, None),\n", - " 'electricity production, compressed air energy storage, adiabatic' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, Africa, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CY, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, HR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, ZA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, peat' (kilowatt hour, LT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, ES, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, SV, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, ZA, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, EE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, AR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, AT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, PL, None),\n", - " 'electricity production, wood, future' (kilowatt hour, GLO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, CO, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, LV, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, TZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, MK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, BG, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SI, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, MX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, FR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, NL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, UA, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, BA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, AT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-PY, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, LV, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, HU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, LV, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, FR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, JP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, MX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, SI, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, LT, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SK, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, BG, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, RO, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BG, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, MX, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, EE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, compressed air energy storage, adiabatic' (kilowatt hour, RER, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, DK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, TR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, AR, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, BA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, NO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, EE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, FI, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, TH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, TW, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CO, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, PT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, BG, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, TR, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, IE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-SK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, AT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, ID, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, NL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, LT, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, single-Si' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, FI, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, RO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, BG, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, GB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CY, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, Russia & RER w/o EU27 & EFTA, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, UA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, AT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IE, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, MY, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, BE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, compressed air energy storage' (kilowatt hour, RER, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, TR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-MZ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CIS, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ID, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, DE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, PE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, HU, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, AR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, SK, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, LT, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, MX, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, peat' (kilowatt hour, RU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, RS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, MK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-JK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, HR, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, LV, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, GR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, FR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RS, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CY, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted, renewable energy product' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, UA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, BG, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, PT, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, multi-Si' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, RU, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, HU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MY, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, GR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, KE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, TW, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RU, None),\n", - " 'electricity production, hydro, run-of-river, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, FR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, FI, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, PT, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, EU27 & EFTA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, BA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, ES, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, TW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, GB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, NO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, South America, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, SI, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, LT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, TR, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, AR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, MK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CH, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, 2.3MW turbine, precast concrete tower, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, GB, None),\n", - " 'electricity production, peat' (kilowatt hour, EE, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, RU, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, FR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-TR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MY, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-TR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TZ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, TR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, AT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-AR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, PL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MX, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CZ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, reservoir, alpine region, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, peat' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SI, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, IS, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CZ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CO, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, UA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, peat' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, RU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, GR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, PH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, SI, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, MX, None),\n", - " 'electricity production, cobalt industry' (kilowatt hour, GLO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, GB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, AR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SA, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, TW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, FR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted, renewable energy produc' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, NP, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CZ, None),\n", - " 'electricity production, compressed air energy storage' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, Asia, without China and GCC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, HR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, DK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, LV, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BG, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, DE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, NI, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-JK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CY, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, multi-Si' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CIS, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, SK, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, DK, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, AT, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, FR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CdTe, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-AR, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, PL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, GB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, MX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-RFC, None),\n", - " ...},\n", - " 'Electricity production nuclear': {'electricity production, nuclear, pressure water reactor' (kilowatt hour, JP, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, IR, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, DE, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, LV, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, SE, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, FR, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, RU, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, KR, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, ZA, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, KR, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, high voltage, for Swiss Federal Railways' (kilowatt hour, CH, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, RO, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, ES, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, BG, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, JP, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, UA, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, AR, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, RoW, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CZ, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, TW, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, NL, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, FI, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, RoW, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, HU, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, RU, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, SI, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CH, None),\n", - " 'electricity production, cobalt industry' (kilowatt hour, GLO, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, GB, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, SK, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, LT, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, RO, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, BE, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, nuclear, pressure water reactor, heavy water moderated' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, nuclear, pressure water reactor' (kilowatt hour, CN-GX, None)},\n", - " 'Electricity production biomass': set(),\n", - " 'Electricity production biomethane': set(),\n", - " 'Electricity production hydro': {'electricity production, hydro, run-of-river' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RO, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, LU, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, DE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CL, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, BA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, NL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, ZA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-TR, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, SK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, BG, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, LV, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, FR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, NP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-AR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, GR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, TH, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, GR, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, CA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, EU27 & EFTA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, DK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, KR, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, BG, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, FR, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RS, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, UA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, TR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-JK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, FI, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-MZ, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, Africa, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, TZ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-JK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, GB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, NO, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, BA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, NO, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, MY, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, PE, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RoW, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, PL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, HU, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, UA, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, ID, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, KR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-SK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, MK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, SE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, SI, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, MK, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IS, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, RS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, LV, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MZ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, KR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, AT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, DE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, PL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, FI, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, TW, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, GB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, LU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, RS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, ZA, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, Asia, without China and GCC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RU, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, UN-OCEANIA, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, RU, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, SK, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CZ, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, BA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hydro, reservoir, alpine region, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, FR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, JP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, South America, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, LT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, AT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, AT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, ZA, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, EE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, TW, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, AU, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, BE, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, PT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, SK, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, DE, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, SI, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, HR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, LT, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, RO, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, BE, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hydro, run-of-river, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, TR, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, CZ, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, MX, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, CH, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, IAI Area, Russia & RER w/o EU27 & EFTA, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, ES, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, aluminium industry' (kilowatt hour, CN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IT, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, CO, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, hydro, reservoir, tropical region' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, hydro, reservoir, non-alpine region' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, AR, None),\n", - " 'electricity production, hydro, reservoir, alpine region' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, hydro, run-of-river' (kilowatt hour, CZ, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, hydro, pumped storage' (kilowatt hour, CN-SD, None)},\n", - " 'Electricity production geothermal': {'electricity production, deep geothermal' (kilowatt hour, AT, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, ZA, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, PH, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, RoW, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, DE, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, MX, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, PL, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, NI, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, HU, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, FR, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CR, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, LT, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, ID, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, PT, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, GB, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, TR, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, IS, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, NZ, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, KE, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, JP, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, RU, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, TH, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, LV, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, IT, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CL, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CZ, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, CH, None),\n", - " 'electricity production, deep geothermal' (kilowatt hour, SV, None)},\n", - " 'Electricity production photovoltaic': {'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-PY, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, NL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, PT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ES, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RU, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, GR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CY, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BG, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TH, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, single-Si' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CZ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, PT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, PT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CdTe, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, AR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ID, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, BG, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-TR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, GR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, MX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RO, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, FR, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CIS, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, ES, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, GB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, FR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, HR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, LT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, NP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TZ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, AT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, PL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, DK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, SI, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-AR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, ZA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, HU, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, PL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, GB, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CdTe, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, ES, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, AT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, LT, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, IT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, AT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, FR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, HR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, NL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, multi-Si' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, single-Si' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, CIS, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CY, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, ribbon-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, LU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted, renewable energy produc' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, GB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted, renewable energy product' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, panel, mounted' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, ZA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SA, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, laminated, integrated' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, RO, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MX, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, RS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, NL, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, a-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, LV, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, UA, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, DE, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, FI, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, MY, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, JP, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, UA, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, KR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-DD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, AU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, MY, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, single-Si, panel, mounted' (kilowatt hour, RoW, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, TR, None),\n", - " 'electricity production, photovoltaic, 3kWp flat-roof installation, multi-Si' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, IT, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, TR, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, DK, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, SI, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, BE, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, LU, None),\n", - " 'electricity production, photovoltaic, 3kWp facade installation, multi-Si, laminated, integrated' (kilowatt hour, CH, None),\n", - " 'electricity production, photovoltaic, 570kWp open ground installation, multi-Si' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, ID, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, single-Si, panel, mounted' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, photovoltaic, 3kWp slanted-roof installation, multi-Si, panel, mounted' (kilowatt hour, IN-JH, None)},\n", - " 'Electricity production solar': {'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, ES, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, ZA, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, RoW, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, AU, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, ZA, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, RoW, None),\n", - " 'electricity production, solar tower power plant, 20 MW' (kilowatt hour, ES, None),\n", - " 'electricity production, solar thermal parabolic trough, 50 MW' (kilowatt hour, US-SERC, None)},\n", - " 'Electricity production wind': {'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, TR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BG, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, BG, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, LV, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CY, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, wind, <1MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, HR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, AU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, BE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, NO, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, UA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, FI, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, NP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, MX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, NO, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, AR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, LV, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, TW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CY, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, DK, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, DK, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, wind, 2.3MW turbine, precast concrete tower, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, BE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, NO, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, IE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, TW, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PE, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, AU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, EE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, EE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, RO, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, NO, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, JP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CY, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, LV, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, LU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, MX, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, UA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, EE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, BG, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, RO, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, EE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, FI, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, TR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, DK, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, TW, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, UA, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, DK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, MX, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, HR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, FI, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, SK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, RU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, GR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, HU, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, AU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, HR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CO, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, FI, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, SK, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, LT, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, AT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, TR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, MK, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, GR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, ZA, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, RoW, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, SE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, GR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, NL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, KR, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, wind, 1-3MW turbine, offshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, FR, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, wind, >3MW turbine, onshore, renewable energy products' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, ES, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, ID, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, SI, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CL, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, PE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, DE, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, BE, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, AR, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, GB, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, PT, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, JP, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, wind, <1MW turbine, onshore' (kilowatt hour, IT, None),\n", - " 'electricity production, wind, >3MW turbine, onshore' (kilowatt hour, RO, None),\n", - " 'electricity production, wind, 1-3MW turbine, onshore' (kilowatt hour, CA-PE, None)},\n", - " 'Electricity production wood': {'electricity production, wood, future' (kilowatt hour, GLO, None)},\n", - " 'Electricity production wave energy': set(),\n", - " 'Electricity production coal': {'electricity production, hard coal' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, FR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, MX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, RU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, PT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, AT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, JP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, PE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CO, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, IAI Area, EU27 & EFTA, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, CN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, UN-OCEANIA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, hard coal, conventional' (kilowatt hour, ZA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, GB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, MY, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, hard coal, supercritical' (kilowatt hour, ZA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, EE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, NL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, RoW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, FI, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, HR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TZ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, RNA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, AU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, LV, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, IAI Area, Russia & RER w/o EU27 & EFTA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, hard coal' (kilowatt hour, UA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, IAI Area, Asia, without China and GCC, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, ES, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, RoW, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, hard coal' (kilowatt hour, AR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BG, None),\n", - " 'electricity production, hard coal' (kilowatt hour, TH, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, coal, aluminium industry' (kilowatt hour, IAI Area, Africa, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, hard coal' (kilowatt hour, KR, None),\n", - " 'electricity production, hard coal' (kilowatt hour, DE, None),\n", - " 'electricity production, hard coal' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, hard coal' (kilowatt hour, CZ, None)},\n", - " 'Electricity production lignite': {'electricity production, lignite' (kilowatt hour, ES, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, lignite' (kilowatt hour, RS, None),\n", - " 'electricity production, lignite' (kilowatt hour, IT, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, lignite' (kilowatt hour, GR, None),\n", - " 'electricity production, lignite' (kilowatt hour, RO, None),\n", - " 'electricity production, lignite' (kilowatt hour, ID, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, lignite' (kilowatt hour, PL, None),\n", - " 'electricity production, lignite' (kilowatt hour, TW, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, lignite' (kilowatt hour, TH, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, lignite' (kilowatt hour, AU, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, lignite' (kilowatt hour, TR, None),\n", - " 'electricity production, lignite' (kilowatt hour, HR, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, lignite' (kilowatt hour, BG, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, lignite' (kilowatt hour, RU, None),\n", - " 'electricity production, lignite' (kilowatt hour, RoW, None),\n", - " 'electricity production, lignite' (kilowatt hour, UA, None),\n", - " 'electricity production, lignite' (kilowatt hour, MX, None),\n", - " 'electricity production, lignite' (kilowatt hour, HU, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, lignite' (kilowatt hour, MK, None),\n", - " 'electricity production, lignite' (kilowatt hour, BA, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, lignite' (kilowatt hour, SI, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, lignite' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, lignite' (kilowatt hour, DE, None),\n", - " 'electricity production, lignite' (kilowatt hour, KR, None),\n", - " 'electricity production, lignite' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, lignite' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, lignite' (kilowatt hour, CZ, None)},\n", - " 'Electricity production natural gas': {'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, MX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, SI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, ID, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, TR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, LV, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, NO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-GA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-TR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, UA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, RU, None),\n", - " 'electricity production, natural gas, aluminium industry' (kilowatt hour, CA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, UA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, GR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, CH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, PL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, PT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, GB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, FI, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, GR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, MX, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, FR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, PE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, TH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, PT, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, natural gas, aluminium industry' (kilowatt hour, IAI Area, Gulf Cooperation Council, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, GB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, FI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, ID, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CZ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-DN, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, AT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, BG, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-GA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, JP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, MY, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, natural gas, aluminium industry' (kilowatt hour, IAI Area, South America, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, DE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SI, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, TW, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AT, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, KR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, HR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, FR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, HU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, HR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, KR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TZ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, RoW, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, SK, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, ES, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, NO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CH, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, LU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, RoW, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, BG, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-TR, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, SA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, natural gas, 10MW' (kilowatt hour, RoW, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, LU, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, MT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CY, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, ZA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-PY, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, IN-PY, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CO, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, JP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, RO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, AR, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, RO, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, NL, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SK, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, TW, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, SE, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, PE, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, HU, None),\n", - " 'electricity production, natural gas, aluminium industry' (kilowatt hour, IAI Area, EU27 & EFTA, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IT, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, ES, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, natural gas, combined cycle power plant' (kilowatt hour, RU, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, MY, None),\n", - " 'electricity production, natural gas, conventional power plant' (kilowatt hour, CN-HN, None)},\n", - " 'Electricity production oil': {'electricity production, oil' (kilowatt hour, IN-OR, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-North-eastern grid, None),\n", - " 'electricity production, oil' (kilowatt hour, RoW, None),\n", - " 'electricity production, oil' (kilowatt hour, AR, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-ON, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GZ, None),\n", - " 'electricity production, oil' (kilowatt hour, US-HICC, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SA, None),\n", - " 'electricity production, oil' (kilowatt hour, PE, None),\n", - " 'electricity production, oil' (kilowatt hour, IR, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GS, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-AB, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-JH, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-DN, None),\n", - " 'electricity production, oil' (kilowatt hour, SE, None),\n", - " 'electricity production, oil' (kilowatt hour, GB, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-XJ, None),\n", - " 'electricity production, oil' (kilowatt hour, DE, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GX, None),\n", - " 'electricity production, oil' (kilowatt hour, PT, None),\n", - " 'electricity production, oil' (kilowatt hour, AU, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NF, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-NX, None),\n", - " 'electricity production, oil' (kilowatt hour, BG, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-JK, None),\n", - " 'electricity production, oil' (kilowatt hour, IT, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HU, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-ZJ, None),\n", - " 'electricity production, oil' (kilowatt hour, TH, None),\n", - " 'electricity production, oil' (kilowatt hour, RU, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-CT, None),\n", - " 'electricity production, oil' (kilowatt hour, CO, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-FJ, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-JX, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-BC, None),\n", - " 'electricity production, oil' (kilowatt hour, DK, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-RJ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MN, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SC, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-TN, None),\n", - " 'electricity production, oil' (kilowatt hour, MX, None),\n", - " 'electricity production, oil' (kilowatt hour, HR, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-AP, None),\n", - " 'electricity production, oil' (kilowatt hour, FI, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-YN, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-TJ, None),\n", - " 'electricity production, oil' (kilowatt hour, BA, None),\n", - " 'electricity production, oil, aluminium industry' (kilowatt hour, IAI Area, Gulf Cooperation Council, None),\n", - " 'electricity production, oil' (kilowatt hour, ZA, None),\n", - " 'electricity production, oil' (kilowatt hour, IS, None),\n", - " 'electricity production, oil' (kilowatt hour, HU, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-LN, None),\n", - " 'electricity production, oil' (kilowatt hour, MY, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-HP, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-JL, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SH, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-ML, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-KL, None),\n", - " 'electricity production, oil' (kilowatt hour, PL, None),\n", - " 'electricity production, oil' (kilowatt hour, NL, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HN, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-GA, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-QC, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SD, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-CQ, None),\n", - " 'electricity production, oil' (kilowatt hour, CZ, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HE, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-MB, None),\n", - " 'electricity production, oil' (kilowatt hour, ES, None),\n", - " 'electricity production, oil' (kilowatt hour, US-SERC, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-SK, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-Northern grid, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-PE, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NU, None),\n", - " 'electricity production, oil' (kilowatt hour, LU, None),\n", - " 'electricity production, oil' (kilowatt hour, US-RFC, None),\n", - " 'electricity production, oil, aluminium industry' (kilowatt hour, IAI Area, EU27 & EFTA, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-HR, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NS, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-AH, None),\n", - " 'electricity production, oil' (kilowatt hour, RO, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-AS, None),\n", - " 'electricity production, oil' (kilowatt hour, US-TRE, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NT, None),\n", - " 'electricity production, oil' (kilowatt hour, CL, None),\n", - " 'electricity production, oil' (kilowatt hour, NO, None),\n", - " 'electricity production, oil' (kilowatt hour, NP, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MH, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HL, None),\n", - " 'electricity production, oil' (kilowatt hour, ID, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-BR, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-UP, None),\n", - " 'electricity production, oil' (kilowatt hour, LT, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-KA, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-DL, None),\n", - " 'electricity production, oil' (kilowatt hour, SK, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-South-eastern/Mid-western grid, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-QH, None),\n", - " 'electricity production, oil' (kilowatt hour, SI, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MP, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-UT, None),\n", - " 'electricity production, oil' (kilowatt hour, US-WECC, None),\n", - " 'electricity production, oil' (kilowatt hour, US-ASCC, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-NL, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-WB, None),\n", - " 'electricity production, oil' (kilowatt hour, LV, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-NM, None),\n", - " 'electricity production, oil' (kilowatt hour, AT, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-XZ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-MZ, None),\n", - " 'electricity production, oil' (kilowatt hour, UA, None),\n", - " 'electricity production, oil' (kilowatt hour, MT, None),\n", - " 'electricity production, oil' (kilowatt hour, BE, None),\n", - " 'electricity production, oil' (kilowatt hour, SA, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-SK, None),\n", - " 'electricity production, oil' (kilowatt hour, IE, None),\n", - " 'electricity production, oil' (kilowatt hour, US-MRO, None),\n", - " 'electricity production, oil, aluminium industry' (kilowatt hour, UN-OCEANIA, None),\n", - " 'electricity production, oil' (kilowatt hour, BR-Southern grid, None),\n", - " 'electricity production, oil' (kilowatt hour, US-NPCC, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-SX, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-JS, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-GD, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-GJ, None),\n", - " 'electricity production, oil' (kilowatt hour, IN-PB, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-BJ, None),\n", - " 'electricity production, oil' (kilowatt hour, FR, None),\n", - " 'electricity production, oil' (kilowatt hour, TZ, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-YK, None),\n", - " 'electricity production, oil' (kilowatt hour, JP, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HA, None),\n", - " 'electricity production, oil' (kilowatt hour, GR, None),\n", - " 'electricity production, oil' (kilowatt hour, EE, None),\n", - " 'electricity production, oil' (kilowatt hour, TR, None),\n", - " 'electricity production, oil' (kilowatt hour, MK, None),\n", - " 'electricity production, oil' (kilowatt hour, CN-HB, None),\n", - " 'electricity production, oil' (kilowatt hour, TW, None),\n", - " 'electricity production, oil' (kilowatt hour, CA-NB, None),\n", - " 'electricity production, oil' (kilowatt hour, CY, None),\n", - " 'electricity production, oil' (kilowatt hour, KR, None)},\n", - " 'Electricity production petroleum': {'electricity production, medium voltage, petroleum refinery operation' (kilowatt hour, IN, None),\n", - " 'electricity production, medium voltage, petroleum refinery operation' (kilowatt hour, CO, None),\n", - " 'electricity production, medium voltage, petroleum refinery operation' (kilowatt hour, RoW, None),\n", - " 'electricity production, medium voltage, petroleum refinery operation' (kilowatt hour, Europe without Switzerland, None)}}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "material_sectors" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "6c55f5a8-4cff-4a21-9121-76a0b1222f26", - "metadata": {}, - "outputs": [], - "source": [ - "small_cement=[x for x in material_sectors['Cement'] if 'Portland' in x['name'] and 'Slag' not in x['name'] and 'Pozzolana' not in x['name'] and 'Europe without Switzerland' not in x['location'] and 'RoW' not in x['location']]" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "5225205b-852e-4fe9-9935-c022ad1526d6", - "metadata": {}, - "outputs": [], - "source": [ - "small_cement=small_cement[:]" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "54854f01-189a-461e-985d-5ceae0df9d99", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(small_cement)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "df975d28-5929-453f-966f-9ee53d776d80", - "metadata": {}, - "outputs": [], - "source": [ - "finder=dopo.MethodFinder() #why does the error \"missing one argument 'self' doesn't come up if I define the class in a variable? Is it because it is created as an object?" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "7b3b50ce-1c97-4e7f-adf8-3f7ed4321c84", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'}}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "a46bae4a-a5fd-4c9d-be61-1f21303e6495", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'}}" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "d6a89fff-a82e-49af-bf51-181f22c03226", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'}}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['land occupation','selected'])" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "a88c4460-dece-48bc-a334-bbabf6f8a72c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['EN15804','fresh water'])" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "9b29b79e-511c-4619-8d28-b8e170aa330b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "dcc63cda-aeea-4809-b112-e8859abdd5b8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('IPCC 2013', 'climate change', 'global warming potential (GWP100)')" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "method_dict['method_1']['object'].name #checking" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "bbc0a066-1bfe-4ada-b0a9-b7b431132584", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n" - ] - } - ], - "source": [ - "cement_sector_LCAs=dopo.compare_activities_multiple_methods(\n", - " activities_list=small_cement, \n", - " methods=method_dict, \n", - " identifier='cement',\n", - " output_format='pandas',\n", - " mode='absolute')" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "c03c3fcd-c9e1-40fc-9ab6-8cfb905c2490", - "metadata": {}, - "outputs": [], - "source": [ - "cement_sector_LCAs_w_other=dopo.small_inputs_to_other_column(cement_sector_LCAs, cutoff = 0.02)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "2625cdbe-297e-40e2-b61b-bac543fbb4a3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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QkKC+EhKShK3JScnC1KpVOjfv79YVqlSJWHKlCmCIAhC7dq1hbFjx4rbLC0thRYtWijV7+PjI7i5uYn137p1Sxg5cqQAQPDz88v3HAqbype77eHDhyrbatWqJdStW1d8bmBgIHz11VcqcXv37hUACAcOHFAqz52KuHnz5nzblSu/acW577e878/MzEzBxsZG6NSpU6H1CYLyVL4xY8YIGhoaQnBwsFLMnDlzBADCzp07xbL09HTBzc3tjdOci/udNWrUKAGA0nv4dRcvXhQACN9++22BMZmZmYK7u7vg7OysNPWyILnXeX4PHR0dMS73vT979myxTCaTCY0aNVJ5jxEREZUmTuUjog9GcnIyABRp6gkAbN++HQqFAl26dEFiYqL4sLGxgaurq8q/eBsaGqJbt27i80qVKsHU1BSVK1dGnTp1xPLcvx88eAAg51+Rt23bBj8/PwiCoHQsX19fJCUlqdyRql+/fkqL+DZq1EipznfpyJEjkMlkGDZsmFL5119//cZ9z58/j6dPn2LYsGHQ1dUVy9u0aQM3NzelO4zlyjslJXeETFZWltI0Nj09PfHvFy9eICkpCY0aNVLpt6LI7cvjx48DyBkZVatWLbRo0QInTpwAkDMd5fr162Ls623Izs7Gs2fP4OLiAlNT03zbMXDgQEilUpXykl5HhXF3d1dqq6WlJSpVqqS074EDB1CvXj14enqKZWZmZujZs+cb68/rTa/Xvn37IJVKMXLkSKX9xowZA0EQsH///kLr/xDeL3lf64yMDCQmJqJu3boAUKJr7tmzZyhTpoxKeXJycr4jtyZMmABLS0vx0aNHD3GbkZERqlatirCwMABAYmIibt++LY64adCggTh9786dO0hISMh3Gl9ERIRYf+XKlbFw4UK0adNGZbpkUeTeNS6/0Xe6urpKd5VLT08vMC5vXbly++31kTpFZWhoqDQiTVtbG7Vr1y7ytSEIAkaMGIH58+dj/fr1KqN/Dhw4gLJly4oj1HLPJXdEVWGK+5316tWrN8bnbsutOz8jRozAzZs3sWjRIqWpl2+yePFi/P3330qPvO/nffv2QVNTE0OHDhXLpFJpkb47iIiI3gan8hHRB8PY2BjAf//z/iZ3796FIAhKd4HK6/W7dJUrV05lCo+JiQns7e1VyoCcBAqQc8erly9fYsWKFQXeDfDp06dKzx0cHJSe5/44y62zuJ4/f46srCzxuZ6entjO10VHRwNQvdOSmZlZvj+u89u3UqVKKtvc3NzEH9O5NDQ0UL58eaWyihUrAoDSmkd//fUXpk+fjsuXLyutQVPcKVUAYG1tDVdXV5w4cQKDBw/GiRMn0KRJE3h7e+Prr7/GgwcPcOvWLSgUCqVkT3p6OmbOnInVq1cjNjZWac2bpKQklePkd/cqoOTXUWFev16AnGsm777R0dGoV6+eSlxx7qhVlNcrOjoadnZ2Kj+ec6dE5l4jBflQ3i9TpkzBpk2bVI6V32tdFEI+ayQZGRnlu27VsGHD0LZtWwD5T/Nr2LAhFi5ciMTERJw6dQpSqVRMnNWvXx9LlixBZmZmoetLOTk5YeXKlZBIJNDV1YWrqyusrKxKdG65ibzX14cCchJ7eRN9enp6BcblrStXbr+V5L0O5P9+K1OmjNJ6coVZu3YtUlJSsHTpUnTv3l1le3R0NCpUqKByjKK8r4r7nZX7nios/k3Jq19++QUrV67EtGnT0Lp1a7FcLpeLa4vlMjMzU0r41q5dW2W6Zl7R0dGwtbVVSbbm931ARERUmpiYIqIPhrGxMezs7HD9+vUixSsUCkgkEuzfv7/AkS155RdTWHnuDyqFQgEg5wdmQWtt5K5rVNQ6i6tjx444duyY+Lxv374fzUK0J06cQLt27eDt7Y0lS5bA1tYWWlpaWL16NTZu3FiiOhs2bIgjR44gPT0dFy5cwKRJk+Dh4QFTU1OcOHECt27dgqGhodKaQF9//TVWr16NUaNGoV69ejAxMYFEIkG3bt3E1ziv139g5yrpdVSY0r5e1OlDeL906dIFp06dwtixY+Hp6QlDQ0MoFAq0atUq39f6TczNzfNNkrm5ueHy5cuIjY1F2bJlxfKKFSuKCb+8Iw9z5SamTp48iVOnTqFKlSri51X9+vWRmZmJc+fOISwsDJqammLSKi8DAwOVxdhLKnfR7sePH6skWB8/fozatWsrxT5+/FiljtwyOzs7pfLcfivOWkh5ve210aBBA1y+fBmLFi1Cly5dYGZmVqJ25Ke431m5yd2rV68qjXzMKzfh5u7urrItODgYP/zwA4YMGYIff/xRaVtMTIxKMj00NBSNGzcuUtuIiIjUiYkpIvqgtG3bFitWrEB4eHi+o0PyqlChAgRBgLOzs/gj8F2wtLSEkZER5HJ5qf0QBIo3gmDOnDlKP4xf//GXl6OjI4CcBbXz/lB59uzZG0eg5O57+/ZtNG3aVGnb7du3xe25FAoFHjx4oNT/d+7cAQDxrmnbtm2Drq4uDh48qDQFaPXq1YW2pTCNGjXC6tWrsWnTJsjlctSvXx8aGhpo2LChmJiqX7++0o/arVu3om/fvpgzZ45YlpGRgZcvX5a4He+To6Oj0p3ccuVXVpCivF6Ojo44fPgwXr16pTRqIyIiQtyeK79rWN3vlxcvXuDIkSOYMmUKJk2aJJbfvXu3xMd2c3PDhg0bkJSUpDRSsW3btti0aRM2bNiA77//vsj15V0APTw8XOmOfnZ2dnB0dMTJkydx8uRJeHl5qSzMX9pykyTnz59XSkLFxcXh0aNH4uL2ubEnTpyAQqFQWgD9zJkz0NfXV/ksjoyMBPBfUuZ9c3FxwezZs9G4cWO0atUKR44cUbquHR0dcfPmTQiCoHSNFfV9VZzvrC+//BJSqRTr1q0rcAH0tWvXQlNTE61atVIq37VrFwYMGICOHTti8eLFKvvZ2Njg77//VioryoL5eTk6OuLIkSNISUlR+oed27dvF6seIiKi4uIaU0T0Qfn+++9hYGCAAQMGID4+XmX7/fv3MX/+fAA5o4ikUimmTJmi8q/ngiCU+Nbwr5NKpejUqRO2bduW77+Mvz59oqgMDAyKPK2oRo0aaN68ufjI71/TczVr1gyamppYunSpUvmiRYveeJyaNWvCysoKy5YtU5qus3//fty6dSvfO+jlrVcQBCxatAhaWlpo1qwZgJz+k0gkkMvlYlxUVBR27tz5xvYUJHeK3qxZs1C1alUxWdCoUSMcOXIE58+fV5rGl9uO16+ThQsXKrXrQ+br64vw8HBcvnxZLHv+/Dk2bNhQrHre9Hq1bt0acrlc5XqZO3cuJBKJ0p3QDAwMVBJ76n6/5CYjX3+t582bV6LjAkC9evUgCAIuXLigVN6lSxe4u7tj2rRpOH36dL775jeyx87ODs7OzuK1+vod3erXr4+dO3fi9u3b+U7jK21ffPEF3NzcsGLFCqX3w9KlSyGRSBAQECCWBQQEID4+Htu3bxfLEhMTERISAj8/P5X1py5cuAATExPx7pLqULVqVezbtw+3bt2Cn5+f0jpYvr6+iI2Nxe7du8WyjIwMrFy5skh1F+c7y97eHv369cPhw4dVPp8BYNmyZfjnn3/Qv39/lCtXTiw/fvw4unXrBm9vb2zYsEHljohAzsi8vN8RzZs3f+PU7de1bt0aMplMqW1yuRwLFy4sVj1ERETFxRFTRPRBqVChAjZu3IiuXbuicuXK6NOnDzw8PJCVlYVTp04hJCQEgYGBYuz06dMxfvx4REVFwd/fH0ZGRoiMjMSOHTswaNAgfPfdd6XSrp9//hmhoaGoU6cOBg4cCHd3dzx//hwXL17E4cOH8fz582LXWaNGDWzevBnffvstatWqBUNDQ/j5+b11W62trfHNN99gzpw5aNeuHVq1aoUrV65g//79sLCwKHTkiZaWFmbNmoV+/frBx8cH3bt3R3x8PObPnw8nJyeMHj1aKV5XVxcHDhxA3759UadOHezfvx979+7F//73P1haWgLIWTj9t99+Q6tWrdCjRw88ffoUixcvhouLS5HXiXmdi4sLbGxscPv2baWFeb29vfHDDz8AgEpiqm3btli3bh1MTEzg7u6O8PBwHD58WLxV+ofu+++/x/r169GiRQt8/fXXMDAwwO+//w4HBwc8f/68SCOKivJ6+fn5oUmTJpgwYQKioqJQrVo1HDp0CLt27cKoUaNQoUIFsb4aNWrg8OHD+O2338RkS506ddT6fjE2Noa3tzdmz56N7OxslC1bFocOHRJH7pREw4YNYW5ujsOHDyuNJNTS0sKOHTvg6+uLhg0bomPHjmjUqBEMDAzEZMfDhw/zTeg2bNgQ69atAwClEVNATmLqzz//FONKKikpSUwq5K5XtWjRIpiamsLU1FRpIfxffvkF7dq1Q8uWLdGtWzdcv34dixYtwoABA5RGOwUEBKBu3bro168fbt68CQsLCyxZsgRyuRxTpkxRacPff/8NPz+/Eq8xVVrq1q2LXbt2oXXr1ggICMDOnTuhpaWFwYMHY9GiRejevTu++eYb2NraYsOGDeIUzDe1uzjfWUBOgjciIgLDhg3DgQMHxJFRBw8exK5du+Dj46M0qjM6Ohrt2rUTE4QhISFKx69atarK1NiC7N+/Xxz5mFf9+vVRvnx5+Pn5oUGDBhg3bhyioqLg7u6O7du3l3hdNiIioiJ7X7f/IyIqjjt37ggDBw4UnJycBG1tbcHIyEho0KCBsHDhQiEjI0Mpdtu2bULDhg0FAwMDwcDAQHBzcxOGDx8u3L59W4zx8fERvvjiC5XjODo6Cm3atFEpR57bjOeKj48Xhg8fLtjb2wtaWlqCjY2N0KxZM2HFihViTO4tz0NCQpT2ze+W9ikpKUKPHj0EU1NTAYDg6OhYnC4qlEwmEyZOnCjY2NgIenp6QtOmTYVbt24J5ubmwpAhQ1Ta+/ot0Tdv3ix4eXkJOjo6gpmZmdCzZ0/h0aNHSjF9+/YVDAwMhPv37wstW7YU9PX1BWtra+Gnn34S5HK5Uuwff/whuLq6Cjo6OoKbm5uwevVq4aeffhJe/xpydHQU+vbtW6Rz7Ny5s8pt6LOysgR9fX1BW1tbSE9PV4p/8eKF0K9fP8HCwkIwNDQUfH19hYiICJVj5t5a/dy5cyrHfNvrKLfuyMjIN+7r4+Mj+Pj4KJVdunRJaNSokaCjoyOUK1dOmDlzprBgwQIBgPDkyROVOvIqzuv16tUrYfTo0YKdnZ2gpaUluLq6Cr/88ougUCiU4iIiIgRvb29BT09PAKDUj+/r/ZJf7KNHj4QOHToIpqamgomJidC5c2chLi5OACD89NNPYlx+r0dBRo4cKbi4uOS77eXLl8LUqVMFLy8vwdDQUNDW1hbs7e2FgIAAYc+ePfnus3z5cgGAULZsWZVtFy9eFAAIAIT4+HiV7QVdh6/L7Zv8Hvl93uzYsUPw9PQUr68ff/xRyMrKUol7/vy50L9/f8Hc3FzQ19cXfHx88n2/3Lp1SwAgHD58+I1tze+zqKDz7Nu3b5E+L/P7HN+1a5egqakpdO3aVbzuHzx4ILRp00bQ09MTLC0thTFjxgjbtm0TAAinT59+43EEoXjfWZmZmcLcuXOFGjVqCAYGBoK+vr5QvXp1Yd68eSr9ndsvBT3yXs8Fyb3OC3rkfe88e/ZM6N27t2BsbCyYmJgIvXv3Fi5duqQSR0REVJokgvARrqxKRETF9vLlS5QpUwbTp0/HhAkT1N0cKiWjRo3C8uXLkZKSUuBC0QAQGBiIrVu3IiUl5T227tPx4MEDuLm5Yf/+/eK0RyrcqFGjcPz4cVy4cEHtI6aKa968eRg9ejQePXqktLD95ygqKgrOzs5YvXq10ugvIiKi0sI1poiIPkF511DJlbvGDu/S9PF6/XV99uwZ1q1bh4YNGxaalKK3V758efTv3x8///yzupvyUXj27Bl+//13TJ8+/YNPSr3+vsrIyMDy5cvh6ur62SeliIiI3geuMUVE9AnavHkzgoOD0bp1axgaGiIsLAx//vknWrZsqbKeDX086tWrh8aNG6Ny5cqIj4/HH3/8geTkZEycOFHdTfss5LdgNeXP3Nz8oxmd17FjRzg4OMDT0xNJSUlYv349IiIiin1jASIiIioZJqaIiD5BVatWhaamJmbPno3k5GRxQfTp06eru2n0Flq3bo2tW7dixYoVkEgkqF69Ov744w94e3uru2lEHy1fX1/8/vvv2LBhA+RyOdzd3bFp0yZ07dpV3U0jIiL6LHCNKSIiIiIiIiIiUguuMUVERERERERERGrBxBQREREREREREanFZ7fGlEKhQFxcHIyMjD74u8QQERERERERFUYQBLx69Qp2dnbQ0ODYE/r4fHaJqbi4ONjb26u7GURERERERESlJiYmBuXKlVN3M4iK7bNLTBkZGQHIedMaGxuruTVEREREREREJZecnAx7e3vxty7Rx+azS0zlTt8zNjZmYoqIiIiIiIg+CVyqhj5WnIBKRERERERERERqwcQUERERERERERGpBRNTRERERERERESkFp/dGlNERERERPTxk8vlyM7OVncziN45LS0tSKVSdTeD6J1hYoqIiIiIiD4agiDgyZMnePnypbqbQvTemJqawsbGhguc0yeJiSkiIiIiIvpo5CalrKysoK+vzx/q9EkTBAFpaWl4+vQpAMDW1lbNLSIqfUxMERERERHRR0Eul4tJKXNzc3U3h+i90NPTAwA8ffoUVlZWnNZHnxwufk5ERERERB+F3DWl9PX11dwSovcr95rnumr0KWJiioiIiIiIPiqcvkefG17z9CljYoqIiIiIiIiIiNSCiSkiIiIiIiIiIlILJqaIiIiIiIjescDAQEgkEgwZMkRl2/DhwyGRSBAYGPj+G0ZEpGZMTBEREREREb0H9vb22LRpE9LT08WyjIwMbNy4EQ4ODmpsGRGR+jAxRURERERE9B5Ur14d9vb22L59u1i2fft2ODg4wMvLSyxTKBSYOXMmnJ2doaenh2rVqmHr1q3idrlcjv79+4vbK1WqhPnz5ysdKzAwEP7+/vj1119ha2sLc3NzDB8+nHd1I6IPDhNTRERERERE78lXX32F1atXi89XrVqFfv36KcXMnDkTa9euxbJly3Djxg2MHj0avXr1wrFjxwDkJK7KlSuHkJAQ3Lx5E5MmTcL//vc/bNmyRame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REREojJlyuDIkSPQ1NSEv78/xo0bhwEDBuC3335TipPL5UVavPtNjIyMcPToUVSrVg2DBg1Cz549UaZMGRw/fhz29vZv3N/Pzw/Dhg3DzJkzUadOHQwePDjfuMGDB2PMmDFYuHAhOnbsiJiYGGzcuLFEbdbT08OhQ4dgZWWFXr164YcffsD333+PWrVqlai+wvzvf/9DvXr1UL9+fQwdOhRGRkb4559/4O3t/cZ9mzdvjoYNG+LXX38tldfqXZAIgiCouxHvU3JyMkxMTJCUlFTovE8iIiIiIiKiD11JfuNmZ2cjISEBlpaW0NLSesctJPpPftceR0wREREREREREZFaMDFFRERERERERERqwcQUERERERERERGpBRNTRERERERERESkFkxMERERERERERGRWjAxRURERERERESie/fuYciQIfD09ISmpiY8PDzeqj4nJydIJBJIJBJoamqifPnyGDp0KBITE0ulvUePHsWMGTNUyidPngxDQ8NSOUZR+fv7o3HjxqVaZ1RUFAYNGgRHR0fo6OjAzMwMrVq1wtatW/ONr1atGiQSCU6cOFHsY23YsAH169eHkZERjIyM0KBBA/z5558Fxu/evRstW7aEmZkZtLW14ezsjMGDB+POnTtFPiYTU0REREREREQkunHjBvbu3QsXFxe4u7uXSp0BAQEIDw9HaGgohg4dirVr18Lf3x8KheKt6y4oMfUpOH36NDw9PREaGopx48bh0KFDWLNmDZydndGzZ09cuXJFKf7GjRu4evUqAGDjxo3FOtbXX3+N3r17w93dHSEhIdi6dSvc3d3Rs2dPfPfddyrx48aNQ/v27WFiYoKVK1fi8OHDmDRpEm7evImuXbsW+biaxWolEREREREREX3S/Pz80L59ewBAYGAgzp8//9Z1Wltbo27dugCARo0aISMjA5MmTcLFixdRs2bNEtWZmZkJLS2tt27bhyojIwNdunRBuXLlcOrUKRgbG4vb/Pz8MHToUJiamirts2HDBmhoaMDHxwchISFYsGBBkfpo9+7dWLRoEX766SdMnjxZLPf19YWdnR2mTp2KFi1awNfXFwCwb98+zJo1CxMnTsTUqVPFeG9vb/Tr1w9//fVXkc+TI6aIiIiIiIiISKSh8e5TBbnJqMjISABAdHQ0AgICYGJiAgMDA/j6+uLatWtK+zg5OWHEiBGY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UxhfDKlkTEEAbmvZYdSRI0ckSVFRUeratau8vb1VrFgxhYaGavfu3Q7bBAUFacCAAXr33XcVGBiookWL6qWXXtKoUaOUnJwsk8kkk8lkv7XtcsnJyRowYICqVq0qd3d3BQUFqW/fvkpISMj1OJ9++qkCAwPl7e2tzp07KzY21qHd3r17FRwcrCJFiqhSpUr65ptvCql3rl32HN9lypTJse56R6TdaNdcXb9+/bRs2bIcywcPHqzvv/++UIoCAAAAcGsJrelvfwqju6uTagf46POw+mpb09/o0gDcIDVr1pSTk5MqVqyoCRMmyHrxKZHZevfuLVMBJ4nPDqTKli2r8+fPKyQkRDt27NC0adP0/fff68yZM2rZsqWOHz/usN1PP/2kJUuWaPLkyVq4cKFee+01PffccypatKg2bNigDRs2aOrUqbke88KFC7JarRo3bpyWLVumsWPHau3atercuXOOtosWLdKiRYv06aefavLkyVq7dq0GDhxoX5+amqq2bdsqJiZG3333nSZOnKiJEydqy5YtBeqP61WnTh2ZzWb95z//0erVq5WWlmZIHQVxzbfyzZo1Sz179tSSJUvUvHlzSdLAgQM1f/58rVmzptALBAAAAHBrCK3pr1CCKOCOV6ZMGY0aNUqNGjWSyWTSokWL9NZbb+mff/7RlClT7O2cnJzk5OSUr33abDZZLBZlZGRo06ZNGjdunCpWrKh69erpyy+/VFRUlPbs2aPq1atLkoKDg1WhQgV99NFHev/99+37ycjI0LJly1SsWDH7svLly8tsNttvFcyLr6+vPvvsM/t7i8Wie+65R82bN9eBAwdUpUoVh3oXLVokNzc3SdLRo0c1fvx4ZWZmymw2a+bMmTp58qT27dune++9V5JUt25dVa1a1f7+Zrr33nv1wQcf6NVXX9WDDz4oFxcXNWrUSN26dVO/fv3k7HzN8c9Nc80jptq3b6+pU6eqY8eO2rZtm/r3728PpapVq3YjagQAAAAAADdJaGiohg8frtDQULVt21ZTpkzRkCFDNG3aNJ06dcrebvr06bJYLPna59SpU+Xi4iJ3d3e1atVK5cqV008//aSiRYvqt99+U61ateyhlCSVKFFCDz30kNavX++wn5CQEIdQ6lp99913qlu3rjw8POTi4mIfcHPgwAGHdsHBwfZQSpJq1KihjIwMnT59WpK0adMm1apVyyGEqly5smrXrn3F42cHdNmvy0ehXY///ve/ioqK0ueff64nnnhCBw4c0EsvvaQ2bdrc0vNMFehGw169emns2LFq1qyZFi9erLVr1zokiwAAAAAA4M7RrVs3Wa1W7dy5s8Dbb9myRTt37tSZM2e0efNm1alTR1LW/Eh+fn45tvHz89PZs2dzLCuoBQsW6Omnn1bDhg31448/auPGjVqwYIGkrFvzLuXj4+Pw3tXV1aHdqVOnVLp06VxrvpK1a9fKxcXF/nrwwQfzbJs9yim38Cp72eWTv/v7+6tPnz6aNWuWTpw4ofDwcK1du1ZLliy5Yl1GytdYriFDhuS63NfXV/Xq1XO4f/ODDz4onMoAAAAAAMAdwdfXN8+n75UoUUL79+/PsTwmJkYlSpRwWFbQOa0kae7cuapTp44+//xz+7K1a9cWaF9lypTR9u3bcyyPiYlxeEjc5erXr+8wD5WnZ95PNvX19ZUkRUdH51h38uRJSco1HMvm4uKiwYMH6+uvv9bevXvVsWPHPNsaKV/B1I4dO3JdXrlyZSUmJtrXX88JAgAAAAAAbk1z5syRk5OT6tatW+j7bt68uebNm6f9+/eratWqkrJGUf3666/q06fPVbd3dXXN12TfKSkp9pFP2WbNmlWgmhs2bKhvv/1Whw4dUuXKlSVJhw4d0q5du9SiRYs8t/P09MwzoLvcvffeqzJlymjhwoXq1KmTw7qff/5ZZcqUsR/77Nmz8vLyyjGXVPYtiv7+t+78gPkKppjUHAAAAACAu0NoaKhat26t++67T1LWE+q++OIL/fe//3UIOJ577jl98803+Z5nKi/h4eH68MMP1b59e40dO1ZFihTRuHHj5OzsrEGDBl11++rVq8tisWjy5Mlq2rSpvLy87AHXpR566CG9+OKLGjNmjJo0aaKlS5dq1apVBaq5d+/eGjt2rB599FGNGTNGkjR8+PBCDYDMZrNGjRqlPn36yMnJyR5OLVy4UDNmzNCXX35pHyC0evVqvfbaa+rdu7caNmwoFxcX7dixQxMmTFCFChXUpUuXQqursN2607IDAAAAAICbrlq1apo+fbpOnDihzMxMValSRR999JEGDhzo0M5qtRbK5N2enp6KjIzUkCFD1KdPH1mtVjVr1kzr1q1TQEDAVbfv0KGD+vfvrwkTJuj06dNq2bKlIiMjc7R74YUXdPjwYX3yySeaNGmSQkNDFRERcdWn+eWmaNGiWrlypfr166ewsDCVK1dOb7/9thYuXKj4+Phr3l9enn/+eXl6euqDDz6wj+6qWbOmIiIi1LNnT3u7Ro0aqWvXrvr555/14YcfKjU1VQEBAXryySf1+uuvX/H2QqOZbDabzegibqbExER5e3srISHhlv5gAAAAAAC4moJ8x83IyFBsbKx8fX1zTJ4N3Ei5nXsFeiofAAAAAAAAcL0IpgAAAAAAAGAIgikAAAAAAAAYgmAKAAAAAAAAhiCYAgAAAAAAgCEIpgAAAAAAQA7ffPON6tatqyJFiqhUqVJ6+OGHlZKScs37CQkJkclkkslkktlsVoUKFdSrVy9FRUUVSp07d+7UyJEjdeHCBYflM2fOlMlkUlxcXKEcJz8GDRqkoKCgQtnXpf2W1+tyGRkZKlWqlMxms44dO1YoddxozkYXAAAAAAAAbi3jxo3TO++8o2HDhqlJkyaKi4vTqlWrZLVaC7S/Zs2a6b333pPVatXu3bv11ltvafPmzfrjjz/k7u5+XbXu3LlTo0aN0oABA657X7eSqVOnKjExMcfyw4cP66mnnlK7du1yrFuxYoXOnDkjSZo9e7Zee+21G17n9SKYAgAAAAAAdvv379fIkSO1aNEiPfzww/bljz/+eIH36ePjo8aNG0vKCqmKFSump59+WkuXLlXXrl0LtE+r1arMzMwC13Srq1GjRo5lFotFgwYNkp+fn2bOnJljfUREhHx8fFSpUiXNmjXrtgimuJUPAAAAAADYff3117rnnnscQqnC1qBBA0nSkSNHJElnz57Vs88+q1KlSqlo0aJq2rSp1q1b57BNSEiIHn30UX3zzTeqWrWq3NzcNHnyZIWHh0uSfH19ZTKZrngr3euvv6777rtPHh4eKleunHr27KlTp07lepx58+apatWq8vDwUOvWrfX33387tDt58qQ6duwod3d3lStXTu++++71dstVvf3229qyZYu+++47+fr6OqxLTk7WokWL1LVrV/Xu3Vu7d+/W7t27b3hN14tgCgAAAAAA2G3cuFH33Xefxo4dq9KlS8vV1VXNmjXTpk2bHNqNHDlSJpNJR48eveZjZAdSZcuWldVq1cMPP6zFixfrnXfe0dy5c+Xh4aGHHnpI27Ztc9hu69atmjRpkkaPHq2lS5fqqaee0ltvvSVJWr58uTZs2KAFCxbkedzTp09r2LBh+uWXXzR58mQdPXpUwcHBslgsDu127typSZMmaeLEiZo5c6YOHTqksLAwhzadOnXSli1b9Nlnn2nq1KlasGCB5s2bd819kV+rV6/Wu+++q1dffVUPPvhgjvU///yzkpOT1atXL3Xr1k3Ozs6KiIi4YfUUFm7lAwAAAAAAdtHR0dq2bZt2796tqVOnyt3dXePHj1fbtm118OBBlS5dWpJkNpvl5OSU6yTcl7PZbLJYLMrMzNTu3bs1dOhQ+fj4qE2bNvrll1+0efNmLV++XKGhoZKk0NBQVa5cWePHj9dPP/1k38/Zs2e1ZcsWBQQE2JdVqlRJklS/fn2VKlXqinXMmDHD/v9Wq1VNmjRR+fLltXr1arVt29a+Lj4+Xjt27LCPSkpKSlJ4eLhOnDih8uXLa/ny5dq6datWrVql1q1bS8oaaRUQEKASJUpctT+u1ZkzZ/TUU0+pYcOGGjNmTK5tIiIiVK5cOQUHB8tsNuvBBx9URESExo8fn6/PyCiMmAIAAAAAAHaZmZlKSkrSvHnz1LVrVz3yyCNatGiRbDabpkyZYm83fPhwWSwWBQYGXnWfS5culYuLi9zc3NSgQQNZLBbNnz9ffn5++u233+Tl5WUPpSTJxcVFjz32mNavX++wn/vvv98hlLpWy5YtU9OmTeXt7S1nZ2eVL19eknTgwAGHdnXq1HG4VS57vqcTJ05IkjZt2iRvb297KCVJ3t7eatOmzVVrsFgs9ld+J5MPDw9XcnKyIiIi5Oycc4xRXFycVq5cqe7du8tszop6evXqpWPHjuXow1sNwRQAAAAAALArXry4SpYsqfvvv9++rESJEqpbt6727NlToH02b95cW7Zs0fbt2xUTE6P9+/erVatWkqRz587ZR2Fdys/PT2fPns2xrKC2bNmijh07qmzZsvruu++0YcMGbdy4UZKUmprq0NbHx8fhvaurq0O7U6dO5ZjjKT/1HT16VC4uLvZX9mivK5kyZYoWL16szz//XPfcc0+ubX788UdZLBa1b99e8fHxio+PV6tWreTm5nbL387HrXwAAAAAAMCuZs2aOSb6znZ5gJNf3t7e9gnPL1eiRAmdPn06x/KYmJgct8Vdzy1pCxYskLe3t3788Uf7qKKoqKgC7atMmTKKjY3NsTwmJuaK25UtW1Zbtmyxv3dzc7ti++zbHp999ll17949z3bZ4VNuc0/NnTtXH3/8sVxcXK54LKMwYgoAAAAAANg9+uijOnPmjHbu3GlfdubMGW3fvl3169cv9OM1b95ciYmJWrlypX2ZxWLRggUL1Lx586tuf/loprykpKTIxcXFIdyaNWtWgWpu2LChEhIStHr1avuyhIQE/frrr1ettUGDBvbXfffdd8V6e/bsqaCgIH388cd5touKitLvv/+uvn37as2aNQ6vDz/8UGfOnNHy5cuv/Ye8SRgxBQAAAAAA7Dp37qwHHnhAXbt21bhx41S0aFFNmDBBbm5u6t+/v73d6NGjNXr0aP3999/5mmcqL+3bt1fDhg0VFhamiRMnys/PT5988olOnTqlYcOGXXX76tWrS5I+/fRTde7cWe7u7rkGPg899JA++ugjDRw4UF26dNGGDRv03XffFajmdu3aqV69enryySf1zjvvyMfHRxMmTJCXl1eB9pebl19+WXv27NG0adO0e/fuXNvUqFHDPlpq6NChqlixosP65s2ba8KECYqIiFCHDh0KrbbCRDAFAAAAAADszGazli5dqsGDB+uFF15Qenq6WrRooXXr1snf39/eLjMzU1arVTab7bqO5+TkpKVLl+qVV17R0KFDlZycrHr16mnlypX5GqFVt25djRw5Ul999ZXeffddBQQE6OjRoznaPfLII3rnnXf0ySef6Ouvv1azZs20ZMkSValS5ZprNplMWrhwofr27asXXnhBxYsX18CBAxUTE6Off/75mveXm6VLl0qS+vbtm2ebNWvWKCIiQs2aNcsRSkmSs7OzevXqpS+++EJJSUny8PAolNoKk8l2vWfQbSYxMVHe3t5KSEgo1CQTAAAAAICbrSDfcTMyMhQbGytfX99bdt4h3JlyO/eYYwoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIZyNLgAAAAAAANx8FovF6BJwl8ntnCOYAgAAAADgLmI2m2UymXTu3DmjS8FdyGQyyWz+9wY+gikAAAAAAO4iTk5OKl26tDIzM40uBXchs9ksJycn+3uCKQAAAAAA7jJOTk4O4QBgFCY/BwAAAAAAgCFuiWDq008/VVBQkIoUKaJGjRpp8+bNV2z/0UcfqWrVqipatKgCAgI0ePBgpaam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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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mhdF06dPFyYmJuLWrVtq9caPHy/kcrm4f/++xrZe3i6AXF+DBw+W6mV/Fv369VNb/6OPPhLW1tbS+6Ic+8uXL1eru2vXLgFALFiwQCpTKpWiefPmGsd/t27dhKOjo1qS8c8//9Sol5tXJaaEEMLCwkJUr15det+iRQtRtWpVkZaWJpWpVCrRoEED4eXlpdF2UFCQ2sV//fr1hUwmE0OGDJHKFAqFKF++vMbx9/JxlZGRIXx8fDQuigEIfX19ERERIZVdunRJABCLFi2SykJCQoShoaHad+H69etCLpeXSGIqtyR0dmI82969ewUAMWPGDLV6HTt2FDKZTG2fCrqfr4pp/PjxauUnTpwQAMSmTZvUyn/99VeN8uzzzO+//y6VPX36VBgYGKglMQr6vcw+J1y/fl0IIcT+/fuFgYGB+PDDD0WXLl2k9apVqyY++ugj6X1BzznZx2HNmjXVLhi/+uorAUDs27dPKnv5HLRhwwaho6MjTpw4obad5cuXCwDi1KlTGjFkU6lUwsvLS+P4T0lJEW5ubiIgIEAqexfPLdn71K1bN7Xygu7DX3/9JQCIHTt25LmNv//+WwAQAwYMUCsfN26cACCOHj0qlRU2MdWoUSOhUCik8ri4OGFmZibq1q0rUlNT1drI/nwL85lbWFiI4cOH57lvecnv3/5XfSdzk52YsrW1FXFxcVL5hAkTpER4ZmamVN6tWzehr68vnf8TExOFpaWlGDhwoFq7jx8/FhYWFmrlVatWFeXLlxeJiYlS2bFjxwQAjd8YBT33v/z5jRo1SgBQ+84mJiYKNzc34erqKh3Lr5OYKsz5koioNOBQPipVEhISAABmZmYFqr97926oVCp07twZz549k1729vbw8vJCWFiYWn1TU1N07dpVel+xYkVYWlqicuXKqFu3rlSe/f93794FkDWR+K5duxAcHAwhhNq2goKCEB8fr3FrfN++fdXmM2rcuLFamyWpsP1YWN7e3qhfv770Pru/mjdvDmdnZ43y4trnnPMPZWZm4vnz5/D09ISlpeUrhybkpX379tDV1cW2bduksqtXr+L69evo0qWLVLZjxw40btwYVlZWap9/y5YtoVQq8fvvv79yW66urvjtt980XrlNfj9kyBC1940bN8bz58+lz7awx76BgQH69u2rVvbrr79CT08PAwcOlMp0dHQwfPhwjXh6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09MDAKSkpGg5EqI3K/uYz/4OEL1LOPk5ERERERGVCnK5HJaWlnj69CkAwNjYGDKZTMtREZUcIQRSUlLw9OlTWFpacoJ/eicxMUVERERERKWGvb09AEjJKaL3gaWlpXTsE71rmJgiIiIiIqJSQyaTwcHBAXZ2dsjMzNR2OEQlTk9Pj3dK0TuNiSkiIiIiIip15HI5L9aJiN4BTExRiTt47TGWhkXg1pMkVChrimHNPBFUhbehEhEREREREb3v+FQ+KlEHrz3G4A0XcelhPFIzlbj0MB5DNl7EwWuPtR0aEREREREREWkZE1NUopaGRWiUCQEsPXZHC9EQERERERER0duEiSkqUbeeJOVafvtJ4huOhIiIiIiIiIjeNkxMUYmqUNY013KvsmZvOBIiIiIiIiIietswMUUlalgzT8hk6mUyGTC8qYd2AiIiIiIiIiKitwYTU1SigqrYY3nPmvB1soSxvhy+TpZY0bMmAvlUPiIiIiIiIqL3nq62A6B3X1AVewQxEUVEREREREREL+EdU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFqh9cTUo0eP0LNnT1hbW8PIyAhVq1bFH3/8oe2wiIiIiIiIiIiohGl18vPY2Fg0bNgQzZo1w4EDB2Bra4vbt2/DyspKm2EREREREREREdEboNXE1Ny5c+Hk5IQ1a9ZIZW5ublqMiIiIiIiIiIiI3hStDuXbv38/atWqhU6dOsHOzg7Vq1fHqlWr8qyfnp6OhIQEtRcREREREREREZVOWk1M3b17F8uWLYOXlxcOHjyIoUOHYuTIkVi3bl2u9WfPng0LCwvp5eTk9IYjJiIiIiIiIiKi4iITQghtbVxfXx+1atXC6dOnpbKRI0fiwoULOHPmjEb99PR0pKenS+8TEhLg5OSE+Ph4mJubv5GYiYiIiIiIiN4WCQkJsLCw4HUxlVpavWPKwcEB3t7eamWVK1fG/fv3c61vYGAAc3NztRcREREREREREZVOWk1MNWzYEDdv3lQru3XrFlxcXLQUERERERERERERvSlaTUyNHj0aZ8+exaxZsxAREYHNmzdj5cqVGD58uDbDIiIiIiIiIiKiN0CrianatWtjz5492LJlC3x8fDB9+nQsWLAAPXr00GZYRERERERERET0Bmh18vPXxUneiIiIiIiI6H3G62Iq7bR6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OXMm1yWi3t7eKlq0aJ5j6OLiYj8B5TWG/v7+cnZ21rlz55SWluawztPTU15eXnmOoZOTk0qWLCkp7zEsXry4XF1d8xzDIkWKyMfHJ88xNJlMCgzM/gKf1xgWK1ZM7u7ueY5hzvF9rTEMDAyUyWTKcwx9fHxUpEgRXbx4MdcTNXKOb5vNpri4uFz95hzfeY1hzvGdlpamc+fOOay78viOi4vLFWjnHN9JSUm5nqKRc3xnZGTozJkzDuuuPL7j4+NltVod1ucc3xcuXFBKiuPE3JwjsnGO+AvniGycI7JxjsjGOeIvnCOycY7IxjkiG+eIvxh9jsjrz1xBWbJkiVJTU7Vv3z6NHj1aHTt21H//+185OTlJkt599129++67N93XlXdVVa5cWT/88IMCAgK0fv16eXt720MpKXvcH3/88VxhWK1atRxCqVu1dOlSjRo1Svv27XP4c3jw4EGHYKpOnTr2PzuSVL16dUmyB1ObN2+Wj4+PPZSSss+TrVq10o4dO65bw5XHtclkso/nreratatq1qypkSNH6ueff85XH3eDmw6mgoOD8/z/axkwYIC2b99+04WMHz9eb775pl599VV99NFHN72dJM2cOVPu7u729w8//LAef/xxJScn64svvsjV/r333pMkLVq0SCdPnnRY17VrV9WqVUv79u3T0qVLHdZVqFBBvXr1UmZmZp79vv766ypatKiWL1+ugwcPOqxr06aNmjRpoiNHjmjBggUO6wIDA/XSSy9JkmbMmJHrL8b+/furZMmSWrdunXbu3OmwrlmzZmrVqpViY2M1e/Zsh3VeXl4aOnSoJGnu3Lm5TtzPPfecQkJCtGXLFv3vf/9zWFe3bl116tRJ586dy/WzOjk56Z///Kck6Ycffsh1IuzWrZtq1KihvXv35npiQ+XKlfXUU08pLS0tzzEcPny43NzctHTp0lz377Zr106NGjXSoUOHtHDhQod1ZcuW1QsvvCBJefY7aNAg+fn5ac2aNdq7d6/DurCwMIWHh+vEiROaO3euw7pixYrplVdekSR98803uX7hef755xUUFKSNGzdq06ZNDusaNGig9u3bKzExMVdNrq6uevPNNyVJ8+fPz/VLzZNPPqkqVapo586dWr16tcO66tWr6+9//7tSU1Pz/FnffvttOTs766effsr1+NWOHTuqXr162r9/v3766SeH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nRo/frx++ukn2Ww2bdmyRSdOnFCzZs30v//9j6f33Gf69+/vEEhc+curJC1dupSJz+9zTz75pEJDQ7V9+3YFBwcbXQ7uoGHDhik1NfWa6ytWrKg1a9YUYkW403r06KEePXooMzNTiYmJkqQSJUpw++597L333nN47+np6fD+p59+UvPmzQuzJNxhXbt21bfffqtnnnkm17qpU6cqKytL06dPN6AyAA8CJj8HAAAAAACAIZhjCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGIJgCgCAe9CsWbPk6+t70+2jo6NlMpl0/vz5O1YTAAAAcKsIpgAAKAQbN26Uk5OT2rdvf8vbhoSE6KOPPnJY1qNHDx08ePCm+2jatKliY2Pl4+Mj6daDrauNGDFCvXr1ynNdZGSkTCaTTCaTnJ2dVaJECT366KP66KOPlJ6efkv7MSpQi4yMVJ06dQp1nwAAAA8igikAAArBjBkzNGjQIK1bt06nTp267f48PDxUsmTJm27v6uqqwMBAmUym2963JC1atEidOnW65voaNWooNjZWx48f15o1a/T3v/9d48aNU9OmTXXhwoUCqQEAAAD3PoIpAADusJSUFP373/9W//791b59e82aNStXm59++kkNGzaUu7u7SpQooa5du0qSwsPDFRMToyFDhtivQpIcr3g6ePCgTCaT9u/f79Dn5MmTVaFCBUmOVx5FR0erT58+SkpKsvcZGRmpkSNHqmbNmrlqq1Onjt555x37+xMnTmjfvn1q27btNX9mZ2dnBQYGqnTp0nr44Yc1aNAgrV27Vr/++qvef/99e7s5c+aoQYMG8vLyUmBgoHr27Kn4+HhJ0rFjx9SiRQtJUrFixWQymdS7d29J0rJlyxQaGipfX18VL15cHTp00B9//GHvNyMjQy+//LJKlSold3d3BQcHa9y4cfb158+f1//93//J399f3t7eatmypXbv3m0f2xEjRmj37t328cnrMwMAAMDtI5gCAOAO++6771S1alVVqVJFvXr10tdffy2bzWZf/5///Eddu3bV3/72N+3cuVOrVq1So0aNJEk//PCDypYtq5EjRyo2NlaxsbG5+q9cubIaNGiguXPnOiyfO3euevbsmat906ZN9dFHH8nb29ve5+uvv67nn39ev//+u7Zu3Wpvu3PnTu3Zs0d9+vSx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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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SsTExMDQ0BASiUTd4RAREREREdEnQhAEvHz5EjY2NpBKOfaEyh4mpkpATEwM7Ozs1B0GERERERERfaKio6NRoUIFdYdBVGxMTJUAQ0NDADk3AiMjIzVHQ0RERERERJ+KlJQU2NnZid9LicoaJqZKQO70PSMjIyamiIiIiIiI6IPjsjJUVnECKhERERERERERqQUTU0REREREREREpBZMTBERERERERERkVpwjSkiIiIiIipzFAoFsrOz1R0GUanT1NSETCZTdxhEpYaJKSIiIiIiKjMEQcCzZ8/w4sULdYdC9MGYmJjAysqKC5zTR4mJKSIiIiIiKjNyk1IWFhbQ09PjF3X6qAmCgPT0dMTFxQEArK2t1RwRUcljYoqIiIiIiMoEhUIhJqVMTU3VHQ7RB6GrqwsAiIuLg4WFBaf10UeHi58TEREREVGZkLumlJ6enpojIfqwcq95rqtGHyMmpoiIiIiIqEzh9D361PCap48ZE1NERERERERERKQWTEwREREREREREZFaMDFFRERERERUygIDAyGRSDB48OA824YNGwaJRILAwMAPHxgRkZoxMUVERERERPQB2NnZYfPmzXj16pVYlpGRgY0bN8Le3l6NkRERqU+ZS0wtWrQIjo6O0NHRQd26dXH+/PlC64eEhKBy5crQ0dFBtWrVsH//fpXtqampGD58OCpUqABdXV1UrVoVS5cuLc1TICIiIiKiT1DNmjVhZ2eHHTt2iGU7duyAvb09atSoIZYplUoEBwfDyckJurq68PDwwLZt28TtCoUC/fv3F7e7ublh3rx5KscKDAxEQEAAfvnlF1hbW8PU1BTDhg3jU92I6D+nTCWmtmzZgtGjR2PSpEm4fPkyPDw84Ofnh7i4uHzrnzlzBt27d0f//v1x5coVBAQEICAgADdv3hTrjB49GgcPHsT69etx584djBw5EsOHD8eePXs+1GkREREREdEnol+/fli1apX4fuXKlejbt69KneDgYKxduxZLly7FrVu3MGrUKPTs2RPHjx8HkJO4qlChAkJCQnD79m1MnDgR48ePx9atW1XaCQ0NxYMHDxAaGoo1a9Zg9erVWL16damfIxFRcUgEQRDUHURR1a1bF7Vr18bChQsB5NyQ7ezs8PXXX2Ps2LF56nft2hVpaWnYt2+fWFavXj14enqKo6Lc3d3RtWtXTJgwQazj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p59+Qnx8PJ49e4Znz54V2P7atWuxatUq3Lp1Cw8fPsSmTZugq6srtu/g4IBTp07h6dOnYuJk2LBhOHz4MObMmYP79+9j8eLFOHz4cJHOZ9myZdi9ezfCw8MxYsQIJCUlITAwEAAwePBgJCUloVevXrh48SIePHiAw4cPY8CAAXmSYwDg6uoKf39/DBkyBKdPn8b169cRGBgIGxsb+Pv7i/UaN26MLVu2wMPDAwYGBpBKpfD29samTZveur7Uu+jevTtMTU3RqVMnnDp1Co8ePcLx48cxatQocYF0FxcXbNiwAXfu3MH58+cRGBgIXV3dEo+F6GPGxBQREREREX0UFAoF5HJ5qb/yS668zZdffomoqCgsXrz4rVPOjh49igcPHiA0NBTOzs5wcHAQXwUxNjbGypUr0aRJE9SqVQt//fUXduzYAVNTUwAQn8hXpUoV2NraAshZJ2rJkiVYtGgRateujSNHjmDs2LFFOp/p06fj559/Ru3atXHmzBls374dZmZmAAAbGxuEhoZCoVCgTZs28PLywrfffgtjY+MCR36tWLECNWvWRPv27dG4cWMIgoDdu3erTLVr3LgxFAqFylpS+ZWVFD09PRw9ehR2dnbo2rUrPDw8MGjQIGRkZIgjqJYtW4YXL16gXr166Nu3L4YNGwYLC4sSj4XoYyYRBEFQdxBlXUpKCoyNjXHz5k2UK1dO3eEQEREREX2U5HI5UlJSYG9vDx0dHbFcoVAgJiYmz7o+pUlLSws2NjaQyWQf7Jj06crIyEBUVBSMjIzyTI9MSkqCu7s7kpOTC5xySPRfxjWmiIiIiIioTJPJZLCxsfmgi0lLpVImpYiISgATU0REREREVObJZDImioiIyiCuMUVERERERERERGrBxBQREREREREREakFE1NERERERERERKQWTEwREREREREREZFaMDFFRERERERERERqwcQUERERERERERGpBRNTRERERERERESkFkxMERERERFRmadQKJCdnf3BXgqFQt2nXCrWrl0LCwuL92pj2rRpqF27dglFREQfuzKXmFq0aBEcHR2ho6ODunXr4vz584XWDwkJQeXKlaGjo4Nq1aph//79eercuXMHX3zxBYyNjaGvr4/atWsjKiqqtE6BiIiIiIhKkEKhQExMDKKioj7YKyYmptSSU48fP8agQYNQqVIlGBsbo3Ll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e83n/g4QfUy4+DkREREREZUJMpkMJiYmiIuLAwDo6elBIpGoOSqi0iMIAtLT0xEXFwcTExMu8E8fJSamiIiIiIiozLCysgIAMTlF9CkwMTERr32ijw0TU0REREREVGZIJBJYW1vDwsIC2dnZ6g6HqNRpampypBR91JiYIiIiIiKiMkcmk/HLOhHRR4CLnxMRERERERERkVowMUVERERERERERGrBxBQREREREREREakFE1NERERERERERKQWTEwREREREREREZFaMDFFRERERERERERqwcQUERERERERERGpBRNTRERERERERESkFkxMERERERERERGRWjAxRUREREREREREasHEFBERERERERERqQUTU0REREREREREpBZMTBERERERERERkVowMUVERERERERERGrBxBQREREREREREakFE1NERERERERERKQWTEwREREREREREZFaMDFFRERERERERERqwcQUERERERERERGpBRNTRERERERERESkFkxMERERERERERGRWjAxRUREREREREREasHEFBERERERERERqQUTU0REREREREREpBZMTBERERERERERkVowMUVERERERERERGrBxBQREREREREREakFE1NERERERERERKQWTEwREREREREREZFaaKg7AKLScOjWMywOjcC92FRUsjTA0KYu8PvMSt1hEREREREREdFrOGKKPjqHbj3DoHWXcO1JMl5lK3DtSTIGr7+EQ7eeqTs0IiIiIiIiInoNE1P00VkcGpGnTBCAxcceqCEaIiIiIiIiIioIp/LRR+debGq+5fdjX37gSKi0ccomERERERFR2cYRU/TRqWRpkG+5q6XhB46EShOnbBIREREREZV9TEzRR2doUxdIJKplEgkwrElF9QREpYJTNomIiIiIiMo+Jqboo+P3mRWW9vSCh50J9LRk8LAzwbKeXmjJKV4fFU7ZJCIiIiIiKvu4xhR9lPw+s+JaQx+5SpYGuPYkOU85p2wSERERERGVHRwxRURlEqdsEhERERERlX1MTBFRmcQpm0RERERERGUfp/IRUZnFKZtERERERERlG0dMERERERERERGRWjAxRUREREREREREasHEFBERERERERERqQUTU0REREREREREpBZMTBERERERERERkVowMUVERERERERERGrBxBQREREREREREakFE1NERERERERERKQWTEwREREREREREZFaMDFFRERERERERERqwcQUERERERERERGpBRNTRERERERERESkFkxMERERERERERGRWjAxRUREREREREREasHEFBERERERERERqQUTU0REREREREREpBZMTBERERERERERkVowMUVERERERERERGrBxBQREREREREREakFE1NERERERERERKQWTEwREREREREREZFaMDFFRERERERERERqUeYSU4sWLYKjoyN0dHRQt25dnD9/vtD6ISEhqFy5MnR0dFCtWjXs37+/wLqDBw+GRCLB3LlzSzhqIiIiIiIiIiJ6U5lKTG3ZsgWjR4/GpEmTcPnyZXh4eMDPzw9xcXH51j9z5gy6d++O/v3748qVKwgICEBAQABu3ryZp+7OnTtx9uxZ2NjYlPZpEBERERERERERylhias6cORgwYAD69u2LqlWrYunSpdDT08PKlSvzrT9v3jy0atUK3333HapUqYJp06ahZs2aWLhwoUq9p0+f4uuvv8aGDRugqan5IU6FiIiIiIiIiOiTV2YSU1lZWbh06RJatGghlkmlUrRo0QJhYWH57hMWFqZSHwD8/PxU6iuVSvTq1QvfffcdPvvssyLFkpmZiZSUFJUXEREREREREREVT5lJTCUkJEChUMDS0lKl3NLSEs+ePct3n2fPnr21/syZM6GhoYERI0YUOZbg4GAYGxuLLzs7u2KcCRERERERERERAWUoMVUaLl26hHnz5mH16tWQSCRF3m/cuHFITk4WX9HR0aUYJRERERERERHRx6nMJKbMzMwgk8kQGxurUh4bGwsrK6t897Gysiq0/smTJxEXFwd7e3toaGhAQ0MDkZGRGDNmDBwdHQuMRVtbG0ZGRiovIiIiIiIiIiIqnjKTmNLS0oKXlxeOHj0qlimVShw9ehT169fPd5/69eur1AeAP//8U6zfq1cvXL9+HVevXhVfNjY2+O6773Do0KHSOxkiIiIiIiIiIoKGugMojtGjR6NPnz6oVasW6tSpg7lz5yItLQ19+/YFAPTu3Ru2trYIDg4GAHzzzTfw8fHB7Nmz0aZNG2zevBkXL17E8uXLAQCmpqYwNTVVOYampiasrKzg5ub2YU+OiIiIiIiI6ANRKBRQKpXqDoM+QVKpFDKZTHxfphJTXbt2RXx8PCZOnIhnz57B09MT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JpPMZrPKli2r559/XuHh4blS7549ezRy5EhdvnzZbvmcOXNkMpkUExOTK69zJ954441cvSmcyWTSRx99ZHs+cuRImUwmPfbYY/f8te+nbAdT3377rWbNmqUePXrIwcHBtrx27do6dOhQrhYHAAAAAADunwsXLqhRo0aaOXOmVq9erZCQEH377bd67rnncrzPZs2aacuWLdq8ebOGDRumNWvWqFWrVpnCpJzYs2ePRo0alSv7yis2b96sDRs2GF1Grsn2HFNnzpxRxYoVMy1PS0tTSkpKrhQFAAAAAADuv549e9o9DwoKkouLi/r27auzZ8+qVKlS2d6np6enGjduLCk9pCpcuLB69eqlFStWqHPnzjmqMzU11XaTtodJ4cKFVaNGDY0ZM0ZBQUFGl5Mrsj1iqnr16tq8eXOm5YsWLVLdunVzpSgAAAAAAPBgKFasmCTp6tWrubK/gIAASf/cXO3ChQt68cUXVbx4cRUsWFBNmzbVpk2b7LYJCgrS008/rW+++UZVqlSRi4uLpk2bpj59+kiSvLy8ZDKZbnk529ChQ1WrVi25urqqdOnS6t69uyIiIrJ8nUWLFqlKlSpydXVVy5YtdezYMbt2Z8+eVfv27VWoUCGVLl1aH3zwwd12yx17//33tW7dOv3+++/37TXvpWyPmBo+fLheeOEFnTlzRmlpaVq8eLEOHz6sb7/9Vj/99NO9qBEAAAAAANxHqampSklJ0Z9//qnRo0erffv2dqHPyJEjNWrUKB0/fjzbcxtlBFKlSpVSamqqnnzySf3999+aNGmSvL299cknn+jxxx/X77//rvr169u227lzp06cOKHRo0erSJEiql27tuLi4jR27FitWrVKHh4ecnFxuenrnjt3TsOGDVOpUqUUHR2tyZMnKzAwUH/++accHf+JR/bs2aMPP/xQEydOVGpqqkJCQtSzZ09t2bLF1qZDhw46ffq0Pv/8c3l6emrixIk6deqU3X7ulaefflp169bVqFGjtHr16nv+evdatnusQ4cOWr58uUaPHq3ChQtr+PDhqlevnpYvX67HH3/8XtQIAAAAAADuIz8/P505c0aS9MQTTyg0NNRuvdlsloODg0wm0233ZbVaZbFYlJaWpn379mnIkCHy9PRU69at9b///U/bt2/XqlWrFBwcLEkKDg5WxYoVNX78eP3www+2/Vy4cEE7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XlL6fFIZCWbz5s21adOm3K0OAAAAAAAYav78+XJwcFDdunVzfd/NmzfXvn377MKpixcv6pdffrFdancrzs7OSk5Ovm27K1eu2EY+ZZg3b172C5bUsGFD7d+/X3/99Zdt2V9//aW9e/fecjs3NzcFBATYHlWqVLlp20qVKqlkyZL68ccfM61bunSpSpYsqYoVK0pKz2myuqwy4xJFHx+fO3pfRsn2iKny5cvr+PHjKlu2rKpWraoFCxaoYcOGWr58eabhbgAAALey+kCkZqz/S0eiElTZ21UDWlRUcI0H+8sTAAD5WXBwsFq2bKlatWpJSr9D3axZs/T666/bBRwvvfSSvvnmmzueZ+pm+vTpoylTpqht27YaO3as7a58jo6OeuONN267fbVq1WSxWDRt2jQ1bdpU7u7uWQY+jz/+uF599VWNGTNGTZo00YoVK7R27doc1dy7d2+NHTtWTz/9tMaMGSMp/a58uRkAmc1mjRo1Sn379pWDg4M6dOggSfrxxx/11Vdf6YsvvrCNIFu3bp3eeecd9e7dWw0bNpSTk5N2796tCRMmqGzZsurUqVOu1XUvZDuY6tOnj/bu3avAwEANHTpU7dq10/Tp05WSkqKPP/74XtQIAADyodUHIvXK3DDb872n49TvuzDN7FmfcAoAAINUrVpVs2fP1unTp5WWlqbKlStr6tSpGjRokF271NTUXJm8283NTRs2bFBISIj69u2r1NRUNWvWTJs2bZKvr+9tt2/Xrp0GDBigCRMm6Ny5c3rssce0YcOGTO1eeeUV/f333/r000/14YcfKjg4WKGhobe9m19WChYsqDVr1qh///7q2bOnSpcurffff18//vijYmNjs72/m3n55Zfl5uamjz/+2Da6q0aNGgoNDVX37t1t7Ro1aqTOnTtr6dKlmjJlipKSkuTr66sePXpo6NCht7y88EFgslqt1rvZQXh4uMLCwlSxYkU98sgjuVVXnhIfHy8PDw/FxcU98B84AAAPig7Tf9Xe03GZltf29dSPrzYzoCIAAPKenPweTUlJUXR0tLy8vDJNoA3cS1kde9keMXUjPz8/+fn53XVxAADg4XIkKiHL5UejLt3nSgAAAGCUbAdTo0ePvuX64cOH57gYAADw8Kjs7ZrliKlK3je/Qw0AAADyl2wHU0uWLLF7npKSouPHj8vR0VEVKlQgmAIA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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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aWlYs2ZNgXNmzJgBANi3bx8eP36sdOzzzz9HvXr1EB4ejkOHDikdq169Ovr371+mOM3NzdGpUyds2LABgiCgU6dOMDMzE49HREQgMzMT7du3VzovJydHaYnf8uXLsW7dOsTGxuLly5fIycmBu7u70jkfffQRpFKp+N7a2ho3b94sU9xERBWBSSkiIiIiIqr0GjZsiJo1ayqVaWtrAwAMDQ0xbNiwIs/t0qVLoTOlgLzEjp2dndIxTU3Nt4r1iy++wOjRowHkJZdelT/b6/fff4etra3SMS0tLQDAtm3bMHHiRCxcuBDNmzeHgYEBFixYgAsXLijV19DQUHovkUigUCjeKnYiovLEpBQREREREVV6BgYGMDAwKPSYurq6uFSvMK/OVHqdnp4e9PT03jq+V3Xo0AE5OTmQSCTw9vZWOlanTh1oaWkhNjYWnp6ehZ5/7tw5tGjRAiNHjhTLIiMjyzVGIiJVYFJKhXJzc/m0CyIiIiKiMsrNzYUgCFAoFJVuxo8gCGLsEokE4eHhAP6dvZR/XE9PDxMmTMC4ceMgk8nQqlUrpKamIjQ0FAYGBhg0aBCcnZ2xadMmHDp0CE5OTvjtt99w6dIlODk5iePyan+vxgCg0o0dQbxHcnNzlZZkAuB3TKrUmJRSodjY2CL/7w0RERERERVPLpdDJpMhNzcXamqV60Hi+Ym0nJwcAP8uLcx//+rx77//HlWqVMEPP/yAqKgoGBsbw93dHd988w1ycnLg5+eHK1euoE+fPpBIJOjZsyeGDRuGo0ePFtpePrlcXqCMKofc3FzIZDLExcUVSEq9ePHiHUVF9PYkQn66nCpMWloajIyM8Ndff6FKlSrvOhwiIiIiokpJJpMhIyMDDg4O4v5KRP8F2dnZiImJgZ6eHtTVleeWPH/+HO7u7khNTYWhoeE7ipCobDhTSoXU1dUL/AIhIiIiIqKSk0gkSv8l+q+QSCSFfqfkd0yqzCrXnFciIiIiIiIiIvogMClFREREREREREQqx6QUERERERERERGpHJNSRERERERERESkckxKERERERERERGRyjEpRUREREREREREKsekFBERERERERERqRyTUkREREREREREpHJMShEREREREX0Anj17hqpVqyI6OrrC+zp16hS0tLSQkpJS4X2972rUqIFffvlFfK+lpYV9+/aV+PypU6di7Nix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zZZ8HO+MfTbLeJvMsua0z14d7xzHMNUkd9fs99nr2yalmeRmNMozp32WYwTHCI4RHCM4RnCM4BjBMeIuOUZYbDZ5urronywvv2+aTCbFxsYqMDAwy+/0X3/9tfbu3avmzZurZMmS+uOPPzR27Fg1btxYa9asyXV9YWFhMpvNeu+992SxWLRv3z698cYb8vf31969e+Xl5ZXrPq81d+5cDRgwQLGxsSpVqtRNl99Jw4YN0w8//KCTJ0/mS38Gg0FTpkzRyy+/LCkjlBo3bpwkaf369QoLC7tjr30nZLff5TqUevvttzV69GjVrFlTQUFBWSY6X7duXf5WXQQUplAKAAAAAFB45HcolZ3PPvtMAwcO1F9//aWyZcvmqr6wsDB5e3trxYoV9mXz58/Xk08+qUWLFqlHjx656i+TxWKR1WrVggUL7qpQ6r333lPdunXl7e2ttWvX3rHXvhOy2+9yffne1KlTNWfOHB04cECRkZFav369/UEgBQC4037cH62uM39V7TdXq+vMX/Xj/uiCLgkAAKBIK1mypCQpPT09X/oLDQ2VJJ04cUKSFB8fr6eeekqlSpWSp6enWrZsqY0bNzpsExYWpkceeUTz5s1TzZo15eHhoenTp2vAgAGSpMDAQBkMhhtewjZq1CjVr19f3t7eKleunHr37q2oqKhsX2fx4sWqWbOmvL291a5dOx07dsyh3blz59SlSxd5eXmpXLlymjx58u0Oyy178803tW7dOv3+++9Oe807Jdd33/Pw8FCrVq3uRC0AANzQj/uj9ez8Hfbne84matDXOzS7XxPuuAgAAJCPLBaLTCaT/vzzT40fP15dunRxCHwyLyU7ceJErucyygyjypYtK4vFooceekjHjx/XpEmTFBQUpBkzZuiBBx7Q77//riZNmti32759u06ePKnx48erRIkSatCggRITE/X2229r9erV8vPzk4eHR46ve/78eb3++usqW7asYmNjNXXqVLVp00Z//vmnXF3/jkd2796tKVOm6N1335XFYtGIESPUr18/bdq0yd6ma9euOnv2rD7++GP5+/vr3Xff1ZkzZxz6uVMeeeQRNWrUSOPGjdOPP/54x1/vTsr1aL344ov68MMPNWPGjDtRDwAAOZq1/miWZTabNCvyGKEUAABAPgoJCdFff/0lSXrwwQcVERHhsN5oNMrFxcVhSp+c2Gw2mc1mWa1W7du3TyNHjpS/v786dOig//3vf9q6datWr16t8PBwSVJ4eLiqVaumd955R9999529n/j4eG3btk0VKlSwL6tataokqUmTJje9TG/OnDn2/7dYLGrRooXKly+vdevWqWPHjvZ1CQkJ2rVrlwIDAyVJycnJGjBggM6ePavy5ctr9erV2r59u9auXat27dpJyjjDqkKFCgoICLjpeOSHN954Q4899pi2bt2qZs2aOeU174Rch1Jbt27VunXrtGLFCtWtWzfL9afff/99vhVX1ERHRyslJcX+vFixYipRooTMZrNiY2OztC9TpowkKS4uTiaTyWGdv7+/PD09lZKSoqSkJId17u7uKlmypKxWq2JiYrL0W7p0abm4uCg+Pl5paWkO63x8fOTt7a0rV64oISHBYZ2rq6v9H+X1pzhKUqlSpeTm5qaEhARduXLFYV3x4sXl6+urtLQ0xcfHO6wzGo0KCgqSJMXExMh69TawmQICAuTh4aGkpCSH8ZMkT09P+fv7y2QyZXtXhcwxjI2NldlsdliXOYbJycm6dOmSwzoPDw8FBATIYrHo/PnzWfoNCgqS0WjUhQsXspzC6uvrq+LFi2c7hm5ubvYDZXZjGBgYKFdXV128eFGpqakO67y9veXj45PtGLq4uKh06dKSsh/DkiVLyt3dPdsx9PLykp+fX7ZjaDAYFByc8Yt+dmNYokQJFStWLNsxzNy/cxrD4OBgGQyGbMfQz89PXl5eunz5cpa7fGTu3zabTdHRWS/byty/sxvDzP07NTVVFy9edFh37f4dHR2t66fby9y/ExMTs9zZI3P/Tk9P14ULFxzWXbt/nz9/XhaL422FM/fvS5cuKTk52WEdx4gM147hoWjH/SzTkZhLHCM4RkjiGHGtu/EYwfcIjhESx4hMHCMy3A3HiOv7zy8rV65USkqK9u/fr7fffludO3fWTz/9JBeXjInfR48erdGjR99yX9dmBzVq1ND333+voKAg/fLLL/L19bUHUlLG8e7RRx/NEoTdc889DoFUbq1atUpvvfWW9u/f77BvHz582CGUatiwoX1/lKQ6depIkj2U2rJli/z8/OyBlJRx7OnQoYN27tx5wxqu3VcMBoN9PHOre/fuqlevnsaPH+8wX1dhk+tQyt/fX48++uidqKXI+/LLL1WsWDH78/r16+vRRx9VUlKSPv300yztx4wZI0launSpzp4967Cue/fuuueee7R//36tWrXKYV3VqlXVr18/mUymbPt9+eWXVbx4cf344486fPiww7qOHTuqRYsWOn78uBYvXuywLjg4WM8++6wk6YsvvsjyQ3Hw4MEqXbq0Nm7cqF27djmsa9WqlTp06KCoqCjNmzfPYZ2Pj49GjBghSVqwYEGWg+q///1vVapUSVu3btVvv/3msK5Ro0bq0qWLLl68mOW9uri46I033pCUEZZe/8WjR48eqlu3rvbt25flLhI1atRQ7969lZqamu0Yjho1Sh4eHlq1alWWa4sfeughNWvWTEeOHNGSJUsc1pUvX15PP/20JGXb79ChQxUQEKD169dr3759DuvatGmjsLAwnTlzRgsWLHBYV6JECb3wwguSpK+++irLl52nnnpKFSpU0KZNm7R582aHdaGhoerUqZPi4uKy1OTu7q7XXntNkrRo0aIsX2h69eqlmjVrateuXVnmlKtTp47+9a9/KSUlJdv3+n//939ydXXV8uXLs9wOtnPnzmrcuLEOHjyo5cuXO6wLCQlR//79ZbFYsu13+PDh8vX11c8//6w///zTYV27du1033336dSpU1q4cKHDusDAQD333HOSMv6tXv8FYODAgSpTpox+/fVXbd++3WHdvffeq/DwcMXExDj89UXK+LI+cuRISdLChQuzfInt27evqlWrph07dmjDhg0O6zhGZLj2GOGnFKXKM0vN1YN8OEZwjJDEMeJad+Mxgu8RHCMkjhGZOEZkuBuOEdcHqPnlnnvukSS1aNFCTZs2VcOGDbVkyZI8TUzeunVrffDBB3JxcVG5cuXsQbgkXbx40eF5pqCgoCwhY2bAmBfbtm1Tly5d1LVrV40aNUqlS5eWwWDQvffem2UM/f39HZ67u7tL+nuso6KiHEKrW63v5MmTqly5sv15SEhInicmNxgM+r//+z/17t37pkHYP1mu776H3Mu8G8KhQ4fk4+NjX85fLzLcDX+9yMRfOP/GXzgz8BfODLd6jPj2t4N6dfkxXfvpGAzSJ/2a6N4KXhwjOEZwjLjG3XiM4HsExwiJY0QmjhEZ7oZjxKVLl1SzZs07evc9m80mDw8PjR8/XqNGjbql18iU3d33rvXKK6/ok08+yfLvdfjw4YqIiLDvZzn1k9Nd9q5f/vrrr+vTTz/V+fPnZTRm3PPt1KlTqlSpksMd7rJ7nd27d6tRo0Zav369wsLCNG7cOH3wwQdZ9uNHH31UO3fuzDFoSk9P1969e+3PPTw8VL9+/RzHLqe772X+e7darapTp45q166tkJCQQnn3PdlwxyUmJtok2RITEwu6FAAo9Fb/EWXrMvNXW+03V9m6zPzV9uMfUQVdEgAAQIHJy++b6enptr/++suWnp5+S+03bdpkk2T773//m+v62rRpY+vUqVOO65cuXWqTZPvxxx/ty0wmky0kJMT26KOP3rSfBQsW2CTZzpw547D8yy+/tEmyxcbG2mw2m23YsGG24OBgm9VqtbeZMGGCTZJtypQpN3ydXbt22STZ1q9fb7PZbLaVK1faJNnWrl1rb5OQkGDz8fGxhYSE3GA0cuf62saMGWMrXry4Q5uvvvrKZjAYbG3bts3X174Tstvv7vy08AAA5KPwusFMag4AAHCHPProowoNDdU999wjT09P7dmzR1OmTNE999yjbt262duNHz9e48eP17FjxxQSEpLn1+vUqZOaNWumfv366d1331VQUJA+/PBDRUVF6fXXX7/p9rVr15YkffTRR+rWrZu8vLyyPfvogQce0LRp0zR06FB1795dmzZt0vz58/NU84MPPqjGjRurb9++mjRpkvz9/TVx4sRbPlMtP/Xp00fjxo3T+vXrb+tzKCjGgi4AAAAAAAD8MzRr1kyLFi1Snz591LVrV82ZM0fPPPOMfvnlF/vcSlLGpWMWiyXL5aq55eLiopUrV6pTp04aOXKkHnvsMSUlJWnNmjVq0qTJTbdv1KiRxo4dq6+//lotW7ZU586ds2338MMPa9KkSVq6dKm6dOmijRs35nmCcIPBoKVLl6pJkyZ69tlnNWjQIHXp0iVP823dLhcXF/v8fYURc0o5QeacUrm5xhcAAAAAgJvJy++buZ1TCsgP2e13nCkFAAAAAAAAp8t1KPXCCy9oxowZWZbPnDlTw4YNy4+aAAAAAAAAUMTlOpT67rvv1KpVqyzLW7ZsqcWLF+dLUQAAAAAAACjach1KXbhwQX5+flmW+/r6Ki4uLl+KAgAAAAAAQNGW61CqWrVqWr16dZblq1atUpUqVfKlKAAAAAAAULCSk5NVvnx5GQwGbd++PU99VKpUSQaDQQaDQa6urqpSpYoGDx6cbye1REZG6p133smyfOzYsfL29s6X17hV3bp1U1hYWL70dfLkSfu4GQwGeXp6qm7dupoyZYpMJpO93bXje/0jOjo6X2q5k1xzu8GIESM0ZMgQxcbGql27dpKktWvXaurUqZo2bVp+1wcAAAAAAArAW2+9JbPZfNv99OjRQy+99JJMJpM2b96ssWPHat++fdq4caOMxtu7/1pkZKTee+89vf7667dd5z/RO++8o7Zt2yo5OVnff/+9XnnlFcXHx2vixIn2Npnje72SJUs6s9Q8yXUo9dRTTyktLU0TJkzQW2+9JSkjmfv444/15JNP5nuBAAAAAADAuQ4ePKiPPvpIU6dO1aBBg26rr6CgIN17772SpPvuu0+pqakaPXq0du7cqdDQ0Dz1mZaWJjc3t9uqqzCoXr26few6dOigQ4cOaebMmQ6h1LXjW9jkKZIcPHiwzp49q5iYGCUlJen48eMEUgAAAAAAFBFDhw7VoEGDVLNmzXzvOzOIOnHihCTp1KlT6tGjh/z8/FS8eHGFh4dr3759DttUqlRJQ4YM0eTJkxUSEiJPT0+98MILGjdunFJSUuyXrOV0+VxKSoqGDBmimjVrysvLS5UqVdKgQYOUmJiY7et89NFHCgkJkZ+fn7p166bY2FiHdgcOHFCbNm1UrFgxVa1aVfPmzcun0bmx0NBQJScnZ6mnsMr1mVLXCgwMzK86AAAAAADAP8DixYu1b98+fffdd9q5c2e2bfr376958+bJZrPluv/MMKps2bK6dOmSwsLCZDQaNXv2bBUrVkwTJkzQ/fffr71796pChQr27b777jtVr15d06dPl4uLixo2bKjU1FRFRERo3bp1kjJuwpady5cvy2KxaMKECQoMDNSZM2c0YcIEdevWTevXr3dou2zZMh05ckQfffSR4uLiNHz4cA0dOlQLFy6UJKWmpqpjx44qXry45s+fL0kaPXq0kpKSVL169VyPR26cOHFCHh4eDpfm2Wy2LJdZGgwGubi43NFa8sMthVKNGzfW2rVrVaJECTVq1EgGgyHHtjntsAAAAAAA4J/t8uXLGjFihN55550cAx5JcnFxueXQIzM0MZlM2rJliyZMmKAqVaqocePG+uyzz3Tq1Cnt379ftWvXliS1adNGFStW1LRp0zR16lR7PyaTSatWrVLx4sXty8qXLy+j0XjTy9cCAwP18ccf25+bzWZVrlxZrVu31uHDh1WjRg2HepctWyYPDw9JGZOOv/POO7JarTIajZo7d67OnTungwcP2kOoRo0aqWbNmvkeSlmtVpnNZqWkpOi7777T999/r8cff9xhLq5Zs2Zp1qxZDttVrVpVR48ezdda7oRbCqW6du1q/zC6det2J+sBAAAAAAAF5O2331ZQUJAGDBhww3ZffPGFvvjii1vq8/rQpGnTpvr000/l6empX375RfXq1bMHUpIUEBCgBx54QL/++qtDP2FhYQ6BVG7Nnz9f77//vo4cOaKUlBT78utDqTZt2tgzEEmqU6eOTCaTzp8/r+DgYG3ZskX16tVzCKCqVaumBg0a3PD1bTabLBaL/fmtnM3Us2dPh/b/+te/9OGHHzq0efzxxzVy5EiHZcWKFbthv/8UtxRKjRkzJtv/BwAAAAAARcOpU6c0depULVmyxD7XUnJysv2/ycnJ8vb2znW/maGJm5ubKlSooICAAPu6ixcvKigoKMs2QUFB+uOPP7Isy6slS5boySef1MCBAzVhwgSVLFlSUVFR6t69u1JTUx3a+vv7Ozx3d3eXJHu7qKgolS5dOtuar1y5kmMNGzZsUNu2be3P27Rpo8jIyBvWPWnSJLVr184+D5aXl1eWNoGBgXmeML6g5XlOqe3bt+vAgQOSMlLDJk2a5FtRAAAAAADAuU6cOKH09HR16tQpy7q2bduqefPm2rx5c677vVFoEhAQoEOHDmVZHhMT4xBeSbrhVEI3s2jRIjVs2FCffPKJfdmGDRvy1FeZMmWynbooJibmhpc8NmnSRNu2bbM/9/HxuelrValSpdAGTrci16HU2bNn1bt3b/3222/29DAhIUEtW7bUwoULVb58+fyuEQAAAAAA3GENGzbMMun37t27NXz4cM2ePVtNmzbN99ds3bq1Fi9erEOHDtnv9Hfx4kX9/PPPGjhw4E23d3d3V1pa2k3bXblyxX7GU6YFCxbkqeZmzZrpq6++0tGjR1WtWjVJ0tGjR7Vnzx7dd999OW7n4+NTpAOmvDDevImj//znPzKZTDpw4IDi4+MVHx+vAwcOyGq16j//+c+dqBEAAAAAANxh/v7+CgsLc3g0bNhQUsZZPo0bN7a3ffrpp+XqmueLr+wGDBigkJAQderUSQsXLtQPP/ygjh07ytXVVcOGDbvp9rVr15bZbNb06dO1bdu2bM+6kqQHHnhAW7du1VtvvaWff/5ZI0aM0Nq1a/NUc//+/RUcHKxHHnlEixYt0qJFi9S5c2cFBwfnqb/bFRMTo82bN2d5XLp0qUDqyY1c70EbNmzQ77//bk8wJalmzZr68MMPb5gIAgAAAACAosFisThM2p1XPj4+ioyM1IgRIzRw4EBZLBa1atVKGzduVIUKFW66fefOnfXcc89p4sSJOn/+vO6///5s52l69tlndfz4cX344YeaMmWKwsPDFRERcdO79mXH09NTa9as0eDBg9WvXz+VK1dOb775ppYuXaqEhIRc93e7Fi9erMWLF2dZ/ssvv6h169ZOryc3DDabzZabDWrUqKGvv/5azZo1c1i+detW9enTp1DcctDZkpKS5Ofnp8TExBteXwoAAAAAQG7k5fdNk8mk2NhYBQYGys3N7Q5XCGTIbr/L9eV7U6ZM0dChQ7V9+3b7su3bt+vFF1/Ue++9l3/VAgAAAAAAoMi6pcv3SpQo4TDLfUpKipo3b26/ftRsNsvV1VVPPfWUunXrdkcKBQAAAAAAQNFxS6HUtGnT7nAZAAAA0o/7ozVr/VEdjklWjSBvPde2msLrFsykoQAAALizbimU+ve//32n6wAAAHe5H/dH69n5O+zP95xN1KCvd2h2vyYEUwAAAEVQrueUOn369A0fAAAAeTFrfdabpdhs0qzIYwVQDQAAd6e5c+fKYDBkeYwaNSpP/VWqVMneh6urq6pUqaLBgwcrLi4uX+qNjIzUO++8k2X52LFj5e3tnS+vcau6deumsLCwfOkrMjJSBoPBYT7vTLt375bBYHC4y+CFCxc0fPhwVa9eXcWKFVPp0qXVunXrf/yVb7d0ptS1MneonOTHLSEBAMDd53BMcrbLj8RccnIlAABg9erV8vPzsz8vV65cnvvq0aOHXnrpJZlMJm3evFljx47Vvn37tHHjRhmNuT5XxkFkZKTee+89vf7667fVT2FmNpvVrl07JSQk6LXXXlOtWrUUHR2t3377TcuXL9ewYcMKusQc5TqU2rVrl8Nzk8mkXbt26f3339eECRPyrTAAAHB3qRHkrT1nE7Msrx7kUwDVAABwd2vSpIlKlSqVL30FBQXp3nvvlSTdd999Sk1N1ejRo7Vz506Fhobmqc+0tDS5ubnlS32FXWRkpPbu3asNGzbo/vvvty/v1auXrFZrAVZ2c7mOJBs0aODwCA0N1TPPPKP33ntPM2bMuBM1AgCAu8Bzbavp+pOxDQbp+bCqBVMQAAC4IzKDqBMnTkiSTp06pR49esjPz0/FixdXeHi49u3b57BNpUqVNGTIEE2ePFkhISHy9PTUCy+8oHHjxiklJcV+iWBOl8+lpKRoyJAhqlmzpry8vFSpUiUNGjRIiYmJ2b7ORx99pJCQEPn5+albt26KjY11aHfgwAG1adNGxYoVU9WqVTVv3rx8Gp3cu3jxoiSpTJkyWdbd7plod1quz5TKSc2aNbVt27b86g4AANxlwusGa3a/JpoVeUxHYi6pepCPng+rqo5Mcg4AgNPVrVtXcXFxCgkJ0TPPPKNXXnlFLi4u9vX9+/fXvHnzZLPZct13ZhhVtmxZXbp0SWFhYTIajZo9e7aKFSumCRMm6P7779fevXtVoUIF+3bfffedqlevrunTp8vFxUUNGzZUamqqIiIitG7dOkmSr69vtq95+fJlWSwWTZgwQYGBgTpz5owmTJigbt26af369Q5tly1bpiNHjuijjz5SXFychg8frqFDh2rhwoWSpNTUVHXs2FHFixfX/PnzJUmjR49WUlKSqlevnuvxuF0NGzaU0WjUf/7zH40ZM0atWrWSh4eH0+vIi1yHUklJSQ7PbTaboqKiNHbs2AIZfAAAUHSE1w3mTnsAABSgMmXKaNy4cWrevLkMBoOWLVumN954Q3/99Zdmzpxpb+fi4uIQUt2IzWaT2WyWyWTSli1bNGHCBFWpUkWNGzfWZ599plOnTmn//v2qXbu2JKlNmzaqWLGipk2bpqlTp9r7MZlMWrVqlYoXL25fVr58eRmNRvvlgTkJDAzUxx9/bH9uNptVuXJltW7dWocPH1aNGjUc6l22bJk92Dl58qTeeecdWa1WGY1GzZ07V+fOndPBgwftOUijRo1Us2bNAslFqlevrvfff1+vvPKK2rdvLzc3NzVv3lyPP/64Bg8eLFfXfDsfKd/l+jwuf39/lShRwv4ICAhQnTp1tGnTJocPGAAAAAAAFC7h4eEaPXq0wsPD1bFjR82cOVMjRozQ7NmzFRUVZW/3xRdfyGw231Kfs2bNkpubm7y8vNS2bVuVK1dO3333nTw9PfXLL7+oXr169kBKkgICAvTAAw/o119/degnLCzMIZDKrfnz56tRo0by9vaWm5ubWrduLUk6fPiwQ7s2bdo4nGlUp04dmUwmnT9/XpK0ZcsW1atXzyGAqlatmho0aHDD188M5zIf+XmjuBdffFGnTp3SJ598on/96186fPiwXnjhBXXo0OEfPa9UrkOpdevWOTwiIyP1559/6tixY2rRosWdqBEAAAAAABSQxx9/XBaLRbt3787z9tu2bdPu3bt14cIFbd26VQ0bNpSUMR9SUFBQlm2CgoIUHx+fZVleLVmyRE8++aSaNWumb7/9Vps3b9aSJUskZVyOdy1/f3+H5+7u7g7toqKiVLp06WxrvpENGzbIzc3N/mjfvn2ObTPPbsouuMpcdv1E78HBwRo4cKAWLFigs2fPasCAAdqwYYNWrFhxw7oKUq7P4cpp0jAAAAAAAIDrBQYG5niXvYCAAB06dCjL8piYGAUEBDgsM1x/R5RcWLRokRo2bKhPPvnEvmzDhg156qtMmTLauXNnluUxMTE5zmklZdzR8Nq5uH18cr7DcGBgoCQpOjo6y7pz585JUrbBWCY3NzcNHz5cX375pQ4cOKAuXbrk2LYg5fpMqYkTJ2rOnDlZls+ZM0eTJk3Kl6IAAAAAAMA/w8KFC+Xi4qJGjRrle9+tW7fWvn37HIKpixcv6ueff7ZfXncj7u7uSktLu2m7K1eu2M94yrRgwYLcFyypWbNm+uOPP3T06FH7sqNHj2rPnj033M7Hx0ehoaH2R82aNXNsW716dZUpU0ZLly7Nsu6HH35QmTJlVK1aNUlSfHx8tpdSZl6WGBz8z52vM9dnSn3yySeKiIjIsrxu3brq1auXXn311XwpDAAAAAAAOFd4eLjatWun+vXrS8q4E92nn36qF1980SHcePrppzVv3rxbnlcqJwMGDNAHH3ygTp066e2337bffc/V1VXDhg276fa1a9eW2WzW9OnT1bJlS/n6+mYb9jzwwAN6/vnn9dZbb6lFixZauXKl1q5dm6ea+/fvr7fffluPPPKI3nrrLUkZd9/Lz/DHaDRq3LhxGjhwoFxcXNS1a1dJ0tKlSzVnzhx99tln9jPH1q1bp1dffVX9+/dXs2bN5Obmpl27dmnixImqWLGiunfvnm915bdch1LR0dEqU6ZMluWBgYEOk54BAAAAAIDCpVatWvriiy909uxZWa1W1ahRQ9OmTdPQoUMd2lkslnyZqNvHx0eRkZEaMWKEBg4cKIvFolatWmnjxo2qUKHCTbfv3LmznnvuOU2cOFHnz5/X/fffr8jIyCztnn32WR0/flwffvihpkyZovDwcEVERNz0rn3Z8fT01Jo1azR48GD169dP5cqV05tvvqmlS5cqISEh1/3l5JlnnpGPj4/ef/99+1lddevWVUREhHr37m1v17x5c/Xo0UM//PCDPvjgA6WmpqpChQrq27evRo0adcNLCguawWaz2XKzQfXq1TVmzBj169fPYfn8+fM1ZswYHT9+PF8LLAqSkpLk5+enxMTEf/TOAAAAAAAoXPLy+6bJZFJsbKwCAwOzTJYN3CnZ7Xe5PlPqmWee0bBhw2QymdSuXTtJ0tq1a/XKK6/opZdeyt+KAQAAUGT8uD9as9Yf1eGYZNUI8tZzbaspvO4/d54LAABwZ+U6lBo5cqQuXLig5557Tunp6ZKkYsWK6dVXX9Vrr72W7wUCAACg8Ptxf7Senb/D/nzP2UQN+nqHZvdrQjAFAMBdKtehlMFg0KRJk/Tmm2/qwIED8vT0VPXq1eXh4XEn6gMAAEARMGv90SzLbDZpVuQxQikAAO5SuQ6lMnl7e6tp06b5WQsAAACKqMMxydkuPxJzycmVAACAfwpjQReAf5YrZosS00z250lpJl02ZdxRwWK16WKqSSarVZKUarYoIfXvtpfSzbpsyrgdqNV2ta0lo23adW2T081KSc9oa7vaNj2zrcWqi6kmZc7Bn5xuVvJ1bdOutk2/rm3KNW0lKSHVpDRzRv2mq22tV9teNpl16bq2qZltrRltLdbMthYlXTMuiWkmXbna1nxd2yvXtc1uDM1Xx/CK2aLE1JuMtyXn8U65brzTrxnvi7c43jcbw4upJqWZHdtar2mb4xhmGW+LLqX93TbxmrbXj+GNxztzDG1/j+EtjnfqdeN9Kc1sb3v9PpvteKfnNN7WfB5vS/bjfaN91nKTMUzNeZ+9vm1SmklXbrTPcozgGMExgmNEHo4R1YO8lZ3qQT72MeQYwTGCY8Tde4z4p36PyHzfAO4MQik4OJFwWb+djbc/33ouQUfiM/6yecVs0fpTcfYD/umkK/rlzAV72x1RCTpwIaNtmsWq9afiFHclY96xs5dSFXk6zt52V0yi9sdl/GXUbLVp/ak4nb+cJkmKTk7V+lNxyrwt5N7zSdp7PkmSZJO0/lScopNTJUnnL6dp/ak4+xeL/XGXtCsm0f46kafjdPZSRtu4K+lafyrO/kPmwIVk7YhKsLf95cwFnU66Iinjh/T6U3H2H0JH4pO19dzfbX87G68TCZclSUlpZq0/FWf/YXYsIUWb/rpob7v5r4s6djFFUsaXgfWn4pR49UvVqcTL+vWa8d4WlaDDV8c71ZIx3plfUs4kXdHGa8Z7Z3SCDsRltDVdN95/Jacq8tTf4707JlF/xGaMt8WWMd4xKY7jfXUItS82SXuujreujve5q+Mde914/xl3Sbui/x7vDacv2Mc7/uoYpl79InrwQrK2RV8z3mfjdSoxc7wzxuXy1fE+ejFFW64Z701nL+r4xYzxvpSe0TbzS9Xxi5e16ezf473lXIKOXh3vy/Z9NnO8r+iXa8c7OkEHr+6zqeaMMYy/Ot5nL6Vqw+m/x3tXdKL+vG6fjb26z567OoaZ9pxP0r7YjDG02hz32ZiUjDG0XP0i9EfsJe2+dp89Fae/kh332cwvXAfikrXzmjHceOaCzlzdZy9mjvfV2/Iejk/Wtmv271/PxutUYsYYJl7dZzN/GTl2MUWbr9lnN/11UccSMsYw+ep4J13dZzlGcIzgGMExIq/HiKfvqyyDHBkkPR9WVRLHiKJwjPhxf7S6zPxVTcb/pK4zf9WP+6M5RlzFMaLwfo/I/Ld6N5o3b54aNWqkYsWKqVSpUnrooYd05cqVXPcTFhYmg8Egg8Ego9GoihUrqk+fPjp16lS+1Ll7926NHTtWly87flZz586VwWBQXFxcDlvmv2HDhqlSpUr50te145bT43omk0mlSpWS0WjU6dOn86WOO81gy4yIccfk5RadBeWK2aJ0i1V+Hhm3Z0xKM8nVaJSXm4ssVpuS0s3ydneRm9GoVLNFqWar/ItltL2UbpaLQfJyc5XVZlNimlnebi5yczEqzWzRlWvaJqebZZBU3N1VNptNCWlmFXdzkbuLUWkWqy6bLPL3cJXBYLB/SfO+pq2Xm4s8XIxKt1iVck3blHSzbFfbShlfCj1djfJwdZHJYlWyySI/D1cZDQZdNpllsUk+17Qt5mpUMVcXmaxWJadb5OvuKhejQZdNFpmtVvleHZfENJPcXYzydHWR2WrVpWvaXjFZZLqmbXZj6OPuIlejMWO8zVb5FbvBeF8dw+zG22iQil8z3vYxNFt02WxViVsY75uN4cVUk7xcXeTh+nfbzDFMSTfLqhzGMMt4W2Sx2uTjkdE2MdUkj6ttrx/DG4+3TZfSzfJxd5Wr0XBL+2zmeKeaLUq7ZrwvpZnlYjTIy80lyz6b7XhfHcOs423VZbMlH8c7Y5/NMt4ms6w57bNXxzvHMUw1yd01+332+rZJaSa5GY3yzGmf5RjBMYJjBMeIPB4jlu45p7m/ndDR88mqVtpbA1pXVveG5ThGFIFjxNajcXr26526lsEgTX28oTrVL8MxgmNEof0eYbHZ5Onqon+yvPy+aTKZFBsbq8DAQLm5uWVZP2HCBE2aNEmvv/66WrRoobi4OK1du1aTJ0+Wt3f2Z77mJCwsTGazWe+9954sFov27dunN954Q/7+/tq7d6+8vLxy1d/15s6dqwEDBig2NlalSpW66fI7adiwYfrhhx908uTJ2+7rzz//VFJSUpblx48f1xNPPKEHH3xQ//vf/xzWrVixQp07d5Ykvfvuu3r11Vdvu478lN1+RyjlBIUplAIAAAByq+vMX7XnbGKW5Q0q+Gvp860KoCLg7pHfodShQ4dUr149LVu2TA899NBt1xcWFiZvb2+tWLHCvmz+/Pl68skntWjRIvXo0SNP/VosFlmtVi1YsKBIhlLZMZvNat26tU6fPq09e/YoMDDQYX2fPn20atUqVa1aVenp6dq7d+8dqSOvstvvuHwPAAAAwG1hInug6Pjyyy9VuXLlfAmkchIaGipJOnHihCQpPj5eTz31lEqVKiVPT0+1bNlSGzdudNgmLCxMjzzyiObNm6eaNWvKw8ND06dP14ABAyRJgYGBMhgMN7x8btSoUapfv768vb1Vrlw59e7dW1FRUdm+zuLFi1WzZk15e3urXbt2OnbsmEO7c+fOqUuXLvLy8lK5cuU0efLk2x2Wm3rzzTe1bds2zZ8/P0sglZKSomXLlqlHjx7q37+/9u3bp3379t3xmm4XoRQAAACA21LjJhPZAyg8Nm/erPr16+vtt99W6dKl5e7urlatWmnLli0O7caOHSuDwZCns4Iyw6iyZcvKYrHooYce0vLlyzVp0iQtWrRI3t7eeuCBB7Rjxw6H7bZv364pU6Zo/PjxWrlypZ544gm98cYbkqTVq1dr06ZNWrJkSY6ve/78eb3++uv63//+p+nTp+vkyZNq06aNzGazQ7vdu3drypQpevfddzV37lwdPXpU/fr1c2jTtWtXbdu2TR9//LFmzZqlJUuWaPHixbkei1u1bt06TZ48Wa+88orat2+fZf0PP/yglJQU9enTR48//rhcXV0VERFxx+rJL64FXQAAAACAwu25ttU06OsdunZiEIPh74nsARQe0dHR2rFjh/bt26dZs2bJy8tL77zzjjp27KgjR46odOnSkiSj0SgXF5dsJ9y+ns1mk9lsltVq1b59+zRy5Ej5+/urQ4cO+t///qetW7dq9erVCg8PlySFh4erWrVqeuedd/Tdd9/Z+4mPj9e2bdtUoUIF+7KqVTOOM02aNLnpZXpz5syx/7/FYlGLFi1Uvnx5rVu3Th07drSvS0hI0K5du+xnIyUnJ2vAgAE6e/asypcvr9WrV2v79u1au3at2rVrJynjDKsKFSooICDgpuORWxcuXNATTzyhZs2a6a233sq2TUREhMqVK6c2bdrIaDSqffv2ioiI0DvvvHNLn1FB4UwpAAAAALclvG6wZvdrogYV/OXl7qIGFfz1Sb8m6lg3uKBLA5BLVqtVycnJWrx4sXr06KGHH35Yy5Ytk81m08yZM+3tRo8eLbPZrJCQkJv2uXLlSrm5ucnDw0OhoaEym836/vvvFRQUpF9++UW+vr72QEqS3Nzc9Oijj+rXX3916Oeee+5xCKRya9WqVWrZsqX8/Pzk6uqq8uXLS5IOHz7s0K5hw4YOl8fVqVNHknT27FlJ0pYtW+Tn52cPpCTJz89PHTp0uGkNZrPZ/rBcvePlzQwYMEApKSmKiIiQq2vWc4vi4uK0Zs0a9ezZU0ZjRszTp08fnT59OssY/tNwphQAAACA2xZeN1jhhFBAoVeiRAmVLFlS99xzj31ZQECAGjVqpP379+epz9atW+uDDz6Qi4uLypUrZz/bSpIuXrzo8DxTUFCQ4uPjsyzLq23btqlLly7q2rWrRo0apdKlS8tgMOjee+9VamqqQ1t/f3+H5+7u7pJkbxcVFZVlTqdbqe/kyZOqXLmy/XlISMhNL3+cOXOmli9froULFzpse61vv/1WZrNZnTp1UkJCgiSpbdu28vDwUEREhO67774bvkZBIpQCAAAAAACSpLp162aZ1DvT9eHNrfLz87NPbn69gIAAnT9/PsvymJiYLJfC3c5laEuWLJGfn5++/fZb+9lEp06dylNfZcqUUWxsbJblMTExN9yubNmy2rZtm/25h4fHDdtnXur41FNPqWfPnjm2y5w7Kru5phYtWqQZM2ZkucviPwWX7wEAAAAAAEnSI488ogsXLmj37t32ZRcuXNDOnTvVpEmTfH+91q1bKykpSWvWrLEvM5vNWrJkiVq3bn3T7a8/iyknV65ckZubm0OwtWDBgjzV3KxZMyUmJmrdunX2ZYmJifr5559vWmtoaKj9Ub9+/RvW27t3b1WqVEkzZszIsd2pU6f0+++/a9CgQVq/fr3D44MPPtCFCxe0evXq3L9JJ+FMKQAAAAAAIEnq1q2bmjZtqh49emjChAny9PTUxIkT5eHhoeeee87ebvz48Ro/fryOHTt2S/NK5aRTp05q1qyZ+vXrp3fffVdBQUH68MMPFRUVpddff/2m29euXVuS9NFHH6lbt27y8vLKNux54IEHNG3aNA0dOlTdu3fXpk2bNH/+/DzV/OCDD6px48bq27evJk2aJH9/f02cOFG+vr556i87L730kvbv36/Zs2dr37592bapU6eO/SypkSNHqkqVKg7rW7durYkTJyoiIkKdO3fOt9ryE6EUAAAAAACQlHFXvZUrV2r48OF69tlnlZ6ervvuu08bN25UcPDf88ZZrVZZLBbZrr3tZh64uLho5cqVevnllzVy5EilpKSocePGWrNmzS2dmdWoUSONHTtWn3/+uSZPnqwKFSpkO0/Tww8/rEmTJunDDz/Ul19+qVatWmnFihWqUaNGrms2GAxaunSpBg0apGeffVYlSpTQ0KFDFRMTox9++CHX/WVn5cqVkqRBgwbl2Gb9+vWKiIhQq1atsgRSkuTq6qo+ffro008/VXJysry9vfOltvxksN3uHoSbSkpKkp+fnxITE/M1OQUAAAAA3N3y8vumyWRSbGysAgMD/7FzDaHoyW6/40wpAAAAAMAN/bg/WrPWH9XhmGTVCPLWc22rcbdFALeNic4BAAAAADn6cX+0np2/Q3vOJuqKyaI9ZxM16Osd+nF/dEGXBqCQI5QCAAAAAORo1vqjWZbZbNKsyGMFUA2AooRQCgAAAACQo8MxydkuPxJzycmVAChqCKUAAAAAADmqEZT9HbuqB/k4uRIARQ2hFAAAAAAgR8+1rSaDwXGZwSA9H1a1YAoCUGRw9z0AAAAAQI7C6wZrdr8mmhV5TEdiLql6kI+eD6uqjtx9r9Azm80FXQLuItntb4RSAAAAAIAbCq8brHBCqCLDaDTKYDDo4sWLBV0K7jIGg0FG498X7RFKAQAAAABwF3FxcVHp0qVltVoLuhTcZYxGo1xcXOzPCaUAAAAAALjLuLi4OIQDQEFgonMAAAAAAAA4HaEUAAAAAAAAnI5QCgAAAAAAAE5HKAUAAAAAAACnK3Sh1EcffaRKlSqpWLFiat68ubZu3XrD9osWLVKtWrVUrFgx1a9fXytXrnRYb7PZNHr0aJUpU0aenp7q0KGDjhw54tAmPj5effv2la+vr/z9/fX0008rOTk5398bAAAAAADA3aJQhVL//e9/NWLECI0ZM0Y7d+5UgwYNFB4ervPnz2fb/vfff1fv3r319NNPa9euXerWrZu6deumP/74w95m8uTJmjFjhmbPnq0tW7aoePHiCg8PV2pqqr1N3759tX//fv30009asWKFNm7cqIEDB97x9wsAAAAAAFBUGWw2m62gi7hVzZs3V9OmTTVz5kxJktVqVYUKFTR06FCNGjUqS/uePXsqJSVFK1assC+799571bBhQ82ePVs2m01ly5bVSy+9pJdfflmSlJiYqKCgIM2dO1e9evXSgQMHVKdOHW3btk2hoaGSpNWrV+vhhx/W2bNnVbZs2ZvWnZSUJD8/PyUmJsrX1zc/hgIAAAAAAH7fRKFWaM6USk9P144dO9ShQwf7MqPRqA4dOmjTpk3ZbrNp0yaH9pIUHh5ub3/ixAlFR0c7tPHz81Pz5s3tbTZt2iR/f397ICVJHTp0kNFo1JYtW7J93bS0NCUlJTk8AAAAAAAA8LdCE0rFxcXJYrEoKCjIYXlQUJCio6Oz3SY6OvqG7TP/e7M2pUuXdljv6uqqgICAHF934sSJ8vPzsz8qVKhwi+8SAAAAAADg7lBoQqnC5LXXXlNiYqL9cebMmYIuCQAAAAAA4B+l0IRSpUqVkouLi2JiYhyWx8TEKDg4ONttgoODb9g+8783a3P9ROpms1nx8fE5vq6Hh4d8fX0dHgAAAAAAAPhboQml3N3d1aRJE61du9a+zGq1au3atWrRokW227Ro0cKhvST99NNP9vaVK1dWcHCwQ5ukpCRt2bLF3qZFixZKSEjQjh077G3WrVsnq9Wq5s2b59v7AwAAAAAAuJu4FnQBuTFixAj9+9//VmhoqJo1a6Zp06YpJSVFAwYMkCQ9+eSTKleunCZOnChJevHFF9WmTRtNnTpVnTp10sKFC7V9+3Z9+umnkiSDwaBhw4bp7bffVvXq1VW5cmW9+eabKlu2rLp16yZJql27th588EE988wzmj17tkwmk4YMGaJevXrd0p33AAAAAAAAkFWhCqV69uyp2NhYjR49WtHR0WrYsKFWr15tn6j89OnTMhr/PvmrZcuWioiI0BtvvKHXX39d1atX1w8//KB69erZ27zyyitKSUnRwIEDlZCQoNatW2v16tUqVqyYvc2CBQs0ZMgQtW/fXkajUY899phmzJjhvDcOAAAAAABQxBhsNputoIso6pKSkuTn56fExETmlwIAAAAA5Bt+30RhVmjmlAIAAAAAAEDRQSgFAAAAAAAApyOUAgAAAAAAgNMRSgEAAAAAAMDpCKUAAAAAAADgdIRSAAAAAAAAcDpCKQAAAAAAADgdoRQAAAAAAACcjlAKAAAAAAAATkcoBQAAAAAAAKcjlAIAAAAAAIDTEUoBAAAAAADA6QilAAAAAAAA4HSEUgAAAAAAAHA6QikAAAAAAAA4HaEUAAAAAAAAnI5QCgAAAAAAAE5HKAUAAAAAAACnI5QCAAAAAACA0xFKAQAAAAAAwOkIpQAAAAAAAOB0hFIAAAAAAABwOkIpAAAAAAAAOB2hFAAAAAAAAJyOUAoAAAAAAABORygFAAAAAAAApyOUAgAAAAAAgNMRSgEAAAAAAMDpCKUAAAAAAADgdIRSAAAAAAAAcDpCKQAAAAAAADgdoRQAAAAAAACcjlAKAAAAAAAATkcoBQAAAAAAAKcjlAIAAAAAAIDTEUoBAAAAAADA6QilAAAAAAAA4HSEUgAAAAAAAHA6QikAAAAAAAA4HaEUAAAAAAAAnI5QCgAAAAAAAE5HKAUAAAAAAACnI5QCAAAAAACA0xFKAQAAAAAAwOkIpQAAAAAAAOB0hFIAAAAAAABwOkIpAAAAAAAAOB2hFAAAAAAAAJyOUAoAAAAAAABORygFAAAAAAAApyOUAgAAAAAAgNMRSgEAAAAAAMDpCKUAAAAAAADgdIRSAAAAAAAAcDpCKQAAAAAAADgdoRQAAAAAAACcjlAKAAAAAAAATkcoBQAAAAAAAKcjlAIAAAAAAIDTEUoBAAAAAADA6QilAAAAAAAA4HSEUgAAAAAAAHA6QikAAAAAAAA4HaEUAAAAAAAAnI5QCgAAAAAAAE5HKAUAAAAAAACnI5QCAAAAAACA0xFKAQAAAAAAwOkIpQAAAAAAAOB0hFIAAAAAAABwOteCLuBuYjKZZDKZCroMAAAAAEARwe+YKMwIpZzo9OnT8vHxKegyAAAAAABFxKVLlwq6BCDPCKWcyGg0yt3dvaDLAAAAAAAUEUYjs/Kg8CKUciJXV1e5ujLkAAAAAID8we+YKMyIVAEAAAAAAOB0hFIAAAAAAABwOkIpAAAAAAAAOB2hFAAAAAAAAJyOUAoAAAAAAABORygFAAAAAAAApyOUAgAAAAAAgNMRSgEAAAAAAMDpCKUAAAAAAADgdIRSAAAAAAAAcDpCKQAAAAAAADgdoRQAAAAAAACcjlAKAAAAAAAATkcoBQAAAAAAAKcjlAIAAAAAAIDTEUoBAAAAAADA6QilAAAAAAAA4HSEUgAAAAAAAHA6QikAAAAAAAA4HaEUAAAAAAAAnI5QCgAAAAAAAE5HKAUAAAAAAACnI5QCAAAAAACA0xWaUCo+Pl59+/aVr6+v/P399fTTTys5OfmG26Smpur5559XyZIl5e3trccee0wxMTEObU6fPq1OnTrJy8tLpUuX1siRI2U2m+3rIyMjZTAYsjyio6PvyPsEAAAAAAC4GxSaUKpv377av3+/fvrpJ61YsUIbN27UwIEDb7jN8OHDtXz5ci1atEgbNmzQuXPn9Oijj9rXWywWderUSenp6fr99981b948zZ07V6NHj87S16FDhxQVFWV/lC5dOt/fIwAAAAAAwN3CYLPZbAVdxM0cOHBAderU0bZt2xQaGipJWr16tR5++GGdPXtWZcuWzbJNYmKiAgMDFRERoR49ekiSDh48qNq1a2vTpk269957tWrVKj3yyCM6d+6cgoKCJEmzZ8/Wq6++qtjYWLm7uysyMlJt27bVxYsX5e/vn6f6k5KS5Ofnpz/++EMlSpTI2yAAAAAAAHCdixcvql69ekpMTJSvr29BlwPkSqE4U2rTpk3y9/e3B1KS1KFDBxmNRm3ZsiXbbXbs2CGTyaQOHTrYl9WqVUsVK1bUpk2b7P3Wr1/fHkhJUnh4uJKSkrR//36H/ho2bKgyZcrogQce0G+//Zafbw8AAAAAAOCu41rQBdyK6OjoLJfLubq6KiAgIMe5naKjo+Xu7p7l7KagoCD7NtHR0Q6BVOb6zHWSVKZMGc2ePVuhoaFKS0vT559/rrCwMG3ZskWNGzfO9rXT0tKUlpZmf56UlHTrbxYAAAAAAOAuUKBnSo0aNSrbScSvfRw8eLAgS1TNmjX17LPPqkmTJmrZsqXmzJmjli1b6oMPPshxm4kTJ8rPz8/+qFChghMrBgAAAAAA+Ocr0DOlXnrpJfXv3/+GbapUqaLg4GCdP3/eYbnZbFZ8fLyCg4Oz3S44OFjp6elKSEhwOFsqJibGvk1wcLC2bt3qsF3m3fly6leSmjVrpl9//TXH9a+99ppGjBhhf56UlEQwBQAAAAAAcI0CDaUCAwMVGBh403YtWrRQQkKCduzYoSZNmkiS1q1bJ6vVqubNm2e7TZMmTeTm5qa1a9fqsccek5RxB73Tp0+rRYsW9n4nTJig8+fP2y8P/Omnn+Tr66s6derkWM/u3btVpkyZHNd7eHjIw8Pjpu8LAAAAAADgblUo5pSqXbu2HnzwQT3zzDOaPXu2TCaThgwZol69etnvvPfXX3+pffv2+uqrr9SsWTP5+fnp6aef1ogRIxQQECBfX18NHTpULVq00L333itJ6tixo+rUqaMnnnhCkydPVnR0tN544w09//zz9lBp2rRpqly5surWravU1FR9/vnnWrdundasWVNg4wEAAAAAAFDYFYpQSpIWLFigIUOGqH379jIajXrsscc0Y8YM+3qTyaRDhw7p8uXL9mUffPCBvW1aWprCw8M1a9Ys+3oXFxetWLFCgwcPVosWLVS8eHH9+9//1vjx4+1t0tPT9dJLL+mvv/6Sl5eX7rnnHv38889q27atc944AAAAAABAEWSw2Wy2gi6iqEtKSpKfn5/++OMPlShRoqDLAQAAAAAUERcvXlS9evWUmJgoX1/fgi4HyJUCvfseAAAAAAAA7k6EUgAAAAAAAHA6QikAAAAAAAA4HaEUAAAAAAAAnI5QCgAAAAAAAE5HKAUAAAAAAACnI5QCAAAAAACA0xFKAQAAAAAAwOkIpQAAAAAAAOB0hFIAAAAAAABwOkIpAAAAAAAAOB2hFAAAAAAAAJyOUAoAAAAAAABORygFAAAAAAAApyOUAgAAAAAAgNMRSgEAAAAAAMDpCKUAAAAAAADgdIRSAAAAAAAAcDpCKQAAAAAAADgdoRQAAAAAAACcjlAKAAAAAAAATkcoBQAAAAAAAKcjlAIAAAAAAIDTEUoBAAAAAADA6QilAAAAAAAA4HSEUgAAAAAAAHA6QikAAAAAAAA4HaEUAAAAAAAAnI5QCgAAAAAAAE5HKAUAAAAAAACnI5QCAAAAAACA0xFKAQAAAAAAwOkIpQAAAAAAAOB0hFIAAAAAAABwOkIpAAAAAAAAOB2hFAAAAAAAAJyOUAoAAAAAAABORygFAAAAAAAApyOUAgAAAAAAgNMRSgEAAAAAAMDpXAu6gLuJ2WyW2Wwu6DIAAAAAAEUEv2OiMCOUciKr1ar09PSCLgMAAAAAUERYrdaCLgHIM0IpJ6pYsaJ8fX0LugwAAAAAQBGRlJRU0CUAeUYo5URubm5yc3Mr6DIAAAAAAEUEv2OiMGOicwAAAAAAADgdoRQAAAAAAACcjlAKAAAAAAAATkcoBQAAAAAAAKcjlAIAAAAAAIDTEUoBAAAAAADA6QilAAAAAAAA4HSEUgAAAAAAAHA6QikAAAAAAAA4HaEUAAAAAAAAnI5QCgAAAAAAAE5HKAUAAAAAAACnI5QCAAAAAACA0xFKAQAAAAAAwOkIpQAAAAAAAOB0hFIAAAAAAABwOkIpAAAAAAAAOB2hFAAAAAAAAJyOUAoAAAAAAABO51rQBdwNbDabJCkpKamAKwEAAAAAFCWZv2dm/t4JFCaEUk5w6dIlSVKFChUKuBIAAAAAQFF06dIl+fn5FXQZQK4YbMSpd5zVatW5c+fk4+Mjg8FQ0OXgqqSkJFWoUEFnzpyRr69vQZeDfMbnW7Tx+RZtfL5FG59v0cbnW7Tx+f4z2Ww2Xbp0SWXLlpXRyAw9KFw4U8oJjEajypcvX9BlIAe+vr78UC3C+HyLNj7foo3Pt2jj8y3a+HyLNj7ffx7OkEJhRYwKAAAAAAAApyOUAgAAAAAAgNMRSuGu5eHhoTFjxsjDw6OgS8EdwOdbtPH5Fm18vkUbn2/RxudbtPH5AshvTHQOAAAAAAAAp+NMKQAAAAAAADgdoRQAAAAAAACcjlAKAAAAAAAATkcohbsaU6oBAAAAAFAwXAu6AKAgeXh4aM+ePapdu3ZBlwLgBuLi4jRnzhxt2rRJ0dHRkqTg4GC1bNlS/fv3V2BgYAFXCAAAACC3uPse7gojRozIdvn06dPVr18/lSxZUpL0/vvvO7MsONGZM2c0ZswYzZkzp6BLQS5t27ZN4eHh8vLyUocOHRQUFCRJiomJ0dq1a3X58mX9+OOPCg0NLeBKkVdXrlzRjh07FBAQoDp16jisS01N1bfffqsnn3yygKpDfkpJSdG3336ro0ePqkyZMurdu7f9ZzAKn507d6pEiRKqXLmyJGn+/PmaPXu2Tp8+rZCQEA0ZMkS9evUq4CpxOw4cOKDNmzerRYsWqlWrlg4ePKjp06crLS1N/fr1U7t27Qq6RACFHKEU7gpGo1ENGjSQv7+/w/INGzYoNDRUxYsXl8Fg0Lp16wqmQNxxe/bsUePGjWWxWAq6FOTSvffeqwYNGmj27NkyGAwO62w2mwYNGqS9e/dq06ZNBVQhbsfhw4fVsWNHnT59WgaDQa1bt9bChQtVpkwZSRnhY9myZfm3W0jVqVNHv/76qwICAnTmzBndf//9unjxomrUqKFjx47J1dVVmzdvtocaKFwaNGigqVOnqkOHDvr888/1wgsv6JlnnlHt2rV16NAhff7555o+fbqeeuqpgi4VebB69Wp17dpV3t7eunz5spYsWaInn3xSDRo0kNVq1YYNG7RmzRqCKQC3hVAKd4V3331Xn376qT7//HOHH5xubm7as2dPlr/Mo/BZtmzZDdcfP35cL730Er/YFkKenp7atWuXatWqle36gwcPqlGjRrpy5YqTK0N+6N69u0wmk+bOnauEhAQNGzZMf/75pyIjI1WxYkVCqULOaDQqOjpapUuXVr9+/XTixAmtXLlSfn5+Sk5OVvfu3RUYGKiIiIiCLhV54OXlpQMHDigkJESNGzfW4MGD9cwzz9jXR0REaMKECdq/f38BVom8atmypdq1a6e3335bCxcu1HPPPafBgwdrwoQJkqTXXntNO3bs0Jo1awq4UgCFGXNK4a4watQotW/fXv369VPnzp01ceJEubm5FXRZyEfdunWTwWC44eT1159lg8IhODhYW7duzTGU2rp1q/2SPhQ+v//+u37++WeVKlVKpUqV0vLly/Xcc8/pvvvu0/r161W8ePGCLhH5ZNOmTZo9e7b8/PwkSd7e3ho3bhyXdxViXl5eiouLU0hIiP766y81a9bMYX3z5s114sSJAqoOt2v//v366quvJEmPP/64nnjiCfXo0cO+vm/fvvryyy8LqjwARQR338Ndo2nTptqxY4diY2MVGhqqP/74g5CiCClTpoy+//57Wa3WbB87d+4s6BKRRy+//LIGDhyoF198UcuWLdOWLVu0ZcsWLVu2TC+++KIGDRqkV155paDLRB5duXJFrq5//43MYDDo448/VufOndWmTRsdPny4AKtDfsj8WZuammq/LDNTuXLlFBsbWxBlIR889NBD+vjjjyVJbdq00eLFix3Wf/vtt6pWrVpBlIZ8kvnv12g0qlixYvZQWZJ8fHyUmJhYUKUBKCI4Uwp3FW9vb82bN08LFy5Uhw4duBykCGnSpIl27Nihrl27Zrv+ZmdR4Z/r+eefV6lSpfTBBx9o1qxZ9n+3Li4uatKkiebOnavHH3+8gKtEXtWqVUvbt2/PchfUmTNnSpK6dOlSEGUhH7Vv316urq5KSkrSoUOHVK9ePfu6U6dOMdF5ITZp0iS1atVKbdq0UWhoqKZOnarIyEj7nFKbN2/WkiVLCrpM5FGlSpV05MgRVa1aVVLG2Y4VK1a0rz99+nSWoBkAcotQCnelXr16qXXr1tqxY4dCQkIKuhzkg5EjRyolJSXH9dWqVdP69eudWBHyU8+ePdWzZ0+ZTCbFxcVJkkqVKsVluEVA9+7d9c033+iJJ57Ism7mzJmyWq2aPXt2AVSG/DBmzBiH597e3g7Ply9frvvuu8+ZJSEflS1bVrt27dK7776r5cuXy2azaevWrTpz5oxatWql3377jTujFmKDBw92+APutYGyJK1atYpJzgHcNiY6BwAAAAAAgNMxpxQAAAAAAACcjlAKAAAAAAAATkcoBQAAAAAAAKcjlAIAAAAAAIDTEUoBAABJ0ty5c+Xv73/L7SMjI2UwGJSQkHDHagIAAEDRRSgFAEAhtWnTJrm4uKhTp0653rZSpUqaNm2aw7KePXvq8OHDt9xHy5YtFRUVJT8/P0m5D7WuN27cOPXr1y/bdWPHjpXBYJDBYJCrq6tKlSql+++/X9OmTVNaWlquXqegwrSxY8eqYcOGTn1NAACAfzJCKQAACqkvvvhCQ4cO1caNG3Xu3Lnb7s/T01OlS5e+5fbu7u4KDg6WwWC47deWpKVLl6pLly45rq9bt66ioqJ0+vRprV+/Xv/61780ceJEtWzZUpcuXcqXGgAAAOA8hFIAABRCycnJ+u9//6vBgwerU6dOmjt3bpY2y5cvV9OmTVWsWDGVKlVK3bt3lySFhYXp1KlTGj58uP3sI8nxTKfDhw/LYDDo4MGDDn1+8MEHqlq1qiTHM44iIyM1YMAAJSYm2vscO3asxo8fr3r16mWprWHDhnrzzTftz8+cOaP9+/frwQcfzPE9u7q6Kjg4WGXLllX9+vU1dOhQbdiwQX/88YcmTZpkbzd//nyFhobKx8dHwcHB6tOnj86fPy9JOnnypNq2bStJKlGihAwGg/r37y9JWr16tVq3bi1/f3+VLFlSjzzyiI4dO2bvNz09XUOGDFGZMmVUrFgxhYSEaOLEifb1CQkJ+s9//qPAwED5+vqqXbt22rNnj31sx40bpz179tjHJ7vPDAAA4G5CKAUAQCH07bffqlatWqpZs6b69eunOXPmyGaz2df/73//U/fu3fXwww9r165dWrt2rZo1ayZJ+v7771W+fHmNHz9eUVFRioqKytJ/jRo1FBoaqgULFjgsX7Bggfr06ZOlfcuWLTVt2jT5+vra+3z55Zf11FNP6cCBA9q2bZu97a5du7R3714NGDDAvmzZsmUKCwuTr69vrsahVq1aeuihh/T999/bl5lMJr311lvas2ePfvjhB508edIePFWoUEHfffedJOnQoUOKiorS9OnTJUkpKSkaMWKEtm/frrVr18poNKp79+6yWq2SpBkzZmjZsmX69ttvdejQIS1YsECVKlWyv+6//vUvnT9/XqtWrdKOHTvUuHFjtW/fXvHx8erZs6deeukl+9leUVFR6tmzZ67eKwAAQFHjWtAFAACA3Pviiy/s8y89+OCDSkxM1IYNGxQWFiZJmjBhgnr16qVx48bZt2nQoIEkKSAgQC4uLvYziXLSt29fzZw5U2+99ZakjLOnduzYoa+//jpLW3d3d/n5+clgMDj06e3trfDwcH355Zdq2rSpJOnLL79UmzZtVKVKFXu7pUuXqmvXrnkai1q1amnNmjX250899ZT9/6tUqaIZM2aoadOmSk5Olre3twICAiRJpUuXdpgD67HHHnPod86cOQoMDNSff/6pevXq6fTp06pevbpat24tg8GgkJAQe9tff/1VW7du1fnz5+Xh4SFJeu+99/TDDz9o8eLFGjhwoLy9ve1newEAAIAzpQAAKHQOHTqkrVu3qnfv3pIyLmvr2bOnvvjiC3ub3bt3q3379rf1Or169dLJkye1efNmSRlnSTVu3Fi1atXKVT/PPPOMvvnmG6Wmpio9PV0REREOwVFSUpI2bNhww/mkbsRmsznMa7Vjxw517txZFStWlI+Pj9q0aSNJOn369A37OXLkiHr37q0qVarI19fXfhZU5nb9+/fX7t27VbNmTb3wwgsOQdiePXuUnJyskiVLytvb2/44ceKEwyWAAAAA+BtnSgEAUMh88cUXMpvNKlu2rH2ZzWaTh4eHZs6cKT8/P3l6et726wQHB6tdu3aKiIjQvffeq4iICA0ePDjX/XTu3FkeHh5asmSJ3N3dZTKZ1KNHD/v6VatWqU6dOqpQoUKe6jxw4IAqV64sKeMSvPDwcIWHh2vBggUKDAzU6dOnFR4ervT09JvWGRISos8++0xly5aV1WpVvXr17Ns1btxYJ06c0KpVq/Tzzz/r8ccfV4cOHbR48WIlJyerTJkyioyMzNLv7dyREAAAoCgjlAIAoBAxm8366quvNHXqVHXs2NFhXbdu3fTNN99o0KBBuueee7R27VqHeZuu5e7uLovFctPX69u3r1555RX17t1bx48fV69evXJsm1Ofrq6u+ve//60vv/xS7u7u6tWrl0NodjuX7h08eFCrV6/Wa6+9Zn9+4cIFvfvuu/aQa/v27VnqlORQ64ULF3To0CF99tlnuu+++yRlXJJ3PV9fX/Xs2VM9e/ZUjx499OCDDyo+Pl6NGzdWdHS0XF1dHeaZuv51b2XMAQAA7hZcvgcAQCGyYsUKXbx4UU8//bTq1avn8Hjsscfsl/CNGTNG33zzjcaMGaMDBw5o3759Dneoq1SpkjZu3Ki//vpLcXFxOb7eo48+qkuXLmnw4MFq27atw9lZ16tUqZKSk5O1du1axcXF6fLly/Z1//nPf7Ru3TqtXr3a4dI9s9msVatW3dKle2azWdHR0Tp37pz27dunDz/8UG3atFHDhg01cuRISVLFihXl7u6uDz/8UMePH9eyZcvsc2JlCgkJkcFg0IoVKxQbG6vk5GSVKFFCJUuW1KeffqqjR49q3bp1GjFihMN277//vr755hsdPHhQhw8f1qJFixQcHCx/f3916NBBLVq0ULdu3bRmzRqdPHlSv//+u/7v//7PHopVqlRJJ06c0O7duxUXF6e0tLSbvmcAAICijFAKAIBC5IsvvlCHDh3k5+eXZd1jjz2m7du3a+/evQoLC9OiRYu0bNkyNWzYUO3atdPWrVvtbcePH6+TJ0+qatWqCgwMzPH1fHx81LlzZ+3Zs0d9+/a9YW0tW7bUoEGD1LNnTwUGBmry5Mn2ddWrV1fLli1Vq1YtNW/e3L58w4YN8vb2VuPGjW/63vfv368yZcqoYsWKCgsL07fffqvXXntNv/zyi7y9vSVJgYGBmjt3rhYtWqQ6dero3Xff1XvvvefQT7ly5TRu3DiNGjVKQUFBGjJkiIxGoxYuXKgdO3aoXr16Gj58uKZMmZJlLCZPnqzQ0FA1bdpUJ0+e1MqVK2U0GmUwGLRy5Urdf//9GjBggGrUqKFevXrp1KlTCgoKkpTx+Tz44INq27atAgMD9c0339z0PQMAABRlBtu1948GAAC4A2w2m6pXr67nnnvO4QykF154QWazWbNmzSrA6gAAAFAQmFMKAADcUbGxsVq4cKGio6OzzHFVr149tWjRooAqAwAAQEHiTCkAAHBHGQwGlSpVStOnT1efPn0KuhwAAAD8Q3CmFAAAuKP4+xcAAACyw0TnAAAAAAAAcDpCKQAAAAAAADgdoRQAAAAAAACcjlAKAAAAAAAATkcoBQAAAAAAAKcjlAIAAAAAAIDTEUoBAAAAAADA6QilAAAAAAAA4HSEUgAAAAAAAHC6/wcrm9QeWuOh2AAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "dopo.lvl1_plot(cement_sector_LCAs_w_other, 'Cement')" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "130edf0a-2dd4-4db0-99fe-84112ce4b54f", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ySefmP2++eYb1atXTy1bttS9e/f0888/q3Hjxlq0aJFq1679VOdWrlw5zZo1y3x/7do17du3T8mSJdP69etVsGBBSdL69euVOnVq5cmTR5K0fft2bdq0Sc2aNVPGjBl14sQJjRs3ThUrVtT+/fvl4eFhd5zOnTsrderUGjhwoG7dumW2P891FJ8jR46oUaNGateunYKDgzVlyhS1bdtWRYsWNUOjs2fPqlKlSrLZbOrbt688PT01efLkp1r2OiHfl2EYqlevntasWaN27dqpUKFCWr58uXr37q2zZ8+a1+v06dPVvn17BQUFqUOHDpKk7NmzS3L8/bJy5UodO3ZMISEhSpcunblU8L59+7RlyxbZbLYEf2bSg2WkbTabChcubNf++++/S5LdzN8niQmAN2zYYM4U3bhxo0qWLKkSJUrIxcVFmzZtUr169cxt3t7eev3115849rFjx+Tk5GR3jybE7t27JSnWbNT06dMrY8aM5vaYvkWKFFGyZPZ/PxwUFKSJEyfq8OHDKlCggNletGhRff3119q3b5/y58//VHVJD+63mjVr6s0331STJk00d+5c9enTRwUKFLAL5BPio48+0rBhwzRhwgS98847kh78kUTlypV1/vx5devWTenSpdPMmTO1Zs2aBI35NL+zli5dqqioKLVp0ybePm3atNGaNWu0bNkytW/fPt5+Fy5ckPQgWE6o0NBQuz9KkB78AYifn5+kB/d+/fr1tWHDBnXq1El58uTR/PnzFRwcnOBjAAAAAAAgAwAAIBGEhoYakoz69esnqP+JEycMJycnY+jQoXbt//zzj+Hs7GzXXqFCBUOSMXPmTLPt4MGDhiQjWbJkxpYtW8z25cuXG5KMqVOnmm3t2rUzAgICjCtXrtgdq1mzZoavr68RERFhGIZhrFmzxpBk5MmTx7h7967Z75tvvjEkGf/884/ZVrt2bSMwMDBB5/o0Lly4YDg7OxsNGjSwax80aJAhyQgODjbbYupds2aNYRiGce/ePSNNmjRG/vz5jdu3b5v9Fi1aZEgyBg4caLYFBwcbkoyuXbuabdHR0Ubt2rWN5MmTG5cvXzbbYz6fGPfu3TPy589vVK5c2a49MDDQrr64zJkzx5Bk7N+/3zAMw1i4cKHh6upq1KtXz2jatKnZr2DBgkbDhg3jrcEwDGPz5s2GJOPHH38026ZOnWpI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vl1VqlTRqFGj7GqYPn26+vfvry5dupjhdteuXbVo0SK7fp9//rnq16+vXbt2qVOnTrHOZf/+/WrQoIHq16+vHTt26KefftLWrVv19ttvS5LWr1+v/v37q3///vrnn3/0+++/q1y5cs/3AQP/AQ5fqvrbb7/VF198oQsXLuj111/XmDFjFBQUFG//GzduqH///vr111917do1BQYGatSoUapVq9ZLrBoAAAAAAAAAAODVceDAARmGoTx58jy234ABA8z/zpUrl65evaoePXpIktzc3OTr6ytJdktD//vvv5o7d66OHDmiLFmySJIGDx6slStXavz48Ro7dqy++eYblS9fXoMHD5YkFShQQJs3b9bq1avNcb7++ms1atRIffr0Mfts27ZNI0eOVJ06dcx+DRs21Pvvv293/IcNHjxYDRo0MM8lf/78GjVqlN544w1FRETo+PHjcnd3V5MmTZQiRQrlzJlTpUuXTtgHCfyHOXTG8ezZs9WzZ099/PHH2rVrl15//XXVqFFDly5dirP/vXv3VK1aNZ04cUJz587VoUOHNGnSJGXIkOElVw4AAAAAAAAAAPDqiI6OTlC/BQsWqFSpUkqTJo08PT3VqVMn3bhxQ+Hh4fHus2vXLkVFRSlv3rzy8PAwX9u2bdPx48clSUePHlWxYsXs9itevLjd+6NHj6pMmTJ2baVLl9aRI0fs2h4d51H79u3T3Llz7WqpX7++oqOjdejQIdWrV08BAQHKmjWrGjZsqPHjxz/2/IBXhUNnHH/11Vd65513FBISIkkaP368Fi9erClTpuh///tfrP5TpkzRtWvXtGnTJrm4uEiS+ZcpAAAAAAAAAAAAeDb58uWTzWbTgQMH4u1z6NAhNWnSRK1bt9bQoUOVOnVq/fHHH+revbvu3r0b63nEMW7evCknJydt2bJFTk5OdtviWhb7eXl5eT12e0REhFq2bKkPPvgg1rbs2bPLzc1N+/bt05IlS7Rs2TINHTpUw4cP186dO80lu4FXkcNmHN+7d087d+5U1apV/6+YZMlUtWpVbd68Oc59Fi5cqFKlSum9995T2rRplT9/fg0bNkxRUVHxHufu3bsKCwuzewEAAAAAAAAAAOD/pEmTRmXLltX3338fZ5Zy5coVbdmyRdHR0ZowYYIqV66sAgUK6OzZs3b9kidPHmv2clBQkKKionT+/Hnl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Pz916NBBkZGRkqRevXqpfv36euONN+Tp6amCBQvq4MGDkqSyZctKkvLlyycPDw8tX7481nmEhYWpdevWSpMmjXx8fNSwYcM4zzdDhgxasWKFJKlRo0YKCQlRqVKl5OnpqbJly+rSpUtx7tepUyeVKlVK4eHhunTpkurVq6dUqVIpY8aMGjt2rNkvKChI3bt3V/78+eXp6anbt28rJCREKVOmlLe3t/Lnz6/z588/8XsB8GojOAYAAAAAAAAAwAJat24tNzc3lS9fXiVLlow1q1iSpk6dqoIFCypv3rxm2z///KNVq1apT58+cY47YcIEeXp6KkuWLLp9+7ZatWolSdq/f7/y5ctn9sudO7ecnZ114MABs57WreOekb1q1SoVLFhQWbJkiXN7aGio6tSpo65du+ratWvq27evmjRpooiICLPPhg0bdPDgQc2aNUsfffSRvvjiC23evFnr1q3TmDFjzDo++eQTbd68WTt27NChQ4f0999/a+TIkeY4y5cv13vvvacbN24oR44c6t+/vzm+JO3bt08RERGqUaNGrDo7dOigM2fO6O+//9bly5f17rvvxnk+j/r99981atQoXb58WVFRURo+fLjd9ujoaIWEhGjfvn1atWqVvL291aRJEwUEBOjs2bNatGiRPvnkE23dutXc59dff9Xs2bN148YNLV68WNu3b9exY8d0/fp1TZgwQR4eHgmqDcCri+AYAAAAAAAAAAALmD59um7evKkFCxaoatWqSpYsdkTw888/q3nz5nZt7733noYNGyZXV9c4x+3YsaNu3bql7du3q1mzZkqRIoWkB88o9vHxsevr6elpPqN4+vTpmj497qW2r169qjRp0sR7LnPmzFHOnDkVHBwsZ2dntWrVSn5+fvrzzz/NPn379pW3t7fq1KkjT09PtWzZUmnSpFGhQoWUM2dO7dy506xjyJAhSp8+vfz9/dWjRw+75bRLly6tOnXqyMXFRc2bN9e+ffvirethUVFRmj9/vsaMGaOAgAC5urqqevXqCdq3Tp06KlGihDw8PNSgQQPt3bvX3GYYhlq2bKkTJ05oxYoV8vT01OnTp7V161aNHj1a7u7uKlSokBo2bKhffvnF3K9Vq1bm7OjkyZPr1q1b2rNnj5IlS6YyZcrI19c3QbUBeHURHAMAAAAAAAAAYBHOzs6qV6+e/vjjD82ZM8du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3btr27Zt8vDw0NChQ+3qj6n9q6++UurUqeXv72/3Hcc3riSFhYWpfv368vb2Vt68efXvv//G+9306tVLdevWVbVq1eTp6alixYrp0KFD5vZt27apWLFi8vHxUb58+bR+/XpJUtOmTXX+/HnVq1dPHh4eGj9+/FN/l4/64YcflCNHDvn6+qpKlSo6e/as3ef6sIeXSM6QIYMGDhyobNmyydPTU927d9eePXuUP39+eXt7q2XLlvEe02rXZu/eveXr66sMGTLo119/Nbc/Onv80WXEhw4dqsDAQHl6eqpgwYLmH9U87HHX5Jo1a5Q/f355eXkpffr0Gjp0qLkt5hqsUaOGPDw8tGjRIrtxy5cvr61bt6p79+7y8PDQxYsXn1jvZ599psDAQKVMmVJvvfWWwsLC4vxcnkWCg+NBgwYpV65c+vfff9W3b181aNBADRo0UL9+/XT48GHlzJlTgwYNSrTCAAAAAAAAAABA4mndurXc3NxUvnx5lSxZUsWLFze3rVixQt7e3kqTJo0OHDigjh07mtty5sypCRMmxDnmunXrVKtWLSVLFnfc8Ntvv2nkyJFauHChTp48qdu3b9uNLT14Fm5ISIj27dunVatWydvbW02aNFFAQIDOnj2rRYsW6ZNPPtHWrVtjjX/nzh3Vr19fDRs21JUrV9SzZ081atRIly9fVvPmzfXPP/+Yk97u3LmjFStWqE2bNoqKilKdOnVUrVo1Xb58WZMmTVL79u3tJsgtWrRIGzdu1N9//63ff/89VuDzsF9++UW//PKLjh07pjNnzqh///7mtp07d6pUqVK6ceOGOnbsqCZNmihPnjy6ePGixowZo3feeUf79u2TJLVv317+/v66dOmShg4dqvnz58d7zIdFRkaqdu3aKlq0qM6dO6fDhw+rQoUKqlWrlt5//3299dZbioiI0Lp16/Tbb79p+/btOnbsmK5fv64JEyaYs4KnT5+u6dOnx3ucc+fOydnZWRcuXNDw4cP17rvv6vr16/r333+1detW/fLLL/r555/VqVMnjRw5UkFBQYqIiLD7PGJERUVp7969On36tCZNmqQPP/zQfDxqfONKD2bPX758WadOndLMmTP1yy+/PPazWbZsmdq1a6erV6+qePHiZtAaGhqqOnXqqGvXrrp27Zr69u2rJk2aKCIiQrNnz1ZAQIAWLlyoiIgIderU6am/y4etXbtWffr00cyZM3Xp0iXlzJlT7dq1e/IX+9A5bNmyRRs3btS4cePUuXNnLViwQPv379fy5cu5NvXg2kyePLn5c6BLly4Jqm/8+PEaP3685s2bp7CwMI0bN06urq6x+j3umkyePLkmTJig0NBQzZ49W5999pk2bdpk7huzVHt4eLiqV69uN+66detUtGhRjRo1ShEREUqbNu1j6506daqmTJmilStX6syZM4qMjFTv3r0TdK4JkeDgeNmyZRo6dKjc3NxibXN3d9enn36qJUuWJFphAAAAAAAAAAAg8UyfPl03b97UggULVLVqVbuwt3r16goPD9eBAwfUrl07BQQEmNsOHz4cK+yNcePGDaVLly7eY86aNUutWrVSkSJF5OPjoy+++EKLFi1SdHS0JMkwDLVs2VInTpzQihUr5OnpqdOnT2vr1q0aPXq03N3dVahQITVs2DDOgHDt2rUyDEP9+/eXq6ur2rVrp6xZs2r+/PlKkSKFypYtq59++knSgxA7Y8aMyp8/v9auXau7d++qf//+cnFxUZUqVVSiRAm7MKxr164KCAhQtmzZVLJkSe3evTve82zevLkKFCggf39/9evXT7/99pu5LVOmTOrataucnJx04cIF7d27V19++aXc3d1Vq1YtVa5cWTNmzND9+/e1YsUKDR8+XB4eHqpataqqVq0a7zEf9ueff+rWrVsaMWKEPDw8lDJlSpUtWzbOvi4uLrp165b27NmjZMmSqUyZMvL19U3QcVxcXDRs2DC5urrK3d1dv/zyi0aPHi1fX19lyZJF7dq109y5cxM0lvRgxrqbm5saNmwoNzc3HThwQNHR0Y8dd+HChfroo4+UMmVKFSpU6InPyC1cuLCaNWsmNzc3jRgxQn///bdOnDihOXPmKGfOnAoODpazs7NatWolPz8//fnnn/GOldDv8lETJ07U22+/raCgILm6umr48OFatWpVgpeH7tKli9KkSaNChQopV65cqlq1qrJnz65MmTKpRIkSXJt6kFV+8skncnFxUYcOHXT+/HlduXLliftNnz5dPXr0ULFixeTk5KQyZcooRYoUdn2edE2WKVNGZcqUkZOTk8qVK6eKFStq7dq15v5BQUFq2LChnJycnnvp9ilTpqhXr17KmTOnPD09NXDgwMf+4cDTcn5ylweuXLmiLFmyxLs9W7ZsunbtWmLUBAAAAAAAAAAAXgBnZ2fVq1dPo0aNUq5cudS4cWO77blz51b+/Pn1zjvvJGiyWIoUKXThwoV4t58/f16lSpUy3+fIkUN3797V5cuXJUnXrl3T/PnztXjxYnMp7WPHjunevXvy9/c394uOjlaDBg1ijX/mzBm7kFuSMmbMqHPnzkmSmjVrpu+++07/+9//NHv2bDVs2FCSdOLECZ05c0be3t7mflFRUSpSpIj5/uFxPTw8FB4eHu95ZsqUyfzvrFmzmucnyS5YP3XqlFKmTClPT0+zLXPmzDp37pzOnz+vqKgoZc+e3e5cHh4rPqdOnVKGDBnk5OT0xL716tXTX3/9pY4dO+rKlSt66623NHr06DhnWT7K399fLi4ukh58t3fv3lWBAgXM7YZh2H2Gj+Pk5GQ3u9Ld3V3h4eFPHPfRvCpTpkzavn17vMfJkCGD+d/e3t5KkSKFzpw5o5MnT2rbtm1218D9+/d1+vTpeMdK6Hf5qDNnzujXX3+1W47b2dn5sceK77hubm5xfm7xscq1mTJlSvMYMd9pWFiY3c+RuJw/f97uvOLr87hrcufOnXr//fe1f/9+3b9/X3fv3lWuXLnMvg8/CuB5nTt3Tj179tQHH3xgtsX13ORnleAZxwEBAdq/f3+82/fu3fvYvyoCAAAAAAAAAABJw/3793X48OF4t8U8//hJypcvr6VLl5oziB8VEBCgkydPmu+PHj0qV1dXpU6dWpLk5+enadOmqXnz5uasycyZM8vDw0OhoaEKDw9XeHi4bt26FedMzowZM5rPQI1x9uxZM6hp3LixDh48qAMHDmjVqlXmM1IzZcqkbNmymeOHh4crIiJCw4YNS9B5P+rhAPD48ePm+UkPnlcbI3PmzLp+/boiIiLs9k2fPr0CAgLk5ORk93zph5fO9vLy0p07d8z3DweUgYGBOnv2bJzfw8PHjzFw4EAdPHhQW7du1Zo1azRx4sQEnefDY6VLl07JkyfX0aNHzc/w5s2bWrduXYLGis+TxvX397e7Pp8UvsY8S1h68JzaGzduKGPGjMqQIYPKlStndw3EtZT6wxL6XT4qICBAffr0sTvWnTt3lC1btljf68PfeWKwyrX5OO7u7nbn9fDzmdOnT28+Tzo+T7omO3furOLFi+vMmTMKDw9XjRo1ZBjGC6k3Xbp0GjduXKzrNrEkODhu0KCBPvjggzj/euDSpUvq06dPnH/tAwAAAAAAAAAAHOfq1avm8zcjIyM1depUbd26VZUrV5b0YOnTf//9V9KDSWJffPGFypUrl6Cx+/btqytXrpjLTUvS7t27Vb9+fUkPZvzOmDFDu3fvVlhYmD788EPVrl3bbpnspk2batiwYapVq5YOHjyorFmzqlChQurevbvCw8MVGRmpjRs3ateuXbGOX6FCBUkPljyOObejR4+aM4u9vb1VqVIlvf3228qaNaty584tSapYsaIMw9CIESN0584d3blzR8uXLzc/h6f1888/a+/evbp69aqGDx9unv+jsmfPrrx58+qDDz7QnTt3tGzZMq1evVotWrSQs7OzqlWrpv79+ysiIkJ//PGHVq9ebe5btGhR7d+/X3v27NGNGzc0fPhwu8/B09NTffr0UUREhK5fv64NGzZIktKkSaMzZ86Ywd369eu1bt06RUZGytfXV87OznJ2frBAbaNGjdSoUaMEnbOTk5Peeustde7cWVeuXFFUVJR2795tt0Tvs3jSuHXr1tWwYcN0/fp17dmz54nPON69e7fmzJmjO3fu6MMPP1TBggWVJUsWNW7cWPv27dNPP/2kyMhI3bp1S/PmzdPVq1clPfijhoeD0kc97rt8VPv27TV58mRt2bJF0oNcbebMmZKkfPnyKSwsTEuXLtXt27fjfB7087DitfmovHnz6ueff9b9+/e1YMECbdu2zdzWunVrjRo1Srt27VJ0dLQ2btxoPms7xpOuyVu3bilFihRyd3fX8uXLtWbNmmeqMyH1BgcHa8SIEeZk35MnT2revHnPdbyHJTg4/vjjj3Xnzh1lz55dnTt31ujRo/XNN9+oU6dOypEjh27fvq2BAwcmWmEAAAAAAAAAAOD5JUuWTFOmTFHGjBmVKlUqjRw5UpMmTTKXkD5w4IDKli0rd3d3VatWTeXLl9fXX39t7p8jRw6NHz8+zrEzZMig9evX6+bNmypUqJC8vb3VqlUrValSRZLUsGFDdevWTXXq1FFgYKBcXFziHKt9+/bq3bu3qlevrpMnT2ru3Lk6e/assmbNKn9/f3Xr1s1uBl4MNzc3/frrr5ozZ45SpUqlL774QnPmzLGbVdm0aVNt2bJFb775ptnm4uKixYsXa+XKlQoICFBAQICGDBkS78zpJ2nUqJEaN26sLFmymGPF55dfftE///yj1KlTq3Pnzho3bpzy588vSZo0aZIuXryo1KlTq2/fvnYT9goWLKguXbqoXLlyyp8/v6pVq2Z3PosWLdKWLVuULl065cyZU+vXr5cktWrVSrdu3ZKvr68qVaqk69evq3379vL19VWuXLkUFBSkd955R9KDmaKlS5dO8HlPmDBBvr6+yp8/v1KkSKHWrVubwevzeNy4n3/+uVKmTKnMmTOrWbNmsZZbf1TNmjU1ceJEpUqVSlu2bDFnrvv5+WnBggX69ttv5e/vr8yZM2vChAnmfh988IEGDRokb29vu/aHPe67fFjVqlU1bNgwBQcHy8vLS4ULFza/Hz8/Pw0bNkytWrVSYGCgihcv/kyfWXysem0+bNiwYdq7d698fX01efJku+czd+zYUe3bt1e9evXk7e2tzp076969e7HGeNw1OWzYMH3//ffy9vbWV199leDnPz9LvR06dFCbNm1Uu3ZteXl5qUKFCvrnn3+e63gPsxlPMVf6+vXr6tevn2bPnm2m7SlSpFCTJk00bNgwpUqVKtEKe1HCwsLk6+ur0NBQ+fj4OLqc52ZT6//H3p2HRV31/x9/zQCyM4IsKiC4RZopKmEpKZZK5YZlVmqmLW5pt1qaWZlLYFqallt5a5q3ZC6ZVmaWu+VCmUXmmkKairiBgigD/P7o53ybWAREAef5uK65bud8zjmf94ycu+vi5Tmfsi4BBcjVwrIuAflgzZRfrJnyiTVTfrFmyifWTPnEeim/WDPlE2um/GLNlE+smfKJ9VJ+3SprpqDfM6empiopKUl16tSRi4tLGVaImyk8PFx9+vTRgAEDyrqU65KVlaXbb79dv//+e5GeKVsRvPjiizp27Jg+/fTTsi6lTPCzCUnKyMjQoUOHFBQUJJPJVGhf++JM7OnpqVmzZmnmzJmWI6t9fHzyPYMcAAAAAAAAAAAAFYODg0OhRzMDZYWfzZunyEdVX7p0SatWrdKFCxdkMBjk6+srX19fGQwGpaWladWqVbp8+fKNrBUAAAAAAAAAAAAAcAMUecfxhx9+qFWrVqlTp055rnl4eOi9997T0aNH9fzzz5dqgQAAAAAAAAAAAOXVzp07y7oEFGDy5MllXUKZ4mcTxVXkHceLFi3SkCFDCrw+ZMgQLViwoDRqAgAAAAAAAAAAAADcREUOjg8ePKhGjRoVeL1hw4Y6ePBgqRQFAAAAAAAAAAAAALh5ihwcm81mpaSkFHg9JSVFZrO5VIoCAAAAAAAAAAAAANw8RQ6O77jjDn333XcFXl+7dq3uuOOOUikKAAAAAAAAAAAAAHDzFDk4fvrppzV+/Hh9+eWXea598cUXiomJ0dNPP12qxQEAAAAAAAAAAFyP999/X82bNy/rMm5pBw8elLu7e1mXIUkaOHCgTCZTvpsdc3Jy1KVLF7m7u6tdu3bFnrtly5aaO3fuNfvt379f9vb2xZ4fKGtFDo779u2r6OhoderUSfXr11eXLl3UpUsX1atXT9HR0erYsaP69u17I2sFAAAAAAAAAAAl9Prrr6tq1apydXVVvXr1dP78eUl/B6v29vZycXGxvA4ePGgZ16NHD9WoUUMGg0GrV6+2mnPNmjW666675OLiovDw8GLV88/7urm5qWHDhvr222+v+3MWt4aKHiqvXr1aNWrUKNMa6tatqwsXLpRpDdLfAfaCBQt08OBB7dmzJ8/1tWvXKj4+XsnJyVq7dm2x59+8ebOeeeaZ666za9euGjFixHXPA5S2Yv1zh//973/q1KmT4uLidODAAeXm5iokJERjx45Vt27dblSNAAAAAAAAAABUTDsNN3b+8NwidXvrrbf07bffasuWLapdu7bi4+Pl6Oj4f9OEh+uHH37Id2xoaKh69Oihfv365bnm6uqqZ555Rn/99Ze++eab4pf//++blZWlF198UT169NCpU6eKPc+NkpWVJQcHh7Iuo0BZWVk37T7l+Xu46siRI6pSpYp8fX0LvF6jRg25uLjke91sNrNTGDatyDuOr+rWrZs+//xz7dmzR7///rs+//xzQmMAAAAAAAAAAMops9msKVOmaN68eapbt66MRqOaNWsmZ2fnIo0fPny4HnrooXwDtXvvvVf9+/dXUFDQddXo4OCg3r17KyUlRX/99Zck6Y8//lCrVq3k4eGh2rVrKy4uztJ/8eLFuu222+Tq6qqgoCB99NFHlmtpaWnq3Lmz3N3dVb9+favd0/+0d+9evfTSS9q5c6dcXFxUp04dSZK/v79ef/111apVS8HBwZKk3r17y9fXV+7u7oqIiLCa02AwaNKkSfL395enp6dGjRplVWfNmjXl6uoqf39//fe//5X0947T3r1766677pKbm5vuu+8+q8D8448/Vq1ateTh4aHWrVvryJEjkv7vCOS3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q6urevToYRlbp04dzZ49u8h1jhgxQgsXLtTp06e1ZMkSJSQkyMfHRwMHDtSsWbPUoEEDSdLEiRM1fPhwmUwmrVmzRuHh4ZY5Jk6cKE9PT9WoUUOPP/54oaFi+/btFRAQoCpVqui2227Lt88jjzyisLAw1axZU/Xr19c999xT5M/zv//9T0FBQapcubI2bNigmTNnWq516dJFL774ovz8/HT+/HnNmjVLktS4cWO99957eu655+Tr66uDBw9q8eLFBd6jcePGatu2rQIDA+Xu7p7n+rlz5/Tss8/KZDIpJCRE4eHheu655+Tg4KCvvvpK3377rapVq6Zq1arpzTfftPyjgPzY2dmpY8eO2r59e77HVF+1ZMkSpaamKjg4WAEBAZajz/v27atevXqpffv2cnNzU6tWrZSQkCBJ2rFjh+666y65uLho0KBBmjdvnpydnfPMPXHiRNWpU0e33367mjdvrocffljPP/98gbUUR3G+k5deeklNmjRR/fr11bJlS3Xo0EGVKlUq0n369++vn3/+We7u7nryySdLpXagNBhyi3neRO/evfX555+rcuXKatq0qSRp165dOn/+vNq1a6dffvlFiYmJWrdunVq0aHFDir4eaWlpMplMSk1Nzfd8/YrGIP4PpbzK1cKyLgH5YM2UX6yZ8ok1U36xZson1kz5xHopv1gz5RNrpvxizZRPrJnyifVSft0qa6ag3zOnpqYqKSlJderUsTxXGMhP165dVatWLU2aNKmsS0Epeeedd/T5559r69atZV0KYCUjI0OHDh1SUFCQTCZToX2LveO4atWq6t69uw4fPqzly5dr+fLl+uOPP9SzZ0/Vrl1be/fu1VNPPaWXX365xB8AAAAAAAAAAAAAKK/Onz+vlStXymw2a8+ePZoxY4Y6dOhQ1mUB16XYwfHcuXM1ZMgQGY3/N9RoNGrw4MH68MMPZTAYNGjQIP3222+lWigAAAAAAAAAAABQHmRnZ+uVV16Rh4eHWrdurTZt2mjo0KFlXRZwXeyLO8BsNmvfvn15zvrft2+fsrOzJUlOTk75PrAcAAAAAAAAAADA1i1btqysS8B1qlKlin7//feyLgMoVcUOjp988kk988wzGjVqlO666y5JUnx8vGJjY9WrVy9J0qZNm3THHXeUbqUAAAAAAAAAAAAAgBui2MHxu+++Kz8/P02aNEnJycmSJD8/Pw0dOtTyXON27drpgQceKN1KAQAAAAAAAAAAAAA3RLGDYzs7O7366qt69dVXlZaWJkny8PCw6lOjRo3SqQ4AAAAAAAAAAAAAcMMZizvgk08+sfzZw8PDKjQePnx46VQFAAAAAAAAAAAAALhpih0cDxgwQF9//XWe9qFDh+p///tfqRQFAAAAAAAAAAAAALh5ih0cL1q0SE888YS2bt1qaRs8eLCWLFmiDRs2lGpxAAAAAAAAAAAAN8L777+v5s2b37T7hYeHa9asWTftfgBQXMUOjtu3b6+ZM2eqU6dO+umnnzRw4EB99tln2rBhg26//fYbUSMAAAAAAAAAALgOkyZNUv369WVvb68XX3zR6tqxY8d03333ycvLSwaDIc/Y48ePKzIyUs7OzqpZs6ZWrVplubZr1y5FRETIw8ND/v7+ecb+/vvvatKkiZycnFS/fn1t3769yDX7+/tr7dq1Vm0vvviiHnvssSLPAQAoOvuSDOrevbvOnz+vFi1ayMfHR5s2bVKdOnVKuzYAAAAAAAAAACq0t/PmsKVqeG7R+lWvXl2vvfaa4uLi8lwzGo164IEH9Pzzz6tr1655rj/77LPy8/PTqVOn9MUXX6hXr146cOCAfH19ValSJT366KN64oknFBsbm2fs448/rvvvv19bt27V9OnT1bVrVx05ckQODg7F/qzXIysr66bfEwAqmiLtOB42bFie16FDh+Tj46MmTZpo5syZlnYAAAAAAAAAAFC+9OzZU927d5fJZMpzrXr16hoxYoTCw8PzXEtNTdW3336rCRMmyN3dXd27d9dtt92mxYsXS5IaNGig//znP6pXr16esb/++qsOHTqk2NhYubi4aMSIEcrNzdU333xTap+rXbt28vLykslk0oMPPqhTp05Jkvbv3y97e3u9/fbb8vX11aOPPqq0tDR17txZ7u7uql+/vg4ePFjo3DExMQoKCpKrq6saNmyo5ORkSdI333yjevXqyd3dXXfddZd+/vlny5hXXnlF1atXl5ubm0JDQ7Vjx45S+6wAcKMVKTj++eef833VqVNHaWlplve7d+++weUCAAAAAAAAAICbZc+ePXJxcVGtWrUsbfXr19eePXuuOfaXX35RcHCwnJ2dLW0hISFKSEiQJH3wwQe67bbbrqu+Ll26KDExUYcPH9bFixf1yiuvWK5lZ2dr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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACOIAAANLCAYAAADmKKApAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdebhd4/0/7teReTg5iQySSGQ0J4oQrSAhiHmohCASMzWVGkMpbSU1VmlraosPYh6KIqiZmuc5MYSIGjORyLh/f/hlf7OdDCdsTuh9X9e+LnutZz3rvYa9zpH9Os9TUSgUCgEAAAAAAAAAAL6VZWq7AAAAAAAAAAAA+DEQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAakVFRUVOPvnksvbZr1+/9OvXr6x9Qk2cfPLJqaioqO0y+A5ceumlqaioyFNPPbXYtp5BLO3m3c/vvPNObZeyVOjcuXP23HPP73Qfe+65Zzp37vyd7gMAAACApYsgDgC14s0338wBBxyQrl27pmHDhmnWrFn69OmTP/3pT5k+fXptl1cWo0aNyjnnnPOd7uOmm27KlltumVatWqV+/fpp3759dt5559x7773f6X5r0yuvvJKTTz55qfoSsV+/fqmoqFjga5VVVqnt8r5T877Unfdq2LBh2rdvnwEDBuTcc8/N1KlTa7tEAAAAAACA703d2i4AgP89//rXvzJo0KA0aNAgQ4cOTY8ePTJz5sw8/PDDOfroo/Pyyy/noosuqu0yv7VRo0blpZdeyuGHH172vguFQvbee+9ceumlWWuttfKrX/0qbdu2zQcffJCbbrop/fv3zyOPPJL111+/7Puuba+88kpOOeWU9OvXr9pfmN911121U1SSDh06ZOTIkdWWV1VV1UI137/f/va36dKlS2bNmpX//ve/uf/++3P44Yfn7LPPzi233JI11lijtksE+J+3xx57ZPDgwWnQoEFtl7JUeP3117PMMv4+CQAAAIDyEsQB4Hv19ttvZ/DgwenUqVPuvffetGvXrrju4IMPztixY/Ovf/2rFiv8YTjrrLNy6aWXFoMO80+Jc8IJJ+Tyyy9P3br/ez/m69evX2v7rqqqypAhQ2pt//ObNm1aGjdu/L3uc8stt8w666xTfD98+PDce++92WabbbLddtvl1VdfTaNGjb7Xmvh+fPHFF2nSpEltl8H3oDaeLfP7od5rS1PdderUSZ06dWq7jKWGQBIAAAAA3wV/+gXA9+r000/P559/nr///e8lIZx5unfvnl/+8pcly6644or06tUrjRo1yrLLLpvBgwfnvffeK2nTr1+/9OjRIy+88EL69u2bxo0bp3v37rn++uuTJA888EDWW2+9NGrUKCuvvHLuueeeavt+//33s/fee2e55ZZLgwYNsvrqq+cf//hHSZv7778/FRUVufbaa3PqqaemQ4cOadiwYfr375+xY8eW1POvf/0r48aNK07Z8/XRW76p6dOnZ+TIkVlllVVy5plnloRw5tljjz3Su3fvJMnJJ5+8wDbzphSaf4qnzp07Z5tttsn999+fddZZJ40aNUrPnj1z//33J0luvPHG9OzZMw0bNkyvXr3y7LPPlvTZr1+/9OvXr9q+9txzz8Ue/7hx43LQQQdl5ZVXTqNGjdKyZcsMGjSopL5LL700gwYNSpJsvPHGxXM7r7759//hhx+mbt26OeWUU6rt6/XXX09FRUX+/Oc/F5dNmjQphx9+eDp27JgGDRqke/fuOe200zJ37txF1r0k5l2LsWPHZs8990zz5s1TVVWVvfbaK9OmTavWfknu/aeffjobbbRRGjdunOOPPz5J8umnn2aPPfZIs2bN0rx58wwbNizPP/98KioqcumllyZJLrnkklRUVFS7lkkyYsSI1KlTJ++///43Ot5NNtkkJ554YsaNG5crrriiZN1rr72WgQMHZtlll03Dhg2zzjrr5JZbbilpM+8effjhh3PYYYeldevWad68eQ444IDMnDkzkyZNytChQ9OiRYu0aNEixxxzTAqFQkkfZ555ZtZff/20bNkyjRo1Sq9evYrPhflVVFTkkEMOyc0335wePXoUnwF33nlntbYPP/xw1l133TRs2DDdunXLhRde+I3Oz+Lsueeeadq0ad5///3ssMMOadq0aVq3bp2jjjoqc+bMKWn7xRdf5MgjjyzevyuvvHLOPPPMaudjSY5zUTW9+eab2WqrrVJZWZndd989STJ37tycc845WX311dOwYcMst9xyOeCAAzJx4sSSPuY9Zx5++OH07t07DRs2TNeuXfN///d/1fZXk8/l2muvnZ///Ocl2/Xs2TMVFRV54YUXisuuueaaVFRU5NVXX01Ss2fO/KZNm5YDDjggLVu2TLNmzTJ06NBqx7YgM2bMyG9+85t07949DRo0SMeOHXPMMcdkxowZi902SR5//PFsscUWqaqqSuPGjdO3b9888sgjJW1+jM+Wecf0yiuvZLfddkuLFi2ywQYbLNExjBkzJjvttFPatm2bhg0bpkOHDhk8eHAmT55cbDN79uz87ne/S7du3dKgQYN07tw5xx9/fLXrU1FRkZNPPrlanZ07d86ee+5ZfD/vufXAAw/koIMOSps2bdKhQ4fi+jvuuCN9+/ZNZWVlmjVrlnXXXTejRo0q6bMm13zq1Kk5/PDD07lz5zRo0CBt2rTJZpttlmeeeWah53T++hb0s78mn8mve+edd1JRUZEzzzwzf/nLX9K1a9c0btw4m2++ed57770UCoX87ne/S4cOHdKoUaNsv/32+eyzz6r1c8cdd2TDDTdMkyZNUllZma233jovv/xytXbXXXddVltttTRs2DA9evTITTfdtMDfMWr67P/69UuSt956K4MGDcqyyy6bxo0b56c//Wm1kPiCzmPy/35PnPd7ycLU9HkJAAAAwA+TIA4A36tbb701Xbt2rfGUSaeeemqGDh2aFVdcMWeffXYOP/zw/Pvf/85GG22USZMmlbSdOHFittlmm6y33no5/fTT06BBgwwePDjXXHNNBg8enK222ip/+MMf8sUXX2TgwIGZOnVqcdsPP/wwP/3pT3PPPffkkEMOyZ/+9Kd07949++yzT84555xqdf3hD3/ITTfdlKOOOirDhw/PY489VvwyOvlqVJo111wzrVq1yuWXX57LL798gf18Ew8//HA+++yz7Lbbbt/JX7WPHTs2u+22W7bddtuMHDkyEydOzLbbbpsrr7wyRxxxRIYMGZJTTjklb775ZnbeeeeyBVWefPLJPProoxk8eHDOPffcHHjggfn3v/+dfv36Fb9I3mijjXLYYYclSY4//vjiuV111VWr9bfccsulb9++ufbaa6utu+aaa1KnTp1iqGfatGnp27dvrrjiigwdOjTnnntu+vTpk+HDh+dXv/pVjeqfM2dOPvnkk2qvL774olrbnXfeOVOnTs3IkSOz884759JLL60WGFqSe//TTz/NlltumTXXXDPnnHNONt5448ydOzfbbrttrrrqqgwbNiynnnpqPvjggwwbNqxk24EDB6ZRo0a58sorq9V55ZVXpl+/fll++eVrdA4WZI899khSOm3Yyy+/nJ/+9Kd59dVXc9xxx+Wss85KkyZNssMOO+Smm26q1sehhx6aMWPG5JRTTsl2222Xiy66KCeeeGK23XbbzJkzJyNGjMgGG2yQM844I5dffnnJtn/605+y1lpr5be//W1GjBiRunXrZtCgQQsceevhhx/OQQcdlMGDB+f000/Pl19+mZ122imffvppsc2LL76YzTffPB999FFOPvnk7LXXXvnNb36zwLrLYc6cORkwYEBatmyZM888M3379s1ZZ51VMn1foVDIdtttlz/+8Y/ZYostcvbZZ2fllVfO0UcfvcD7tybHuSizZ8/OgAED0qZNm5x55pnZaaedkiQHHHBAjj766PTp0yd/+tOfstdee+XKK6/MgAEDMmvWrJI+xo4dm4EDB2azzTbLWWedlRYtWmTPPfcs+eK9pp/LDTfcMA8//HDx/WeffZaXX345yyyzTB566KHi8oceeiitW7cuPi9q8syZ3yGHHJJXX301J598coYOHZorr7wyO+ywQ7Ww0/zmzp2b7bbbLmeeeWa23XbbnHfeedlhhx3yxz/+Mbvssstiz/W9996bjTbaKFOmTMlvfvObjBgxIpMmTcomm2ySJ554olr7H+OzZdCgQZk2bVpGjBiR/fbbr8bHMHPmzAwYMCCPPfZYDj300PzlL3/J/vvvn7feeqvkOPfdd9+cdNJJWXvttfPHP/4xffv2zciRIzN48ODF1rYoBx10UF555ZWcdNJJOe6445J8Fd7Yeuut89lnn2X48OH5wx/+kDXXXLMkCFfTa37ggQfm/PPPz0477ZS//vWvOeqoo9KoUaNi0GxJ1eQzuShXXnll/vrXv+bQQw/NkUcemQceeCA777xzfv3rX+fOO+/Msccem/333z+33nprjjrqqJJtL7/88my99dZp2rRpTjvttJx44ol55ZVXssEGG5QEXf71r39ll112Sb169TJy5Mj8/Oc/zz777JOnn366Wj1L8uyf34cffpj1118/o0ePzkEHHZRTTz01X375ZbbbbruyPueX5HkJAAAAwA9QAQC+J5MnTy4kKWy//fY1av/OO+8U6tSpUzj11FNLlr/44ouFunXrlizv27dvIUlh1KhRxWWvvfZaIUlhmWWWKTz22GPF5aNHjy4kKVxyySXFZfvss0+hXbt2hU8++aRkX4MHDy5UVVUVpk2bVigUCoX77ruvkKSw6qqrFmbMmFFs96c//amQpPDiiy8Wl2299daFTp061ehYl8S8fd100001av+b3/ymsKAf+ZdcckkhSeHtt98uLuvUqVMhSeHRRx8tLpt3vho1alQYN25ccfmFF15YSFK47777isv69u1b6Nu3b7V9DRs2rNq5SFL4zW9+U3w/7xzP7z//+U8hSeH//u//isuuu+66avtd2P7n1Tj/dSkUCoXVVlutsMkmmxTf/+53vys0adKk8MYbb5S0O+644wp16tQpvPvuu9X29fX9Jlng64ADDii2m3ct9t5775Ltd9xxx0LLli2L77/JvX/BBReUtL3hhhsKSQrnnHNOcdmcOXMKm2yySbX7f9dddy20b9++MGfOnOKyZ555plq7BZl3Hz355JMLbVNVVVVYa621iu/79+9f6NmzZ+HLL78sLps7d25h/fXXL6y44orV+h4wYEBh7ty5xeU/+9nPChUVFYUDDzywuGz27NmFDh06VLv/vn5fzZw5s9CjR4+S618ofHU/1q9fvzB27Njisueff76QpHDeeecVl+2www6Fhg0blnwWXnnllUKdOnUW+Dn7NoYNG1ZIUvjtb39bsnyttdYq9OrVq/j+5ptvLiQp/P73vy9pN3DgwEJFRUXJMdX0OBdX03HHHVey/KGHHiokKVx55ZUly++8885qy+c9Zx588MHiso8++qjQoEGDwpFHHllcVtPP5bxnwiuvvFIoFAqFW265pdCgQYPCdtttV9hll12K262xxhqFHXfcsfi+ps+cefdhr169CjNnziwuP/300wtJCv/85z+Ly77+DLr88ssLyyyzTOGhhx4q2c8FF1xQSFJ45JFHqtUwz9y5cwsrrrhitft/2rRphS5duhQ222yz4rIf47Nl3jHtuuuuJctregzPPvtsIUnhuuuuW+g+nnvuuUKSwr777luy/KijjiokKdx7773FZV//mTVPp06dCsOGDSu+n3e/bLDBBoXZs2cXl0+aNKlQWVlZWG+99QrTp08v6WPe9V2Sa15VVVU4+OCDF3psC7Oon/2L+0wuyNtvv11IUmjdunVh0qRJxeXDhw8vJCn85Cc/KcyaNau4fNdddy3Ur1+/+PyfOnVqoXnz5oX99tuvpN///ve/haqqqpLlPXv2LHTo0KEwderU4rL777+/kKTa7xg1ffZ//fodfvjhhSQln9mpU6cWunTpUujcuXPxXl7QeSwU/t/vifP/jvL134GW5HkJAAAAwA+TEXEA+N5MmTIlSVJZWVmj9jfeeGPmzp2bnXfeuWSEkbZt22bFFVfMfffdV9K+adOmJX/BvvLKK6d58+ZZddVVs9566xWXz/vvt956K8lXo0nccMMN2XbbbVMoFEr2NWDAgEyePLnaVA977bVX6tevX3y/4YYblvT5XVrS87ikVltttfzsZz8rvp93vjbZZJOssMIK1ZaX65gbNWpU/O9Zs2bl008/Tffu3dO8efPFTrWxMD//+c9Tt27dXHPNNcVlL730Ul555ZWS0Siuu+66bLjhhmnRokXJ9d90000zZ86cPPjgg4vdV+fOnXP33XdXex1++OHV2h544IEl7zfccMN8+umnxWu7pPd+gwYNstdee5Usu/POO1OvXr3iCBJJsswyy+Tggw+uVs/QoUMzYcKEkn6vvPLKNGrUqDjaybfRtGnT4ghUn332We69997iyB3zju3TTz/NgAEDMmbMmGrT1eyzzz4l06utt956KRQK2WeffYrL6tSpk3XWWafa/Tj/fTVx4sRMnjw5G2644QLvqU033TTdunUrvl9jjTXSrFmzYp9z5szJ6NGjs8MOO5R8FlZdddUMGDDgm5yaGlnQ/TL/cd5+++2pU6dOcbSoeY488sgUCoXccccdJcsXd5w18Ytf/KLk/XXXXZeqqqpsttlmJfdsr1690rRp02r37GqrrVZ8biZJ69ats/LKK5fUUNPP5bx+5r1/6KGHsu6662azzTYrjogzadKkvPTSSyX7XNJnzv7775969eqVnIO6devm9ttvX+h5uu6667LqqqtmlVVWKTmGTTbZJEmqnZf5PffccxkzZkx22223fPrppyWjbPXv3z8PPvhgtRHJfozPlq8fU02PoaqqKkkyevToBY5wlKR47b4+ctSRRx6ZJIsdPWVR9ttvv5JR6+6+++5MnTo1xx13XBo2bFjSdt7zbUmuefPmzfP4449nwoQJ37jG+dXkM7kogwYNKp7z5P/9jjBkyJDUrVu3ZPnMmTOLz/m77747kyZNyq677lpyPevUqZP11luveD0nTJiQF198MUOHDk3Tpk2L/fXt2zc9e/asVs+SPPvnd/vtt6d3794l06A1bdo0+++/f95555288sorNTofi7Kkz0sAAAAAfnjqLr4JAJRHs2bNkqRkSqhFGTNmTAqFQlZcccUFrp//C9Ek6dChQ8mX9clXX8R17Nix2rLkqy9mkuTjjz/OpEmTctFFF5VM9zK/jz76qOT9/F/CJ0mLFi1K+lxSn332WWbOnFl836hRo5IvtOa3pOdxSX392ObVsbjz+G1Nnz49I0eOzCWXXJL333+/ZLqXyZMnf6M+W7Vqlf79++faa6/N7373uyRfTUtVt27d/PznPy+2GzNmTF544YW0bt16gf18/fovSJMmTbLpppvWqK5F3T/NmjVb4nt/+eWXLwmGJcm4cePSrl27NG7cuGR59+7dq/W32WabpV27drnyyivTv3//zJ07N1dddVW23377sgS+Pv/887Rp0ybJV9OfFAqFnHjiiTnxxBMX2P6jjz4qmbJmSe7Jr9+Pt912W37/+9/nueeey4wZM4rLv/6sWNB+kq+uzfzPiunTpy/wuqy88sqLDGQkX52Hzz//vPi+Tp06C73n5mnYsGG1NvPXlHx1rdu3b1/tWs2bgmncuHElyxd3nDNnzsxnn31Wsr5169bFUEHdunXToUOHkvVjxozJ5MmTi9f56xb3DF3QcdX0c7nccstlxRVXzEMPPZQDDjggDz30UDbeeONstNFGOfTQQ/PWW2/l1Vdfzdy5c0uCBkv6zPn6dW/atGnatWtXMnXO140ZMyavvvrqN3q2jBkzJkmqTfk0v8mTJxefH8mP89nSpUuXkvc1PYYuXbrkV7/6Vc4+++xceeWV2XDDDbPddttlyJAhxWfIuHHjsswyy1SrvW3btmnevHm1z86S+Hrdb775ZpKkR48eC91mSa756aefnmHDhqVjx47p1atXttpqqwwdOjRdu3b9RvXW5DO5JNvX9HeHecc8L5z2dfN+55l3LRZ0n3Xv3r1awGZJnv3zGzduXEl4e575n6eLuoY1saTPSwAAAAB+eARxAPjeNGvWLO3bt89LL71Uo/Zz585NRUVF7rjjjpK/Kp9n/r+ITrLANotaPu9L13l/XT5kyJCFfvm1xhprLFGfS+rnP/95HnjggeL7YcOG5dJLL11g21VWWSVJ8uKLL2aHHXZYbN8L+9Jpzpw5C1z+Tc/jvH0t6BwsbF/zO/TQQ3PJJZfk8MMPz89+9rNUVVWloqIigwcPrjbqw5IYPHhw9tprrzz33HNZc801c+2116Z///5p1apVsc3cuXOz2Wab5ZhjjllgHyuttNI33v+C1OSeXJJ7f/6//P+m9ey22265+OKL89e//jWPPPJIJkyYkCFDhnyrfpNk/PjxmTx5cvHL03nX8qijjlroKDJf/6J1Se7J+e+/hx56KNttt1022mij/PWvf027du1Sr169XHLJJRk1alSN+vt6n9/GmWeemVNOOaX4vlOnTosMcSyqpm9jccf56KOPZuONNy5Z9/bbb6dz585JvholZZllSgfWnDt3btq0aZMrr7xygX1/PYhSk3O9JJ/LDTbYIP/+978zffr0PP300znppJPSo0ePNG/ePA899FBeffXVNG3aNGuttVZxm+/qmTO/uXPnpmfPnjn77LMXuP7rIYWvb5skZ5xxRtZcc80Ftqnpz8Ef8rPl6zUsyTGcddZZ2XPPPfPPf/4zd911Vw477LCMHDkyjz32WEmYbHHhjEVZ2M+3b3LuluSa77zzztlwww1z00035a677soZZ5yR0047LTfeeGO23HLLJd73t33+fdvfwS6//PK0bdu2Wrv5R9OpqSV99n8TS/q71fyW9HkJAAAAwA+PIA4A36ttttkmF110Uf7zn/+UTH+0IN26dUuhUEiXLl3KHoSYX+vWrVNZWZk5c+bUeESTmliSL/bOOuuskr86b9++/ULbbrDBBmnRokWuuuqqHH/88Yv9on7eiAiTJk1K8+bNi8u/zV/6L2pfC5rGoib7uv766zNs2LCcddZZxWVffvllJk2aVNJuSb8w3WGHHXLAAQcUp6d64403Mnz48JI23bp1y+eff17W6/9tlOPe79SpU+67775MmzatZOSKsWPHLrD90KFDc9ZZZ+XWW2/NHXfckdatW5dluqXLL788SYp9zRutoV69et/5+b7hhhvSsGHDjB49Og0aNCguv+SSS75Rf61bt06jRo2KIzjM7/XXX1/s9kOHDi2Z7uTbhhzm6dSpU+65555MnTq1ZJSR1157rbh+SfzkJz/J3XffXbJsQV+Qz69bt26555570qdPn7Id15J8LjfccMNccsklufrqqzNnzpysv/76WWaZZbLBBhsUgzjrr79+yfOyps+cecaMGVMSUPr888/zwQcfZKuttlrkMTz//PPp37//Ej+75k0f1qxZs7J9Vn4Mz5YlPYaePXumZ8+e+fWvf51HH300ffr0yQUXXJDf//736dSpU+bOnZsxY8YURzxJkg8//DCTJk0q+ey0aNGi2r0xc+bMfPDBBzWuO/lqesQFjeoyf5uaXvN27drloIMOykEHHZSPPvooa6+9dk499dRvFMSpLfOOuU2bNos85nnXYkH32deXfZtnf6dOnRb4PP/683T+363mV5Pfd76L5yUAAAAAS5dlFt8EAMrnmGOOSZMmTbLvvvvmww8/rLb+zTffzJ/+9KckX40SU6dOnZxyyinV/iK7UCjk008/LUtNderUyU477ZQbbrhhgaP1fPzxx9+o3yZNmtR4SqVevXpl0003Lb5WW221hbZt3Lhxjj322Lz66qs59thjF/jX6ldccUWeeOKJJP/vS64HH3ywuP6LL77IZZddtiSHUyPdunXLa6+9VnLOnn/++TzyyCOL3bZOnTrVjuW8886r9tflTZo0SVL9y6+Fad68eQYMGJBrr702V199derXr19tJKGdd945//nPfzJ69Ohq20+aNCmzZ8+u0b7KpRz3/oABAzJr1qxcfPHFxWVz587NX/7ylwW2X2ONNbLGGmvkb3/7W2644YYMHjz4G41EML977703v/vd79KlS5fsvvvuSb76srVfv3658MILF/gF9jf9vC1InTp1UlFRUXIPvfPOO7n55pu/cX8DBgzIzTffnHfffbe4/NVXX13gvfN1Xbt2Lfmc9+nT5xvV8XVbbbVV5syZkz//+c8ly//4xz+moqJiib+Ub9GiRUmdm266aRo2bLjIbXbeeefMmTOnOAXc/GbPnl3jz+vX+6zp53LelFOnnXZa1lhjjeL0NxtuuGH+/e9/56mnniqZliqp+TNnnosuuiizZs0qvj///PMze/bsRZ7fnXfeOe+//37J53Ce6dOn54svvljotr169Uq3bt1y5plnlkxpNs83+az8GJ4tNT2GKVOmVHt29+zZM8sss0xxqqJ5IapzzjmnpN28EYy23nrr4rJu3bqV/BxNvronajICSpJsvvnmqayszMiRI/Pll19Wqzup+TWfM2dOtd8v2rRpk/bt25dMw/RDMGDAgDRr1iwjRowo+XzNM++Y27dvnx49euT//u//Ss7NAw88kBdffLFkm2/z7N9qq63yxBNP5D//+U9x2RdffJGLLroonTt3Lv5+tqDfrebMmbPQKU7n9108LwEAAABYuhgRB4DvVbdu3TJq1KjssssuWXXVVTN06ND06NEjM2fOzKOPPprrrrsue+65Z7Ht73//+wwfPjzvvPNOdthhh1RWVubtt9/OTTfdlP333z9HHXVUWer6wx/+kPvuuy/rrbde9ttvv6y22mr57LPP8swzz+See+7JZ599tsR99urVK9dcc01+9atfZd11103Tpk2z7bbblqXeo48+Oi+//HLOOuus3HfffRk4cGDatm2b//73v7n55pvzxBNP5NFHH03y1Zd/K6ywQvbZZ58cffTRqVOnTv7xj3+kdevWJWGCcth7771z9tlnZ8CAAdlnn33y0Ucf5YILLsjqq6+eKVOmLHLbbbbZJpdffnmqqqqy2mqr5T//+U/uueeetGzZsqTdmmuumTp16uS0007L5MmT06BBg2yyySZp06bNQvveZZddMmTIkPz1r3/NgAEDSkYGSr46n7fccku22Wab7LnnnunVq1e++OKLvPjii7n++uvzzjvvlExltSCTJ0/OFVdcscB1SzrFUznu/R122CG9e/fOkUcembFjx2aVVVbJLbfcUryXFzQ6x9ChQ4v9LmnNd9xxR1577bXMnj07H374Ye69997cfffd6dSpU2655ZaSIMdf/vKXbLDBBunZs2f222+/dO3aNR9++GH+85//ZPz48Xn++eeXaN8Ls/XWW+fss8/OFltskd122y0fffRR/vKXv6R79+554YUXvlGfp5xySu68885suOGGOeiggzJ79uycd955WX311b9xn9/Wtttum4033jgnnHBC3nnnnfzkJz/JXXfdlX/+8585/PDDi18Yf5f69u2bAw44ICNHjsxzzz2XzTffPPXq1cuYMWNy3XXX5U9/+lMGDhy4RH0uyeeye/fuadu2bV5//fUceuihxT422mijHHvssUlSLYhT02fOPDNnzkz//v2z88475/XXX89f//rXbLDBBtluu+0Wegx77LFHrr322hx44IG577770qdPn8yZMyevvfZarr322owePTrrrLPOArddZpll8re//S1bbrllVl999ey1115Zfvnl8/777+e+++5Ls2bNcuutty7ROf0hPlu+6THce++9OeSQQzJo0KCstNJKmT17di6//PJi+Db5avSnYcOG5aKLLsqkSZPSt2/fPPHEE7nsssuyww47lIyAtO++++bAAw/MTjvtlM022yzPP/98Ro8evdifDfM0a9Ysf/zjH7Pvvvtm3XXXzW677ZYWLVrk+eefz7Rp03LZZZfV+JpPnTo1HTp0yMCBA/OTn/wkTZs2zT333JMnn3yyZISnH4JmzZrl/PPPzx577JG11147gwcPLv5+8q9//St9+vQphgxHjBiR7bffPn369Mlee+2ViRMn5s9//nN69OhREs75Ns/+4447LldddVW23HLLHHbYYVl22WVz2WWX5e23384NN9xQnJZv9dVXz09/+tMMHz48n332WZZddtlcffXVNQrufhfPSwAAAACWMgUAqAVvvPFGYb/99it07ty5UL9+/UJlZWWhT58+hfPOO6/w5ZdflrS94YYbChtssEGhSZMmhSZNmhRWWWWVwsEHH1x4/fXXi2369u1bWH311avtp1OnToWtt9662vIkhYMPPrhk2Ycfflg4+OCDCx07dizUq1ev0LZt20L//v0LF110UbHNfffdV0hSuO6660q2ffvttwtJCpdccklx2eeff17YbbfdCs2bNy8kKXTq1GlJTlGNXH/99YXNN9+8sOyyyxbq1q1baNeuXWGXXXYp3H///SXtnn766cJ6661XqF+/fmGFFVYonH322YVLLrmkkKTw9ttvF9styfmad8xnnHFGyfIrrrii0LVr10L9+vULa665ZmH06NGFYcOGVTv+JIXf/OY3xfcTJ04s7LXXXoVWrVoVmjZtWhgwYEDhtddeK3Tq1KkwbNiwkm0vvvjiQteuXQt16tQpJCncd999hULhq/ugb9++1eqfMmVKoVGjRoUkhSuuuGKB53Lq1KmF4cOHF7p3716oX79+oVWrVoX111+/cOaZZxZmzpy5wG3m6du3byHJQl/z/OY3vykkKXz88ccl2y/oWhQK3+7eLxQKhY8//riw2267FSorKwtVVVWFPffcs/DII48UkhSuvvrqau0/+OCDQp06dQorrbTSIo93QbXPe9WvX7/Qtm3bwmabbVb405/+VJgyZcoCt3vzzTcLQ4cOLbRt27ZQr169wvLLL1/YZpttCtdff321vp988smSbRd2HocNG1Zo0qRJybK///3vhRVXXLHQoEGDwiqrrFK45JJLitvPb0H3eKFQWOD998ADDxR69epVqF+/fqFr166FCy64YIF9flsLOp5CobDAfU2dOrVwxBFHFNq3b1+oV69eYcUVVyycccYZhblz55a0W5LjXJKa5rnooosKvXr1KjRq1KhQWVlZ6NmzZ+GYY44pTJgwoWRfC3rOLOjzuySfy0GDBhWSFK655prispkzZxYaN25cqF+/fmH69Okl7Wv6zJl3Hz7wwAOF/fffv9CiRYtC06ZNC7vvvnvh008/XewxzJw5s3DaaacVVl999UKDBg0KLVq0KPTq1atwyimnFCZPnrzQcznPs88+W/j5z39eaNmyZaFBgwaFTp06FXbeeefCv//972KbH+OzZWHHVNNjeOuttwp77713oVu3boWGDRsWll122cLGG29cuOeee0r6mTVrVuGUU04pdOnSpVCvXr1Cx44dC8OHD6/2u8icOXMKxx57bKFVq1aFxo0bFwYMGFAYO3bsQu+Xrz+35rnlllsK66+/fqFRo0aFZs2aFXr37l246qqrStos7prPmDGjcPTRRxd+8pOfFCorKwtNmjQp/OQnPyn89a9/Xex5XZKf/Qv7mTq/hf0usLDflxZ2fu67777CgAEDClVVVYWGDRsWunXrVthzzz0LTz31VEm7q6++urDKKqsUGjRoUOjRo0fhlltuKey0006FVVZZpaRdTZ/9C3r2vfnmm4WBAwcWmjdvXmjYsGGhd+/ehdtuu63asb/55puFTTfdtNCgQYPCcsstVzj++OMLd999d8nvJYVCYYG/AxUKNXteAgAAAPDDVFEoLGA+CwAAfpRuvvnm7Ljjjnn44YerTY30ySefpF27djnppJNy4okn1lKFwA+RZwu1Zc0110zr1q1z9913L/G2HTt2zIABA/K3v/3tO6gMAAAAgP9Vy9R2AQAAfDemT59e8n7OnDk577zz0qxZs6y99trV2l966aWZM2dO9thjj++rROAHyLOF2jBr1qxqUz/df//9ef7559OvX79v1N+nn35a4+nFAAAAAKCm6tZ2AQAAfDcOPfTQTJ8+PT/72c8yY8aM3HjjjXn00UczYsSINGrUqNju3nvvzSuvvJJTTz01O+ywQzp37lx7RQNLPc8WasP777+fTTfdNEOGDEn79u3z2muv5YILLkjbtm1z4IEHLlFfo0ePztVXX53p06enf//+31HFAAAAAPyvMjUVAMCP1KhRo3LWWWdl7Nix+fLLL9O9e/f84he/yCGHHFLSrl+/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AwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZSCIAwAAAAAAAAAAZVC3tgugVEXvlWu7BBaiUNsFAAAAAAAAAABLNSPiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABAGQjiAAAAAAAAAABA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Rtufd955qays/I6rXDKbbLJJ3n333Sy77LK1XQoA31Ld2i4AAKgdE42SvVRrUajtCgAAAABg6fP6669nww03TLNmzXLqqadm7bXXzsyZM3Prrbfml7/8ZbbbbrvaLnGJzZgxIw0bNkzHjh1ruxQAysCIOAAAAAAAAMAPwv7775+Kioo888wzGTZsWHr27JlevXrl5JNPzpNPPpkkOfnkk7PSSiulUaNGadu2bfbYY49Mnjw5yVdTQB122GH5/PPPU1FRkYqKihx55JFJkunTp+eAAw5ImzZt0qhRo6yxxhq5/fbbS/Z/9tlnp23btmnYsGE233zznHzyydVG1zn99NPTsWPH1KtXL126dMn5559fsr6ioiKnn356+vfvn0aNGuX4449f4NRUd911V9ZZZ500bNgwbdu2zV577ZUpU6YU15922mnp1KlTGjRokJYtW2aLLbYo34kG4BsTxAEAAAAAAACWeh999FEeeuih7LPPPmnWrFm19a1atUqS1KlTJ2effXaee+65XHzxxXn44YdzyCGHJPlqCqjf/e53adq0ad599928++67Oemkk5Ike+21V5588slcfvnlefrpp7Pjjjtmxx13zEsvvZQkufvuu3P00UfngAMOyJNPPpn+/fvnnHPOKanh8ssvzwknnJBDDjmkGBY69NBDc9ttt5W0O+2007L99tvnmWeeyYEHHljtWF555ZXssMMO2X777fPUU0/liiuuyOOPP5699947SfLQQw/lhBNOyAknnJAXX3wxt956azbccMNvd4IBKIuKQqHwg534YMqUKamqqsrkyZMX+MP2h6giq9R2CSxEIa/Vdgksyprm2FlqPfeD/THzo2dqqqWbqakAAACWXgv7t+nJkydn3Lhx6d69exo3blyLFQL8OD3wwAPp169f/u///i977LFHjbe79NJLc8QRR2TixIlJkvPOOy/HH398pk6dWmwzZsyYrLrqqhk7dmw6d+5cXL7++utn7bXXzp///Odss802+eKLL3LfffcV1++www7597//Xexr7bXXzsorr5yrrrqq2GarrbbKtGnTcv/99yf5akScffbZJ3/729+KbW6//fZsvfXW+fjjj9OqVavssssuqVOnTkaNGlVsc9ddd2XLLbfM1KlTc/311+fggw/Oe++9l+bNm9f4XADwzUybNi1jx45Np06dUlVVtci2RsQBAAAAAAAAlnpz586tUbt//vOf+dnPfpY2bdqkSZMmOfDAAzNp0qSS4M3XPfPMM5kzZ05WW221NG7cuPh64okn8vbbbydJ3nzzzayzzjol26277rol799888306dOnZNn666+fsWPHliz7ej9f9/LLL+f6668vqWX77bfP3Llz8/rrr2e77bZLu3bt0qVLl+y444654IILFnl8AHx/6tZ2AQAAAAAAAACLs/rqq6eioiKvvvrqQtu8/vrr2XnnnbPHHnvk1FNPTevWrXPvvffm8MMPz4wZM1JZWbnA7T7//PPUqVMnjz32WOrUqVOy7ruYmaNp06aLXD9t2rTsvvvuOeqoo6qt69atWxo2bJiXX345t99+e+68886ceuqpGTlyZJ5++uniFF0A1A4j4gAAAAAAAABLvTZt2mSDDTbI3//+90yZMqXa+k8++SSPPfZY5s6dmwsvvDCbbLJJevbsmffff7+kXf369auNrtO7d+/MmTMnH3zwQVZfffWSV8eOHZN8FYB5+umnS7Z76qmnSt5369YtjzzySMmyRx99NCuuuOISHWvPnj3z+uuvV6tl9dVXT8OGDZMk9erVy/bbb5/zzz8/L7/8ct5///3cfvvtS7QfAMrPiDgAAAAAAADAD8KFF16YjTbaKGuvvXZOPPHE9OrVK7Nmzcrtt9+ev//97xk1alRmz56dkSNHZqeddsr999+fyy67rKSPbt26Zdq0abnllluy7rrrpmnTpunZs2e233777L333hk5cmR69+6dDz/8MKNHj85PfvKT7LLLLvnlL3+ZLbbYIieffHIGDhyYO++8M/fff38qKiqKff/qV7/KXnvtlbXWWitbbbVVrr/++tx111255ZZblug4jz/++PTt2zfDhg3LgQcemMrKyrzwwgsZPXp0Lrvsslx99dV58803s8kmm6Rly5a5+eabUygUsvrqq5flPAPwzRkRBwAAAAAAAPhBWHXVVfPUU0+lT58+Of7447P22mtniy22yH333Zc///nP+elPf5pTTjkl5557btZaa62MGjUqJ598ckkfm266aXbfffcMGzYs7du3L66/5pprsvPOO2f48OHp2bNnBg0alKeeeipdunRJkmy22WY544wzcv7552edddbJXXfdlQMOOCANGjQo9j1kyJCceuqpOe+887LWWmvlsssuy3nnnZetttpqiY5zvfXWy1133ZU333wzm266aXr37p1TTjkl7du3T5Isu+yy+ec//5ktttgia6yxRv7+97/n4osvTq9evb75yQWgLCoKhUKhtov4pqZMmZKqqqpMnjz5O5mbsTZUZJXaLoGFKOS12i6BRVmzYvFtqB3P/WB/zPzoTfSxWaq18NEBAABYai3s36YnT56ccePGpXv37mncuHEtVgjA92Xw4MEZO3ZstSmqAPhxmTZtWsaOHZtOnTqlqqpqkW1NTQUAAAAAAABQA7/5zW+y5ZZbprKyMjfffHNuuOGGnH766bVdFgBLEUEcAAAAAAAAgBp48sknc95552XatGnp0KFDRowYkSOOOKK2ywJgKSKIAwAAAAAAAFADt99+e22XAMBSbpnaLgAAAAAAAAAAAH4MBHEAAAAAAAAAAKAMBHEAAAAAAAAAAKAMlpogzh/+8IdUVFTk8MMPr+1SAAAAAAAAAABgiS0VQZwnn3wyF154YdZYY43aLgUAAAAAAAAAAL6RWg/ifP7559l9991z8cUXp0WLFrVdDgAAAAAA8D/gvPPOy/rrr/+97a937945//zzv7f9AQBQO2o9iHPwwQdn6623zqabbrrYtjNmzMiUKVNKXgAAAAAAwKKdfvrpWW211VK3bt0ceeSRJevGjx+fTTbZJMsuu2wqKiqqbTthwoT069cvjRo1SpcuXXLLLbcU1z3zzDPZYIMN0qxZsyy//PLVtn3llVey9tprp2HDhllttdXy2GOP1bjm5ZdfPnfddVfJsiOPPDK77LJLjfsAAIDvW93a3PnVV1+dZ555Jk8++WSN2o8cOTKnnHLKd1wVAAAAAACUxxnVcy1ldXShZu3at2+fX//61xk1alS1dcsss0y22GKLHHzwwRk4cGC19fvuu2+WW265fPTRR7n11lszdOjQvPHGG2nTpk3q16+fQYMGZdddd82IESOqbTt48OD0798/Dz/8cP785z9n4MCBefvtt1OvXr0lPtZvY9asWd/7PgEA+N9UayPivPfee/nlL3+ZK6+8Mg0bNqzRNsOHD8/kyZOLr/fee+87rhIAAEpNrPBaWl8AAMDCDRkyJLvttluqqqqqrWvfvn2OOeaY9O7du9q6yZMn5+67787IkSNTWVmZ3XbbLSuttFKuvvrqJEmPHj3yy1/+Mquuumq1bV944YWMHTs2I0aMSOPGjXPMMcekUChk9OjRZTuuzTffPMsuu2yqqqqy5ZZb5qOPPkqSvP7666lbt27OOOOMtGnTJoMGDcqUKVOy/fbbp7KyMquttlrGjBmzyL5PPfXUdOrUKU2aNMkaa6yRDz/8MEkyevTorLrqqqmsrMy6666bZ599trjN8OHD0759+zRt2jRrrrlmHn/88bIdKwAAPwy1FsR5+umn89FHH2XttddO3bp1U7du3TzwwAM599xzU7du3cyZM6faNg0aNEizZs1KXgAAAAAAwHfj5ZdfTuPGjdO1a9fistVWWy0vv/zyYrd9/vnn07lz5zRq1Ki4bOWVV86LL76YJLnwwguz0korfav6dtxxx7zzzjt566238vnnn2f48OHFdXPmzMlzzz2Xd955J1deeWWOPfbYfPzxx3n33XczatSoXHvttQvt94ILLsgFF1yQG264IVOmTMn555+fBg0a5MMPP8ygQYMyfPjwfPLJJ9lyyy2zww47ZNasWUmSVVddNU899VQ+/fTT9OvXL8OGDftWxwcAwA9PrQVx+vfvnxdffDHPPfdc8bXOOutk9913z3PPPZc6derUVmkAAAAAAECSqVOnpmnTpiXLmjVrls8//3yx237++efVtq2srMzUqVOTJAcccEDeeOONRfax4447prKysvj685//XLL+F7/4RZo1a5aWLVvmiCOOqDYCzbzReJo0aZJbbrklv/71r9OiRYusueaa2WWXXRa638svvzxHHHFE1llnndSpUyd9+vRJ8+bNc+ONN2bllVfO0KFD06BBg/zmN7/J9OnT8+CDDyZJhg4dmvbt26dBgwYZMWJE3njjjUyePHmx5woAgB+PWgviVFZWpkePHiWvJk2apGXLlunRo0dtlQUAAAAAAPz/Kisrq4VupkyZUi1gsyBNmzattu3UqVNTWVlZ4/3fdNNNmTp1avF1yCGHFNfNmjUr++yzT3EqqD322CMTJ04srl9mmWXSqVOn4vtPPvkknTt3Lr7v2LHjQvf7wQcfpFu3btWWjx8/Ph06dCi+r1OnTtq1a5fx48cnSc4+++x07949lZWVWW655VIoFIpTWgEA8L+h1oI4AAAAAADA0m311VfPtGnT8vbbbxeXvfrqq1l99dUXu+1PfvKTjBs3LtOnTy8ue/3119OzZ8+y1HbhhRfmkUceySOPPJLPP/88l19+ecn6ioqKkvetWrXKO++8U3z/3nvvLbTv9u3b56233qq2vEOHDsXQTZLMnTs3H3zwQTp06JDXX389J5xwQi655JJMmjQp//3vf1NRUZFCofANjxAAgB+ipSqIc//99+ecc86p7TIAAAAAAOBHZdasWZk2bVrmzJmT2bNnZ9q0aZk9e3Zx/bRp04qBmfn/u6qqKptuummOO+64fPHFF7n66qvz+uuvZ/DgwUm+CqJMmzYtM2fOTKFQyLRp0/Lll18mSdZYY41069YtJ554YqZPn56zzjorFRUVGTBgQFmOaerUqWnQoEFatWqVDz74IGedddYi22+77bYZMWJEJk6cmBdeeCHXXnvtQtvuscceOeecc/LMM89k7ty5eeSRRzJp0qTssMMOee211zJq1KjMmjUrv/3tb9OwYcNssMEGmTp1apZZZpkst9xymTVrVo466qiyHCcAAD8sS1UQBwAAAAAAKL/jjjsuTZo0yTXXXJNzzz03TZo0yfnnn19c36RJk6y88srF/+7evXtx3d///vf897//TcuWLXPcccflsssuS5s2bZIkY8aMSZMmTbLlllvmgw8+SJMmTbLRRhsVt73qqqty7733pkWLFvnb3/6W6667LvXq1UuSXHDBBSX7WVIHHnhgqqqq0rZt2/Tp0yebbbbZItufdtppadGiRVZYYYUMHjw4gwYNWmjbAw44IPvuu2+22267VFZW5qCDDsrMmTPTrl27XHPNNfntb3+bZZddNrfddltuvPHGNGjQIOuss06GDBmSXr16ZYUVVkiXLl2KxwoAwP+OisIPeEzEKVOmpKqqKpMnT06zZs1qu5yyqMgqtV0CC1HIa7VdAouyZsXi21A7nvvB/pj50ZvoY7NUa+Gjs9Ty2Vl6+dwAAPB9Wdi/TU+ePDnjxo1L9+7d07hx41qsEAAAKKdp06Zl7Nix6dSpU6qqqhbZ1og4AAAAAAAAAABQBoI4AAAAAAAAAABQBnVruwAAoHa0L5hfZ2k2PebYAQAAAAAA+KExIg4AAAAAAAAAAJSBIA4AAAAAAAAAAJSBIA4AAAAAAAAAAJSBIA4AAAAAAAAAAJSBIA4AAAAAAAAAAJSBIA4AAAAAAPC9u/3227PCCivUdhlLtSOPPDK77LJLbZfxjcydOzc77rhjKisrs/nmm+eCCy7IJptsUvb9nHfeeVl//fXL3u+3NXDgwBxzzDG1XcZ35od8b9ZURUVF3nrrre98P88++2xWWmmlNGnSJJdddtk37sczFWDpIYgDAAAAAAA/crvuumtat26dpk2bZqWVVspVV11VXDdq1Kh06dIllZWVad26dfbbb7/Mnj27xn2/8cYb2XbbbdOiRYtUVlZm9dVXz5/+9Kfv4jD4BmorMHHXXXflySefzIcffpi77rorBx54YO69997vvY5vavnll89dd91V22X8qP0vhHlqYuTIkdl8883zxRdfZNiwYbVdDgBlULe2CwAAAAAAgB+rjVLxnfb/YAo1anfsscfmH//4Rxo1apQHH3wwW2+9dTbZZJMst9xy+dnPfpZHHnkk7du3z8cff5ztttsuZ555Zo477rjF9vv+++9ngw02yMYbb5xnnnkmXbp0yVNPPZVTTjklv/zlL7/t4f3ozJo1K/Xq1avtMspiccfy9ttvZ4UVVkjjxo2/x6q+Pz+ma5n8+I5naTV79uzUrVv69ez48eOz8cYb11JFAHwXjIgDAAAAAAA/cmuuuWYaNWqU5KvpVmbNmpV33nknSdKlS5e0b9++2HaZZZbJm2++WaN+R44cmZYtW+aqq65Kly5dkiTrrLNObr311mKb0047LR06dEiLFi2yww475NNPP11gXwceeGB+9rOfZerUqfnoo4+y3XbbZdlll02HDh3y5z//eaE1PP3001lnnXWKo/HcfffdSZLzzz8/6623Xknb+acLGjNmTPr165fmzZuna9euueGGG4rtll9++Zx88snp2rVrKisrFzlKRe/evXP44Ydn1VVXTbNmzbLTTjvliy++SPLVtEnrrbdedtttt1RWVua8887Lm2++mb59+6ZZs2bp1q1bRo0aVexrwoQJ2WijjdK0adOst956+eijj4rrvj4F0+uvv17yhf5rr71WPJ7WrVvn1FNPze23355zzz03N9xwQxo3bpyNNtooc+bMyV577VUcwahHjx754IMPkiR77LFH9thjjwUe57xpb4444oi0aNEiRx55ZHEEjzZt2mS55ZbL8ccfnyS54IILcvjhh+eJJ55I48aNc+qpp5bUP6/2s88+O61bt06rVq1KrvHC+k2SKVOmZPvtt09lZWVWW221jBkzZqHX5sgjj8y2226bzTbbLE2aNMk666yT119/vbj+iSeeyDrrrJNmzZpl9dVXz0MPPZQk2WWXXfLBBx9ku+22S+PGjXPBBRcs8bX8uksvvTTdu3dPVVVV+vfvn/fff7/kvM5v/imRll9++Zx00knp2rVrmjRpksMPPzwvvPBCevTokcrKyuy+++4L3ef/2r159NFHp6qqKssvv3xuvPHG4vqvj2709WnDTj311HTq1ClNmjTJGmuskQ8//LDaPhZ1T953333p0aNHmjZtmvbt2+fUU08trpt3Dw4YMCCNGzfObbfdVtLvRhttlMcffzyHH354GjdunA8//HCx9f7hD39Ip06d0qJFi+y0006ZMmXKAs8LALVHEAcAAAAAAP4H7LHHHmnYsGE22mij/PSnP826665bXHfXXXelsrIybdq0yauvvpoDDjiguG6llVbKhRdeuMA+H3zwwWy11VZZZpkFf91w880358wzz8wtt9yScePGZfr06SV9J8ncuXOz11575eWXX84999yTysrK7LzzzmnXrl3ef//93Hbbbfntb3+bxx9/vFr/X375ZbbffvvsuOOO+eSTT/KrX/0qAwcOzMcff5xdd901L774YsaPH19se9ddd2Xo0KGZM2dOttlmm2y22Wb5+OOPc/HFF2ffffcttk2S2267LY888kief/753HrrrdW+QJ/ftddem2uvvTZvvfVWxo8fnxNOOKG47umnn87PfvazTJo0KQcccEB23nnnrLrqqvnwww9z3nnnZb/99svLL7+cJNl3333TqlWrfPTRRzn11FNz0003LXSf85s1a1a23nrr9OrVKxMmTMgbb7yRvn37Zquttsphhx2WnXbaKdOmTcuDDz6Ym2++OU8++WTeeuutTJw4MRdeeGFx1JrLL788l19++UL3M2HChNStWzf//e9/M3LkyPziF7/IxIkTM2bMmDz++OO59tprc/XVV+fAAw/MmWeemd69e2fatGkl52OeOXPm5KWXXsp7772Xiy++OMccc0wmTZqUJAvtN/lqdKePP/447777bkaNGpVrr712kefmzjvvzD777JNPP/006667bjG4Mnny5GyzzTY59NBD89lnn2X48OHZeeedM23atFxzzTVp165dbrnllkybNi0HHnjgEl/L+T3wwAM59thjM2rUqHz00UdZaaWVss8++yz+ws53DI899lgeeeSRnH/++TnooIPyz3/+M6+88kpGjx7t3sxX92b9+vWLz4FDDjmkRvVdcMEFueCCC3LDDTdkypQpOf/889OgQYNq7RZ1T9avXz8XXnhhJk+enGuuuSZ/+MMf8uijjxa3nTc129SpU7P55puX9Pvggw+mV69eOeecczJt2rQst9xyi6z3kksuyT/+8Y/cfffdGT9+fGbNmpWjjz66RscKwPdHEAcAAAAAAP4HXH755fn888/zz3/+M5tuumlJeGbzzTfP1KlT8+qrr2afffZJu3btiuveeOONauGZeSZNmpS2bdsudJ9XXXVVhgwZkrXXXjvNmjXLGWeckdtuuy1z585NkhQKhey+++555513ctddd6VJkyZ577338vjjj+fcc89No0aNsuaaa2bHHXdcYODigQceSKFQyAknnJAGDRpkn332SZcuXXLTTTelefPm2WCDDXLFFVck+SoU1KFDh/To0SMPPPBAZsyYkRNOOCH16tVL//79s95665WECw499NC0a9cuXbt2zU9/+tM8++yzCz3OXXfdNT179kyrVq1y/PHH5+abby6u69ixYw499NDUqVMn//3vf/PSSy/lrLPOSqNGjbLVVltlk002yZVXXpnZs2fnrrvuysiRI9O4ceNsuumm2XTTTRe6z/ndf//9+eKLL3L66aencePGadGiRTbYYIMFtq1Xr16++OKLvPDCC1lmmWXSp0+fVFVV1Wg/9erVy4gRI9KgQYM0atQo1157bc4999xUVVWlc+fO2WeffXL99dfXqK/kqxGVGjZsmB133DENGzbMq6++mrlz5y6y31tuuSW//vWv06JFi6y55prZZZddFrmPtdZaK4MHD07Dhg1z+umn5/nnn88777yT6667LiuttFKGDRuWunXrZsiQIWnZsmXuv//+hfZV02v5dRdddFH23nvv9O7dOw0aNMjIkSNzzz33ZNasWTU6T4ccckjatGmTNddcMyuvvHI23XTTdOvWLR07dsx6663n3kzSqFGj/Pa3v029evWy//7754MPPsgnn3yy2O0uv/zyHHHEEVlnnXVSp06d9OnTJ82bNy9ps7h7sk+fPunTp0/q1KmTDTfcMP369csDDzxQ3L53797ZcccdU6dOnW89Vds//vGPHHnkkVlppZXSpEmTnHTSSYsMYgFQO+ouvgkAAAAAAPBjULdu3Wy33XY555xzsvLKK2fQoEEl61dZZZX06NEj++23X26//fbF9te8efP897//Xej6Dz74ID/72c+K77t3754ZM2bk448/TpJ89tlnuemmm/Kvf/2rOHXWW2+9lZkzZ6ZVq1bF7ebOnZsddtihWv/jx48vCQ0lSYcOHTJhwoQkyeDBg/PXv/41xx13XK655prsuOOOSZJ33nkn48ePT2VlZXG7OXPmZO211y6+n7/fxo0bZ+rUqQs9zo4dOxb/u0uXLsXjS1ISVHr33XfTokWLNGnSpLhshRVWyIQJE/LBBx9kzpw56datW8mxzN/Xwrz77rtZfvnlU6dOncW23W677fLcc8/lgAMOyCeffJKddtop55577gJHAfm6Vq1apV69ekm+urYzZsxIz549i+sLhULJOVyUOnXqlIz+0ahRo0ydOnWx/X7yySfp3LlzcV3Hjh3z5JNPLnQ/yy+/fPG/Kysr07x584wfPz7jxo3LE088UXIPzJ49O++9995C+6rptfy68ePH58YbbyyZfqtu3bqL3NfC9tuwYcMFnreF+V+5N1u0aFHcx7xrOmXKlJLnyIJ88MEHJce1sDaLuieffvrpHHbYYXnllVcye/bszJgxIyuvvHKx7fxT/31bEyZMyK9+9ascddRRxWWzZ88uW/8AlIcRcQAAAAAA4H/M7Nmz88Ybbyx03TvvvFOjfjbaaKPccccdxRFuvq5du3YZN25c8f2bb76ZBg0apHXr1kmSli1b5rLLLsuuu+5aHNVjhRVWSOPGjTN58uRMnTo1U6dOzRdffLHAkUY6dOiQDz74oGTZ+++/X/zie9CgQXnttdfy6quv5p577skee+yR5KtwQteuXYv9T506NdOmTcuIESNqdNxfN3+g4u233y4eX5JUVFQU/3uFFVbIxIkTM23atJJt27dvn3bt2qVOnTp58803i+vmnyqradOm+fLLL4vv5w98dOrUKe+///4Cr8P8+5/npJNOymuvvZbHH3889913Xy666KIaHef8fbVt2zb169fPm2++WTyHn3/+eR588MEa9bUwi+u3VatWJffn4sIs77//fvG/v/jii0yaNCkdOnTI8ssvnw033LDkHljQ1Gnzq+m1/Lp27drl2GOPLdnXl19+ma5du1a7rvNf83L4X7k3F6VRo0Ylx/XRRx8V/7t9+/Z56623Frn94u7Jgw46KOuuu27Gjx+fqVOnZsCAASkUCt9JvW3bts35559f7b4FYOkiiAMAAAAAAD9in376aS688MJMnjw5s2bNyiWXXJLHH388m2yySZKvpjoZM2ZMkuSll17KGWeckQ033LBGfQ8fPjyffPJJcXqpJHn22Wez/fbbJ/lqRJorr7wyzz77bKZMmZJjjjkmW2+9dcm0WLvssktGjBiRrbbaKq+99lq6dOmSNddcM4cffnimTp2aWbNm5ZFHHskzzzxTbf99+/ZN8tUUR/OO7c033yyOfFNZWZmNN944e++9d7p06ZJVVlklSdKvX78UCoWcfvrp+fLLL/Pll19m9OjRxfOwpK6++uq89NJL+fTTTzNy5Mji8X9dt27dstpqq+Woo47Kl19+mTvvvDP//ve/s9tuu6Vu3brZbLPNcsIJJ2TatGm599578+9//7u4ba9evfLKK6/khRdeyKRJkzJy5MiS89CkSZMce+yxmTZtWiZOnJiHH344SdKmTZuMHz++GIR46KGH8uCDD2bWrFmpqqpK3bp1U7fuVxMoDBw4MAMHDqzRMdepUyc77bRTDjrooHzyySeZM2dOnn322ZIpeb6JxfW77bbbZsSIEZk4cWJeeOGFBU5ZNr9nn3021113Xb788sscc8wxWWONNdK5c+cMGjQoL7/8cq644orMmjUrX3zxRW644YZ8+umnSb4Kic0fPPm6RV3Lr9t3333zt7/9LY899liSr4IVo0aNSpKsvvrqmTJlSu64445Mnz49J5xwwjc6bwvzv3hvft1qq62Wq6++OrNnz84///nPPPHEE8V1e+yxR84555w888wzmTt3bh555JFMmjSpZPvF3ZNffPFFmjdvnkaNGmX06NG57777vlGdNal32LBhOf300/PKK68kScaNG5cbbrjhW+0PgPITxAEAAAAAgB+xZZZZJv/4xz/SoUOHLLvssjnzzDNz8cUXF6eMevXVV7PBBhukUaNG2WyzzbLRRhvlj3/8Y3H77t2754ILLlhg38svv3weeuihfP7551lzzTVTWVmZIUOGpH///kmSHXfcMb/85S+zzTbbpFOnTqlXr94C+9p3331z9NFHZ/PNN8+4ceNy/fXX5/3330+XLl3SqlWr/PKXvywZIWKehg0b5sYbb8x1112XZZddNmeccUauu+66klE/dtlllzz22GP5+c9/XlxWr169/Otf/8rdd9+ddu3apV27dvn973+/0JF9FmfgwIEZNGhQOnfuXOxrYa699tq8+OKLad26dQ466KCcf/756dGjR5Lk4osvzocffpjWrVtn+PDhJdNxrbHGGjnkkEOy4YYbpkePHtlss81Kjue2227LY489lrZt22allVbKQw89lCQZMmRIvvjii1RVVWXjjTfOxIkTs++++6aqqiorr7xyevfunf322y/JVyOZrL/++jU+7gsvvDBVVVXp0aNHmjdvnj322KMYZPk2FtXvaaedlhYtWmSFFVbI4MGDq02v9nVbbLFFLrrooiy77LJ57LHHiiMrtWzZMv/85z/zl7/8Ja1atcoKK6yQCy+8sLjdUUcdlZNPPjmVlZUly+e3qGs5v0033TQjRozIsGHD0rRp06y11lrF69OyZcuMGDEiQ4YMSadOnbLuuut+o3O2MP+r9+b8RowYkZdeeilVVVX529/+lk033bS47oADDsi+++6b7bbbLpWVlTnooIMyc+bMan0s6p4cMWJE/v73v6eysjJnn312Sf/lrnf//ffP0KFDs/XWW6dp06bp27dvXnzxxW+1PwDKr6LwbcZGq2VTpkxJVVVVJk+enGbNmtV2OWVRkVVquwQWopDXarsEFmXN6kNYspR47gf7Y+ZHr1F8bpZm0+Ozs7Sa6KOz1GrhYwMAwPdkYf82PXny5IwbNy7du3dP48aNa7FCvk+9e/fOXnvtlV/84he1Xcq3MmvWrKyyyip55ZVX0qBBg9oupyyOPPLIjB8/Ptdcc01tl1Ir3JsAUD7Tpk3L2LFj06lTp1RVVS2ybd3vqSYAAAAAAACWUvXq1VvkVExQW9ybAPzQmJoKAAAAAAAAAADKwIg4AAAAAAAA39ATTzxR2yWwEGeddVZtl1Cr3JsAUDuMiAMAAAAAAAAAAGUgiAMAAAAAAAAAAGUgiAMAAAAAAAAAAGUgiAMAAAAAAAAAAGUgiAMAAAAAAAAAAGUgiAMAAAAAAPygDBw4MMccc8x3vp8LLrggm2yyybfq48gjj8wuu+xSpooAAFjaCeIAAAAAAMB3pCKrfKevmjr99NOz2mqrpW7dujnyyCNL1g0fPjyNGzcuvho0aJAmTZrUaNskOe+887LccsuladOmGThwYL788sviuldeeSVrr712GjZsmNVWWy2PPfZYjWtefvnl07Bhw5LaTjvttBpvvzi9e/fO+eefv8g2Bx54YO69996y7RMAgB8/QRwAAAAAAPiRa9++fX79619niy22qLZu5MiRmTZtWvE1aNCgbLnlljXa9oknnsgJJ5yQ6667LuPGjcuECRNy3HHHFdcPHjw4ffv2zWeffZY999wzAwcOzKxZs2pc9y233FJS27HHHruER/7NLUmdS7Mfy3EAAPxQCOIAAAAAAMCP3JAhQ7Lbbrulqqpqke2+/PLL3HbbbRk6dGiNtv2///u/bLnlltloo43SsmXL/PrXv861116bJHnhhRcyduzYjBgxIo0bN84xxxyTQqGQ0aNHl/fgklx66aXp3r17qqqq0r9//7z//vvFdbfeemt69OiRpk2bplOnThk9enSOPvroPP300zn88MPTuHHjDB8+PLfffntWWGGFHHHEEWnRokWOPPLInHfeeVl//fWLff3nP//Juuuum8rKyrRr1y6XXHJJkuTqq6/OSiutlCZNmqRTp07F5TXxhz/8IZ06dUqLFi2y0047ZcqUKUm+Gmnopz/9aYYMGZKmTZumW7dueeSRR4rbjRkzJv369Uvz5s3TtWvX3HDDDcV1yy+/fE488cR07do1nTt3TpIcffTRWXbZZbP88svn1FNPTd26dZN8NSLSwIEDS2pad911c+GFF9b4GAAA+H8EcQAAAAAAgCTJddddl4YNG2brrbeuUfvXXnsta6yxRvF9r1698sEHH2Ty5Ml5/vnn07lz5zRq1Ki4fuWVV86LL76YJLnwwguz0korfeuaH3jggRx77LEZNWpUPvroo6y00krZZ599kiSvvvpqdt111/z617/OpEmTcs8996RDhw4544wz0qtXr5xzzjmZNm1aRo4cmSSZMGFC6tatm//+97/FZfN8+umn2XrrrbPbbrvlk08+ydNPP52ePXsmSaqqqnL99ddnypQpOfPMM3PwwQfnvffeW2ztl1xySf7xj3/k7rvvzvjx4zNr1qwcffTRxfVPPfVUNtpoo0yaNCnbbLNNDj/88CTJnDlzss0222SzzTbLxx9/nIsvvjj77rtvxo8fX9z2lltuyYMPPpg33ngjV111Va644oo8/PDDeeGFF3LnnXcW2+2111656667Mm3atCTJW2+9VTxvAAAsOUEcAAAAAAAgSXL55Zdnp512Sp06dWrU/osvvkizZs2K75s3b54kmTJlSj7//PM0bdq0pH1lZWWmTp2aJDnggAPyxhtvLLL/HXfcMZWVlcXXHXfcUa3NRRddlL333ju9e/dOgwYNMnLkyNxzzz2ZNWtWLrvssvTv3z+DBw9O3bp1s+KKK2b11Vdf6P7q1auXESNGpEGDBmnSpEnJuuuuuy6dO3fOEUcckQYNGqR9+/ZZZ511kiRbbrll1lhjjdSpUyeDBg3KSiutVDJ6zcL84x//yJFHHlkcTeekk07KbbfdVlzftWvX7L///qlbt26GDRuW1157LclX4aMZM2bkhBNOSL169dK/f/+st956uemmm4rbHnzwwenQoUOaNGmSG264IUOGDMlqq62Wli1bloR9Vlpppay00kq5/vrrk3w1ytEmm2xScl0BAKg5QRwAAAAAACAfffRR7r///uJoMjXRpEmT4lRKSTJp0qQkSbNmzdK0adN8/vnnJe2nTp2aysrKGvd/0003ZerUqcXXlltuWa3N+PHjc8455xTDOh07dkzdunXz3nvvZfz48cWpmWqiVatWqVev3gLXvffee1lhhRUWuO6uu+7K2muvnaqqqlRWVuall17KJ598stj9TZgwIb/61a+KtW+88cb57LPPSuqZp0mTJpk+fXqS5J133sn48eNLQkoPPvhgPvjgg2L7Tp06Ff/7ww8/TIcOHYrvv35Odt1111x11VVJkuuvvz677bbbYmsHAGDBBHEAAAAAAIBcdtllWXHFFbP22mvXeJtVVlmlONVUkjzzzDNp165dqqqq8pOf/CTjxo0rhkeS5PXXXy9O51Qu7dq1y7HHHlsS2Pnyyy/TtWvXdOzYMePGjVvgdhUVFTVaNs8KK6yw0Omm9tprr+y+++758MMPM3Xq1PTo0SOFQmGxtbdt2zbnn39+Se3zn6+F6dixY7p27Vqy3bRp0zJixIgFHstyyy1XMm3VO++8U9Lf0KFD88gjj+Thhx/O+++/nx133HGxNQAAsGCCOAAAAAAA8CM3a9asTJs2LXPmzMns2bMzbdq0zJ49u6TNVVddlV133XWJth06dGjuuOOOPPzww/n0009z6qmnZuedd06SrLHGGunWrVtOPPHETJ8+PWeddVYqKioyYMCAsh7bvvvum7/97W957LHHknw1ss+oUaOSJMOGDcu///3vXHfddZkzZ07efPPNvPLKK0m+Gm3m7bffrvF+Bg4cmLfffjvnnntuZsyYkQkTJuSpp55KkkybNi2tWrVK/fr1c9lll+Xll1+uUZ/Dhg3L6aefXqxp3LhxueGGGxa7Xb9+/VIoFHL66afnyy+/zJdffpnRo0dnzJgxC2z/85//PKNGjcqrr76aiRMn5swzzyxZ37p16/z0pz/NXnvtla233joNGjSoUf0AAFQniAMAAAAAAD9yxx13XJo0aZJrrrkm5557bpo0aZLzzz+/uP7VV1/Niy++mL322muJtu3du3d+//vf5+c//3lWWGGFtG3bNiNHjixue9VVV+Xee+9NixYt8re//S3XXXddceqnCy64IN27d19k3dttt10aN25cfB122GHV2my66aYZMWJEhg0blqZNm2attdbKQw89lOSrEXuuuOKKnHTSSWnWrFn69+9fHBnml7/8Za6++upUVlbm+OOPX+w5bNmyZW699dZcdtlladWqVdZZZ51i4Oa0007L0Ucfnaqqqtx5553p3bv3YvtLkv333z9Dhw7N1ltvnaZNm6Zv374lIwwtTL169fKvf/0rd999d9q1a5d27drl97//febOnbvA9rvttlsGDx6c9ddfP6uvvno22WSTalNwDRkyJGPHjs0ee+xRo9oBAFiwikJNxkZcSk2ZMiVVVVWZPHlymjVrVtvllEVFVqntEliIQl6r7RJYlDUXPmQstey5H+yPmR+9RvG5WZpNj8/O0spnZ+nlc7N0m+ijs9Rq4aMDAEtsYf82PXny5IwbNy7du3dP48aNa7FCWLQbb7wxv/rVr0qmqHrooYeyyy67ZPz48VlmGX/HDQAwv2nTpmXs2LHp1KlTqqqqFtnWb1IAAAAAAAA/cldccUVmzJiR9957L7///e+zxRZbFNfNnj0755xzTnbddVchHACAb6lubRcAAAAAQHVGklq6GU0KgB+ac889Nwf8f+zdeZyN9f//8cdszJwzZ8Ywi1nMMBiMSZL4KERIsmfJvhTJUkhkrw8NGstHKEmU7EQp2SoyUpEiDWPsy5gxttnMMZrF7w8/19cxizEU6nm/3c7tNue8r+v9fl3v67rOUed1Xu8+fShSpAgNGjRg0qRJAJw9e5bSpUsTHBzMnDlz7nGUIiIiIg8+JeKIiIiIiIiIiIiIiIj8w+3cuTPX1729vbFarX9zNCIiIiL/XKovKCIiIiIiIiIiIiIiIiIiIiJyFygRR0RERERERERERERERERERETkLlAijoiIiIiIiIiIiIiIiIiIiIjIXaBEHBERERERERERERERERERERGRu0CJOCIiIiIi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5hhJHjfas2dPvucwKyuLnTt3curUKRYuXMjQoUP5448/GDBgAK1atWLQoEFYrVYWL14MQO3atYmOjubMmTP4+fnRr1+/PGP86quvmD59OufOnSMrK4uJEycC1xKPOnXqxLRp00hMTKRly5a0b98euHYtdO/enYiICBISEkhLSyMhISHX/iMjI3n00UeZPn06VqsVHx8fAL788ksiIyM5ePAgX3zxBVOmTOHLL7/kxIkTXL58mT59+hh9FPbay2/ubpTfvZafXbt20bBhQxITE6lWrRpPP/007u7unDt3jnbt2vHaa6/d9rzf6lrIS0pKCqNGjWLTpk2kpaWxceNGgoOD89z+hx9+4MCBAyxdupTRo0czefJkfvrpJyIjI5k5cybR0dG57hcXF0eRIkU4f/48r732mk3iW/v27fH19eX06dOsXbuWcePG2STX3Pi+5eTkRKVKldi1axcXLlygXr16eS5bNnjwYAYOHMilS5fYt28fDRs2vOV8ZGRk0LRpUx599FHi4uI4ePAgTz75pNH+5ZdfMmXKFFJTUylfvny+fU2dOpUffviBP/74gy1btrBq1SqjLTk5mWbNmvHKK69w8eJFRowYQfv27Qt8DYmIPCgKlYiTV9mx2NhYLBbLHQclIiIiIiIiIiIiIiJ/vwULFrB9+3aj8sulS5dwdXW12cZisZCamnrLvlJTU3Fzc7N5zdXVlUuXLgEwYcIEtmzZkm8fDz/8MG5ubrz44ouMHDmSli1bMn/+fIYMGUJISAhms5mxY8eydu3afPvp0qULlStXxmQysWTJEp5++mmefvppXFxcmD59Or/++isnTpyw2Sc7O5sVK1YwY8YM3N3dKV26NC+++GKBl8dycXFh7NixODk50blzZ86cOUN4eDjOzs688MILxMfHc/78+Rz7rV69mgoVKtCtWzeKFi3Km2++yeXLl4mMjMx3PCcnJxISEjhy5AguLi55fvkeGhpKkyZNcHJyIiwsjDZt2thUpAgODuall17C0dGR7t27GxWMtmzZgoODA8OGDaNo0aKMGDECT0/PXMc4cuQIUVFRTJ06FRcXF5599lmeeuopI/Elv2NIS0tj79692Nvb88QTT+RaxWnx4sW3PIfh4eGYTCYaNmxIw4YNbSry3KxXr16UKFECs9nM6NGj2bVrV57bNmvWjJo1a2IymWjVqhVRUVEA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kZubG7t27SrwUlv169cnMzOTqVOncuXKFSZNmpTn8kZly5YlNDSU119/nfT0dDZs2MB3331Hp06d8h1j27ZtREZGkpGRgbu7O46Ojjg65lzcoSDncOzYsVitVjZv3sy3335Lx44dgZxJAsnJyTg5OeHj40NqaipvvvlmgebjZj169GDt2rVs3LiRrKwskpKS+OSTTwB47rnn2LdvHytXriQ9PZ1hw4blmkBRUB06dGDx4sXs3r2blJQUhg0bRtOmTY3qMncqr7m7UW73WlhYGF988QWXL1/mp59+4uuvv74r8eQnv2vBz88PLy8v5s2bR0ZGBqNHj+bPP/8EriUYLVu2jLS0NJydnXFxccmzGsxfoUyZMlStWpVBgwaRmppKRkYG27dv57fffst1+9TUVOzt7fHx8SEjIyPfpKEPPviAhIQEnJycsFgsxnURExODnZ2dTYLkdU8++SRms5k33ngDq9VKYmIiP/zwQ55jhIaGsmzZMjIzM1mzZg07d+402lq3bs2sWbOIjY3lxIkTzJkzx2hr164d+/btY9GiRWRkZJCWlsaqVau4cOHCLedMRORBUuhP5Ovr9kVERPD+++/Tq1cvXFxc7mZsIiIiIiIiIiIiIiJyFwwfPhyz2czy5cuZMWMGZrOZ2bNnAxAREUFycjK9evXCZDJhMpmoW7euse/SpUvZvHkzHh4efPTRR6xcuRInJycANm7ciNlspl+/fvz666+YzWY6d+4MXKuYsHLlSt577z08PDzYvn07S5YsMfodMWKEzTgF9dJLL9GtWzeaNm2Kq6srTz75JH/88QcAjzzyCI0aNTKqYeTmkUceYcaMGfTu3Rtvb28OHTrEsmXLct12zpw5uLu7ExYWRrFixejatavxhfHLL79MUFAQpUqV4vnnn6d169a3fSy58fX1Zfny5YwbN47ixYuzdu1aVq9enWN5ppvFxMTQoEEDXF1dad68OeHh4YSEhOTY7r///S8//PADFouFAQMG0LRp0wLF5ezszLJly5gzZw4lSpRg7969+VY3WrFiBX/88QdeXl7069eP2bNnExYWlu8YiYmJ9OrVC3d3dypUqECNGjXo3bt3ju1udQ4dHBx49NFHCQgIoFOnTkyaNIkqVaoA187b7t27sVgsdO3alTZt2lC9enXKlClDaGiozZJPt6NixYp8+umnDBs2jGLFihESEsKaNWsA8PPzY968ebz22mt4e3vj4uKCj49PocaBa4kOAwcOpFmzZgQFBeHk5MQHH3xQ6P5ulN/c3Si3e23kyJHGcktDhw6lZcuWdyWm/NzqWpgxYwZvv/02Xl5eRiILXEsinDJlCj4+Pnh5eREfH09ERMRfHu+NPvvsM06fPk2ZMmXw9PRk4MCBNlVmblS9enW6dOnCo48+SmBgIGXKlDHeh2+2fv16KlasaLzPz58/H7iWtOjn55fr8ltOTk6sXbuWn3/+mZIlSxISEsK2bdvyjH3ChAlERUXh7u7ORx99RMOGDY22IUOGUKtWLSpXrky9evV47rnnjLYSJUqwZs0a3nvvPTw9PQkMDLRJ1BER+aewu1rAlNsvv/yywJ22aNGi0AHdjpSUFNzd3UlOTsbNze1vGfOvZsed/RJA/jpXOXCvQ5D8VL11yVm5R/YU/pcd8tdyQffN/ewyunfuW/rMuX/pM+e+lqhb577loVvnvqX75v6me0fk3y2v/zednJzMiRMnKFeuHCaT6R5GKCIiYmvkyJEUL178b12CS0Tkn8RqtXL48GGCgoJwd3fPd9uc9fzy0KpVqwJtZ2dnR1ZWVkG7FRERERERERERERERERGRv9CECRPudQgiIv8aBU7Eyc7O/ivjEBERERERERERERERERERERF5oNnf6wBERERERERERERERERERERERP4JClwR50bjxo3Lt33s2LGFCkZERERERERERERERERERERE5EFVqESczz//3OZ5RkYGx44dw9HRkbJlyyoRR0RERERERERERERERERERET+dQqViLN79+4cr6WkpNCjRw9at259x0GJiIiIiIiIiIiIiIiIiIiIiDxo7O9WR25ubvz3v/9lzJgxd6tLEREREREREREREREREREREZEHxl1LxAFITk4mOTn5bnYpIiIiIiIiIiIiIiIiIiIiIvJAKNTSVDNmzLB5fvXqVeLj41m4cCFNmjS5K4GJiIiIiIiIiIiIiIjcj4YMGUJsbCzLly+/16Ewc+ZMli5dyo8//giAyWRi//79lC5d+i8b89SpU7Ro0YKDBw8ydOhQDh06RHBwMOPHj7/tvuzs7Dhy5AjBwcF3NcYPPviAFStWsHnz5jvu6+Y5FhEREclPoSri/O9//7N5zJgxg++//57u3bszZ86cux2jiIiIiIiIiIiIiIjcgYiICEJDQ3F0dGTIkCE2bcuXL+eRRx7BYrHg7e1N7969uXLlitG+f/9+qlWrhrOzM6Ghofz8889G25gxYyhbtixms5nSpUvn+CHvZ599RmBgIC4uLjRs2JBz584VKN6YmBjs7Oxo3ry5zetlypRh3bp1t9x/5syZPP744wUa65/GarX+pUk4cO0H26VKlSItLY233nqLxYsXFyoJ56/08ssvFzoJx9/fn02bNt3liP49YmJicHQseC2Af/P9KiIi/0yFSsQ5duyYzePIkSP8/PPPTJgwAYvFcrdjFBERERERERERERF5ILlg95c+CsrPz4/Ro0fzzDPP5GhLTk5m7NixnDlzhj179rB7927eeusto71Dhw48+eSTXLx4kR49etC2bVsyMjKAa9VMFi1aRHJyMsuXL+e///0v33zzDQCnT5+mZ8+eTJ06lbNnz+Lu7s5LL71U4Jjt7e3Ztm0be/bsKfA+d0tmZubfPuaD5OTJk1SsWPFeh2G4fj2KiIiI3A8KlYhzo9jYWGJjY+9GLCIiIiIiIiIiIiIi8hfo0qULnTp1wt3dPUfbSy+9ROvWrTGbzfj5+dGxY0d27NgBwN69ezl8+DATJkzAZDIxbNgwrl69ysaNGwEYN24ctWrVwtHRkZo1a/LEE0+wfft2AJYuXcpDDz1Eu3btsFgshIeHs27dOtLS0goUs52dHT179mTs2LG5tm/ZsoWwsDBcXV3x8/MjPDwcgOjoaF5//XV27tyJyWSiXLlyQM4qJ23btmXYsGHAtaWmmjdvTuPGjTGZTKxdu5Zly5YREhKC2WwmKCiIjz/+uEBxZ2Rk0L17d4oVK0aZMmUYNWoUgYGBRnuPHj3w9vbGYrFQu3ZtDh06BEBWVhY9e/bEw8MDi8VCWFgY8fHxBRrz5nk7evQoAHFxcdStWxdXV1dq1qxJ165def7554GcVUhurmJy6NAh6tWrR7FixQgODmbVqlUAdO7cmVWrVjF9+nRMJhM//vijzVwCfPLJJ5QrVw53d3caNGjA6dOnjbZ3332XkiVL4unpydSpU/M9lo0bN1KpUiUsFguPPfYYu3fvtjnOiRMn4u/vT61atXLse+PxXT+2adOm4eXlhaenJ7Nmzcp1zOeff574+HhatGiByWTigw8+ACA7O5suXbrg6upK2bJljes8v7nKzdKlSwkMDMTd3Z3XX3/d5rrM75pbtmwZZcqUwWw24+/vz0cffQRcSxobPHgwfn5+lChRgpdeeslITMrKymLw4MGULFkSLy8vevbsyeXLl3PMz41zdH2/glyL168vi8WCh4eHUcGqcePGZGVlYTKZMJlMHDp06Lbv17Nnz9KiRQuKFy9OQEBAnudLRETkflSoRJzs7GzGjRuHu7s7QUFBBAUFUaxYMcaPH092dvbdjlFERERERERERERERP4m27Zto1KlSgD8/vvvlC5dGhcXF6O9QoUK/PHHHzn2u3LlCr/99hsPPfQQcG1Jq8qVKxvtFStWxNHRkejoaAC6du1K165d841l5MiRbN26NdeqOEWKFGHOnDlGNZ5Jkybx448/UqlSJaZMmUKNGjWwWq0cPny4QMe9adMmXn75ZVJTU3n66adxd3fns88+IyUlhSlTptC/f39OnTp1y34iIiLYuXMn+/bt4/vvv2f16tU27bVr1yY6OpozZ87g5+dHv379APjiiy/45ZdfOHr0KImJicyZMweTyVSg2PPSq1cvPD09OXv2LOHh4Xz++ecF2i8rK4tmzZrRqFEjzp07x9y5c+nVqxexsbEsXryYVq1aMWjQIKxWa44lhbZu3cobb7zBkiVLOHv2LCEhIbz44osA7Nq1i1GjRrF06VJOnDhhk8xys4SEBNq1a8eIESM4f/48TZo0oVWrVjbVb7777juioqLYunVrgY4pKiqKU6dOMXfuXIYNG0ZSUlKO7ZYvX46vry9ffvklVquVl19+2Yi9bt26JCUl0axZMwYNGnTLubrZ6dOn6dWrF//73/9ISEggPT2dhIQEoz2/a27AgAF8+OGHpKWl8fPPP1OtWjXgWjLcTz/9xK5du4iJieH3339nypQpwLWkp6+++ooff/yRqKgofv/9d0aPHn3LuSrotRgeHk5QUBAXL14kLi6OgQMHAtcSqBwcHLBarVitVsqXL3/b92v79u3x9fXl9OnTrF27lnHjxhkJgiIiIve7QiXijBo1ilmzZjFp0iR2797N7t27mTBhAjNnzmTMmDF3O0YREREREREREREREfkbLFiwgO3btzNy5EgALl26hKurq802FouF1NTUHPu+/PLLBAQE0Lp1awDS0tJwc3Oz2cZsNpOSkgLAwoULWbhwYb7xXK/i8eabb+Zoe+KJJ3jiiSdwcHCgTp061KtXr0AJGXmpUaMG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tQLyP//5XYs3Wr58OdHR0WRnZ+Ph4YGdnR0ODg6ULFmS7Oxsm0Sr27lfy5QpQ9WqVRk0aBCpqalkZGSwfft2fvvttwKdExERkXutUIk4ERERzJ8/n9DQUF588UVefPFFQkND+eSTT5g8efLdjlFEREREREQecG5pdnrcpw8RERH5dxg+fDhms5nly5czY8YMzGYzs2fPBq79P//k5GR69eqFyWTCZDJRt25dY9+lS5eyefNmPDw8+Oijj1i5ciVOTk4ATJgwgcTERKpXr27sO2LECAD8/f2ZP38+gwYNwsvLi8TERJuklM6dO9O5c+cCxe/j40P37t1tlsmaMGEC8+bNw2KxMG3aNBo2bGi0NW3alICAAEqUKEFISIixfVRUFO7u7nz00Uc22+fmnXfeYejQobi7u7NhwwZq1KhRoFhff/11qlWrRmhoKHXr1qVZs2YUKVIEgDZt2lC9enXKlClDaGgotWrVMvZLTEykV69euLu7U6FCBWrUqEHv3r2Ba9VKHn/88QKNf6O5c+eSkJCAl5cXI0aMMJIw4FqS1YABA6hTpw5hYWE0atTIaHNycuLrr7/mm2++wdfXF19fX95++22ys7NvOWbDhg2ZMGEC3bt3x9XVlUceeYRt27YBUL16dcaPH0+7du0IDAy0Of6b+fr6snz5csaNG0fx4sVZu3Ytq1evpmjRorc9D7fr9ddf56233sJisTBnzpx8t72duQoICGDu3Lm8+uqreHt7U6RIEUqUKIGzszOQ/zW3aNEigoKCKFasGFu2bOH9998H4L///S81atTgiSeewM3NjebNmxtVcAYOHEjTpk2pWbMmoaGhVK5cmfDwcCD/85/ftXijmJgYGjRogKurK82bNyc8PJyQkBDc3Nzo168fjz76KBaLhUOHDt32/frZZ59x+vRpypQpg6enJwMHDrSpaCUiInI/s7takDqKuYiLi+O9997jwIEDAFSqVIl+/frlWEP1r5SSkoK7uzvJycm3vabs/cqOnEt+yf3hKgfudQiSn6r6AuG+tadQHzPyN3BB98397DK6d+5b+sy5f+kz576WZdW9c79yMOneuV8l6ra5r3no1hH5V8vr/00nJydz4sQJypUrh8lkuocRyv1kypQpfPHFF/zwww+F2j8jI4OKFSuyf//+O05CGTJkCLGxsSxfvvyO+pG7IyUlheLFi3P48OEcFaVERETk/mK1Wjl8+DBBQUG4u7vnu23OOnIF5OfnZ2TNioiIiIiIiIiIiIiICCQlJbF161aaNm1KTEwM7733Hn369Cl0f05OTgVeJknuf6tXr+app57CwcGBV155hdDQUCXhiIiI/MMUOBFn7969hIWFYW9vz969e/Pd1tXVlVKlShmlKUVERERERERERERERP4NsrKyGDFiBB07dsTV1ZWWLVsyePDgex2W3Cc2b95Mz549yc7OpnLlyixevPhehyQiIiJ3WYGXprK3t+fMmTN4e3tjb2+PnZ0d+e3q7u7OBx98wPPPP3/Xgr2ZlqaSv5OWprrPaZmQ+5eWCblvaWmq+5uWprqP6TPn/qXPnPualqa6f2lpqvuXlqa6v2lpKpF/Ny1NJSIiIiLy7/KXLE117NgxvLy8jL/zc+XKFVauXMkbb7zxlybiiIiIiIiIiIiIiIiIiIiIiIjcLwqciBMUFJTr33np168fv/76a+GiEhERERERERERERERERERERF5wBQ4ESc3VquVkydP8ueff9q8XqVKFTw8PFi9evUdBSciIiIiIiIiIiIiIiIiIiIi8qAoVCLOuXPn6NmzJ+vXr8+1PSsr646CEhERERERERERERERERERERF50NgXZqdBgwaRlJTEjh07cHFxYcOGDSxYsIDy5cvz5Zdf3u0YRURERERERERERERERERERETue4WqiLN582bWrFlD9erVsbe3JygoiEaNGuHm5sbEiRNp2rTp3Y5TRERERERERORfxYMx9zoEydf4ex2AiIgU0MyZM1m6dCk//vjjvQ7lH+vQoUNUq1aN1NTUex0K/fr1Y/HixQQEBLBv3z6btuzsbNq0acO3335LrVq12LRp0231XbduXbp3786LL76Y73YxMTFUrlyZzMzM245fREREHnyFqoiTlpaGt7c3AB4eHpw7dw6Ahx56iN9+++3uRSciIiIiIiIiIiIiInfFmDFjKFmyJGazmUqVKpGUlARcS1RxdHTEZDIZj0OHDhn7de7cmcDAQOzs7Fi3bp1Nnxs2bOCxxx7DZDJRo0aN24rnxnFdXV2pUqUK33zzzR0f5+3G8Pjjj/+tY95t69atIzAw8J7GUL58+fsiCefQoUMsWLCAQ4cO5UjCAdi0aRO//PILCQkJt52EAxAZGXnLJJyCaNu2LcOGDbvjfkREROT+VKiKOBUqVCAmJobSpUvz8MMPM2fOHEqXLs0HH3yAr6/v3Y5RREREREREHnCOpgr3OgTJw9V7HYCIiMg/3U67v7b/GgX7NJ80aRLffPMN27Zto2zZsvzyyy8ULVr0/7qpUSPPijFVq1alc+fO9OnTJ0eb2WzmxRdf5PTp02zcuPH2w///42ZkZDBkyBA6d+7M2bNnb7ufv0pGRgZOTk73Oow8ZWRk/G3j3M/zcN2xY8coUaKE8WPy3NoDAwMxmUy5tmdmZuLoWKivzkREREQMhaqIM3DgQOLj4wF48803Wb9+PYGBgcyYMYMJEybc1QBFRERERERERERERKTwMjMzmTZtGvPnz6d8+fLY29tTs2ZNXFxcCrT/0KFDefbZZ3NNUKhTpw4vv/wyQUFBdxSjk5MTPXr04Ny5c5w+fRqAI0eO8OSTT+Lm5kbZsmVZsmSJsf2yZcsICQnBbDYTFBTExx9/bLSlpKTQsmVLLBYLoaGhNtV9bhQdHc3rr7/Ozp07MZlMlCtXDgB/f3/GjBlDcHAwpUuXBqBHjx54e3tjsVioXbu2TZ92dnZERETg7++Ph4cHI0eOtImzTJkymM1m/P39+eijj4BrFVF69OjBY489hqurK0899ZRNAtKnn35KcHAwbm5u1K9fn2PHjgHXljxydHRk8uTJeHt789xzz/Hcc88RGxtrVDO6WVZWFj179sTDwwOLxUJYWJjxHc+hQ4eoV68exYoVIzg4mFWrVhn73TwPzz//PK+//rpN3wEBAWzatMmI67q4uDhatGhB8eLF8fDwoH///kbbpEmTCAoKwsPDgzZt2pCSkgLAH3/8waOPPoqrqyslSpTg5ZdfzvW8Wa1WunXrhqenJ76+vgwdOpSsrCw2btxIixYtjLl46aWXbPb74IMPGDRokHG+w8PDGTJkCM2bN6dx48aYTCbWrl2b75zUqFGD2bNnA9eSk7p3706xYsUoU6YMo0aNylGZaNq0aXh5eeHp6cmsWbMAmDVrFl988QXTp0/HZDLRuXPnXI9TREREHlyFSsTp0qULPXr0AODRRx/lxIkT/PLLL5w6dYrnn3/+bsYnIiIiIiIiIiIiIiJ34OjRo1y+fJnFixdTokQJypQpw7Rp02y22bNnD8WKFaNs2bJMnjz5ro0dEhLCnDlzbrldeno68+bNw83NDU9PTwDat29PpUqVSEhIYObMmfTu3dtYbsjd3Z3PPvuMlJQUpkyZQv/+/Tl16hQAb7zxBufOnePkyZMsWbKEFStW5DpmpUqVmDJlCjVq1MBqtXL48GGj7csvvyQyMpKDBw8CULt2baKjozlz5gx+fn7069fPpq8tW7awf/9+vvnmG6ZOncr+/fsBGDBgAB9++CFpaWn8/PPPVKtWzdhn1apVREREkJCQgKurq1FxaM+ePfTv358PPviAhIQESpcuTYcOHYz9srKy2LNnD8ePH2fZsmWsXr2agIAArFYrVqs1x3F+8cUX/PLLLxw9epTExETmzJmDyWQiKyuLZs2a0ahRI86dO8fcuXPp1asXsbGxuc5Dx44d+eKLL4y2rVu3kpmZScOGDXOM2b59e1xcXDh69CixsbE899xzAHz88cfMnz+fb775htjYWDIyMhg6dCgAI0aMoHHjxqSkpHDs2DE6duyY63kbPnw4Bw4cIDo6msjISFauXMn7779P48aNbebiww8/tNnv5Zdftjnfo0aNAq4tV/Xyyy+TmppKgwYNbjkn10VERLBz50727dvH999/z+rVq23as7KyiIqK4tSpU8ydO5dhw4aRlJTEgAEDaNWqFYMGDcJqtbJ48eJcj1NEREQeXIVKxLmZyWSiWrVqxj+ORURERERERERERETk/nDy5EkuXbrE4cOHOXnyJMuWLWP8+PHGUlKNGjVi9+7dXLhwgY8++ojJkyezYMGCuzL2wYMHc13S6rqdO3disVhwdXXl008/5dNPP6Vo0aIcOXKEqKgopk6diouLC88++yxPPfWUkbTQpEkTqlSpgoODA+3atSMkJITt27cD15JHRo8ejYeHB1WrVi3UD4j79+9PQEAAZrMZgF69elGiRAnMZjOjR49m165dNtuPGjUKd3d3qlevToUKFfjtt98AcHR0JCoqiuTkZEqVKmWTiNO4cWPq16+P2Wxm4sSJrFu3juzsbBYvXszTTz/N008/jYuLC9OnT+fXX3/lxIkTxr4TJkzAZDIZ8eXHycmJtLQ09u7di729PU888QTu7u5s3bqVK1euMGrUKJycnGjQoAE1a9bk888/z3UemjVrxsWLF/n1118BWLJkCc2bN8fe3varpmPHjrFjxw7mzp1LsWLFMJvNNGjQAID58+czZMgQo5rR2LFjWbt2rRHniRMnOHXqFG5ubjz55JO5Hs/nn3/O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mD9/Pi4uLjn6fueddyhXrhwVK1bk8ccf57nnnqN///55xnI7bmdOXn/9dapVq0ZoaCh169alWbNmFClSpEDjvPzyy+zevRuLxULXrl3vSuwiIiJy/7C7Woj6kq6urqxdu5Z69erZvP7999/TvHlzUlNTOXr0KFWrVs0zA/tuSElJwd3dneTk5FzXGn0Q2VHxXocgebjKgXsdguSn6q3Lr8o9sufvLWMsBeeC7pv72WV079y39Jlz/9Jnzn1N/61z/9J/69zH7Mbc6wgkP1fH3+sIROQeyuv/TScnJ3PixAnKlSuHyWS6hxHK/a5t27YEBwcTERFxr0ORu2TKlCl88cUX/PDDD/c6FBEREfkLWK1WDh8+TFBQEO7u7vlu61iYAVq2bMkLL7zA1KlTeeyxxwD45ZdfeP3112nVqhUAO3fuzDN7XETkbrPbU+FehyB50FeiIiIiIiIiIiIi8k+TlJTE1q1badq0KTExMbz33nv06dPnXoclIiIi94FCJeLMmTOHwYMH06FDBzIzM6915OhI9+7d+d///gdcW8v1o48+unuRioiIiIiIiIiIiIiIiNwHsrKyGDFiBB07dsTV1ZWWLVsyePDgex2WiIiI3AcKlYjj6urK3Llz+d///sfRo0cBCA4OxtXV1dimatWqdyVAERERERERERERERGRf5LPPvvsXocgd6hEiRLs37//XochIiIi9yH7O9n5zJkzxMfHU758eVxdXbl6VQuQiIiIiIiIiIiIiIiIiIiIiMi/U6EScS5cuECDBg0ICQnh2WefJT4+HoAXX3yRIUOG3NUARUREREREREREREREREREREQeBIVKxBk8eDBOTk6cPHkSk8lkvP7888+zYcOGuxaciIiIiIiIiIiIiIiIiIiIiMiDwrEwO23atImNGzcSEBBg83r58uU5ceLEXQlMRERERERERERERERERERERORBUqiKOGlpaTaVcK67ePEiRYsWveOgREREREREREREREREREREREQeNIVKxKlTpw6ffvqp8dzOzo7s7GwiIiKoX7/+XQtORERERERERERERETk38DOzo6jR4/meD0mJgZHx0ItcCAiIiIi90ChEnEiIiL48MMPadKkCX/++SfDhg0jLCyMyMhI3nnnnbsdo4iIiIiIiIiIiIiI3IGIiAhCQ0NxdHRkyJAhNm0jRozAZDIZj6JF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dcfji4iIiIiIiIiIiIgInD17lu+//54XX3wx13ZHR0datGjB5s2bWblyJQAmk8mozAKQlJSEyWQCrlXAufkHtZcuXcLV1bVA8TRq1IhNmzaRmJjIihUrWL16NdOnT8912xMnTrBz504sFovxOHLkiFGdZtq0aZQrVw6LxYKPjw9Xr14lISHB2L9kyZLG387Ozjbff7i4uJCamprruJs2baJatWq4u7tjsViIiori/PnzRvv1Zajg2lxdr+wTHx9PQECA0RYcHJzvXDg4OOQa05kzZ8jMzKRcuXJGW1BQEGfOnMm3v+seeeQRrFYrMTExREdHM2DAAGJiYjh48CBpaWlUq1atQMd5o+PHjxMbG2tzLiIjI4mPj7eJUUREROSfqlCJOG3btjWyyO9UhQoV2LNnDzt27KBv3750796d/fv357rtiBEjSE5ONh43lncUEREREREREREREZHCW7BgAeXLlzeSL/KSmZlpLCkUEhLC3r17jbY9e/YYSSFhYWHExMQYbWlpaZw8edJmKauCsLe3p3nz5tSqVcuoKHMzf39/6tSpQ2pqqvG4fPkyffr0ISYmhlGjRvHxxx+TlJTEmTNnsLOz4+rVq7cVR2569uxJ586dSUhIIDU1lbCwsAL16+vra7NU09GjRws1fsmSJXF0dDSWA4NrSUnXE4vs7Ozy3d/e3p7q1avz7rvvUrZsWUwmE+XLl+d///sf1apVMyof5XecN49RqlQpgoODbc6F1WplwoQJxja3iktERETkQeZYmJ1mzZpFu3bt2LZtGw899BBOTk427a+++mqB+ypSpIjxj/JHH32UX375hXfffZc5c+bk2LZo0aIULVq0MCGLiIiIiIjIPVSHmFtvJCIiIiJ/mYyMDDIyMsjKyiIzMxOr1UqRIkVwdPy/rwmWLl1Kx44dbfa7cOECn332GR06dMBkMrFo0SJ27NjBO++8A0CXLl0YNGgQ3bt3x2KxMHPmTPr27QtcW86ob9++vPvuu7z00kuMHDmSsLAwKlaseMt4N23aRHR0NO3bt8fX15cffviBnTt3Gks4eXt7c+LECWP7du3a8dZbb7Fo0SKef/55/vzzTzZs2EC9evVITU3F3t4eHx8fMjIyeP311+94Pq+zWq14enpSpEgRFixYwL59+wq0X4cOHahXrx6RkZE8+uijvPnmm4Ua39HRkSZNmvDGG2+waNEiYmJiWLp0KQsWLACuzdNPP/1Edna2kVRzsyeeeIKpU6ca5+3xxx/n/fffZ/DgwQU6zpvHqFevHlevXiUiIsL4vmjr1q0EBwdTvnz5Qh2niIiIyIOkUBVxli5dyqZNm1i1ahUzZ87kf//7n/HIqyxkQWVnZ3PlypU76kNERERERERERERERP7P8OHDMZvNLF++nBkzZmA2m5k9e7bRHh0dzR9//EHPnj1t9rO3t2f+/PkEBARQvHhxpkyZwty5c6lVqxYAzz//PD179uTxxx8nNDSUp556yki+cHFxYeXKlbz33nt4eHiwfft2lixZYvQ9YsQI6tatm2u8xYsX5/PPPyc0NBSTyUSnTp146aWX6N+/PwAvv/wyu3fvxmKx0LVrV0qUKMGaNWt477338PT0JDAw0PjBb/Xq1enSpQuPPvoogYGBlClTJscPjAvrnXfeYejQobi7u7NhwwZq1KhRoP2qV6/O+PHjadeuHYGBgcZ8FsZHH31EZmYmpUqVolWrVrzxxhs0a9YMuJYolZaWhru7O/Xr1891/3r16pGWlmaci/r165OWlsaTTz5ZoOO8eQwnJye+/vprvvnmG3x9ffH19eXtt98mOzu70McoIiIi8iCxu1qI2oslS5bk1VdfZfjw4XlmUBfEiBEjaNKkCYGBgaSmprJkyRLeeecdNm7cSKNGjW65f0pKCu7u7iQnJ+Pm5lboOO4nk1WN8b419M6rlMpfyI5b/4pG7o2rHLjXIUgeXNCHzv3sMvrguW9V1b1z39qj++Z+VlefO/etSH3m3L/0mXN/0+eOyL9aXv9vOjk5mRMnTlCuXDlMJtM9jFBERERERO4mq9XK4cOHCQoKwt3dPd9tC7U01Z9//snzzz9/R0k4AGfPnqVbt27Ex8fj7u5OlSpVCpyEIyIiIiIiIiIiIiIiIiIiIiJyPylUIk737t1Zvnw5I0eOvKPB582bd0f7i4iIiIiIiIiIiIiIiIiIiIjcLwqViJOVlUVERAQbN26kSpUqOdZSnTZt2l0JTkRERERERERERERERERERETkQVGoRJw//viDRx55BICoqCibNjs7rV8uIiIiIiIiIiIiIiIiIiIiIv8+hUrE2bJly92OQ0RERERERERERERERERERETkgWZ/rwMQEREREREREREREREREREREfknUCKOiIiIiIiIiIiIiIiIiIiIiMhdoEQcEREREREREREREREREREREZG7QIk4IiIiIiIiIiIiIiIi91hMTAyOjo73OgwRERERuUNKxBERERERERERERER+avYrfprHwUUERFBaGgojo6ODBkyxKYtNjaWp556iuLFi2NnZ5dj37i4OOrVq4eLiwtlypThyy+/NNqWLFlCmTJlsFgseHl50bt3bzIzM432yMhIQkJCcHZ25rHHHuPgwYMFnzo7O1xcXDCZTBQvXpyOHTuSnp5e4P1FRERERO4FJeKIiIiIiIiIiIiIiPzD+fn5MXr0aJ555pkcbfb29jzzzDPMnTs313179eqFj48PZ8+eJTw8nG7dunH27FkAatWqxfbt20lNTWX//v1ERUUxZcoUAC5fvkz79u3p27cvFy9epFatWnTq1Om24t63bx9Wq5Xo6Gj279/P1KlTc90uIyPjtvoVEREREfmrKBFHREREREREREREROQfrkuXLnTq1Al3d/ccbX5+fgwbNowaNWrkaEtOTuabb75h4sSJWCwWOnXqREhICMuWLQOgTJky+Pn5Gdvb29tz5MgRANavX0+RIkUYPHgwJpOJ8PBwoqKiOHDgwG3H7+PjQ/369YmOjgb+bxmnyZMn4+3tTbt27bBarXTr1g1PT098fX0ZOnQoWVlZAHh7e/PHH38AMGLECJydnY3qOi1atGDatGnAtSo8ERER+Pv74+HhwciRI/OMKS4ujhYtWlC8eHE8PDzo378/AFlZWQwePJiSJUvi5eVFz549uXz5MgDnzp2jTp06eHh44OHhQceOHY02EREREflnUCKOiIiIiIiIiIiIiIjkat++fZhMJoKDg43XQkND2bdvn/F806ZNWCwWvL29iY6Opk+fPgBERUVRsWJFYzuLxUJgYCB79uwBYOTIkdSvX79AcZw+fZrNmzdTs2ZN47WsrCz27NnD8ePHWbx4McOHD+fAgQNER0cTGRnJypUref/99wGoUaMG3333HQDbt2/H09OTH374AYCdO3fy1FNPGf1u2bKF/fv388033zB16lT279+fa0zt27fHxcWFo0ePEhsby3PPPQfAu+++y1dffcWPP/5IVFQUv//+O6NHjwYgOzubfv36ERcXx549e/j999+NCkIiIiIi8s+gRBwREREREREREREREclVamoqrq6uNq+5ublx6dIl4/nTTz9Namoq0dHRvPjii/j6+hr7urm52ezr6upq7DthwgS2bNmS7/gPP/wwFouFgIAAHBwc6NGjh037hAkTMJlMmM1mPv/8c8aOHYuXlxfly5dnwIABrFixAoDatWuzbds2srKyOHjwIN27d2fLli3ExMRw5coVqlatavQ5atQo3N3dqV69OhUqVOC3337LEdexY8fYsWMHc+fOpVixYpjNZho0aADAypUrefXVVwkODsbHx4fRo0ezevVq4Fpln44dO+Li4kJQUBAvvPAC27dvz3cOREREROTBokQcERERERERERERERHJlcVisUm6AUhJScmRnANQsWJFwsLC6N27t7FvSkqKzTaXLl3Kdd+8/P7776SmppKUlETp0qVp27at0WZvb09QUJDx/Ny5czaVe8qUKUNCQgIA9evXZ8eOHezYsYPy5cvTsGFDfvzxRzZv3sxjjz1mM+aNS205OzuTmpqaI67jx49TvHjxHIlGAAkJCZQuXdp4HhwczNmzZwFISkriueeew8fHB1dXV8aMGUNiYmKB50NERERE7n9KxBERERERERERERERkVxVrlwZq9XKsWPHjNeio6OpXLlyrttnZmZy/PhxAMLCwoiJiTHa0tLSOHnypE31mYJyd3enQ4cObNu2zXjNzs7OZhsvLy+OHj1qPD9+/Dg+Pj4AVK9enZSUFBYtWsQTTzzB448/TnR0NFu3buXxxx+/7XjKlClDYmJirkk6Pj4+xhzAteo53t7eALz99tucP3+ePXv2cOnSJcaPH8/Vq1dve3wRERERuX8pEUdERERERERERERE5B8uIyMDq9VKVlYWmZmZWK1WMjMzjXar1crly5dz/O3u7k7Dhg0ZPnw4aWlpLFu2jJiYGDp06ADA/PnzOXToEABRUVFMnjyZOnXqANCkSRPS09N59913uXz5MiNHjiQsLIyKFSvedvxpaWmsWLHCpuLNzVq2bMnbb7/NuXPnOHLkCLNmzaJdu3YAODg48Oijj/Lpp59Sr149ihYtSnBwMGvXrqV+/fq3HU/p0qWpUaMGffr0ITk5mbS0NDZv3gxA27ZtmTlzJseOHePs2bOEh4fTqlUr4NpyXS4uLhQvXpyDBw8yd+7c2x5bRERERO5vjvc6ABERERERERERERGRf6yrbe51BAAMHz6cadOmGc9nzJjBjBkzeOWVVwAwm81Gm9lsxs/Pj9OnTwMwb948OnbsSIkSJShZsiQLFiwwKrxER0czYsQIUlJSKFasGM2bN+d///sfAC4uLqxcuZJevXrxxhtvEBYWxpIlS4xxRowYwfbt24mMjMwz7sqVK2NnZ4ejoyNVqlRh0aJFeW77zjvv0KdPHypWrIijoyNdunShf//+Rvvjjz/O9u3bqVu3rvF89+7dhaqIA7BixQp69+5tLEPVuXNnnnrqKQYOHMipU6eoWbMm2dnZNG3alPDwcACGDRtG27Zt8fDwIDg4mGbNmtlU+RERERGRB5/d1Qe45mFKSgru7u4kJyfnug7rg2iy3a23kXtj6AN7p/w72HH7v6KRv8dVDtzrECQPLuhD5352GX3w3Leq6t65b+3RfXM/q6vPnftWpD5z7l/6zLm/6XNH5F8tr/83nZyczIkTJyhXrhwmk+keRigiIiIiIneT1Wrl8OHDBAUF4e7unu+2WppKREREREREREREREREREREROQuUCKOiIiIiIiIiIiIiIiIiIiIiMhdoEQcEREREREREREREREREREREZG7QIk4IiIiIiIiIiIiIiIiIiIiIiJ3gRJxRERERERERERERERERERERETuAiXiiIiIiIiIiIiIiIiIiIiIiIjcBUrEERERERERERERERERERERERG5C5SIIyIiIiIiIiIiIiIicpONGzdSoUIF47m/vz+bNm26hxGJiIiIyINAiTgiIiIiIiIiIiIiIv9wHTt2xMvLC1dXV0JCQli6dKnRtmTJEsqUKYPFYsHLy4vevXuTmZkJQHJyMo8++ijFihXDYrFQq1Yt9uzZY9P3zJkzCQoKwmQyERwczP79+23afHx8cHV1pW3btqSnpxc45oSEBLp27Yq3tzcmk4lSpUrRtWtXjh49emeTUUCNGzcmJibmbxlLRERERP45lIgjIiIiIiIiIiIiIvIXybLa/aWPgnrjjTc4efIkly5d4qOPPuKll14iISEBgFq1arF9+3ZSU1PZv38/UVFRTJkyBQBnZ2c++ugjLly4QFJSEi1atKBLly5Gv8uXL2fWrFl8/vnnXLp0ia+++govLy8Adu7cyahRo1i5ciUnTpwgLi6O4cOHFyjetLQ06tSpQ2xsLN999x2XLl1i165dhIaGsmXLlgIft4iIiIjI302JOCIiIiIiIiIiIiIi/3BVq1bFxcUFADs7OzIyMjh+/DgAZcqUwc/Pz9jW3t6eI0eOAFC0aFEeeeQRHBwcuHr1Kg4ODpw6dcrYNjw8nMmTJ1OtWjXs7e2pXLmykYjz6aef0qRJE+rWrUuJEiUYPXo0K1asKFC877//PklJSaxdu5aHHnoIe3t7fHx8GDFiBC+++CIA586do06dOnh4eODh4UHHjh25fPkyAHFxcdStWxeLxYKHhwfNmzfPdZysrCwGDx5MyZIl8fLyomfPnkYf69atIzAwsKBTLCIiIiICKBFHRERERERERERERORfoWvXrjg7O1O3bl3+85//8NhjjxltmzZtwmKx4O3tTXR0NH369LHZNyQkBGdnZ4YPH07//v0ByMzMZP/+/ezdu5eSJUsSEBDAsGHDyM7OBuDAgQNUqVLF6OPRRx8lPj6e5ORkAOrXr8/IkSNzjfX777+nbt26mM3mPI8nOzubfv36ERcXx549e/j999+NSj7h4eEEBQVx8eJF4uLiGDhwYK59vPvuu3z11Vf8+OOPREVF8fvvvzN69OhbTaWIiIiISJ6UiCMiIiIiIiIiIiIi8i+wcOFCLl26xJo1a2jYsCH29v/3FcHTTz9Namoq0dHRvPjii/j6+trse/DgQZKTk5k2bRrVqlUDIDY2lqysLL799luioqL47rvvWLFiBXPmzAGuLS/l5uZm9FGsWDEAUlJSANiyZQsTJkzINdbExERKlixpPP/000+xWCyYzWY6dOgAgI+PDx07dsTFxYWgoCBeeOEFtm/fDoCTkxMJCQkcOXIEFxcXGjZsmOs4K1eu5NVXXyU4OBgfHx9Gjx7N6tWrCzynIiIiIiI3c7zXAYiIiMi9kU6Fex2CiIiIiIiIiPzNHB0dadGiBdOnT6dChQq0a9fOpr1ixYqEhYXRu3dv1q1bZ9NmNpt59dVX8fb2pk6dOka1mjfeeANPT088PT3p0aMH69ato2/fvpjNZiPpBiApKQnAJjknL8WKFePMmTPG827dutGtWzdGjhzJwYMHjf6uJ9+kpaWRlZVlVOB58803GTJkCPXr18fZ2ZmBAwcyaNCgHOMkJCRQunRp43lwcDBnz569ZXwiIiIiInlRRRwRERERERERERERkX+ZzMxMI6Elt7bjx4/n2nb16lXS0tI4fvw4Xl5eeHl5YWdnl+u2FStW5I8//jCe//bbb/j6+uLu7n7L+OrVq8e2bduwWq15bvP2229z/vx59uzZw6VLlxg/fjxXr14FwMPDg/nz5xMfH8+8efMYPnw40dHROfrw8fGxOdZjx47h7e19y/hERERERPKiRBwRERERERERERERkX+wCxcuMGfOHJKTk8nIyODjjz9mx44dPPXUUwDMnz+fQ4cOARAVFcXkyZOpU6cOANu3b2fDhg2kp6eTkpJC//79sVgsPPzwwwB06NCBd955h6SkJI4ePcqCBQt49tlngWtVbNavX88PP/zAhQsXCA8Pp3379gWKuW/fvlgsFlq0aEFUVBTZ2dmcP3/eJpkmNTUVFxcXihcvzsGDB5k7d67Rtnz5cqKjo8nOzsbDwwM7OzscHBxyjNO2bVtmzpzJsWPHOHv2LOHh4bRq1er2J1lERERE5P9TIo6IiIiIiIiIiIiIyD+Yvb098+fPJyAggOLFizNlyhTmzp1LrVq1AIiOjqZ27dq4uLjQqFEj6taty//+9z8A/vzzTwYPHkyJEiUIDAxk3759fPXVVzg7OwMQERGBj48PpUqVolatWrRt25a+ffsCUKNGDd5++22ee+45AgMDKVmyJBMnTjTiqlu3LiNGjMg1ZovFwrZt2/D29uapp57C1dWVatWqYTKZjD6GDRvG2bNn8fDw4LnnnqNZs2bG/jExMTRo0ABXV1eaN29OeHg4ISEhOcYZOHAgTZs2pWbNmoSGhlK5cmXCw8PvwqyLiIiIyL+V3dXrdRofQCkpKbi7u5OcnFygNWUfBJNzr+Ap94GhD+yd8u9gR8V7HYLk4SoH7nUIkgfdN/c33Tv3sar6B9t9a4/+wXY/q4vunftVJLp37lv6zLm/6XNH5F8tr/83nZyczIkTJyhXrhwmk+keRigiIiIiIneT1Wrl8OHDBAUF3XKpVVXEERERERERERERERERERERERG5C5SIIyIiIiIiIiIiIiIiIiIiIiJyFygRR0RERERERERERERERERERETkLlAijoiIiIiIiIiIiIiIiIiIiIjIXaBEHBERERERERERERERERERERGRu0CJOCIiIiIiIiIiIiIiIiIiIiIid4EScURERERERERERERERERERERE7gIl4oiIiIiIiIiIiIiIiIiIiIiI3AVKxBEREREREREREREREXlA2NnZcfTo0TvuZ8iQITz//PN5to8YMYLu3bvf8Ti5adu2LcOGDQNg48aNVKhQ4S8Z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febma/a6vD4jAH788UeCg4OxWCw5Kq3kdxw3ut1/Rzz99NMUL14cd3d3mjRpYrxXXa9SN23aNLy8vPD09LR5T755GbHr7/2HDh2icuXKxud5kyZN8h0H4KeffuKxxx7DYrHg6+vLxx9/nOv7e26V8268LmrUqMGgQYMICwvDbDZz5coV1q9fT+XKlbFYLNSoUYP9+/fndZoLfe/cS0rEERERERERERERERH5lztz5gzFixcnKCiIoUOHkpmZmet2mzZtokSJEvj4+ADXEhiqVatmtFepUsVYZmj//v1UrlzZaKtYsSKOjo5ER0cD0LVrV7p27ZrrON999x0PP/wwpUqVyjPmjh07smLFCuP50qVLqVy5MsHBwQDs2rWLatWqceHCBbp27Uq7du3IyMjgiy++4JdffuHo0aMkJiYyZ84cTCZTQaaJtWvX8v777xMXF0dsbCxPPPEEgwcP5vz58zg5OTFp0iRj24MHD9KnT588+xo/fjwXL15k8+bNrFq1ikWLFhltu3btom7duiQlJdGsWTMGDRpks++WLVvYv38/33zzDVOnTmX//v0EBwcTFhbGsmXLjO1WrFhhJF706tULT09Pzp49S3h4eI7KRL/++iu1atUiKSkpR9wbN240lnqwWq2UL1+ecePG8dNPP7Fr1y5iYmL4/fffmTJlCgDly5cnNTWV8uXLF2heb/bDDz9w4MABli5dyujRo5k8eTI//fQTkZGRzJw507iG8oth8ODBDBw4kEuXLrFv3z4aNmxIpUqVmDJlCjVq1MBqtXL48GEA2rdvT6VKlUhISGDmzJn07t3bZvmoNWvWsHr1ao4fP05MTAxz584FYOvWrbzxxhssWbKEs2fPEhISwosvvpjjeBo3bszq1asJCAjAarXy4YcfFngu7O3tWbBgAR999BE///wzo0ePxmKx8PrrrwPQp08fDh48WKh5jouLw2KxcP78eTp27EiXLl2IiYnh5MmTjBkzhoEDBxrbtm/fHl9fX06fPs3atWsZN24cO3bsICUlhVGjRrFp0ybS0tLYuHEjwcHBDBgwgFatWjFo0CCsViuLFy8mISGBdu3aMWLECM6fP0+TJk1o1aqVTUJNbtc25H+ub+bu7s5nn31GSkoKU6ZMoX///pw6dcpo/+qrr5g+fTrnzp0jKyuLiRMnAtfuu1GjRrF06VJOnDiRIwHu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srOzdfHiRUnS7t27Vb9+favQzSOPPKIGDRoUOv+dQNKdV05Ozl1rnjRpkvbu3as9e/YoMTFRlStXVqdOnXT27FmrfkeOHJHRaJSrq6tq166t3bt3a+XKlfL397/rHAAAAChdCOIAAAAAAAAAAFBKlC9fXunp6Xnar169Kl9f3xKN2bNnT+3du1cHDx7U5cuXtWfPHoWGhlrGDQgIyPNMQECA1Q48d9pKKjExUS+//LKaNm2qZcuWadeuXUpMTJT021FT/+v3OwK5urpa9UtNTVXFihXzrbkwW7duldFotLzatWt317pr1KihsLAwNWnSRNHR0Vq9erXOnj2rjz76yKpfzZo1tXfvXu3atUuffvqpjEajevbsqZs3b951DgAAAJQuHE0FAAAAAAAAAEApUadOHR07dsyqLT09XampqapTp06JxvT391dYWFi+93x9fXX8+PE87RcuXMgT/DEYDCWaX5ISEhIUGhqqTz/91NK2devWEo0VGBioAwcO5Gm/cOGCvL29C3yucePG2rt3r+Xay8ur2HP7+/vLz89PR44csWp3d3e3fMbNmjWTn5+fnn32Wc2cOVN//etfiz0PAAAAHBc74gAAAAAAAAAAUEo89dRT2rhxo65du2ZpS0hIkJOTkzp27Gjz+cLDw5WcnGwVxrl69ao2btxoOTqqMK6urrp9+/Zd+926dcuys80dixcvLn7Bkpo2barvv/9eJ0+etLSdPHlShw4dKvQ5Ly8vhYWFWV61a9cu9twXLlxQWlqa/Pz8Cu33zDPPqFWrVvroo4/y7PgDAACA0o0gDgAAAAAAAAAApcTAgQPl5eWl6OhobdiwQZ9//rlGjBihgQMHqnLlypZ+r776qlxc7n1T/H79+ik4OFidO3fW0qVL9dVXX6ljx45ycXHRsGHD7vp83bp1ZTKZNGPGDO3duzff3XUkqUOHDtqzZ4/Gjx+vjRs3avjw4dq0aVOJau7bt68qVaqkLl26KCEhQQkJCeratasqVapUovEK88MPP2jXrl3auXOnli9frm7duslgMOi1116767NjxozRhQsXtGDBApvXBQAAAPshiAMAAAAAAAAAQClRvnx5bdq0SS4uLoqOjtY777yjP//5z5o2bZpVv5ycHOXk5NzzfF5eXkpKSlKDLN5lXAAAUxNJREFUBg3Uv39/vfjiiypfvry2bdumoKCg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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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G7Vv316HDh3SqVOn9M4776h3795G21atWikoKEhnz57V8uXL9f7772vbtm2Kj4/X4MGDtXr1al2/fl2rVq1SWFiYXn31VTVt2lR9+vRRYmKiZs+erQsXLqhly5YaOHCgLl26pAYNGqhp06ZWgRpb97aU8bW+n9ls1sKFCxUfH68xY8aoV69eOn36tLF+2bJlGjdunC5evKiUlBSNHDlS0p3P3eDBgzV37lxFR0enCcDdK6NjmT9/voKCgrR06VIlJibqpZdeMvq39blOSUlRo0aNVLduXV28eFFffvmlunXrpjNnzhj7W7p0qTZt2mTzWq9Zs0ZvvvmmPv/8c8XHx+vbb781QpfFihXT9u3bdfnyZdWsWTPdqVomT56syZMna9GiRYqPj9ekSZPk6uoq6U6Q5cCBAzp//ryCg4P1yiuvWG27du1a7d27Vxs3btS0adM0depUrVmzRmfOnFFSUpIRIvvuu+80ZswYLV26VNHR0bpx40aGz8i7du/erenTp2vnzp3G8fn5+aVp9/nnnysxMVExMTG6dOmShg8fLunO80SS9u3bZ4z49umnn2rZsmX69ddftXfvXv3xxx8aMmSI0dejXKv0ZHT8iYmJRo13Q1T3Sk1N1SuvvKKYmBjt3r07w/v/ritXrujZZ59V5cqV9dlnn9lsk95x3rx5U61atVK3bt10+fJlRUREaPfu3Zkeoy22nsWSMrxXFixYoK+//lobNmzQH3/8oR9++CHd/u8/d1l5ztx7z94rve8I6c73/+bNm/XHH39o2bJlWr58eabHYcuD/D2iWbNmOnnypI4fP65r164ZQWTpzr24d+9enT59Wl9++aUGDBigq1evZngtChcurN27dxvf5z/++GOG+7l8+bIaNmyotm3b6tKlS9qxY4dKlixp8/meFYsXL9b8+fN19epVnTlzRm3bttUnn3yiK1euqEmTJmrVqpXN7R7ls5OdCOIAAAAAAAAAAPAfVrJkSf3222+6ePGilixZou+++04ffvhhmnbnzp3Tq6++qvfee89YlpiYqJw5cxrvzWazMeLN9evX5e3tbdWHp6en8V+Kz5w5UzNnzrRZ0+XLl62m8Pn5559lMpnk5eVljG7Qvn177d692xiBZP78+UboRJICAgI0YMAAubq6auDAgUpOTtbGjRvl4uKi69eva8+ePXJ0dFTVqlWzPFJQ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3bt3U7lyZUwmE/369WP+/Pk4OTnd1ff7779PYGAgJUuWpHr16rz44ov07ds321hyIzdrMmjQICpUqECpUqUICQmhSZMm5MuXL0fj9O7dm3379uHs7Eznzp3zJHYRERF5fNjc/Kf3l3wCJCQkYLFYiI+Pz/IM0yfNQu6/LaX88zqjr95jp6e+K4+lufquiIiIiIiIiMjjJbufIcfHx3Pq1CkCAwMxmUyPMEJ53LVu3ZqAgAAmTpz4qEORPDJ58mTWrFnDzp07H3UoIiIi8hBYrVaOHTuGn58fFovlnnW1I46IiIiIiIiIiIiIiIhILsTFxbF27VrS0tI4ePAgH3/8MU2aNHnUYYmIiMhjQIk4IiIiIiIiIiIiIiIiIrmQnp7O8OHDcXFxITQ0lPr16/Pmm28+6rBERETkMWD/qAMQERERERERERERERH5L/nqq68edQjyN7m7uxMREfGowxAREZHHkHbEERERERERERERERERERERERHJA0rEERERERERERERERERERERERHJA0rEERERERERERERERERERERERHJA0rEERERERERERERERERERERERHJA0rEERERERERERERERERERERERHJA0rEERERERERERERERGRx87w4cPp2rUrAIcPH8be3j7buq1bt2bIkCEAzJo1i7p16/4jMYqIiIiI/JUScUREREREREREREREHpIgm4f7yqkqVaqQP39+TCYTJpOJkJAQo2zx4sX4+/vj7OyMp6cnPXv2JC0tzSjv2LEjxYoVw8bGhvXr1+dq/j4+Pjg6OmIymXB1deWFF17g0qVLOWo7YcIEFixYkKvxAHr37s0PP/yQ63YiIiIiInlBiTgiIiIiIiIiIiIiIv8B06ZNw2q1YrVa2bFjh3G/WrVq7Nq1i8TERCIiIggPD2fy5MlGebly5Zg1axa+vr4PNO7XX3+N1Wrl9OnTpKamMmLEiL89FxERERGRx5UScURERERERERERERE/sP8/f0pUqSIcW1ra8vx48eN68GDB/PCCy/c82ionHBxcaFJkyYcPnzYuGdjY8OJEyeM6ypVqjBz5kwABg4cSNu2bbPsKyIiggoVKmA2mwkLCyM5Odko++ijj6hevTrw/460mjp1Kp6ennh4eDBjxgyjbnR0NLVq1aJAgQJUrVqVLl26GGP++eefVKxYkQIFCuDu7k7v3r3/1vxFRERE5L9BiTgiIiIiIiIiIiIiIv8BI0aMwM3NjRo1arB79+5MZZs2bcLZ2RkvLy8iIyPp1atXjvqcPXs2QUFBOaobGxvL119/TeXKlXMd+1+1a9eO6tWrc+XKFTp37szGjRuzrZuenk54eDhnzpxh7ty5DBkyhLi4OABefvllihQpwsWLF5kwYQKrV6822g0fPpywsDASEhI4efIk7du3/9txi4iIiMi/nxJxRERERERERERERET+5SZNmkRUVBTR0dHUrVuXpk2bGskoAA0bNiQxMZHIyEhefvllChcunKN+e/XqxZEjR+5Zp2XLljg7O+Ph4cGJEyd48803/85UOHLkCIcPH2bixIk4OjrSqVMnnn322Xu2mTBhAo6OjrRs2RJHR0ciIyNJTU3l+++/591338VkMlG3bl3q169vtHFwcODUqVOcOXMGFxcXateu/bfiFhEREZH/hsciEefjjz+mePHiODo6UrVqVfbs2XPP+itWrKBkyZI4OjpSpkwZ1q9fn6n8nXfeoWTJkpjNZtzc3Khfv/5d2f0iIiIiIiIiIiIiIv8VtWvXxmKxYDabGTt2LGazmW3btt1Vr2TJkgQHB9OzZ888G3v16tUkJiZy7do1XnjhBZ5//vm/1V90dDRubm6YTCbj3p1Ha/2VnZ0d3t7exrWTkxOJiYmcP3+e9PR0/P39jTIfHx/j/bRp00hNTaVChQo888wzLFmy5G/FLSIiIiL/DY88EWfZsmUMGDCAt99+m99//51nn32WsLAwLl68mGX9n376ifbt2/Pyyy+zb98+WrRoQYsWLQgPDzfqBAUFMWPGDP7880927txJ8eLFadiwIZcuXfqnpiUiIiIiIiIiIiIi8tiytbXl5s2bWZalpaURFRWV52M6OTnxv//9j4MHDxITEwOAo6MjVqvVqHP58uX79uPr60tcXFymdufOnct1PIUKFcLOzo5Tp04Z986ePWu89/PzY/ny5Vy6dIm33nqL7t27ZxpTRERERCQrjzwRZ+rUqfTs2ZPu3btTqlQpZs2ahclkYv78+VnW//DDD3n++ecZPHgwzzzzDGPHjqVChQrMmDHDqNOhQwfq169PQEAApUuXZurUqSQkJHDgwIF/aloiIiIiIiIiIiIiIo+Fy5cvs2bNGpKTk0lJSWHMmDHEx8cTEhICwPz58zl69CgA4eHhTJo0iVq1ahntU1JSjASU69evY7VaycjIyHUc169fZ8GCBRQsWNDYoaZkyZIsWLCAtLQ0Pv74Y06fPn3ffoKCgggMDGT48OFcv36dxYsXP9DP/x0cHKhbty4jR44kOTmZ7du3s2XLFqP8888/JyoqCltbW9zc3ACwsbHJ9TgiIiIi8t/ySBNxbty4wd69ezOduWpra0v9+vX5+eefs2zz888/Z6oPEBYWlm39GzduMGfOHCwWy33PiBURERERERERERERyUtHbj7cV07cuHGDUaNG4eHhgbe3N+vXr2ft2rW4u7sDEBkZSc2aNXFycqJBgwaEhITwwQcfGO1DQkIwm81ERUXx4osvYjabjcSdWbNmERgYeM/xmzVrhslkwsPDgx9//JHly5dja3vr1xNTp07lq6++ws3Njb1791K+fPkczWnp0qVs376dggUL8vnnn9OwYcOcLcZfzJs3j+joaDw8PBgyZAhNmjQhf/78AOzevZvKlStjMpno168f8+fPx8nJ6YHGEREREZH/Dpub2e09+Q84d+4cPj4+/PTTT1SrVs24P2TIELZv387u3bvvapMvXz4WLFhA+/btjXuffPIJ//d//8eFCxeMe+vWraNdu3ZYrVYKFy7MmjVrqFy5cpZxXL9+nevXrxvXCQkJFC1alPj4eFxcXPJiqo/UQpSh/zjqzCP76kl2euq78liaq++KiIiIiIiIiDxeEhISsFgsd/0MOT4+nlOnThEYGIjJZHqEEcqDatq0KcHBwUyYMOFRhyIiIiIijxGr1cqxY8fw8/PDYrHcs+4jP5rqYQkNDWX//v389NNPPP/887z00ktcvHgxy7oTJkzAYrEYr6JFi/7D0YqIiIiIiIiIiIiIyD9t79697Nu3j/T0dNauXcvmzZtp1arVow5LRERERJ5gjzQRx8PDAzs7u0w72QBcuHCBQoUKZdmmUKFCOapvNpsJDAzkueeeY968edjb2zNv3rws+xw+fDjx8fHG68yZM39jViIiIiIiIiIiIiIi8iS4evUqTZs2xWw2079/fyZNmkSlSpUedVgiIiIi8gR7pIk4+fLlo2LFinz//ffGvYyMDL7//vtMR1XdqVq1apnqA2zevDnb+nf2e+fxU3fKnz8/Li4umV4iIiIiIiIiIiIiIvLv1qBBA6Kjo0lJSeHUqVO89tprjzokEREREXnC2T/qAAYMGEDXrl2pVKkSVapUYdq0aSQlJdG9e3cAunTpgo+Pj3Ee6+uvv07t2rWZMmUKjRs3ZunSpfz222/MmTMHgKSkJMaNG0ezZs0oXLgwly9f5uOPP+bs2bO0adPmkc1TRERERERERERERERERERERP7dHnkiTtu2bbl06RKjR4/m/PnzlCtXjg0bNuDt7Q3A6dOnsbX9fxv3VK9encWLFzNq1ChGjBhBiRIlWLNmDcHBwQDY2dlx6NAhFixYwOXLl3F3d6dy5cr8+OOPlC5d+pHMUURERERERERERERERERERET+/Wxu3rx581EH8bhJSEjAYrEQHx//rzimaiE2jzoEyUJn9NV77PTUd+WxNFffFRERERERERF5vGT3M+T4+HhOnTpFYGAgJpPpEUYoIiIiIiJ5yWq1cuzYMfz8/LBYLPesa3vP0r9IS0vjiy++4MKFC38rQBERERERERERERERERERERGRf5tcJeLY29vTu3dvUlJSHlY8IiIiIiIiIiIiIiIiOXL06FGcnZ1zVHfWrFnUrVv3IUf07xIYGMj333//qMMQEREReaLkKhEHoEqVKuzfv/8hhCIiIiIiIiIiIiIiIg9DlSpVyJ8/PyaTCZPJREhIiFG2ePFi/P39cXZ2xtPTk549e5KWlgbAgQMHqFu3Lm5ubri5udGwYUOioqIy9f3RRx/h5+eHyWQiICCAiIgIAKKjo6lbty4FCxbExiZ3x8IfPnwYGxsbKleunOn+hg0bsLGxoXXr1gCUKFGCxMTEHPXZu3dvfvjhh1zF8bhp3bo1Q4YMeSh9Dxw4kLZt22a6d+zYMerVq/dQxhMRERH5t7LPbYM+ffowYMAAzpw5Q8WKFTGbzZnKy5Ytm2fBiYiIiIiIiIiIiIg8yQ6QuwSU3CrLzRzXnTZtGq+++upd96tVq8auXbsoUqQIly5dolmzZkyePJlhw4YRGxtLixYtWLZsGQUKFKBPnz506tSJnTt3ArBs2TJmzJjB6tWrKVeuHJGRkXh6egJga2vL888/T9++fY3Emdyws7PjwoULHD9+nKeeegqAL774Aj8/v1z39V+RmpqKg4PDow5DRERE5D8t1zvitGvXjpMnT9K/f39q1KhBuXLlKF++vPG/IiIiIiIiIiIiIiLy5PD396dIkSLGta2tLcePHwegdu3a9O/fH09PT5ycnBgwYAD79u0z6o4bN45JkyZRoUIFbG1tKV26tJGIU6RIEYYMGUKVKlUeOLYWLVrw+eefA5CSksKWLVto0qSJUX748GHs7f/f3xz7+PjwzjvvEBAQgLOzM127djXKPvroI6pXr56p3dSpU/H09MTDw4MZM2YYdaOjo6lVqxYFChSgatWqdOnS5a7dYm5LTU3ljTfeoEiRIjg7O2ea7xdffEFAQAAuLi6EhoZy8uTJHI3/4YcfUqRIEcxmM/7+/qxfv54ZM2awZs0apk2bhslkomPHjkY/kyZNwsvLizZt2mSaZ1ZrdOjQIerUqYOrqyuenp6MGzeO9evXM336dFauXJlpxyQfHx82bdoEgNVqpUuXLnh4eFC4cGEGDx5Meno6cGs3nebNm9OoUSPMZjNly5bl0KFDACQlJdG0aVMsFgsWi4VKlSrd97mLiIiIPMlynYhz8uTJu14nTpww/ldERERERERERERERB4/I0aMwM3NjRo1arB79+5MZZs2bcLZ2RkvLy8iIyPp1atXln1s2bKFwMBAANLS0oiIiODAgQMUKlQIX19fhgwZQkZGRo7i6dy5M507d75nnW7durF8+XIAvvrqKypWrIiLi8s926xbt45du3bxxx9/8M0337Bu3bos66WnpxMeHs6ZM2eYO3cuQ4YMIS4uDoCXX36ZIkWKcPHiRSZMmMDq1auzHe+tt97ihx9+YPv27cTGxjJmzBgA9u/fT9++fZk1axYXLlygePHitGvX7r7jJyQkMHLkSDZt2kRSUhIbN24kICCAfv360aJFC9544w2sViuLFi0y+tm/fz9RUVHGveykpqbSuHFjKlasyLlz5zhy5Ai1a9fmhRdeoH///rRq1Qqr1cqOHTvuajts2DAOHTpEZGQkO3bsYMWKFXzyySdG+caNG+nbty9xcXEEBgYycuRIAD755BOsVivnzp3j8uXLjBs37p4xioiIiDzpcn00lbZ8FBERERERERERERF5skyaNIly5cphb2/Pe++9R9OmTTly5Aiurq4ANGzYkMTERA4dOsS8efMoXLjwXX0cPHiQsWPHsmDBAuDWrjHp6els2bKF8PBwrly5QlhYGP7+/lkegfVXCxcuvG+d2zvt7N27ly+//JJOnToRERFxzzavvfaaEf9zzz3Hvn37Mu2ic6cJEybg6OhIy5YtcXR0JDIykkqVKvH9998TGRmJ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LHnfeDdt2sSHH35o7KKyc+dO9uzZQ5UqVYBbO82cOnXKqN+mTRsOHjzIl19+SWpqKklJSaxcuZIrV66QmJiIra0t3t7epKamMmjQoAdfyL+wWq14eHiQL18+FixYwMGDB3PUrl27dmzYsIEdO3aQlJTE22+//UDj29vb06hRI4YOHUpiYiK//fYbS5YsoUOHDsCtdYqOjiYjIyPbPmrUqMEXX3xB9erVAahevToLFy6kRo0aOZrnX8eoU6cON2/eZOLEiaSkpJCSksLGjRs5evToA81RRERE5EmT60Sc33//PdNxVKVLlyY8PJydO3fSvXt33nrrLbZs2ZLprE8REREREREREREREXl0hg0bhtlsZtmyZUyfPh2z2czMmTON8sjISP7880+6d++eqZ2trS3z58/H19eXggULMnnyZObOnUu1atUAaNu2Ld27d6d69eqUKlWKunXr0r9/f+DW8UkrVqzg448/xs3NjV27drF48WKj7+HDhxMSEpJlvAULFmT16tWUKlUKk8lEhw4deOWVV+jbty8AvXv3Zt++fTg7O9O5c2fc3d1Zu3YtH3/8MR4eHhQrVozZs2cDUKlSJTp16kTFihUpVqwY/v7+ODg45Mm6vv/++wwePBiLxcKGDRuMRKH7qVSpEmPHjqVNmzYUK1bMWM8H8emnn5KWlkbRokVp0aIFQ4cOpUmTJsCtRKmkpCQsFguhoaFZtq9Tpw5JSUnGswgNDSUpKYnatWvnaJ5/HcPBwYFvv/2WzZs3U7hwYQoXLsy77757z2QgERERkX8Tm5u53HvRzs6OBg0a8PLLL9OiRYss/89qUlIS/fr147PPPsuzQP9JCQkJWCwW4uPjcXFxedTh/G0L0RaPj6PO6Pi2x05PfVceS3P1XXkcxerr8lhy09dFRERERETkH5Hdz5Dj4+M5deoUgYGBmEymRxihiIiIiIjkJavVyrFjx/Dz88Nisdyzrn1uOz9x4gR+fn73rGM2m5/YJBwRERERERERERERERERERERkQeR66Op7kzCKVOmDGfOnMnTgEREREREREREREREREREREREnkS5TsS5U1RUFKmpqXkVi4iIiIiIiIiIiIiIiIiIiIjIE+tvJeKIiIiIiIiIiIiIiIiIiIiIiMgtuUrESUtLY8yYMURHRwNQq1YtnJycHkpgIiIiIiIiIiIiIiIiIiIi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nJwM3Po96J2JiLa2thQqVCj7heHWzkK3xcTEUK1aNeM6MDCQ69evc+nSJQoWLJjtMzx37lyW30EAFxeXHP87IiIij4dc74hTqlSpTBmjt3311VeUL18+T4ISEREREREREREREZGHx9bWlps3b2ZZlpaWlmknlJiYGOrVq0eXLl0yJTY8TooUKWIc43LbX6+zY2trS6VKlfjwww956qmnMJlMlChRgg8++IAKFSoYO7J0796djh07cuHCBRITEwkODjbW0M3NjVq1avHll1+yYsUK41gngDZt2vDLL78QHR1N/vz5s13DoKCgTEcEFSpUiJkzZ5KYmGi8bicLwK2dNapVq8YPP/xg/N7Gz8+Ps2fPGrtv3Mnb25sNGzZk6u/48eNG+dmzZ433SUlJxMXF4evre9/1K1SoEPny5eP48eNGv9euXWPHjh131fXx8aF9+/aZYkhJSaFBgwYAdOjQgbVr17J161ZsbGyM3Yhmz57Nrl272LVrF9euXWPhwoX3jSm7tfP29ubMmTNG3ZMnT953jjnh6elJdHS0cX369Okctw0NDeWXX35h165dhIaGEhoayk8//cSePXuoU6cOcP81+N///sfatWv5+uuvcXd3N3bScXNzY/78+cTExDBv3jyGDRtmfM7OnDlDWlpapiPRspNdP3fu2nKnO+/7+PhQq1atu55Hr169KFq0KAEBAZnKrFYr48ePv6uf+83nToMHD8bV1ZWjR4+SmJhIjx497jvH27HGxMRkunf+/Pl7trkzxsKFC3Pq1Cnj+vjx4+TPnx9PT897PsMiRYpk+R28Laf/joiIyOMh14k4o0ePpl+/frz//vtkZGSwatUqevbsybhx4xg9evTDiFFERERERERERERERB7Q5cuXWbNmDcnJyaSkpDBmzBji4+MJCQkBbu3YcvToUQDCw8OZNGkStWrVAiA2Npb69evTsGFD4xfjd0pLS8NqtZKWlkZ6ejpWqzXT7vnJyclYrVYArl+/brzPa6GhoVy/fp3p06eTmprKpEmTuHTpUo7b16hRgy+++ILq1asDUL16dRYuXEiNGjWMOlarFQ8PD/Lly8eCBQs4ePBgpj46derExx9/zPHjx42de6Kjo1m6dClJSUk4Ojri5OSU5W41APXr18/0h9Bdu3Zl4sSJREREALd2FVm5ciUAK1euZOvWrSxdupSxY8fy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7GrVqpGcnPxIxhYREZG75TgRp0WLFgDY2Njcta2dg4MDxYsX1/9RExEREREREREREREREREREZH/rBwn4mRkZADg7+/Pr7/+ioeHx0MLSkRERERERERERERERERERETkSZPjRJzbTp48abxPSUn5x85XFRERERERERERERERERERERF5nNnmtkFGRgZjx47Fx8eHAgUKcOLECQDeeust5s2bl+cBioiIiIiIiIiIiIiIiIiIiIg8CXK9I867777LggULmDhxIj179jTuBwcHM23aNF5++eU8DVBEREQeP3/E2jzqECRLNx91ACIiIiIiIiIiIiIiIv9pud4R54svvmDOnDl07NgROzs74/6zzz7LoUOH8jQ4ERERERERERERERGRnBo4cCBt27Z91GE8cUJCQv7RUw8+//xzvLy8MJlMnD179h8b92F6XOb0Tz9LERERuVuuE3HOnj1LYGDgXfczMjJITU3Nk6BERERERERERERERP4NbNwe7iunqlSpQv78+TGZTJhMJkJCQoyyxYsX4+/vj7OzM56envTs2ZO0tDQADhw4QN26dXFzc8PNzY2GDRsSFRWVqe+PPvoIPz8/TCYTAQEBREREALd+bzBw4EAKFSqEs7Mz7dq1IyUlJccxJyYm0qNHD7y8vHB0dKRkyZJ89tlnmdfXxoYTJ07kfCGeEA8zoeijjz6ievXqme7t2LHjHz3xYNSoUcyePRur1YqPj88/Nu7DlBdzyovn/k8/SxEREblbrhNxSpUqxY8//njX/a+++ory5cvnSVAiIiIiIiIiIiIiIpK3pk2bhtVqxWq1smPHDuN+tWrV2LVrF4mJiURERBAeHs7kyZMBiI2NpUWLFhw5coRz587h4+NDp06djLbLli1jxowZrF69mmvXrvHNN9/g6ekJwIwZM1i7di0///wzZ86c4eLFiwwdOjRHsWZkZPDCCy+wf/9+tm7dSlxcHKNHj+b1119nzpw5ebgqWXvc//D4cY/vfs6fP8+zzz6b63aP87wfdE55JSMjg/T09Ec2voiIiPw/uU7EGT16NP369eP9998nIyODVatW0bNnT8aNG8fo0aMfRowiIiIiIiIiIiIiIvKQ+Pv7U6RIEePa1taW48ePA1C7dm369++Pp6cnTk5ODBgwgH379hl1x40bx6RJk6hQoQK2traULl3aSMRZv3493bt3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TwMUERERERERERERERERkbz1ww8/0L17dzIyMihdujSLFi161CGJiIj8K+Q6Eed///sf5cuXZ8mSJXh7e2Njo6MpRERERERERERERERERJ4kM2bMYMaMGY86DBERkX+dXCfinDp1iq+//prAwMCHEY+IiIiIiIiIiIiIiIiIiIiIyBPJNrcN6tatyx9//PEwYhEREREREREREREREREREREReWLlekecpk2b8uabb/Lnn39SpkwZHBwcMpU3a9Ysz4ITEREREREREREREREREREREXlS5DoRp3fv3gCMGTPmrjIbGxvS09P/flQiIiIiIiIiIiIiIiIiIiIiIk+YXB9NlZGRke1LSTgiIiIiIiIiIiIiIvIkGThwIG3bts3TPm1sbDhx4sQ/Nl5ead26NUOGDMmTvu61BnkpL2POiY8++ojq1av/Y+OJiIjIkyfXO+KIiIiItLa5+ahDkCwc0WMRERERERGRbFSpUoU//vgDOzs7ACpVqsSOHTsAWLx4MSNHjuTy5cs4OjrSokULZs6cib29PQcOHOCNN95g3759AFSuXJk5c+ZQvHhx4FYSxNdff429/a1fNxQpUoRjx44BsGzZMt577z2OHTuGk5MTzZs3Z8aMGeTPn/++8a5fv57evXtz+vTpvF4KecwMHDiQ6Oholi1b9qhDEREREckTud4RR0REREREREREREREcsbmyMN95ca0adOwWq1YrVYjCQegWrVq7Nq1i8TERCIiIggPD2fy5MkAxMbG0qJFC44cOcK5c+fw8fGhU6dOmfp94403jH5vJ+EAxMfHM3r0aM6fP8/+/fvZt28f77zzzgOvpTw+UlNTH3UIj8R/dd4iIiKSO0rEERERERERERERERH5D/P396dIkSLGta2tLcePHwegdu3a9O/fH09PT5ycnBgwYICxO879vPLKK7Rs2RKz2UyRIkVo3749u3fv/tvxfvHFFwQEBODi4kJoaCgnT540yn7++WcqV66Ms7MzhQsX5rPPPgNg6dKlBAUFYTab8fPzM+7nxLhx4/Dz88NsNlO2bFkuXLgAQLdu3fDy8sLZ2ZmaNWty9OjRTO2WLFlC4cKF8fDwYPTo0dn2/91331G6dGmcnZ2pUqUKERERACQlJdG0aVMsFgsWi4VKlSpl2f7SpUvUqlULNzc33NzcaN++PcnJycCtnYWKFSvG4MGDsVgs+Pj4sGrVKqNtREQEFSpUwGw2ExYWZrTLSpUqVXjjjTcIDg7GbDZz/fr1bGP/q+zWf/369UyfPp2VK1diMpkICQkB4OjRo9SpUwdXV1cCAgJYuXJlrmMODw/Hy8vLuK5ZsybPPfecce3l5UV4eDiQ/Wfq8OHD2NvbM2nSJLy8vGjTpk2mMVJTU2natCktWrQgLS2NpUuX4u/vj9lsxsfHh08//TTb9RQREZF/LyXiiIiIiIiIiIiIiIj8B4wYMQI3Nzdq1KhxV0LMpk2bcHZ2xsvLi8jISHr16pVlH1u2bCEwMDDTvTlz5uDq6kr58uX57rvvsh3/xx9/5JlnnjGuQ0NDGTFiRK7msH//fvr27cusWbO4cOECxYsXp127dgBcuXKFxo0b06FDBy5fvszevXspU6YMABaLha+++oqEhAQmT55M3759OXPmzH3HmzVrFrNmzWLlypUkJCQwc+ZM42itmjVrEhkZyfnz5ylSpAh9+vTJ1HbDhg1ERESwZcsWZs6cyddff31X/8ePH6dDhw5MnTqV2NhYmjdvzksvvQTAJ598gtVq5dy5c1y+fJlx48ZlGWNGRgZ9+vTh3Llz7N+/nz/++MPY0Qjg3Llz5MuXj8uXLzNgwAD69etnlLVr147q1atz5coVOnfuzMaNG++5HqtWrWLZsmXExcURHR2dbex/ld36v/DCC/Tv359WrVoZOzWlp6fTpEkTGjRowKVLl5g7dy49evQgOjo6VzEHBweTkZFBREQEaWlpHD9+nJMnT3L9+nUiIiLIyMggODj4np8pgPT0dPbv309UVBSLFi0y7l+/fp0mTZqQP39+Vq5cib29Pf369WPOnDkkJSXxyy+/UKFChXuup4iIiPw7KRFHRERERERERERERORfbtKkSURFRREdHU3dunVp2rQpcXFxRnnDhg1JTEwkMjKSl19+mcKFC9/Vx8GDBxk7dizvvvuucW/AgAEcPXqU8+fP06tXL1566SWOHLn7zKwFCxawa9euTIk3W7duZfz48bmax6JFi2jYsCENGzbEycmJadOmsXfvXk6dOsWKFSsoXrw4b775Jvnz56dIkSLGLjKNGjWibNmy2NnZ0aZNG4KCgti1a9d9x1u4cCFvvvkmlSpVws7Ojho1auDq6gpAjx49cHd3x2w2M2rUKH777bdMbYcPH46bmxvlypWjQ4cOLFmy5K7+582bx/PPP09YWBj29vaMHDmSs2fPcvjwYRwcHIiNjeXQoUM4ODgQFhaWZYze3t60b98eJycn/Pz8+N///pdpbk5OTowZMwYHBwdeeeUVYmJiuHz5MkeOHOHw4cNMnDgRR0dHOnXqxLPPPnvP9ejUqROlS5fGZDLdM/a/ys36b9++nevXrzNy5EgcHByoV68eVatWZfXq1bmOuXLlymzZsoWff/6ZkiVLUqpUKX766Se+//5747Nxr8/UbePHj8dkMmE2mwG4ceMGzz//PAULFmT58uXY2dkBYG9vT3h4OPHx8RQtWlSJOCIiIv9RD5SIc/z4cUaNGkX79u25ePEicGvrxIMHD+ZpcCIiIiIiIiIiIiIi8vfVrl0bi8WC2Wxm7NixmM1mtm3bdle9kiVLEhwcTM+ePTPdj4qKIiwsjBEjRtC0aVPjfvXq1fH09MTR0ZHevXtTrlw51q1bl6ntunXrePPNN1m1ahU+Pj5/ax4xMTEULVrUuLZYLLi6unLmzBnOnDlDsWLFsmy3adMmKlSogMViwdnZmfDwcC5fvpyj8Z566qksy4YNG0axYsUoUKAANWrUyJTYBFC8eHHjfdGiRY0jre505swZVq9ejbOzs/FKTk7m9OnT9O7dm5CQEFq1akWRIkWy3T0oLi6OF198EW9vbwoUKMBbb71FbGysUe7m5mYkijg7OwOQkJBAdHQ0bm5umEwmo+6dR5Rl5c61v1fsf5Wb9b+dMHZnvzt27CAmJibXMdesWZOdO3eydetWqlWrRvXq1dm2bRs7d+6kZs2awL0/U3DrqDY/P79M/R4/fpzdu3fz9ttvY2v7/37VtmTJEtauXYuvry+1atXK8TFuIiIi8u+S60Sc7du3U6ZMGXbv3s2qVau4du0aAH/88Qdvv/12ngcoIiIiIiIiIiIiIiJ5y9bWlps3b2ZZlpaWRlRUlHEdExNDvXr16NKlC4MGDcpVv1u3bqVz5858+eWX1KpV62/HXbhw4UxHSiUkJBAXF0fRokUpVqxYtsdNde/enY4dO3LhwgUSExMJDg7Odv53KlKkCCdOnLjr/nfffcf8+fP59ttvSUhIyHJ3lzvX8MyZM3h7e99Vx8fHh/bt25OYmGi8UlJSaNCgAY6OjkybNo2oqCjWr1/PnDlzWL9+/V19vPvuu1y+fJn9+/dz7do1xo4dm6O5+fr6EhcXh9VqNe6dO3fuvu1yEvtf3Wv9bWxsMtUtWrQoAQEBmfq1Wq2MHz8+1zGHhobyyy+/sGvXLkJDQwkNDeWnn35iz5491KlTB7j3Zyqr+ACeeeYZxowZQ1hYWKa2oaGhbNu2jYsXL1KmTJlsj3gTERGRf7dcJ+IMGzaMd999l82bN5MvXz7jft26dfnll1/yNDgREREREREREREREfl7Ll++zJo1a0hOTiYlJYUxY8YQHx9PSEgIAPPnz+fo0aMAhIeHM2nSJCNpJjY2lvr169OwYcMsj5FasGABCQkJpKamMm/ePH777TdeeOEFAPbs2UOrVq34+OOPjXu5cfPmTaxWq/FKTk6mQ4cObNq0iS1btpCSksKAAQMoX748fn5+tG7dmpMnTzJ9+nSuX7/OuXPnjOOirFYrHh4e5MuXjwULFuR4h//OnTszbdo0fv/9dzIyMti1axdxcXHEx8fj4OCAt7c3iYmJWf6h8nvvvUdsbCwHDhxgyZIltGvX7q463bp1Y926dWzcuJH09HTi4uL4/PPPgVs7Ce3du5f09HRcXV2xs7Mzdra5U2JiIk5OThQsWJAjR44wd+7cHM0tKCiIwMBAhg8fzvXr11m8eDEHDhzIUdv7xf5X91p/Ly8voqOjycjIAKBOnTrcvHmTiRMnkpKSQkpKChs3buTo0aO5jrlq1arExsby66+/UqtWLWrWrMnvv//OpUuXeO655wDu+Zm6l0GDBtG1a1fq1avHxYsXSUlJYfbs2cTGxpIvXz7MZnOWz0tERET+/XKdiPPnn3/SsmXLu+57eXnlaBtHERERERERERERERH559y4cYNRo0bh4eGBt7c369evZ+3atbi7uwMQGRlJzZo1cXJyokGDBoSEhPDBBx8AsGjRIiIiIliwYAEmk8l43TZ9+nR8fHwoWLAgH374IUuWLOGZZ54BYOLEicTHx9OjRw+j3e3kH4CQkBCGDx+ebdzR0dGYzWbj5ezsTPny5Zk+fTo9e/bEy8uLo0ePsnTpUgDc3d355ptvWLBgAR4eHlSqVMlI+Hj//fcZPHgwFouFDRs2UKVKlRytXa9evejRowfNmjXD2dmZPn36cOPGDVq1akWlSpXw9/enVKlSVKtW7a62YWFhlCpVitDQUHr06EHz5s3vqlOyZEm++OILhgwZgqurK0FBQaxduxaAs2fP8uKLL+Ls7EyVKlXo0qULYWFhd/UxZMgQLl68iJubGy+++CJNmjTJ0dwAli5dyvbt2ylYsCCff/45DRs2zHHbe8X+V/da/06dOpGUlITFYiE0NBQHBwe+/fZbNm/eTOHChSlcuDDvvvuukaiTm5jt7OwoX748AQEBODo64ujoSGBgIOXKlcPe3h7gnp+p+xkzZgyNGjWifv36JCUl8eWXX+Ln54erqytbt27lk08+yelyioiIyL+Izc2c7E94B19fX5YvX0716tVxdnbmjz/+ICAggNWrVzNo0CCOHz/+sGL9xyQkJGCxWIiPj8fFxeVRh/O3LeTubRPl0etMrr568k/oqe/KY2muviuPoyB9XR5LR/R1ERERERER+Udk9zPk+Ph4Tp06RWBgYKZkFRERERERebJZrVaOHTuGn58fFovlnnVzvSNOu3btGDp0KOfPn8fGxsbYinHQoEF06dLlgYMWEREREREREREREREREREREXmS5ToRZ/z48ZQsWZKiRYty7do1SpUqRUhICNWrV2fUqFEPI0YRERERERERERERERERERERkceefW4q37x5k/PnzzN9+nRGjx7Nn3/+ybVr1yhfvjwlSpR4WDGKiIiIiIiIiIiIiIiIiIiIiDz2cp2IExgYyMGDBylRogRFixZ9WHGJiIiIiIiIiIiIiIiIiIiIiDxRcnU0la2tLSVKlODKlSsPKx4RERERERERERERERERERERkSdSrhJxAN577z0GDx5MeHj4w4hHREREREREREREREREREREROSJlKujqQC6dOmC1Wrl2WefJV++fDg5OWUqv3r1ap4FJyIiIiIiIiIiIiIiIiIiIiLypMh1Is60adMeQhgiIiIiIiIiIiIiIiIiIiIiIk+2XCfidO3a9WHEISIiIiIiIiIiIiIi8kA6duxIQEAAY8eOzXXbjRs30r9/fw4fPpynMc2aNYvly5fzww8/3LdulSpV6N69O6+++mqexiAiIiIi/zzbv9M4JSWFhISETC8REREREREREREREXm8tG/fHk9PTwoUKEBQUBBLliwxyj766CPs7e0xmUzG6+jRo0Z5x44dKVasGDY2Nqxfvz5Tv5MmTcLX15cCBQpQuHBhRowYkan8q6++olixYjg5OVG/fn0uXbqUo3gPHz6MjY2NEY+fnx9Tp07Ntv6iRYtynITj4+PDpk2bjOuw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m5sbnTp14sUXX2T48OEA+Pv7M3/+fAYMGICXlxfXr1/no48+MtoNCwsjLCzsbxyJu4YMGcLbb7+NxWJh7ty5D1V38uTJuLm5UbhwYdq3b0+LFi3Ily/fI4vNarWyadMmNm7cyMiRIx9ZuyIiIiLy97G785DrS44dOzbH8jFjxvylgJ4ECQkJWK1W4uPjc71X7ZNsIXZ5HYJkoSt/bmlXeYx661l5In2sZ+VJNFmPyxNpqB4XERERERGRv0V2/4YcHx9PdHQ0wcHBmEymPIxQ/i79+vXj2rVrLFmyJK9DEREREZHHKDk5mRMnThAYGIjVas3xXMeHbXzNmjU2n1NTUzl9+jSOjo4UL178H5GIIyIiIiIiIiIiIiIicr+TJ08SExNDrVq1+Omnn1i8eDGzZ8/O67BERERE5Any0Ik4+/bty3QsISGBF198kVatWj2SoERERERERERERERERJ40KSkp9OjRgwsXLlCgQAH69OlDhw4d8josEREREXmCPHQiTlbc3d3573//y/PPP0/Xrl0fRZMiIiIiIiIiIiIiIiJPlLJly3Lq1Km8DkNEREREnmD2j6qh+Ph44uPjH1VzIiIiIiIiIiIiIiIiIiIiIiL/Ux56RZwZM2bYfL5z5w6xsbEsXLiQpk2bPrLARERERERERERERERERERERET+lzx0Is7//d//2Xy2t7fHy8uL7t27Ex4e/sgCExERERERERERERERERERERH5X/LQiTinT59+HHGIiIiIiIiIiIiIiIiIiIiIiPxPs8/rAERERERERERERERERERERERE/gkeOhGnVatWtG7dOld/RERERERERERERERE/le0bduWYcOG5XUYeW7Dhg0UKVIk2/I6deowb968vzEimDlzJjVq1HjossfpUcyXsLAwRo8e/Ygiyr2MsUdERFCyZMlH2v6D5tCTyM7OjlOnTj10vUc1/27fvk2rVq2wWCw0btz4L7eX0aN4pqOionB0fOjNVv61qlatyuzZswEIDw+ne/fueRzRk+mzzz7D29sbk8nE+fPnH3t/c+bM4ZlnnjE+R0REULhwYUwmE9u3b3/s/T/J9Iw/Wg+diGO1Wtm8eTN79uwxju3du5ctW7bg7u6O1Wo1/oiIiIiIiIiIiIiISN7r1KkTXl5euLm5ERISwpIlS4yyX375hVq1auHu7o6/v3+muoMH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EhISkmWZxWKhdOnSbN26FYAff/yRevXqUbJkSX766Sfg7heiderU4dKlS7Rr147w8HCuXr1K06ZNadmyJampqaSkpNCiRQtatWrF1atXGTRoEG3btuXKlSsAdOzYkRo1anDt2jW6du1KRERErmJfu3YtP//8M6dOneL69evMnTvXWMWidOnS7Nmzh2vXrlGvXj3jC8D69etz5MgRkpKSiImJITU1lZ9//hmA77//npIlS2KxWADYs2cPderUIS4ujubNmxsrDN1v//799O3blzlz5nDp0iWKFi1Kx44djfL09HT279/PmTNnbBKk7hk9ejRbtmxh27ZtXL9+nbFjxxplFy5cIF++fMa43fsyMCvffvstPXv25Nq1azz11FOEhYXZxLB7927OnTvHwoULGTp0KL/99htwN8nr+vXrHD9+nF27drF8+XKWLl0K3F3F6cqVK5w9e5bFixezfPnyB94X+H/JNK+//jq///474eHhtG/fnuTkZOOcrVu3cvjwYb777jumTp1qfNE+dOhQ4uPjOXfuHMuWLbPpMyIiAgcHB5KTk0lOTqZEiRIAfPXVV0yfPp0rV66Qnp7OhAkTAKhVq5aRjLJ161b8/f3Ztm0bAD/88AO1atXKFHt4eDhNmjQhISGB06dP06lTJ+BuItrw4cNZvHgxly9fJiQkJFfbCCUkJDBy5Eg2btxIUlISERERFCtWLMc6qampNGvWjMqVK3PhwgWOHTtG3bp1ARg7diw//fQTe/bsISoqil9//dVIJJk6dSo//PADv/32G1u3brX58vp+a9euZcqUKaxbt47o6Ghu3rxps2rWhQsXcHR05OLFi8Z43m/58uUsX76cU6dOERMTw8iRIx84VidPnqRz585MmzaN69ev06JFCyMZ7n6PY24C9OrVC4CzZ8+ycuVKxo0bxzfffEOfPn2YMmUKVatWJTk52biejKxWKytXriQhIYEpU6bQt29fzp07l+m8yZMnU7lyZaZPn05ycrIxhrl9pufMmcOcOXNYtWoVCQkJzJ49G2dnZ5tz3nrrLRYuXGisVgbZv7fS09Np3rw5jRo14sqVK3z88cf06tWLmJgY9u/fz2effcYvv/xCQkICy5cvx8vLK9vj98vpeX/11VcpVqwYgwYN4uDBg0yZMoUFCxbg6OiY7bsvpzmSU18pKSm0b9+eXr16ce3aNcqU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3H0XNGvWjGrVqlGmTBljWyy4+3e4bt26UadOHcqXL0/Tpk3/0viJLbs72a1Zlg1PT0+2bdtG2bJl+eSTT5g5cyb79u1j1apVjBkzhiNHjjyuWP82CQkJWK1W4uPjcXd3z+tw/rKFPHnLkAl05aEePfk79Naz8kT6WM/Kk8iOUnkdgmThDkfzOgQREREREZF/hez+DTk+Pp7o6GiCg4MxmUx5GKE8CiNGjKBAgQIP3Mrn327w4MHExMSwbNmyTGVRUVGULVuWtLS0PIjsr+vXrx/Xrl1jyZIleR1KtjZv3sz06dP56quv8jqUv03VqlXp0aMHr776al6Hksm/8X7I4xUaGsqrr76aq+318krZsmXZsmWLsR2SyD9VcnIyJ06cIDAwEKvVmuO5jn+mcYvFAtzdV69169bY29vz9NNP57jfo4iIiIiIiIiIiIiIyP+K8ePH53UI8jc7efIkMTEx1KpVi59++onFixc/8btBNGjQgAYNGuR1GPL/0/2Qv2rr1q0EBAQQFBTEJ598QlRUFM8//3xeh5WjnLZJE/m3euhEnODgYNauXUurVq2IiIhg4MCBwN09Fv8Jq8eIiIiIiIiIiIiIiIjIv09KSgo9evTgwoULFChQgD59+tChQ4e8DktE/kXOnj1Lhw4dSExMJCAggAULFuDn55fXYYnIQ3roralWrlxJ586dSU9Pp0GDBmzcuBGACRMmsH37dr755pvHEujfSVtTyd9BW1M9gbQ11ZNJW1M9kbQ11ZNJW1OJiIiIiIj8PbQ1lYiIiIjIv8tj3Zqqbdu21KpVi9jYWP7zn/8Yxxs0aECrVq0ePloRERERERERERERERERERERkX+Ah07EAShUqBCFChWyOVa1atVHEpCIiIiIiIiIiIiIiIiIiIiIyP8i+7wOQERERERERERERERERERERETkn0CJOCIiIiIiIiIiIiIiIiIiIiIij4AScUREREREREREREREREREREREHgEl4oiIiIiIiIiIiIiIyP+U8PBwunfvDkBUVBSOjo55HJH8FREREZQsWTKvw+D27du0atUKi8VC48aNM5UnJiZSp04d3Nzc6Nmz50O3HxwczObNmx943oYNGyhSpMhDty8iIiJPBiXiiIiIiIiIiIiIiIj8C4wePZpChQphNpspXbo0cXFxAMycORNHR0dMJpPx5/jx40a9sLAw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Kjz33HN5HY78Q6WkpNCjRw/MZjPt27enT58+dOjQIa/DEhERkUfAMS879/T0xMHBgUuXLtkcv3TpEoUKFcqyTqFChXJ1/r0knOjoaLZs2ZLjFlPOzs44Ozv/yasQEREREREREREREZF/is6dO9O5c+e8DiNHu3fvzusQ5C8qW7Ysp06dyuswRERE5DHI0xVx8uXLR+XKldm8ebNx7Pbt22zevJnq1atnWad69eo25wN89913NuffS8I5fvw4mzZtomDBgo/nAkRERERERERERERERERERERE/n95uiIOwKBBg+jevTtVqlShatWqTJ8+naSkJHr06AFAt27d8Pf3Z8KECQD079+funXrMnXqVJo1a8bSpUvZs2cPH330EXA3Cadt27b88ssvrF+/nvT0dC5evAhAgQIFyJcvX95cqIiIiIiIiIiIiIiIiIiIiIj8o+V5Ik6HDh24cuUKY8aM4eLFi4SGhvLtt9/i4+MDwNmzZ7G3/38L99SoUYPFixczatQoRowYQYkSJVi7di3lypUD4Pz586xbtw6A0NBQm762bt1KvXr1/pbrEhEREREREREREREREREREZF/F7s7d+7cyesgnjQJCQlYrVbi4+Nxd3fP63D+soXY5XUIkoWu6NF74vTWs/JE+ljPypPIjlJ5HYJk4Q5H8zoEERERERGRf4Xs/g05Pj6e6OhogoODMZlMeRihiIiIiIg8SsnJyZw4cYLAwECsVmuO59rnWCoiIiIiIiIiIiIiIiIiIiIiIrmiRBwREREREREREREREfmfY2dnx6lTp/I6DBERERERG0rEERERERERERERERF5TOyY+lj/5NakSZMoU6YMjo6ODB482KZsw4YN2NvbYzKZjD8RERGZ2vjkk0+ws7Nj9uzZxrH09HR69uyJxWKhYMGCjB071qbOypUrKVKkCK6urjRs2JArV67kOuakpCReffVV/Pz8MJlMFC1alP79+5OQkJDrNkRERERE/m5KxBERERERERERERER+Yfz8/Nj1KhRPPvss1mWBwQEkJycbPxp0qSJTXlCQgLvvfcewcHBNsenTJlCZGQkR48eZdu2bcyaNYt169YBcP78eXr06MHUqVO5fPkyVquVl19+OVfx3r59myZNmvDjjz+yZs0aEhMT2bFjBzdv3uTIkSN/YgRERERERP4eSsQREREREREREREREfmH69KlC507d8Zqtf6p+uHh4XTt2hUPDw+b40uWLKF///74+/tTrlw5unbtyueff26UlS9fnnbt2mGxWBg3bhwbNmwgKSnpgf2tXbuWPXv28OWXX1KtWjUcHBwoXLgwH330EdWqVct0/tKlSwkJCcFsNhMYGMinn34KwKlTp3Bzc7NZRWfGjBnUqlULgPfffx8/Pz/MZjNBQUFs2LDhT42PiIiIiMg9SsQREREREREREREREfmXu3jxIgUKFCAwMJChQ4eSlpZmlP32229s2rSJ4cOHZ6p38uRJKlWqZHyuUKECUVFRABw+fJiyZcsaZaVKlcLR0dFY0aZr16507do1y3g2bdpEhQoVKFq0aK7it1qtrFy5koSEBKZMmULfvn05d+4cxYoVo1y5cixdutQ4d/ny5XTo0IGEhARGjhzJxo0bSUpKIiIigmLFiuWqPxERERGR7CgRR0RERERERERERETkX6x8+fLs3r2bK1eusGbNGtauXcu7775rlPft25fx48fj7OycqW5ycjL58+c3PlutVmPFm6SkJNzd3W3ON5vNxuo0CxcuZOHChVnGdO3aNby9vXN9DU2bNqVChQo4ODjQrl07QkJCiIyMBKBTp04sW7YMgJiYGH755Re6dOkCgJ2dHfv37+fmzZuEhIRQqlSpXPcpIiIiIpIVJeKIiIiIiIiIiIiIiPyLFS5cmNDQUBwcHKhUqRLDhw9n3bp1ACxevBhHR0fatGmTZV2TyURcXJzxOT4+HrPZDNgm3dyTVXJOVgoWLMjly5dzfQ0bN26kUqVKWK1WLBYLBw8e5OrVqwB069bNSDRauHAhderUwcPDA3d3d+bPn8+sWbPw9vamadOmnDlzJtd9ioiIiIhkRYk4IiIiIiIiIiIiIiJisLe3586dOwBs3ryZn3/+GU9PTzw9Pdm3bx/Dhg1jwIABABQvXpx9+/YZdX/77TdKliwJQJkyZTh8+LBRFhUVRVpaGqVLl35gDA0bNuTAgQOcO3cuVzH36NGDsLAwLl26RGJiIuXKlTOuwcPDg9q1a7No0SJWrFhBWFiYUa9du3bs3LmTmJgYnJ2dGTJkSK76ExERERHJjhJxRERERERERERERET+4VJTU0lOTiY9PZ20tDSSk5NJS0sDYMOGDZw8eRKAgwcPMnHiRJo2bQrA1KlTOXz4MPv27WPfvn2UK1eOkSNH8vbbbwPQsWNH3n//fS5cuMChQ4dYuHAh3bt3B+5uCXXgwAFWrVpFYmIiI0eO5LnnnjNWzMlJy5YtqVy5Mi1atGD37t2kp6dz/vx5XnvtNXbt2pXp/OTkZDw9PcmXLx+ff/45hw4dsinv0qULH3zwASdPnqRt27bA3W2qli5dSlJSEi4uLri6uuLg4PDnBlhERERE5P/nmNcBiIiIiIiIiIiIiIj8U91hcF6HAMCbb77JtGnTjM8zZsxgxowZvP766+zevZsXX3yRxMREChQoQLt27fjvf/8LQP78+cmfP79Rz8nJCavVahwbOnQox48fp2TJkjg5OfHGG2/wwgsvAODv78/8+fMZMGAAV65coWbNmixdutRo697KNF988UWmeO3t7fn2228ZOnQoLVq0ID4+Hi8vL1q1akWZMmUynf/ee+8xdOhQ+vXrR/PmzalatapNeZs2bejbty/PPvssrq6uAKSnpzNlyhR69eqFvb09lSpV4vPPP/8ToysiIiIi8v/Y3bm3NqMYEhISsFqtxMfH52qv2ifdQuzyOgTJQlf06D1xeutZeSJ9rGflSWRHqbwOQbJwh6N5HYKIiIiIiMi/Qnb/hhwfH090dDTBwcGYTKY8jFCyUqJECaZOnWokComIiIiI5FZycjInTpwgMDAQq9Wa47namkpERERERERERERERP7R1q5dy82bN2nWrFlehyIiIiIi/3DamkpERERERERERERERP6xmjVrRmRkJHPmzMHBwSGvwxERERGRfzgl4oiIiIiIiIiIiIiIyD/W119/ndchiIiIiMi/iLamEhERERERERERERERERERERF5BJSIIyIiIiIiIiIiIiIiIiIiIiLyCCgRR0RERERERERERERERERERETkEVAijoiIiIiIiIiIiIiIiIiIiIjII6BEHBERERERERERERERkf+fnZ0dp06dyuswshUcHMzmzZsBGDx4MB06dMizWKpWrcrs2bMful5YWBijR48GYMOGDRQpUuSRxRQVFYWjo+Mjay/jeD9K/v7+bNy4Mcuyffv2ERISgtls5vPPP3/kfWfnQWOX8b49bo9r3B+38PBwunfv/rf3+2efxb/Do37GRUT+FygRR0RERERERERERETkH27SpEmUKVMGR0dHBg8ebFO2bNkyKlasiMViwdvbm969e3Pr1i2j/PDhw1Sq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fnxehyAi8q+hralERERERERERERERERERERERB4BJeKIiIiIiIiIiIiIiIiIiIiIiDwCSsQREREREREREREREREREREREXkElIgjIiIiIiIiIiIiIiIiIiIiIvIIKBFHREREREREREREREREREREROQRUCKOiIiIiIiIiIiIiIiIiIiIiMgjoEQcEREREREREREREREREREREZFHQIk4IiIiIiIiIiIiIiLyr7BhwwaKFCmSbXnVqlWZPXv23xhRZv7+/mzcuPEvt/Oga80Lbdu2ZdiwYXkdhvxN7OzsOHXq1CNvd+bMmdSoUeNP1Q0PD6d79+4AREVF4ejomO25GefrnDlzeOaZZ/5UnyIi8u+jRBwRERERERERERERkX+4SZMmUaZMGRwdHRk8eLBN2YYNG7C3t8dkMhl/IiIijPLBgwcTHByMvb09M2fOtKk7c+ZMypQpg5ubG35+fowYMcKmfPv27YSEhODi4sJTTz3FsWPHch2znZ0d/v7+3L592zh27Ngx7O3tqVq16sNc/r/Ck5BEJP9s/4Q5NmHCBD7//POHrtenTx+2bNnyGCLK2uDBg+nQocPf1p+IiDxa2ad5ioiIiIiIiIiIiIjIX2JX7/G2f+f73J3n5+fHqFGjWLx4cZblAQEBnD17Nsuy4OBgJk2axPjx4zOVpaSkMGPGDGrXrs2ZM2d49tlnCQwM5JVXXuHmzZu0b9+e4cOH88orr/Dmm2/SuXNn9uzZk9vLw8nJic2bN9OoUSMAPvvssz+9yktqauqfqvdvl5qaipOTU16HkaUnOTZ5NHSPRUTkf5FWxBERERERERERERER+Yfr0qULnTt3xmq1PnTdV199ldatW+Pq6pqpbOjQoTRs2BBnZ2dKlixJs2bN+OmnnwD45ptvyJcvHwMHDsRkMjFu3DgOHjzI0aNHc913q1atWLBggfF5xYoVtG3b1uacF198EW9vbywWC7Vq1eL48eNGmZ2dHRMmTMDf35/q1asbxwcMGIC7uztFixZl7dq12fY/ceJEAgMD8fDwoE2bNiQkJGR53tatWylXrpyxMtC4ceOMssGDB9OiRQuaNm2K2WymQoUKNmOwcuVKihQpgtVqZciQITmOx969e6lSpQoWi4WyZcvy3XffAXfvw969exkwYAAmk4nw8HCjztChQ7Farfj7+7N69Wrj+OXLl3nhhRco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f426YWFhmM1mIiMjGTx4MGazmYiICADGjRtHYmIiTZs2xWQyYTKZCAsLA+5u1bJixQo++OADPDw8iIyMtPnCPzw8nDp16uQq/lq1alG6dOlMx9u0aUOVKlUICgqiTJkyVK9e/YFt+fn5YWdnh5eXF+Hh4Xz++ec22/jc8/LLL9OtWzeaNWuGm5sbdevW5bfffsuyzfHjxzNv3jwsFgvTpk2jYcOGubouPz8/5s2bx6BBg/D29sbV1TXbFVJcXFxYvXo1K1asoECBAkyePJkVK1YYsffv35+lS5disVgYMWLEA/teuXIl58+fJygoCE9PT/r375/rrZBKlSrFokWLGDNmDO7u7jRo0MDY2mf06NE8//zzeHl5cfXq1Wy3uGrUqBETJ06kd+/eWCwW2rZtS3x8PFWqVKFLly5UrlyZIkWKEBQUhJOTU7axNGzYkPHjx9O9e3fc3NyoWLEiO3bsAKBixYrMmDGD3r174+3tzfHjx1m6dKlRd8aMGbz77rt4eXkZyT8A6enpTJkyBR8fH7y8vIiNjWXSpEm5GpucvPfeewQHB1OqVClq1KhB69at6du3b67qZhfrw8ppvB7k/jnWp08frFYrhQoVombNmjRq1ChX7TxoLudGlSpV+PnnnylQoACffvopy5YtM+bJtGnTWLlyJR4eHuzdu5eKFSvmqs2lS5eybds2ChQowGeffUbjxo1zHU9G8+bNIyYmBk9PT4YNG0bz5s1xdnbO8txFixYRGBhI/vz52bp1Kx9++CEAXbp0ISkpCavVSv369f/SmD3Mu0xERB4NuzsPs77kv0RCQgJWq5X4+Hjc3d3zOpy/bCG5X45S/j5d0aP3xOmtZ+WJ9LGelSeRHQ/3P9fk73GHo3kdgoiIiIiIyL9Cdv+GHB8fT3R0NMHBwZhMpjyMUEREnhTPP/885cqVY8KECXkdioiI/AXJycmcOHGCwMBArFZrjudqRRwRERERERERERERERERkUdg79697Nu3j/T0dL788ku+++472rRpk9dhiYjI38gxrwMQEREREREREREREREREfkn+P333+nRowdXr17Fx8eHyZMnU6VKlbwOS0RE/kZKxBEREREREREREREREREReQQaNWpETExMXochIiJ5SFtTiYiIiIiIiIiIiIiIiIiIiIg8AkrEERERERERERERERERERERERF5BJSIIyIiIiIiIiIiIiIiIiIiIiLyCCgRR0RERERERERERERERERERETkEVAijoiIiIiIiIiIiIiIiIiIiIjII6BEHBERERERERERERERERERERGRR0CJOCIiIiIiIiIiIiIi/3CdOnXCy8sLNzc3QkJCWLJkiVGWnJzMiy++iKenJx4eHvTr1y/X7QYEBLBy5Urj8/vvv4+dnR1Hjx41jr366qt06NDhT8U9c+ZMatSo8afqioiIiIjkBce8DkBERERERERERERE5J/Kju2Ptf071MnVecOHD2f+/Pm4urqyfft2mjVrxjPPPIOPjw8jR47k8OHDHDlyhD/++IOmTZvyf//3fwwcOPCB7VatWpXt27fTtm1bACIjIylatChbt26lVKlSAOzcuZMePXr8+YvMQ6mpqTg5OT3xbYqIiIjIk0Mr4oiIiIiIiIiIiIiI/MOFhobi6uoKgJ2dHampqZw5cwaA7777jgEDBuDl5YW/vz+vvfYaixYtylW7tWrV4qeffjI+//zzz/Tt25cdO3YAd1fbOXToEA0aNGDr1q2UK1cONzc3/Pz8GDdunFFvy5YtlC5dGjc3N7y9vRk7dixHjhxhyJAh7N69G5PJRHBwMACXL1/mhRdeoECBAgQEBDBr1iyjnffffx8/Pz/MZjNBQUFs2LAhy7j37t1LlSpVsFgslC1blu+++84o8/f3Z/To0RQrVoyiRYtmqvvbb79RuXJl3NzcKFiwIH369DHK5s2bR4kSJTCbzYSEhHDgwAFjzCdMmIC/vz/Vq1cHoHHjxhQoUACr1UrTpk25fPkyAFFRUTg6OjJp0iQKFiyIr68vs2fPfuhrFBEREZG8oUQcEREREREREREREZF/ga5du+Li4kKdOnV4+umneeqpp7I8786dOxw/ftz4XL9+fUaMGJHlufXr1+e3334jJSWF8+fPY29vT4cOHfj5558B2L59O1arlbJly5IvXz7mzp1LfHw8y5YtY+LEifz4448ADBw4kP79+3Pjxg0OHTpEw4YNKV26NFOmTKFq1aokJydz4sQJANq3b4+vry/nz59n/fr1jB07ll27dpGQkMDIkSPZuHEjSUlJREREUKxYsUwxp6Sk0KJFC1q1asXVq1cZNGgQbdu25cqVK8Y569atY/v27Rw7dixT/fDwcJo0aUJCQgKnT5+mU6dOwN2EpiFDhvDhhx+SkJDA8uXLsVqtRr3Nmzdz8OBBtm3bBkCrVq04c+YMp06d4saNG4SHhxvnpqens3v3bs6dO8fChQsZOnQov/32W66vUURERETyjhJxRERERERERERERET+BRYuXMiNGzf48ssvadiwIfb2d78iaNCgAdOmTSM2Npbo6Gg++OADbt68adTbunUr48ePz7LN//znP7i6uhIZGcnmzZupUqUKhQsX5tatW1y+fJlt27ZRpUoVAGrWrEnNmjVxcHCgdu3a1KtXz0hKcXJy4sSJE1y+fBkvLy9q1KiRZX/nzp1j165dzJgxA1dXV0JDQ2nVqhXLly8H7q48s3//fm7evElISIixPVZG27Zt486dO4wcORJnZ2d69uxJUFAQa9asMc7p27cvAQEBmM3mTPWdnJyIjo7m3LlzuLu7U7duXeDuajhdu3alUaNGODg4EBoaSmBgoFEvPDwcDw8Po81XX30Vd3d3ChYsyMCBA9m1a5dNP+PGjcNkMtGwYUMaNmzI4sWLc32NIiIiIpJ3lIgjIiIiIiIiIiIiIvIv4ejoyAsvvMCWLVtYsWIFAOPHj6ds2bKEhoZSs2ZNXnjhBXx8fHLVnr29PVWqVGHbtm3s2LGDmjVrAlClShU2b97Mjz/+aBzbu3cvNWvWxMPDA4vFQkREBNeuXQNg/vz5HD58mBIlSlC5cmU2b96cZX+nTp3ijz/+wNPTE4vFgsViYdGiRVy8eBF3d3fmz5/PrFmz8Pb2pmnTpsb2WxnFxMTg6+trcywgIIALFy4YnzMm0Nxv+vTppKamUqlSJUqXLs2SJUsAuHDhAkFBQdnWy7jNVWpqKj179sTPzw83Nze6du3K9evXbc4vXry4TXyxsbG5vkYRERERyTtKxBERERERERERERER+ZdJS0sztl0ym818/vnnXLp0iZiYGAoWLEhoaGiu26pZsyY//vgju3bton79+gDUqFGDbdu2sW/fPuPYa6+9xlNPPUVMTAyJiYk0adKEO3fuAFChQgU2bNjA1atXadu2Ld26dQPurv6SUZEiRTCZTMTHx5OYmEhiYiJJSUl88cUXALRr146dO3cSExODs7MzQ4YMyRTvvaSWjM6fP4+fn5/x+f5+MwoMDGT58uVcuXKF0aNH06NHD5KTk/H3988xKSZjm3PnziUyMpLIyEhu3LjBwoULM51/8uRJ4+eMyUO5uUYRERERyTtKxBERERERERERERER+Qe7du0ac+fOJT4+ntTUVD799FN27drFM888A9xdZSY6Opr09HQ2b97MtGnTGDNmTK7br1u3Lj///DMXL16kfPnyANSrV48VK1Zw+/ZtqlWrBkBSUhL58+fH1dWViIgItm7darQxZ84cLl26hJOTExaLxdg2q1ChQsTGxpKamgpAUFAQoaGhDBgwgMTERFJTU4mMjOSXX34hJiaGpUuXkpSUhIuLC66urjg4OGQZL8CECROM8Th58iStWrXK1fV+9tlnnDlzBnt7ezw8PIC7STYvvfQSCxYsYPPmzdy+fZsDBw4QHR2dZRuJiYk4Ozvj6elJbGwsU6dOzXTOmDFjSE5OZsuWLWzatIlOnTrl+hpFREREJO8oEUdERERERERERERE5B/M3t6e+fPnExAQQIECBZgyZQoff/wx1atXB+Dw4cM8/fTTmM1mXn31VaZNm0bVqlWN+nXq1CE8PDzb9mvUqMEff/xBhQoVjGOVKlUiNTWV0NBQHB0dgbtbYM2bNw+LxcK0adNo2LChcf4333xDqVKlMJvNzJ49m/nz5wPQrFkzAgICKFiwICEhIQCsXLmS8+fPExQUhKenJ/379yc5OZn09HSmTJmCj48PXl5exMbGMmnSpEzxuri4sHr1alasWEGBAgWYPHkyK1aswMvLK1fjuWvXLp566ilMJhP9+vVj/vz5uLq60qhRIyZOnEjv3r2xWCy0bduW+Pj4LNvo06cPVquVQoUKUbNmTRo1amRT7uDgQOXKlQkICKBz585MnDiRChUq5PoaRURERCTv2N25t+6jGBISErBarcTHx+Pu7p7X4fxlC8l+CU3JO13Ro/fE6a1n5Yn0sZ6VJ5EdpfI6BMnCHY7mdQgiIiIiIiL/Ctn9G3J8fDzR0dEEBwdjMpnyMEL5XxYVFUXZsmVJS0vL61BERERE5P+XnJzMiRMnCAwMxGq15niuVsQREREREREREREREREREREREXkElIgjIiIiIiIiIiIiIiIiIiIiIvIIKBFHRERERERERERERETkCVGyZEltSyUiIiLyP0yJOCIiIiIiIiIiIiIiIiIiIiIij4AScUREREREREREREREREREREREHgEl4oiIiIiIiIiIiIiIiIiIiIiIPAJKxBEREREREREREREREREREREReQSUiCMiIiIiIiIiIiIiIiIiIiIi8ggoEUdEREREREREREREROQhDB48mA4dOuR1GADMnDmTGjVqGJ9NJhNnzpx5rH2eO3eOihUrYjabefvttwkLC2P06NF/qi07OztOnTr1iCOEOXPm8MwzzzyStu4fYxEREZGcKBFHREREREREREREROQxccXusf7JrUmTJlGmTBkcHR0ZPHiwTdmyZcuoWLEiFosFb29vevfuza1bt4zyw4cPU6lSJVxcXChTpgw7d+40ykaPHk3x4sUxm80ULVqUGTNm2LS9cuVKihQpgqurKw0bNuTKlSu5ijcqKgo7Ozuef/55m+NBQUFs2LDhgfX/zYkTycnJFC1a9LH2MWPGDAoXLkxSUhJvv/02X3zxBe+8885j7fNh9enThy1btvypuv7+/mzcuPERR/TvERUVhaOjY67P/zc/ryIi8s+kRBwRERERERERERERkX84Pz8/Ro0axbPPPpupLD4+njFjxnDx4kX279/Pvn37ePvtt43yjh07UrduXX7//XdefPFF2rZtS2pqKnB3NZNFixYRHx/PsmXL+O9//8t3330HwPnz5+nRowdTp07l8uXLWK1WXn755VzHbG9vz44dO9i/f/9fuvY/Iy0t7W/v83/J2bNnKVWqVF6HYbg3H0VERESeBErEERERERERERERERH5h+vSpQudO3fGarVmKnv55Zdp1aoVZrMZPz8/OnXqxK5duwA4cOAAJ06cYPz48ZhMJoYNG8adO3eIiIgAYOzYsVSvXh1HR0eqVatGzZo1iYyMBGDJkiWUL1+edu3aYbFYGDduHBs2bCApKSlXMdvZ2dGjRw/GjBmTZfnWrVspV64cbm5u+Pn5MW7cOACOHDnCkCFD2L17NyaTieDgYCDzKidt27Zl2LBhwN2tpp5//nmaNGmCyWRi/fr1LF26lJCQEMxmM4GBgXz66ae5ijs1NZXu3buTP39+goKCGDlyJEWKFDHKX3zxRby9vbFYLNSqVYvjx48DkJ6eTo8ePfDw8MBisVCuXDliY2Nz1ef943Zvq6cLFy5Qp04d3NzcqFatGl27djW21Lp/FZL7VzE5fvw49erVI3/+/BQrVoxVq1YBEBYWxqpVq5g+fTomk4kff/zRZiwBPvvs/2vvzsOqqvY/jn8O84wiiIiIQ45ZoiJOKDhiOYRlWqkllePVUssyS3NCckxLyzJN84qWmkOlZqI4XGfNIXPMsUTUVFAQ48D5/dHj+XUCEfHYAXu/nuc8t7322mt9z+bsCw9+WGuOHnroIXl7e6t58+b67bffzOemTp2qUqVKydfXV5MmTcrzvXz//feqVq2aPD09VbduXf34448W7zMuLk6BgYFq0KBBjmv/+v5uvbfJkyfLz89Pvr6+mjZtWq5zdu7cWUlJSWrfvr3c3Nw0Y8YMSVJ2dra6du0qDw8PVaxY0fw5z+te5WbBggUqW7asvL299frrr1t8LvP6zC1cuFDly5eXu7u7AgMD9dlnn0n6MzQ2cOBAlS5dWiVKlFDPnj3NwaSsrCwNHDhQpUqVkp+fn2JiYnTjxo0c9+ev9+jWdfn5LN76fHl6eqp48eLmFayioqKUlZUlNzc3ubm56dixY3f9vF64cEHt27eXj4+PypQpc9uvFwAAhRFBHAAAAAAAAAAAYLZp0yZVq1ZNkrRv3z6VK1dOrq6u5vNVqlTRgQMHclx38+ZN7dmzR4888oikP7e0evjhh83nq1atKgcHBx06dEiS1K1bN3Xr1i3PWoYOHaoNGzbkuiqOk5OTPvnkE/NqPO+99562bNmiatWqaeLEiQoLC1N6erqOHz+er/e9Zs0a9e7dW9euXVOrVq3k7e2txYsXKzU1VRMnTtR//vMfnT179o7jjB8/Xjt27NDBgweVmJior7/+2uJ8eHi4Dh06pPPnz6t06dLq27evJGnZsmXauXOnTpw4oStXruiTTz6Rm5tbvmq/nZdfflm+vr66cOGCYmNjtXTp0nxdl5WVpbZt26ply5a6ePGiZs6cqZdfflm//vqr5s+fr+joaA0YMEDp6ek5thTasGGD3nzzTcXHx+vChQuqXLmyXnrpJUnSrl279Pbbb2vBggU6ffq0RZjl75KTk/X000/rrbfe0qVLl/TYY48pOjraYvWbhIQE/fTTT9qwYUO+3tNPP/2ks2fPaubMmXrjjTd09erVHP2+/PJLBQQEaMWKFUpPT1fv3r3NtTdp0kRXr15V27ZtNWDAgDveq7/77bff9PLLL+v9999XcnKyMjIylJycbD6f12euX79++vTTT5WWlqZt27apdu3akv4Mw23dulW7du3SkSNHtG/fPk2cOFHSn6Gnb775Rlu2bNFPP/2kffv26Z133rnjvcrvZzE2NlbBwcG6fPmyzp07p1dffVXSnwEqe3t7paenKz09XZUqVbrr57VTp04KCAjQb7/9pm+//VajRo0yBwQBACjsCOIAAAAAAAAAAABJ0ty5c/W///1PQ4cOlSRdv35dHh4eFn08PT117dq1HNf27t1bZcqUUYcOHSRJaWlp8vLysujj7u6u1NRUSdK8efM0b968POu5tYrHu+++m+Nco0aN1KhRI9nb26tx48aKjIzMVyDjdsLCwtShQwfZ29vLzc1Njz32mB599FHZ29vr6aefVuXKlfMMjtyyfPly9evXT4GBgQoODlavXr0szr/88ssqUaKE3N3d9c4772jXrl2SJEdHR6WlpWn//v2ys7NTo0aNcl3BKL+MRqPWrFmjuLg4ubm5qUWLFmrRokW+rt2wYYNu3rypt99+W46OjmrevLnq1auXryDPp59+qhdffFFhYWFydnZWXFyc1q5dq8zMTC1cuFCtW7dW06ZN5e7urtGjR992nK+//lpVqlTR888/L2dnZ7377ru6ceOGNm7caO7z1ltvqXjx4nJ3d8/X+4qLi5OLi4s6dOggFxcXcygsPypUqKCePXvKwcFBL7zwgg4fPizp7u7V119/rUceeURPPfWUXFxcNG7cOBkMBvP5vD5zDg4O+umnn5SSkqKgoCBzEGfevHkaM2aMSpcuLV9fXw0cONA896JFi/TKK6+oQoUK8vf31zvvvJMjGJab/H4WHR0dlZycrF9++UWurq55fr7u5nk9e/astm/frg8++ECurq4KCQlRhw4d9NVXX92xdgAACgOCOAAAAAAAAAAAQN9++60GDhyor7/+WoGBgZIkDw8PXb9+3aLftWvX5OnpadE2dOhQbd68WStWrJCd3Z//9PDX0M0tuYVz7mTo0KFav3699u/fb9G+e/duNWrUyLx9zvfff6/ff//9rsb+q9KlS1scr1mzRrVr15a3t7c8PT31008/6dKlS3cc5+LFixZbUf31vyVpyJAhKlu2rDw8PNSoUSPzqizt27dXTEyMevXqpZIlS6pXr166efNmgd9PUlKSsrKyVLFiRXNbmTJl8nXtqVOn9Ouvv8rT09P82rhxY762yvr11181ZcoU83VBQUFycHDQ2bNnlZSUZFFDhQoV8hznr33t7e0VEBBgsdJMuXLl8vV+bl3v7+9vPnZ1dc01UHY7vr6+5v92d3c3b/F0N/cqKSnJ4nPm7u6uYsWKmY/z+swtWLBAy5cvV5kyZdS4cWPzNl1JSUnq0KGDee4ePXqYn4Pk5GSLe1ShQgVduHDhju81v5/Fd999V2XKlFHTpk1Vvnx5TZky5bZj3s3zeuLECf3xxx/y9fU1v6///ve/On/+/B1rBwCgMCCIAwAAAAAAAADAv9z69evVrVs3/fe//1Xjxo3N7TVr1tTp06fNoQNJOnLkiHn7KUl67733NG/ePP3www8qWbKkub169er6+eefLa4zGo3mba/yq2TJkurevbuGDx9u0d63b1/VrVtXv/76q65du6aoqCiZTCZJslhl5BZXV1elp6ebj+8USIiJiVGXLl2UnJysa9euqUaNGubx8+Ln52cRFjlz5oz5v1etWqXZs2fru+++U2pqao4VdoYPH67Dhw9r+/btWr9+vT799NM7znc7AQEBsre31y+//GJu+2tdHh4eysjIMB+fO3fO/N9BQUGqUKGCrl27Zn6lp6dr7Nix+Zr3zTfftLg2IyNDFSpUyBGkOXHixG3HKVOmjEXf7OzsHEGe3L7O/7S7uVcBAQEWAZ309HSL7bHy+sw1bdpUiYmJunDhgh555BHzSkv+/v5avXq1xfy3vub+/v46deqUefyTJ0+an9G8vv5S/j6LxYsX1+zZs5WUlKRZs2ZpyJAhOnToUK5fl7t5XsuWLSs3NzelpKSY31NaWprmz5+f8wsAAEAhRBAHAAAAAAAAAIAHXGZmptLT05WVlSWj0aj09HQZjUZJ0o4dO/TUU09p+vTpevzxxy2ue/TRR1WxYkUNGzZMN27c0KRJk2QwGBQVFSVJmj59uiZPnqzvv/8+x+okzz77rPbv368lS5bo2rVrevvtt/X444/nexuhv3r77beVkJBgsSJNWlqaihUrJldXV33//fdav369+VypUqWUlJSkzMxMc1v16tW1cOFCGY1GLV++XDt27MhzzvT0dPn6+srJyUlz587VwYMH81XrE088oWnTpum3337T2bNnLQIMKSkpcnR0lL+/v65du2ax5damTZu0ceNGZWZmytvbWw4ODnJwcJAkdezYUR07dszX/Lc4ODioZcuWevvtt5Wenq5169YpISHBfL5OnTr6+eeftX//fl29elVxcXHmc5GRkTKZTBo/frwyMjKUkZGh77//XseOHbvjvC+//LI+++wzbdu2TdKfgaf4+HhJ0jPPPKPVq1dr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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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6+urPn36ZOj76y2w7kfv3r3t1undu7du3bqV6a3wpNu3dfr666/VpEkTVa5c+YFqadOmjd1OSnf+fOvUqZOcnJzs2m/dumX7PK9bt07Xrl1Thw4d7F4vR0dHVa1aNcPrlZmoqChZLBY9++yzdmtUqlRJHh4eGdYoXLiwwsPD77kuAAAAAAAAgP8mbk0FAABwn7y8vCRJCQkJ2Rp/+PBhWa1WFStWLNP+P9/yRJLy58+f4QfXFotFwcHBGdqk27eykqSLFy/q2rVrmjt3rubOnZvpsS5cuGD3vECBAnbPvb297da8X1euXNGtW7dsz93c3Ox+uP6gxowZo2bNmik0NFRlypRRgwYN1LlzZ9ttmWJiYmS1WvXmm2/qzTffzHSNCxcuKCgoKNO+EydOKDAwMEO46s5tp06cOPHAtf/1Gku3r/Ofr/Hhw4e1b98+262R/uqvr5tRChcubPc8u+/VwoULq3///vrf//6nzz77TLVq1VLTpk3VqVOnDK93ds4/MxUrVpS7u7u2bt2q8PBwbd26VaNHj5a/v7+mT5+umzdv2gI5NWvWtM27cuWKRo8ercWLF2e4bnFxcXc95v1cgzuCgoLuedule3nQa3TkyBEVL17cLqjysBwcHFSkSBG7ttDQUEnS8ePHM51z8eJFxcfHq0yZMg983L9egzvvo3v9uXcnnFenTp1M173z5/XdHD58WHFxcfLz88u0/6/vo79+bgAAAAAAAADgzwjiAAAA3CcvLy8FBgZq//792Rqfnp4uk8mkVatWydHRMUO/h4eH3fPMxtyt3Wq12o4j3d5BIiIiItOxd4Ir2V3zfrVs2VKbN2+2PY+IiNAnn3xy3+ukpaXZPa9du7aOHDmib775RmvXrtWHH36od999V7Nnz1b37t1t5/76669nuVNFSEjIfddhhOxc4/T0dD377LN64403Mh17JwhhtD/vHnOnjuy+V9955x117drV9pq8+uqrmjBhgn788Uflz5/fNu5B32POzs6qWrWqtmzZopiYGJ07d061atVSvnz5lJKSop07d2rr1q0qUaKEXYCpbdu22r59uwYOHKgKFSrIw8ND6enpatCgge19cjf3+3n96zV8EEZ/Dv8sq91o/voZy2kP++feggUL5O/vn2FcdkJK6enp8vPz02effZZp/18Dcka85gAAAAAAAAAeXwRxAAAAHkDjxo01d+5c7dixQ9WrV7/r2KJFi8pqtapw4cKPLFAh3f5hsaenp9LS0lSvXj3D1r2fW9y88847drt4BAYG3nW8t7e3rl27Ztd269YtnT17NsPYPHnyKDIyUpGRkbp+/bpq166tUaNGqXv37rYdPJydnR/o3AsWLKj169crISHBblecQ4cO2fofpaJFi+r69ev3rP1hbjeU3Tru571atmxZlS1bVsOHD9f27dtVo0YNzZ49W2PHjjWknlq1amnixIlav369fH19VaJECZlMJpUuXVpbt27V1q1b1bhxY9v4q1evasOGDRo9erRGjBhha8/slmZZXcu/6/NqhKJFi2rnzp1KSUnJsFPPHXd2ufrr5yyrXZ7S09N19OhRu3P/448/JEmFChXKdE7evHnl5eWV7XCike7c0svPz++BPz9FixbV+vXrVaNGDUI2AAAAAAAAAB6aQ04XAAAA8G/0xhtvyGw2q3v37jp//nyG/iNHjui9996TdHuXGEdHR40ePTrDDhdWq1WXL182pCZHR0e1atVKy5Yty/QH4hcvXnygdc1mc7Zu6SNJlSpVUr169WyPUqVK3XV80aJFtWXLFru2uXPnZtit46/XyMPDQyEhIUpOTpZ0+4fwTz/9tObMmZNpiOde5/7cc88pLS1NM2bMsGt/9913ZTKZ1LBhw7vOf1ht27bVjh07tGbNmgx9165dU2pqqiTJ3d3d1vYoZPe9Gh8fb6vpjrJly8rBwcH2mhihVq1aSk5O1tSpU1WzZk1bkKJWrVpasGCBzpw5o1q1atnG39k95a+1T506NcPaZrNZUsZr+Xd9Xo3QqlUrXbp0KcP7Vvr/a1CwYEE5Ojpm+Jy9//77Wa775/WsVqtmzJghZ2dn1a1bN9PxDg4Oat68ub799lvt3r07y1oehfDwcHl5eWn8+PFKSUnJ0P/nz35Wr3nbtm2Vlpamt956K8P81NTUR/Z5AwAAAAAAAPB4YkccAACAB1C0aFEtWrRI7dq1U8mSJdWlSxeVKVNGt27d0vbt2xUVFaWuXbvaxo4dO1ZDhgzR8ePH1bx5c3l6eurYsWP66quv9NJLL+n11183pK63335bGzduVNWqVfXiiy+qVKlSunLlivbu3av169frypUr971mpUqVtGTJEvXv319VqlSRh4eHmjRpYki93bt3V8+ePdWqVSs9++yz+vXXX7VmzRr5+vrajStVqpSefvppVapUSXny5NHu3bu1dOlS9e7d2zZm5syZqlmzpsqWLasXX3xRRYoU0fnz57Vjxw6dPn1av/76a5Z1NGnSRM8884yGDRum48ePq3z58lq7dq2++eYb9e3b17brxqMycOBALV++XI0bN1bXrl1VqVIlJSYm6rffftPSpUt1/Phx+fr6ys3NTaVKldKSJUsUGhqqPHnyqEyZMipTpowhdWT3vfr999+rd+/eatOmjUJDQ5WamqoFCxbYwmBGqV69upycnBQdHa2XXnrJ1l67dm3NmjVLkuyCOF5eXqpdu7YmTZqklJQUBQUFae3atTp27FiGtStVqiRJGjZsmNq3by9nZ2c1adLkb/28PqwuXbro008/Vf/+/bVr1y7VqlVLiYmJWr9+vV555RU1a9ZMFotFbdq00fTp02UymVS0aFGtWLFCFy5cyHRNV1dXrV69WhEREapatapWrVql7777TkOHDs1wi6Y/Gz9+vNauXaunnnpKL730kkqWLKmzZ88qKipKP/zwg3Lnzv1IroGXl5dmzZqlzp07q2LFimrfvr3y5s2rkydP6rvvvlONGjVswaI7r/mrr76q8PBwOTo6qn379nrqqafUo0cPTZgwQb/88ovq168vZ2dnHT58WFFRUXrvvffUunXrR1I/AAAAAAAAgMcPQRwAAIAH1LRpU+3bt0+TJ0/WN998o1mzZsnFxUXlypXTO++8oxdffNE2dvDgwQoNDdW7776r0aNHS5KCg4NVv359NW3a1LCa8uXLp127dmnMmDH68ssv9f7778vHx0elS5fWxIkTH2jNV155Rb/88os+/vhjvfvuuypYsKBhQZwXX3xRx44d00cffaTVq1erVq1aWrduXYadN1599VUtX75ca9euVXJysgoWLKixY8dq4MCBtjGlSpXS7t27NXr0aH3yySe6fPmy/Pz89MQTT9jdpigzDg4OWr58uUaMGKElS5bo448/VqFChTR58mQNGDDAkHO9G3d3d23evFnjx49XVFSUPv30U3l5eSk0NFSjR4+WxWKxjf3www/Vp08f9evXT7du3dLIkSMNC+JI2Xuvli9fXuHh4fr2228VGxsrd3d3lS9fXqtWrVK1atUMq8VsNuuJJ57QTz/9pJo1a9ra74RvgoODM9w2bNGiRerTp49mzpwpq9Wq+vXra9WqVRlu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gAEI4gAAAAAAAAAAAAAAAAAGIIgDAAAAAAAAAAAAAAAAGIAgDgAAAAAAAAAAAAAAAGAAgjgAAAAAAAAAAAAAAACAAQjiAAAAAAAAAAAAAAAAAAYgiAMAAAAAAAAAAAAAAAAYgCAOAAAAAAAAAAAAAAAAYACCOAAAAAAAAAAAAAAAAIABCOIAAAAAAAAAAAAAAAAABiCIAwAAAAAAAAAAAAAAABiAIA4AAAAAAAAAAAAAAABgAII4AAAAAAAAAAAAAAAAgAEI4gAAAAAAAAAAAAAAAAAGIIgDAAAAAAAAAAAAAAAAGIAgDgAAAAAAAAAAAAAAAGAAgjgAAAAAAAAAAAAAAACAAQjiAAAAAAAAAAAAAAAAAAYgiAMAAAAAAAAAAAAAAAAYgCAOAAAAAAAAAAAAAAAAYACCOAAAAAAAAAAAAAAAAIABCOIAAAAAAAAAAAAAAAAABiCIAwAAAAAAAAAAAAAAABiAIA4AAAAAAAAAAAAAAABgAII4AAAAAAAAAAAAAAAAgAEI4gAAAAAAAAAAAAAAAAAGIIgDAAAAAAAAAAAAAAAAGIAgDgAAAAAAAAAAAAAAAGAAgjgAAAAAAAAAAAAAAACAAQjiAAAAAAAAAAAAAAAAAAYgiAMAAAAAAAAAAAAAAAAYgCAOAAAAAAAAAAAAAAAAYACCOAAAAAAAAAAAAAAAAIABCOIAAAAAAAAAAAAAAAAABiCIAwAAAAAAAAAAAAAAABiAIA4AAAAAAAAAAAAAAABgAII4AAAAAAAAAAAAAAAAgAEI4gAAAAAAAAAAAAAAAAAGIIgDAAAAAAAAAAAAAAAAGIAgDgAAAAAAAAAAAAAAAGAAgjgAAAAAAAAAAAAAAACAAQjiAAAAAAAAAAAAAAAAAAYgiAMAAAAAAAAAAAAAAAAYgCAOAAAAAAAAAAAAAAAAYACCOAAAAAAAAAAAAAAAAIABCOIAAAAAAAAAAAAAAAAABiCIAwAAAAAAAAAAAAAAABiAIA4AAAAAAAAAAAAAAABgAII4AAAAAAAAAAAAAAAAgAEI4gAAAAAAAAAAAAAAAAAGIIgDAAAAAAAAAAAAAAAAGIAgDgAAAAAAAAAAAAAAAGAAgjgAAAAAAAAAAAAAAACAAQjiAAAAAAAAAAAAAAAAAAYgiAMAAAAAAAAAAAAAAAAYgCAOAAAAAAAAAAAAAAAAYACCOAAA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7u5q166dTpw4oWrVqsnDw0Ph4eG6ceOGXc2SlJaWpsjISHl7e8vT01NlypTR2bNns2yXpKCgIK1du1aSlJSUpC5dusjX11cBAQEaOHCg0tLSbNepWbNmatiwocxms8qVK2fb4T8xMVFNmjSRxWKRxWJR5cqVjXnhAAAA8K+TY0GcXLlyqVKlSnb3XU1PT9eGDRtUvXr1TOdUr149w31a161bZxtfuHBh+fv7242Jj4/Xzp07bWOSkpIkSQ4O9qfu4OBg9w+Pv3JxcZGXl5fdAwAAAAAAAACAf7qbN2+qbdu26t69uy5fvqxSpUrpl19+yXL8mTNn5OTkpHPnzmnChAl6+eWXdfXqVR0+fFg7d+7UF198ocWLF0uS3nzzTX3//ffavHmzrl69qjFjxkiS1qxZI0dHRyUlJSkpKUnFihXLcJy2bdsqICBAsbGxWrFihcaMGaOdO3fa+lesWKHly5crOjpaGzZsUKNGjTRz5kydPn1ax44d0wcffJBhza+//lo//fSTjh49qqtXr2rOnDlyd3fPsv2vBg8erEOHDungwYPasmWLoqKi9P7779v616xZo169eunatWsKCQnRsGHDJEnvv/++kpKSdObMGV26dEnjxo3L3osDAACAx06OBXEkqX///vrggw80f/58HTx4UC+//LISExMVGRkpSerSpYuGDBliG//aa69p9erVeuedd3To0CGNGjVKu3fvVu/evSVJJpNJffv21dixY7V8+XL99ttv6tKliwIDA9W8eXNJt8M83t7eioiI0K+//qo//vhDAwcO1LFjx9SoUaO//RoAAAAAAAAAAPAobdy4UY6OjnrjjTfk4uKiIUOGyNfXN8vxzs7OGj9+vFxcXOTm5qYvvvhC06ZNk8ViUaFChdStWzctXbpUkvT5559rzJgxKlasmJycnNSgQYNs1XTq1Cnt3LlT06ZNk5ubmypUqKAWLVroiy++sI3p1KmTihYtquDgYFWtWlVVqlRRpUqVlDt3btWrV0+//vprprUnJiZq3759cnBwUI0aNWSxWLJs/6uvvvpKI0aMUN68eVWsWDH17t3brqYnn3xSjRs3lrOzszp06KADBw7Yjnv16lUdOnRIzs7OCg8Pz9Z1AAAAwOPHKScP3q5dO128eFEjRozQuXPnVKFCBa1evVr58uWTJJ08edJu55onn3xSixYt0vDh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JScn33edAAAAyIggDgAAAAAAAAAA/zGpqan6448/7NrmzZunp59+2i54smHDBv3000/y9fWVr6+vfv75Z73xxhvq27dvpuumpKToyJEjkqRSpUrp999/t/VFR0crNTVVJUuWvGd99erV0759++yCNX8WFBSkWrVqKSEhwfa4ceOGevTocc+1/ypfvnxavXq13Vp3zuFhBAQEKFeuXBmu88Py8fHR/Pnz1aFDB/3888+SpAIFCsjd3V1xcXG2c0hMTNRnn32W5TojRozQoUOHtHPnTm3cuFFz5841tE4AAID/KoI4AAAAAAAAAAA8xi5fvqw5c+YoLi5OKSkp+vjjj7Vz507VqVPHNiYtLU3Lli1TRESE3dx33nlHv//+u37++Wf9/PPPKlOmjIYNG6ZRo0ZJkmbMmKHY2Filp6dr27Zt+uijj/TMM89Ikjp06KB9+/Zp2bJlSkhI0LBhw/Tcc8/JbDbfs+bmzZurUqVKatasmXbt2qW0tDTFxsbqlVde0c6dO9WmTRsdOHBACxcuVEpKihITE7Vs2TK7nWyyq2PHjho6dKhOnDih9PR0RUdHa9WqVdmamydPHsXExGTa5+joqJYtW+rVV1/V+fPnlZycrHXr1t13fZlp166dxo8fr+eee06HDh1S4cKFVaFCBfXt21cJCQlKSUnRtm3btHfv3kznb926VVu2bFFKSoosFoucnJzk5ORkSG0AAAD/dQRxAAAAAAAAAAB4jDk4OGjevHnKnz+/8uTJoylTpuiDDz5Q9erVbWNWrlyp5OTkDLegyp07t4KDg20PZ2dnWSwW5c6dW5K0c+dOlStXTh4eHurQoYO6du2qQYMGSbq9a828efPUt29f5c2bV1evXrXbdaVjx47q2LFjljWvXr1aYWFhatasmTw9PfXkk08qV65cKlWqlHx8fPTNN99o5syZ8vX1VYECBTRnzpwHuj6jR49WWFiYatSoIS8vLzVp0kTHjx/P1tyBAweqQ4cO8vT01Nq1azP0z549W/7+/ipdurT8/Pw0e/bsB6oxM927d9fAgQNVv359nThxQkuXLlVsbKwKFy4sX19fvfbaa1neRuvq1avq3r27LBaLihcvrrCwML344ouG1QYAAPBfZrJardacLuLfKD4+XhaLRXFxcdm6n+0/mUklcroEZMKqQzldAgAAAAAAAIBMZPX94bi4OJ04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qlWrUqlSpSz7W7p0KadPn8bf358BAwbQrl07/P398y3egwcPkpSUxPXr1ylUqBDt2rV7oM7ly5dJT0+naNGixrGQkBAuX74MwNWrVylUqJBRFhQUlOVYZ86c4c8//8TT0xOz2YzZbObLL7/k8uXLuLi4EBERwdy5c/H29qZJkyacO3eOmJgYbt26RdmyZY02EydO5MqVK/l2DkRERETk+aJEHBERERERERERERGR/zHp6emcOHEiyzIbGxtu374NwM6dO1m7di2enp54enpy+fJlXnvtNWbOnAlAWFgYO3bsID4+nkOHDnHt2jWLLa/yi6urKx07duSHH354oMzX1xdbW1tOnTplHDt//jy+vr4AeHp6cu7cOaPs4sWLWY4RHByMyWQiISGBpKQkkpKSSE5O5quvvgKgffv2/Pzzz0RFRWFvb8+wYcPw9fWlQIECnD592mhz48YNdu3alY+zFxEREZHniRJxRERERERERERERET+xq5du8aCBQtISEggLS2NhQsXsnv3burXrw/A6tWriY6OBiAyMpJPPvmEli1bAndWvDl8+DD79+9n//79eHl58fHHH9O7d28A9u3bR0JCAqmpqcybN4/9+/czcOBAY+zU1FRjq6pbt27letuq+yUnJ7NixQpCQ0MfKLO1taVJkyaMHDmSpKQk9uzZw9KlS+ncuTMALVq0YNKkSUay0N2tpu5XuHBhypcvz+DBg0lKSiItLY3IyEj27dtHVFQUy5YtIzk5GQcHBxwdHbGxscHGxoa2bdvSv39/rl69SkZGBvv372fnzp2PNE8RERERef4pEUdERERERERERERE5G/M2tqaiIgIAgMDKViwINOnT+fTTz+levXqAGzZsoUyZcrg6OhIeHg4b7/9Nr169QLurCYTFBRkPGxsbIytmwDWr19PSEgIHh4efPnll3z77bc4OjoaYxctWhQnJyf+/PNPXnjhBZycnIyyUaNGUbt27RxjL126NCaTCT8/P2JjY/nyyy+zrPfZZ5+Rnp5OUFAQrVq1YuTIkTRv3hy4s72Wu7s7wcHBdOzYkfbt22c73qpVq7h06RKFCxfG09OTQYMGkZKSQkZGBtOnT8fHxwcvLy9iYmKYOnUqAAsWLMDV1ZUyZcrg5uZG165duXbt2sMui4iIiIj8TVndvru+pORJYmIirq6uJCQk4OLi8rTDeSxWlHjaIUgWbnPsaYcgIiIiIiIiIiIiWcju98MJCQmcP3+eokWLYjKZnmKEIiIiIiKSn1JSUjh16hQhISG4urrmWFcr4oiIiIiIiIiIiIiIiIiIiIiI5IM8JeKkpaVRpEgRjh49+qTiERERERERERERERERERERERF5LuUpEcfOzo6bN28+qVhERERERERERERERERERERERJ5bed6aasCAAXz44Yekp6c/iXhERERERERERERERERERERERJ5Ltnlt8Ouvv7Jt2za2bt1K2bJlcXJysihfs2ZNvgUnIiIiIiIiIiIiIiIiIiIiIvK8yHMijpubG23btn0SsYiIiIiIiIiIiIiIiIiIiIiIPLfynIizcOHCJxGHiIiIiIiIiIiIiIiIiIiIiMhzzfpRGqWnp/P999+zYMECkpKSAIiOjubGjRv5GpyIiIiIiIiIiIiIiMhfJSAggK1bt+apTbt27RgxYsQTiujxPcqcREREROTR5TkR5/z585QtW5ZXX32VAQMGEBcXB8CHH37IsGHD8j1AERERERERERERERF5PJ06dcLLywtnZ2fCwsJYunTpA3XS0tIICwsjODjY4riVlRWOjo6YTCZMJhOjRo0yyhYtWsQLL7yAvb097dq1e6DPVatWERwcjKOjIw0aNDC+U3iYatWqMXXqVOP5N998g5WVFRs2bDCOffjhh1SvXj1X/YmIiIiI/FXyvDXVoEGDqFSpEgcPHsTDw8M43rp1a3r37p2vwYmIiIiIiIiIiIiIPM8WY/VE++/K7VzVGzlyJBERETg6OrJr1y6aNWtG/fr18fHxMepMmTIFs9nMzZs3H2j/+++/Exoa+sBxDw8PhgwZQmRkJPHx8RZlly5dokePHkRERPDKK6/QvXt3+vTpw9q1ax8ab7Vq1YiMjDSe79q1i0KFCrFz506aN28OQGRkJNWqVcvV/J8HaWlp2NnZPe0wREREROQx5XlFnB9++IGxY8dSoEABi+OFChXi0qVL+RaYiIiIiIiIiIiIiIjkj/Lly+Po6AjcWeEmLS2Nc+fOGeVRUVEsWrQoz1sstWjRgu7du+Pl5fVA2dKlSylbtizt27fHbDYzceJENm7cSHJy8kP7rVu3Lr/++qvx/KeffmLgwIH8/PPPxrFff/2VunXrAndWxwkMDMTd3Z1WrVpx7do1o96///1vQkNDcXFxoV69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ZUbf8+bNw8nJiWnTprFu3TqcnJx49913AQgICCAiIoLBgwfj5eVFfHw8n3zyidE2PDyc8PDwbOMODAw0YnJ3dwfAw8MDT09PgoKCjG2lWrduzaBBg2jevDkhISHY2dkxf/58ACpUqMDs2bPp3bs33t7enDx50ojf39+fzz//nHfeeQdvb28cHR3x8fHJMhY7Ozs2bNjAzz//jK+vL2FhYfzwww8PPff9+vXD1dUVX19fatasScOGDXOs/49//IM6depQs2ZN3N3d+cc//vHQebRt25ZKlSpRuHBhSpUqZbFNl4iIiIj89axu52b9yHtYW1sTGxuLl5eXxfETJ05QqVKlB/Z7/btKTEzE1dWVhISEXO9n+6yyosTTDkGycJtjTzsEERERERERERERyUJ2vx9OSEjg/PnzFC1aFJPJ9BQjFBERERGR/JSSksKpU6cICQnB1dU1x7q2ue20TZs2wJ39Srt37469vb1RlpGRwaFDh6hRo8YjhiwiIiIiIiIiIiIiIiIiIiIi8nzLdSLO3Yye27dvYzabcXR0NMoKFChAtWrV6N27d/5HKCIiIiIiIiIiIiIiIiIiIiLyHMh1Is7ChQsBKFSoEMOGDcPJyemJBSUiIiIiIiIiIiIiIiIiIiIi8ryxzmuD9957D3t7e77//nsWLFhAUlISANHR0dy4cSPfAxQREREREREREREREREREREReR7kekWcu86fP88rr7zChQsXuHXrFg0bNsRsNvPhhx9y69Yt5s+f/yTiFBERERERERERERERERERERF5puV5RZxBgwZRqVIl4uPjcXR0NI63bt2abdu25TmAf/3rXxQqVAgHBweqVq3KL7/8kmP9lStXUqJECRwcHChbtiwbN260KL99+zbjx4/Hz88PR0dHGjRowMmTJx/o59tvv6Vq1ao4Ojri7u5Oq1at8hy7iIiIiIiIiIiIiIiIiIiIiMhdeU7E+eGHHxg7diwFChSwOF6oUCEuXbqUp76WL1/OO++8w3vvvce+fft44YUXaNy4MVeuXMmy/o8//kinTp3o2bMn+/fvp1WrVrRq1YrDhw8bdaZOncrs2bOZP38+u3fvxsnJicaNG3Pz5k2jzurVq+natSs9evTg4MGDREZG0rlz5zzFLiIiIiIiIiIiIiIiIiIiIiJyrzwn4mRmZpKRkfHA8aioKMxmc576mjlzJr1796ZHjx6UKlWK+fPnYzKZiIiIyLL+Rx99xCuvvMLw4cMpWbIkEyZMoGLFisydOxe4sxrOrFmzGDt2LK+++irlypXj3//+N9HR0axbtw6A9PR0Bg0axLRp0+jXrx9hYWGUKlWK1157LW8nQkRERERERERERERERERERETkHnlOxGnUqBGzZs0ynltZWXHjxg3ee+89mjZtmut+/vzzT/bu3UuDBg3+Lxhraxo0aMBPP/2UZZuffvrJoj5A48aNjfpnz57l8uXLFnVcXV2pWrWqUWffvn1cunQJa2trKlSogJ+fH02aNLFYVUdERERERERERERERJ4f4eHhjBs37pHabtmyheLFi+dzRDB//nzq16+fq7pVqlRh3rx5+R6DiIiIiPz18pyIM2PGDCIjIylVqhQ3b96kc+fOxrZUH374Ya77uXr1KhkZGfj4+Fgc9/Hx4fLly1m2uXz5co717/43pzpnzpwB4B//+Adjx45lw4YNuLu7U7duXf74449s47116xaJiYkWDxERERERERERERGR50GnTp3w8vLC2dmZsLAwli5dapTNmTMHW1tbTCaT8Th58qRRHh4eTnBwMFZWVmzcuNGi32nTphEYGIizszN+fn6MHj3aonzVqlUEBwfj6OhIgwYNiIuLy1W8x48fx8rKyognJCSEmTNnZlv/q6++YsKECbnqOyAggK1btxrPGzduzPHjx3PVNi/69evH9u3b871fEREREXm22ea1QWBgIAcPHmTZsmUcOnSIGzdu0LNnT8LDw3F0dHwSMearzMxMAMaMGUPbtm0BWLhwIYGBgaxcuZK+fftm2W7y5Mn885///MviFBEREREREREREZHnn9XwJ9v/7Wm5qzdy5EgiIiJwdHRk165dNGvWjPr16xt/2FqlShV+/PHHLNuWL1+e8PDwLH9/3rJlS3r06IGnpyfnz5/n5Zdf5oUXXqBDhw5cunSJHj16EBERwSuvvEL37t3p06cPa9euzVXMNjY2pKSkkJmZyYoVKwgPD6dOnTq8+OKLFvXS09Oxtc3z1x0iIiIiIk9EnlfEAbC1taVLly5MnTqVjz/+mF69euU5CcfT0xMbGxtiY2MtjsfGxuLr65tlG19f3xzr3/1vTnX8/PwAKFWqlFFub29PaGgoFy5cyDbeUaNGkZCQYDwuXryYm2mKiIiIiIiIiIiIiDx1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gqura4792OZmsIoVK7Jt2zbc3d2pUKFCjnuj3b8spIiIiIiIiIiIiIiIyJNw/fp1Fi9ezNy5c592KBZefvllXn755acy9t3tKPJzlZ28mjRp0lMb+3/Nrl27nnYIIvL/y+02aCLyZISFhXHz5s3H6mPhwoUsXLjwsWPJVSLOq6++aizXlJelCkVERERERERERERERJ6EJUuW0LNnT1q0aEHTpk2fdjjPhGbNmhEZGcn8+fOxsbF52uGIiIiI/E/S1lSPSFtTyZOmralERERERERERESeTdqaSkRERETkf0u+b02VlT179nD06FEASpUqxYsvvvioXYmIiIiIiIiIiIiIiIiIiIiIPPfynIgTFRVFp06diIyMxM3NDbizB2uNGjVYtmwZgYGB+R2jiIiIiIiIiIiIiIiIiIiIiMgzzzqvDXr16kVaWhpHjx7ljz/+4I8//uDo0aNkZmbSq1evJxGjiIiIiIiIiIiIiIiIiIiIiMgzL88r4uzcuZMff/yR4sWLG8eKFy/OnDlzeOmll/I1OBERERERERERERERERERERGR50WeV8QJCgoiLS3tgeMZGRn4+/vnS1AiIiIiIiIiIiIiIiIiIiIiIs+bPCfiTJs2jbfeeos9e/YYx/bs2cOgQYOYPn16vgYnIiIiIiIiIiIiIiLyvChatCjbtm17auMPHTqUDh065EtfVlZWnDlzJl/6EhEREflfkqtEHHd3dwoWLEjBggXp0aMHBw4coGrVqtjb22Nvb0/VqlXZt28fb7zxxpOOV0RERERERERERERE8qhTp054eXnh7OxMWFgYS5cufaBOWloaYWFhBAcHWxy/fv06HTp0wNXVFbPZTJs2bYyydu3aUaBAAUwmEyaTiaJFixplUVFR1K9fn4IFC2JlZfVIcZ85cwYbGxt69+79SO3/aqdOneLll19+2mGIiIiIyFNkm5tKs2bNesJhiIiIiIiIiIiIiIj8/Vh99WT7vx2eu3ojR44kIiICR0dHdu3aRbNmzahfvz4+Pj5GnSlTpmA2m7l586ZF206dOhEUFMS5c+cwmUzs3bvXonzw4MFMnTr1gTGtra155ZVXGDBgAO3atcv75ICFCxfi7OzM+vXrmTdvHra2ufpaQ56gtLQ07OzsnnYYIiIiIs+sXK2I061bt1w/RERERERERERERETk2VK+fHkcHR2BO1sOpaWlce7cOaM8KiqKRYsWMWLECIt2+/bt47fffuPjjz/G3d0de3t7atSokasx/f39GTFiBFWqVHnkuJcvX87o0aO5desW33zzjXF848aNBAcHM3ToUFxdXQkICGDbtm1Mnz4db29vvL29WblypVE/ICCA8ePHExoaipOTE4MHD+bQoUOUKVMGs9lMePj/ZTRlZGQwZMgQfH198fLyokePHqSmpgIwZ84cqlWrRpcuXXB2dqZIkSJERkZajLN161YAduzYQZkyZXB2dsbf35+JEyfmet6jRo3C398fZ2dnypcvz+7duy3G+Mc//kFoaChms/mB72Zu3rxJkyZNcHJyoly5chw7dgy4k1A1dOhQo15mZiYBAQF8//33AHz00Uf4+vri6enJjBkzLPoMCAhg3LhxhIaGUqhQIQA+/PBDAgMDcXd3p1WrVly7ds3i2tzr3m2u3n33XYvVmfbt25fr8yIiIiLyPMhVIs69Lly4kONDRERERERERERERESePV27dsXBwYHatWtTrVo1KleubJQNHjyYYcOGYTabLdr8+OOPFC5cmHbt2uHm5sYLL7xgJG7c9cknn+Dm5kaFChXYtGlTnuLp2rVrtuW7d+/m7Nmz9OjRg1deeYXFixdblEdHR2M2m7l69SqdOnWiS5cuHD9+nAsXLjBu3DgGDRpkUX/z5s38/PPPREZGMm/ePPr378/69es5cuQIW7ZsYcOGDcCdhJRvvvmGH3/8kcOHD3Pw4EHGjh1r9LNnzx5q167N9evXad68OYMHD84y/gIFCrBgwQISEhJYvnw5U6ZM4ccff8zVuSlZsiR79uzh2rVr1K1b94Fkmw0bNhAZGcnBgwf55ptvjNgBtmzZwoABA7h+/TpFixZlzJgxwJ0/ul6zZo1Rb/v27QA0aNCAPXv2MGbMGJYuXcr58+ctkovu+vrrr9m1axcnTpxg3bp1TJ8+na+//prz58+TmppK3759HzqvAwcOsGjRIvbt20diYiIrVqzAy8srV+dERERE5HmR50ScQoUKUbhw4WwfIiIiIiIiIiIiIiLy7Fm8eDE3btxg/fr1NGjQAGvrO18RbNu2jTNnzmSZSHHp0iX++9//UrduXWJjY3nrrbdo3749V69eBeCdd97h5MmTXL58mb59+/Laa69x4sSJXMdzf3LNvRYtWkSNGjXw9vamU6dObNmyhaSk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8j9l0qRJT2Xc1NRUFixYQLdu3Z7K+CIiIiL/C/KcOVO3bt0nEIaIiIiIiIiIiIiIiIg8KT/99BP169encuXK9OnT52mHIyIiIvK3ledEnMmTJ+Pj48Mbb7xhcTwiIoK4uDhGjhyZb8GJiIiIiIiIiIiIiIjI46tevTqpqalPOwwRERGRvz3rvDZYsGABJUqUeOB46dKlmT9/fr4EJSIiIiIiIiIiIiIiIiIiIiLyvMlzIs7ly5fx8/N74LiXlxcxMTH5EpSIiIiIiIiIiIiIiIiIiIiIyPMmz4k4QUFBREZGPnA8MjISf3//fAlKREREREREREREREREREREROR5Y5vXBr1792bw4MGkpaVRv359ALZt28aIESMYOnRovgcoIiIiIiIiIiIiIiIiIiIiIvI8yHMizvDhw7l27Rr9+/fnzz//BMDBwYGRI0cyatSofA9QREREREREREREREREREREROR5kOetqaysrPjwww+Ji4vj559/5uDBg/zxxx+MHz/+ScQnIiIiIiIiIiIiIiLyTJkzZw41atR4auO3a9eOESNGPLXxRURERCR7eU7EucvZ2ZnKlStTpkwZ7O3t8zMmEREREREREREREZG/B6tXnuwjl6ZOnUqpUqWwtbVl6NChFmUbN27E2toak8lkPLZs2WKU161bl4IFC2I2mylXrhzbtm0zyjZv3kzlypUxmUxUqVLlgXF37dpFWFgYDg4OVK5cmRMnTuT+1FlZUb58eYtjL730EnPmzHlo240bNxIcHJzrsURERERE8ssjJ+KIiIiIiIiIiIiIiMjzwd/fn7Fjx/LKK1kn7wQGBpKSkmI8GjdubJTNmDGD2NhYkpKSePfdd2nfvj2ZmZkAODk50bNnzweSewBSU1N57bXXePPNN/njjz+oXr06nTt3zlPcZ8+eZe3atXlqkx/S0tL+8jFFRERE5O9BiTgiIiIiIiIiIiIiIn9zXbp0oXPnzri6uua57YsvvoidnR2ZmZnY2NgQHx9PfHw8cGeFmn79+hESEvJAu02bNlGgQAGGDBmCyWRi4sSJHD58mGPHjuV67D59+jBhwoQsy44cOUKlSpUwm814e3szcOBAANLT02nTpg1RUVHGCj8AVapUYd68eUb7oUOH0qFDB+DOVlNVq1alc+fOmM1m5syZw44dOyhTpgzOzs74+/szceLEXMX822+/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W6sBwJOAQhwAAAAAAAAAAJ5waWlpSklJUUZGhtLT05WSkqL09HRJ0o4dO/TSSy9p+vTpeuGFF8z61ahRQ+XLl9fIkSN148YNTZw4UQaDQS1atJAkZWRkKCUlRWlpacrMzFRKSoppBZPnn39eqampmjJlim7cuKHhw4fL398/z+1f7kf37t01btw4HThwQNKtH/IuXbpU0q3imfj4+DxX++jcubPWrl2rn3/+WampqRo0aJBq1apltmqDdGslmpdeekn9+/dXXFycMjIytHv3bm3atEnSrSKltWvXKj4+XgcPHrzntkv3KzQ0VIcOHVJkZKTS0tI0evRo2dramm0Tk5Nvv/1WBw8eVGZmpkqUKCGDwZDj6ha3VyVycnLSb7/9dt9bbTVu3Fjp6emaOHGibt68qU8++STX7Y3Kly+vatWq6d1331VqaqrWrFmjdevWqXPnznnOsWXLFm3evFlpaWlydnaWlZWVrKysssXdz3sYFhamlJQUrV+/Xj///LNeffVVSdmLBBISEmRtbS0PDw8lJSXpww8/vK/7cbcePXpo1apV+vHHH5WRkaFr165p3rx5kqQXX3xR+/fvV1RUlFJTUzV06NAcCyju1yuvvKKFCxdq9+7dSkxM1NChQ9WqVSvT6jIPK7d7d6ecPmv+/v767rvvdOPGDW3btk3ff/99geSTl7yeBU9PT7m5uWnOnDlKS0vTiBEj9Ndff0m6VWC0aNEiJScny9bWVnZ2drmuBvMolC1bVgEBARo4cKCSkpKUlpamX375Rbt27coxPikpSRYWFvLw8FBaWlqeRUMzZ87UxYsXZW1tLaPRaHouDh8+LIPBYFYgeVtwcLAcHBz03nvvKSUlRfHx8dq6dWuuc1SrVk2LFi1Senq6VqxYoR07dpjOtW/fXtOmTdOZM2cUGxurWbNmmc517NhR+/fv19dff620tDQlJydr6dKlZqtyAcCTgEIcAAAAAAAAAAAelT1Zj/Z1n95//305ODjo22+/1eeffy4HBwfNmDFDkjRu3DglJCTozTfflL29vezt7dWoUSNT32+++Ubr169XiRIl9N///ldRUVGytraWJP34449ycHBQ//799fvvv8vBwUGvvfaapFsrJkRFRWn69OkqUaKEfvnlF0VGRprGHTZsmNk896t3797q1q2bWrVqJUdHRwUHBysmJkaSVKtWLTVr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sQG+n9Q+vp/UTuZK7WOu1D7mSe1jntQ+5knts63Mk23p82EAAKC0yroizocffphZs2alT58+xWMVFRXp06dPpk2btsHnTJs2rcb4JOnbt29x/Lx587Jo0aIaYyorK9OtW7fimGnTpqVx48bFEk6S9OnTJxUVFXn66ac3eN8PPvggK1eurPEFAAAAAAAAAACfqlvOmy9btiwff/xxWrRoUeN4ixYtMmfOhn8yYtGiRRscv2jRouL5T4991pjddtutxvm6deumSZMmxTHrGjFiRC677LLNfGVbl23lp1BgSzNXYDNYfQU2yfcT2Fxdyx0AtgLmCWyKP3sBAADw91bWFXG2JhdffHFWrFhR/HrjjTfKHQkAAAAAAAAAgFqkrCviNGvWLHXq1MnixYtrHF+8eHFatmy5wee0bNnyM8d/+t/FixenVatWNcZ06tSpOGbJkiU1rrFmzZq89dZbG71v/fr1U79+/eLj6upPfuLfFlUAAABbwoflDsA6Vsbff2sf86S2MU9g+/Hp58Kffk4MAADwqbIWcerVq5cDDzwwU6ZMSf/+/ZMka9euzZQpUzJs2LANPqd79+6ZMmVKzj333OKx3//+9+nevXuSZM8990zLli0zZcqUYvFm5cqVefrpp3PmmWcWr7F8+fLMmjUrBx54YJLk0Ucfzdq1a9OtW7fNyv7OO+8kSdq0afN5XzYAAABsdSozsdwRoNYzT2D7884776SysrLcMQAAgFqkrEWcJDnvvPPyve99L126dMlBBx2U66+/PqtXr87QoUOTJCeddFJ23333jBgxIknyL//yL+nVq1euu+66HH300bnjjjsyc+bM3HTTTUmSQqGQc889Nz/72c+y9957Z88998xPfvKTtG7dulj22XfffdOvX7+cdtppGT16dD766KMMGzYsgwYNSuvWrTcrd+vWrfPGG29kl112SaFQKP0bw+e2cuXKtGnTJm+88UYaNWpU7jhQK5knsHnMFdg08wQ2zTyBzWOuwKaZJ7VPdXV13nnnnc3+PBkAANh+lL2IU1VVlaVLl+anP/1pFi1alE6dOmXy5Mlp0aJFkmTBggWpqKgoju/Ro0fGjx+ff/u3f8uPf/zj7L333rn33nvToUOH4pgf/ehHWb16dU4//fQsX748PXv2zOTJk9OgQYPimHHjxmXYsGHp3bt3KioqMnDgwIwaNWqzc1dUVOQrX/lKCd4BSq1Ro0Y+kIBNME9g85grsGnmCWyaeQKbx1yBTTNPahcr4QAAABtSqLaJLduIlStXprKyMitWrPCBBGyEeQKbx1yBTTNPYNPME9g85gpsmnkCAACw9ajY9BAAAAAAAAAAAGBTFHHYZtSvXz+XXHJJ6tevX+4oUGuZJ7B5zBXYNPMENs08gc1jrsCmmScAAABbD1tTAQAAAAAAAABACVgRBwAAAAAAAAAASkARBwAAAAAAAAAASkARBwAAAAAAAAAASkARh61OdXV1uSMAAAAAAAAAAKynbrkDwOdVv379zJ49O/vuu2+5owCwlVi2bFluu+22TJs2LYsWLUqStGzZMj169MjJJ5+c5s2blzkhAAAAAAAA24JCteVFqKXOO++8DR4fOXJkhgwZkqZNmyZJfvGLX/w9YwGwlZkxY0b69u2bnXbaKX369EmLFi2SJIsXL86UKVPy7rvv5n/+53/SpUuXMieF8nvvvfcya9asNGnSJPvtt1+Nc++//34mTpyYk046qUzpoPZZvXp1Jk6cmL/85S9p1apVTjjhhOLfUwBgU1566aU89dRT6d69e9q3b585c+Zk5MiR+eCDDzJkyJAceeSR5Y4IAADAF6CIQ61VUVGRjh07pnHjxjWOT506NV26dMnOO++cQqGQRx99tDwBYSvxxhtv5JJLLsltt91W7ihQFgcffHA6duyY0aNHp1Ao1DhXXV2dM844I88//3ymTZtWpoRQO7z88sv5xje+kQULFqRQKKRnz56544470qpVqySflNdat26djz/+uMxJoXz222+//PGPf0yTJk3yxhtv5LDDDsvbb7+dffbZJ6+++mrq1q2bp556KnvuuWe5o0JZPfPMM9l1112Lc+H222/P6NGjs2DBgrRt2zbDhg3LoEGDypwSymvy5Mk57rjj0rBhw7z77ru55557ctJJJ6Vjx45Zu3Ztpk6dmocfflgZBwAAYCukiEOtddVVV+Wmm27KLbfcUuNDhx122CGzZ89e76e0gQ2bPXt2Onfu7B9O2W7tuOOOefbZZ9O+ffsNnp8zZ04OOOCAvPfee3/nZFC7DBgwIB999FHGjh2b5cuX59xzz82f//znPP7449ljjz0UcSCf/LDAokWLsttuu2XIkCGZN29eJk2alMrKyqxatSoDBgxI8+bNM378+HJHhbLq2LFjrrvuuvTp0ye33HJLzjnnnJx22mnZd999M3fu3Nxyyy0ZOXJkTjnllHJHhbLp0aNHjjzyyPzsZz/LHXfckbPOOitnnnlmrrzyyiTJxRdfnFmzZuXhhx8uc1IAAAA+r7rlDgAbc9FFF6V3794ZMmRIjjnmmIwYMSI77LBDuWNBrXP//fd/5vnXXnvt75QEaqeWLVtm+vTpGy3iTJ8+vbhdFWzPnnzyyTzyyCNp1qxZmjVrlgceeCBnnXVWDj300Dz22GPZeeedyx0RapVp06Zl9OjRqaysTJI0bNgwl112mVU+IMkrr7ySvffeO0nyq1/9KiNHjsxpp51WPN+1a9dceeWVijhs11588cX89re/TZJ85zvfyXe/+90cf/zxxfODBw/OmDFjyhUPAACAL0ERh1qta9eumTVrVn74wx+mS5cuGTdu3HrbisD2rn///ikUCvmsBc7MG7ZnF1xwQU4//fTMmjUrvXv3LpZuFi9enClTpuTmm2/OtddeW+aUUH7vvfde6tb9//96UCgU8utf/zrDhg1Lr169rPAB/8+nf656//33i1u3fWr33XfP0qVLyxELapWddtopy5YtS9u2bfPXv/41Bx10UI3z3bp1y7x588qUDmqPT7+nVFRUpEGDBsVyZ5LssssuWbFiRbmiAQAA8CVUlDsAbErDhg3zm9/8JhdffHH69OljOwRYR6tWrXL33Xdn7dq1G/x65plnyh0RyuqHP/xhfvOb3+Tpp5/OwIED071793Tv3j0DBw7M008/nbFjx+ass84qd0wou/bt22fmzJnrHb/xxhtz3HHH5dhjjy1DKqh9evfunc6dO2flypWZO3dujXOvv/56mjZtWqZkUHt885vfzK9//eskSa9evXLXXXfVOD9x4sT8wz/8QzmiQa3Rrl27vPLKK8XH06ZNyx577FF8vGDBgvUKnwAAAGwdrIjDVmPQoEHp2bNnZs2albZt25Y7DtQaBx54YGbNmpXjjjtug+c3tVoObA+qqqpSVVWVjz76KMuWLUuSNGvWzJaH8H8MGDAgEyZMyHe/+931zt14441Zu3ZtRo8eXYZkUHtccsklNR43bNiwxuMHHngghx566N8zEtRKV199dQ455JD06tUrXbp0yXXXXZfHH388++67b+bOnZunnnoq99xzT7ljQlmdeeaZNX7YrEOHDjXOP/TQQznyyCP/3rEAAAAogUK1f50F2Kr94Q9/yOrVq9OvX78Nnl+9enVmzpyZXr16/Z2TAQAA26vly5fnqquuygMPPJDXXnsta9euTatWrXLIIYdk+PDh6dKlS7kjAgAAAGwRijgAAAAAAAAAAFACFeUOAAAAAAAAAAAA2wJFHAAAAAAAAAAAKAFFHAAAAAAAAAAAKAFFHAAA2IqMHTs2jRs33uzxjz/+eAqFQpYvX77FMgEAAAAAAJ9QxAEAgC1o2rRpqVOnTo4++ujP/dx27drl+uuvr3GsqqoqL7/88mZfo0ePHlm4cGEqKyuTfP4iz7ouu+yyDBkyZIPnLr300hQKhRQKhdStWzfNmjXLYYcdluuvvz4ffPDB57pPuQpEl156aTp16vR3vScAAAAAANsORRwAANiCbr311px99tl54okn8re//e1LX2/HHXfMbrvtttnj69Wrl5YtW6ZQKHzpeyfJfffdl2OPPXaj57/+9a9n4cKFWbBgQR577LF8+9vfzogRI9KjR4+88847JckAAAAAAAC1lSIOAABsIatWrcrvfve7nHnmmTn66KMzduzY9cY88MAD6dq1axo0aJBmzZplwIABSZLDDz88r7/+eoYPH15cZSapuaLNyy+/nEKhkDlz5tS45r//+7/nq1/9apKaK8s8/vjjGTp0aFasWFG85qWXXprLL788HTp0WC9bp06d8pOf/KT4+I033siLL76Yfv36bfQ1161bNy1btkzr1q2z//775+yzz87UqVPzpz/9KVdffXVx3O23354uXbpkl112ScuWLXPiiSdmyZIlSZL58+fniCOOSJLsuuuuKRQKOfnkk5MkkydPTs+ePdO4ceM0bdo03/rWt/Lqq68Wr/vhhx9m2LBhadWqVRo0aJC2bdtmxIgRxfPLly/P97///TRv3jyNGjXKkUcemdmzZxff28suuyyzZ88uvj8b+jUDAAAAAICNUcQBAIAtZOLEiWnfvn2+9rWvZciQIbnttttSXV1dPP/f//3fGTBgQI466qg8++yzmTJlSg466KAkyd13352vfOUrufzyy7Nw4cIsXLhwvevvs88+6dKlS8aNG1fj+Lhx43LiiSeuN75Hjx65/vrr06hRo+I1L7jggpxyyil56aWXMmPGjOLYZ599Ns8//3yGDh1aPHb//ffn8MMPT6NGjT7X+9C+fft885vfzN1331089tFHH+WKK67I7Nmzc++992b+/PnFsk2bNm3yX//1X0mSuXPnZuHChRk5cmSSZPXq1TnvvPMyc+bMTJkyJRUVFRkwYEDWrl2bJBk1alTuv//+TJw4MXPnzs24cePSrl274n2//e1vZ8mSJXnooYcya9asdO7cOb17985bb72VqqqqnH/++cVVfRYuXJiqqqrP9VoBAAAAANi+1S13AAAA2FbdeuutGTJkSJKkX79+WbFiRaZOnZrDDz88SXLllVdm0KBBueyyy4rP6dixY5KkSZMmqVOnTnHFmI0ZPHhwbrzxxlxxxRVJPlklZ9asWfnP//zP9cbWq1cvlZWVKRQKNa7ZsGHD9O3bN2PGjEnXrl2TJGPGjEmvXr2y1157Fcfdd999Oe64477Qe9G+ffs8/PDDxcennHJK8f/32muvjBo1Kl27ds2qVavSsGHDNGnSJEmy2267FVcASpKBAwfWuO5tt92W5s2b589//nM6dOiQBQsWZO+9907Pnj1TKBTStm3b4tg//vGPmT59epYsWZL69esnSa699trce++9ueuuu3L66aenYcOGxVV9AAAAAADg87IiDgAAbAFz587N9OnTc8IJJyT5ZMumqqqq3HrrrcUxzz33XHr37v2l7jNo0KDMnz8/Tz31VJJPVsPp3Llz2rdv/7muc9ppp2XChAl5//338+GHH2b8+PE1yjIrV67M1KlTc+yxx36hnNXV1cXttZJk1qxZOeaYY7LHHntkl112Sa9evZIkCxYs+MzrvPLKKznhhBOy1157pVGjRsXVbj593sknn5znnnsuX/va13LOOefUKP/Mnj07q1atStOmTdOwYcPi17x582psbwUAAAAAAF+UFXEAAGALuPXWW7NmzZq0bt26eKy6ujr169fPjTfemMrKyuy4445f+j4tW7bMkUcemfHjx+fggw/O+PHjc+aZZ37u6xxzzDGpX79+7rnnntSrVy8fffRRjj/++OL5hx56KPvtt1/atGnzhXK+9NJL2XPPPZN8sr1U375907dv34wbNy7NmzfPggUL0rdv33z44YebzNm2bdvcfPPNad26ddauXZsOHToUn9e5c+fMmzcvDz30UB555JF85zvfSZ8+fXLXXXdl1apVadWqVR5//PH1rvt/V90BAAAAAIAvShEHAABKbM2aNfntb3+b6667Lt/4xjdqnOvfv38mTJiQM844I//4j/+YKVOmZOjQoRu8Tr169fLxxx9v8n6DBw/Oj370o5xwwgl57bXXMmjQoI2O3dg169atm+9973sZM2ZM6tWrl0GDBtUoCn2ZbanmzJmTyZMn5+KLLy4+fvPNN3PVVVcViz0zZ85cL2eSGlnffPPNzJ07NzfffHMOPfTQJJ9sN7WuRo0apaqqKlVVVTn++OPTr1+/vPXWW+ncuXMWLVqUunXrFlfSWdfmvucAAAAAALAhtqYCAIASe/DBB/P222/n1FNPTYcOHWp8DRw4sLg91SWXXJIJEybkkksuyUsvvZQXXnghV199dfE67dq1yxNPPJG//vWvWbZs2Ubv98///M955513cuaZZ+aII46osQrPutq1a5dVq1ZlypQpWbZsWd59993iue9///t59NFHM3ny5BrbUq1ZsyYPPfTQZm1LtWbNmixatCh/+9vf8sILL+SGG25Ir1690qlTp1x44YVJkj322CP16tXLDTfckNdeey33339/rrjiihrXadu2bQqFQh588MEsXbo0q1atyq677pqmTZvmpptuyl/+8pc8+uijOe+882o87xe/+EUmTJiQOXPm5OWXX86dd96Zli1bpnHjxunTp0+6d++e/v375+GHH878+fPz5JNP5l//9V+LRaB27dpl3rx5ee6557Js2bJ88MEHm3zNAAAAAADwKUUcAAAosVtvvTV9+vRJZWXleucGDhyYmTNn5vnnn8/hhx+eO++8M/fff386deqUI488MtOnTy+OvfzyyzN//vx89atfTfPmzTd6v1122SXHHHNMZs+encGDB39mth49euSMM85IVVVVmjdvnmuuuaZ4bu+9906PHj3Svn37dOvWrXh86tSpadiwYTp37rzJ1/7iiy+mVatW2WOPPXL44Ydn4sSJufjii/OHP/whDRs2TJI0b948Y8eOzZ133pn99tsvV111Va699toa19l9991z2WWX5aKLLkqLFi0ybNiwVFRU5I477sisWbPSoUOHDB8+PD//+c/Xey+uueaadOnSJV27ds38+fMzadKkVFRUpFAoZNKkSTnssMMydOjQ7LPPPhk0aFBef/31tGjRIsknvz79+vXLEUcckebNm2fChAmbfM0AAAAAAPCpQnV1dXW5QwAAAOVXXV2dvffeO2eddVaNlWbOOeecrFmzJr/61a/KmA4AAAAAAGq/uuUOAAAAlN/SpUtzxx13ZNGiRRk6dGiNcx06dEj37t3LlAwAAAAAALYeVsQBAABSKBTSrFmzjBw5MieeeGK54wAAAAAAwFbJijgAAED08wEAAAAA4MurKHcAAAAAAAAAAADYFijiAAAAAAAAAABACSjiAAAAAAAAAABACSjiAAAAAAAAAABACSjiAAAAAAAAAABACSjiAAAAAAAAAABACSjiAAAAAAAAAABACSjiAAAAAAAAAABACSjiAAAAAAAAAABACfx/BS5bvWBS7EgAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "dopo.lvl21_plot_stacked_absolute(cement_sector_LCAs_w_other, 'Cement')" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "720b32c2-eab9-4b7c-a8b3-a41acbeeca76", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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9Wq1atVKFStWVMOGDTVp0iR9+umnprq//PKLnnnmGTk7O8vDw0Pdu3dXfHy86XpgYKAGDhyowYMHq0SJEvLw8NDcuXOVlJSk0NBQFS1aVFWqVNH69evNYshNu4MGDdK7774rV1dXlS5dWuHh4abr3t7ekqTnn39eBoPBdJ6VP/74Q126dJGrq6ucnJzk5+enffv2ZVn33uXhOcWRlVGjRqlMmTI6dOiQpLszaJ966ik5OjrK09NTgwYNUlJSktmzjB07Vj169FCxYsXUp08f3blzRwMGDFCZMmXk4OAgLy8vRUZG3rdf4J+OpCUAAAAAANlIS0vT4sWLlZSUpMaNG2dZ58cff9TBgwf16quvmpX/9ttvGjNmjL788ktZWeX8P79/+ukn7d69WwEBAZLuzsD78ccf1apVK1MdKysrtWrVSnv27DGV9erVS4GBgdm2u3HjRsXHx+vdd9/N8nrGTMNr166pZcuWql+/vn744Qdt2LBBsbGx6tSpk1n9BQsWyM3NTfv379fAgQPVv39/vfjii2rSpIkOHDigNm3aqHv37rp582ae23VyctK+ffs0YcIEjRkzRt9//70kKSYmRpL0+eef6+LFi6bze924cUMBAQH6888/tXr1av3888969913lZ6enu37udf94vg7o9GogQMH6ssvv9TOnTtVt25d/f7772rbtq3+85//6NChQ1qyZIl27dqlAQMGmN07adIk1atXTz/99JNGjBihTz75RKtXr9bSpUt17NgxLVq06L6JWeDfgG9aAgAAAABwj8OHD6tx48a6ffu2nJ2dtXLlStWsWTPLuvPmzVONGjXUpEkTU1lycrK6dOmiiRMnqkKFCjp16lS2fZUvX15xcXFKTU1VeHi4XnvtNUlSfHy80tLS5OHhYVbfw8NDR48eNZ2XKVPmvkm5EydOSJKqV69+32eeMWOG6tevr4iICFPZ/Pnz5enpqePHj5u+e1mvXj198MEHkqRhw4bpo48+kpubm3r37i1JGjlypGbPnq1Dhw6pUaNGuW63bt26GjVqlCSpatWqmjFjhqKjo9W6dWu5u7tLuptgLV26dLbPEBUVpbi4OMXExMjV1VWSVKVKlfs+973uF0eG1NRUdevWTT/99JN27dqlcuXKSZIiIyP18ssva/Dgwab7P/nkEwUEBGj27NlycHCQJLVs2VJvvfWWqb1z586patWqatasmQwGg7y8vPIUM/BPRNISAAAAAIB7VKtWTQcPHlRCQoKWL1+unj17avv27ZkSl7du3VJUVFSm70IOGzZMNWrUULdu3XLsa+fOnbpx44b27t2roUOHqkqVKurSpUuuY81pGXFuN5r5+eeftXXr1kxL3CXp999/N0suZrC2tlbJkiVVp04dU1lGkjXju5v5aVe6m4zN67c7Dx48qPr165sSlvmRmziGDBkie3t77d27V25ubqbyn3/+WYcOHdKiRYtMZUajUenp6Tp9+rRq1KghSfLz8zNrr1evXmrdurWqVaumtm3bqn379mrTpk2+nwH4JyBpCQAAAADAPezs7Ewz9Hx9fRUTE6Np06aZff9RkpYvX66bN2+qR48eZuVbtmzR4cOHtXz5ckn/nzh0c3PT+++/r9GjR5vqZuxEXqdOHcXGxio8PFxdunSRm5ubrK2tFRsba9Z2bGzsfWcb3isjKXj06NFsl7hLd5dWd+jQQePHj890rUyZMqY/29raml0zGAxmZQaDQZJMsz8fpN28LOuWJEdHxzzVz0pu4mjdurW+/vprbdy4US+//LKp/MaNG+rbt68GDRqUqd0KFSqY/uzk5GR2rUGDBjp9+rTWr1+vzZs3q1OnTmrVqpVp/AD/RiQtAQAAAADIQXp6upKTkzOVz5s3Tx07djQtX86wYsUK3bp1y3QeExOjV155RTt37lTlypVz1Y+dnZ18fX0VHR1t2iwmPT1d0dHRmb6ReD9t2rSRm5ubJkyYoJUrV2a6fu3aNRUvXlwNGjTQihUr5O3tLRubgksXFFS7tra2SktLu2+dunXr6r///a+uXLnyQLMtc9KxY0d16NBBXbt2lbW1tV566SVJd5/1t99+y/OSdEkqVqyYOnfurM6dOyskJERt27Z96M8BWDKSlsC/lPfQtYUdwmPpzEftCjsEAAAAPGTDhg3TM888owoVKuj69euKiorStm3btHHjRrN6J0+e1I4dO7Ru3bpMbdybmMzYKbtGjRqmjW9mzpypChUqmL41uWPHDk2aNMlsll5YWJh69uwpPz8/+fv7a+rUqaaduv8e759//qkvv/wyy+dxcnLSf//7X7344ovq2LGjBg0apCpVqig+Pl5Lly7VuXPntHjxYr3xxhuaO3euunTpYto9++TJk1q8eLH++9//ytraOu8vUyqwdr29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lZUvX15WVlam5efZcXd31+zZs03nqampqlixopo1a6bjx4/riSeeMIt39erVsre3l3R3M5yIiAilp6fLyspKX3zxhS5cuKCjR4+akpT169dXtWrVCixp+eeff8rd3V2Ojo65qp+UlJTtcvm/vy9Lk+vl4enp6TkeaWlpDzNWAAAAAAAAWIA//vhDnTt3VosWLTRo0CCza/PmzctyZl9WZs2aJVtbWxUpUkQtWrRQuXLltGLFCjk6Omrnzp2qXbu2KWEpSa6urmrdurV27dpl1k5gYOADJeAWLlyo+vXry9nZWba2tmrWrJkk6fjx42b1AgICTAlLSapZs6ZSUlJ0+fJlSdK+fftUu3ZtswRllSpVVK9evfv2n5G8zThyyrHlZeKgo6OjYmJiMh29e/fOdRuFgW9aAgAAAAAAINeuXbumZ555RiVLltSKFSvytQFPhk6dOikmJkYHDx7UX3/9pf3798vHx0eSdPXqVXl4eGS6x8PDQ1euXMlUll8rV65Ujx495O/vr6VLl2rv3r1auXKlpLvLvf/u3g1u7OzszOpdvHhRpUqVyjLm+9m+fbtsbW1Nx9NPP51t3XLlyikuLi5TbNmxsrKSn59fpqNs2bK5ur+wPNDu4cWKFdPBgwdVqVKlgooHAAAAAAAAFurWrVtq3769EhIStGfPHtPeJ/nl7u6e7S7hrq6uOnbsWKby2NhYubq6mpU9yCcLly1bJh8fH3366aemsu3bt+errTJlyujAgQOZymNjY7P9pqYk+fr6KiYmxnT+92+E3iswMFDz5s1TdHS02rVrl684HwcPNNMyPx9UBQAAAAAAwOMnNTVVnTp10pEjR7RhwwaVK1fuofbXrFkzHT582CxxefXqVW3evNm0fPt+7OzslJycnGO9W7dumWZMZli0aFHeA5bk7++vX375RSdPnjSVnTx5Uj///PN97ytatKjZLMhq1aplWzckJESenp4aPny4rl+/nun64cOHdf78+XzFb0lYHg4AAAAAAIAcvf7661qzZo3ef/99JSYmau/evabj78nBV199VTY2D7S4V5IUGhoqLy8vtWvXTosXL9a3336rNm3ayMbGRoMHD87x/ho1aig1NVXTpk1TTExMlrM2Jal169bav3+/xo4dq82bNyssLEzR0dH5irlXr14qXbq02rdvr2XLlmnZsmXq0KGDSpcuna/2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PR8fH1PCUpJq1qwpSfrjjz8kSfv27ZOLi4spYSlJLi4uatWqVY4xpKammo6/v8+8ev7551W7dm2NGTMm321YglzPtNywYYOWLFkiBweHTNccHR01duxYvfTSSwUaHAAAAAAAACxL3bp1JUmNGzfWk08+KR8fH61cuTJfG+c0a9ZMH3/8saytrVWuXDmVKlXKdO3q1atm5xk8PDx05cqVTGX5FRMTo44dO+q5557T0KFDVapUKRkMBjVq1Ei3b982q1u8eHGzczs7O0ky1bt48aJZUjO38Z05c0YVK1Y0nXt5eenMmTP5eJq7n3J8//331aVLFx04cCBfbViCXCct4+Pj7/sdgkqVKmUaMAAAAAAAAPjnqlu3rmxtbXXy5Ml83e/i4mLafOderq6uunz5cqby2NjYTEutc7MUPTsrV66Ui4uLli5dKiuru4uSz549m6+2ypQpo7i4uEzlsbGx972vbNmyiomJMZ3f7/ubudGpUyeFh4dr7NixuZrxaolyvTy8TJky+u2337K9/ssvv6h06dIFEhQAAAAAAAAs3759+5SSkqJKlSoVeNvNmjVTYmKiNm3aZCpLTU3VypUr1axZsxzvv3cWZHZu3bolW1tbs8TnokWL8hWzv7+/EhIStGXLFlNZQkKCNm/enGOsfn5+pqNOnTr56j+DlZWV3n//fa1atUqHDh16oLYKS66TlsHBwXr77bezzBZfvnxZ7733noKDgwsyNgAAAAAAAFiIF154QREREVqzZo2io6M1ZcoUPf/886pbt65ZTmjMmDGysbHJ92zFDO3atZO/v7+6deum+fPna+3atWrfvr0uXryo4cOH53h/xibSM2fO1L59+3T48OEs67Vu3VqXLl3SwIEDFR0drQ8//FALFizIV8xt27ZVgwYN9PLLL+vLL7/U6tWr1bZtWxUrVixf7T2Irl27qlKlStq6desj77sg5DppOWrUKN2+fVuVK1fW66+/rk8++UTTpk1Tv379VKVKFd26dUsjR458mLECAAAAAACgkPj7+2vZsmXq2rWrnnvuOc2fP1+9e/fWzp07TbMaJSk9PV1paWkyGo0P1J+1tbXWrVundu3a6Z133tF//vMf08xLX1/fHO+vX7++wsPD9dVXX6lJkybq0KFDlvWeffZZjR8/XqtWrVLHjh21Y8cOrVmzJl8xGwwGrVq1Sr6+vurb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/4zkbcaRlpaW72e515tvvqmzZ8/q008/1Ysvvqjjx49r0KBBatWqlUV/1zJX6dSwsLAsy93d3dWgQQPNmjXLVDZlypSCiQwAAAAAAAAWrVOnTpo0aZIOHjyY5XcTc3P/O++8I1tbW3l6esrV1dV07erVq/Lw8Mh0j4eHh3755ZdMZfm1cuVK9ejRQ3369NG4ceNUsmRJXbx4Uc8//7xu375tVrd48eJm53Z2dpJkqnfx4kWVKlUqy5hv3bqVbQzbt29XixYtTOcBAQHatm1blnUzZkdmldjMKLt3I6LSpUurT58+6tOnj1JSUtS3b199/vnnWrNmjTp27JhtXIUpV0nLn376KcvyKlWqKDEx0XTdYDAUXGQAAAAAAAD4R3N3d892l3BXV1cdO3YsU3lsbKxZclN6sJzUsmXL5OPjo08//dRUtn379ny1VaZMGR04cCBTeWxsbLbf1JTu7sgeExNjOi9atGi2dd3d3SVJly5dynTtwoULkpRl4jSDra2thgwZos8//1xHjhx5vJOWbLADAAAAAACAey1evFjW1taqX79+gbfdrFkzLV++XMeOHVO1atUk3Z19uXnzZvXp0yfH++3s7JScnJxjvVu3bplmTGZYtGhRvmL29/fXl19+qZMnT6pKlSqSpJMnT+rnn3/WU089le19RYsWzTZ5e6+qVauqTJkyWrVqlZ577jmza99++63KlClj6vvKlSsqVqxYpm9XZix7L126dK6f7VGz3K9tAgAAAAAAwGIEBQWpZcuWqlOnjqS7O2l/9tlnevPNN82SX6+++qoWLFiQ6+9aZic0NFQff/yx2rVrpw8//NC0e7iNjY0GDx6c4/01atRQamqqpk2bpiZNmqhYsWKm5OfftW7dWm+88YbGjh2rxo0ba926dYqOjs5XzL169dKHH36o9u3ba+zYsZLu7h5ekMlBKysrjR49Wn369JG1tbUpcblq1SrNnz9fc+fONc083bJli9577z316tVL/v7+srW11U8//aTIyEhVqFBBzz//fIHFVdBIWgIAAAAAACBH1atX17x58/THH38oPT1dTzzxhKZOnaqBAwea1UtLSyuQjWSKFi2qbdu2KSwsTH369FFaWpqaNm2qHTt2yNPTM8f7O3TooNdff12RkZG6fPmymjdvnuV3Ivv27atTp05p+vTpmjhxooKCghQVFZXjruNZcXR01KZNm9S/f39169ZN5cqV04gRI7Rq1Spdu3Ytz+1lp3fv3ipatKimTJlimhVaq1YtRUVFqUuXLqZ6DRs2VEhIiL799lt9/PHHun37tjw9PfXyyy9r6NCh912yXtgMRqPRWNhBPEqJiYlycXFRQkKCRf7FeA9dW9ghPJbOfNSusEN47DDW8oexlneMtfxhrOUdYy1/GGt5x1jLH8Za3jHW8oexlneMtfyxxLH2oDmPlJQUxcXFyd3dPdNGLsDDlNXYsyrkmAAAAAAAAADADElLAAAAAAAAABaFpCUAAAAAAAAAi0LSEgAAAAAAAIBFIWkJAAAAAACAXFuwYIHq168vBwcHubm56ZlnntGtW7fy3E5gYKAMBoMMBoOsrKxUoUIFde3aVWfPni2QOA8ePKjw8HDdvHnTrPyLL76QwWBQfHx8gfSTG4MHD5a3t3eBtPX395bdca+UlBS5ubnJyspK586dK5A4Hjabwg4AAAAAAAAAj4dx48Zp/PjxGj58uBo3bqz4+HhFR0crLS0tX+01bdpUkyZNUlpamg4fPqwPPvhA+/fv16FDh1SkSJEHivXgwYMaPXq0BgwY8MBtWZJZs2YpMTExU/mpU6fUvXt3tW3bNtO1jRs36q+//pIkff3113rvvfceepwPiqQlAAAAAAAAcnTs2DGFh4dr9erVeuaZZ0zl//nPf/LdZvHixdWoUSNJdxOYTk5O6tGjh9atW6eQkJB8tZmWlqb09PR8x2TpatasmaksNTVVgwcPloeHh7744otM16OiolS8eHFVrlxZixYteiySliwPBwAAAAAAQI4+//xzVaxY0SxhWdD8/PwkSadPn5YkXblyRa+88orc3Nzk6OioJk2aaMeOHWb3BAYGqn379lqwYIGqVasme3t7TZs2TaGhoZIkd3d3GQyG+y7PHjp0qOrUqSNnZ2eVK1dOXbp00cWLF7PsZ/ny5apWrZqcnZ3VsmVL/f7772b1Lly4oI4dO6pIkSIqV66cJkyY8KCvJUcjRoxQTEyMFi5cKHd3d7NrSUlJWr16tUJCQtSrVy8dPnxYhw8ffugxPSiSlgAAAAAAAMjR3r17VadOHX344YcqVaqU7Ozs1LRpU+3bt8+sXnh4uAwGg86cOZPnPjKSlWXLllVaWpqeeeYZfffddxo/fryWLVsmZ2dntW7dWj/++KPZfT/88IMmTpyoMWPGaN26derevbs++OADSdKGDRu0Z88erVy5Mtt+L1++rOHDh2vt2rWaNm2azpw5o4CAAKWmpprVO3jwoCZOnKiPPvpIX3zxhU6ePKlu3bqZ1XnuuecUExOj2bNna9asWVq5cqWWL1+e53eRW1u2bNGECRP07rvv6umnn850/dtvv1VSUpK6du2qTp06ycbGRlFRUQ8tnoLC8nAAAAAAAADk6NKlS/rxxx91+PBhzZo1S0WKFFFERITatGmjEydOqFSpUpIkKysrWVtbZ7khzL2MRqNSU1OVnp6uw4cP65133lHx4sXVqlUrrV27Vvv379eGDRsUFBQkSQoKClKVKlUUERGhFStWmNq5cuWKYmJi5OnpaSqrXLmyJMnX11dubm73jWP+/PmmP6elpalx48YqX768tmzZojZt2piuXbt2TT/99JNpNuONGzcUGhqqP/74Q+XLl9eGDRv0ww8/KDo6Wi1btpR0d4amp6enXF1dc3wfefXXX3+pe/fu8vf319ixY7OsExUVpXLlyikgIEBWVlZ6+umnFRUVpYiIiFz9HRUWZloCAAAAAAAgR+np6bpx44aWL1+ukJAQPfvss1q9erWMRqNmzJhhqjdy5EilpqbKy8srxzbXrVsnW1tb2dvby8/PT6mpqfrmm2/k4eGhnTt3qlixYqaEpSTZ2trqhRde0K5du8zaqVu3rlnCMq/Wr1+vJk2ayMXFRTY2Nipfvrwk6fjx42b1fHx8zJZfZ3xf8o8//pAk7du3Ty4uLqaEpSS5uLioVatWOcaQmppqOnK7sVFoaKiSkpIUFRUlG5vMcxPj4+O1adMmde7cWVZWd9OAXbt21blz5zK9Q0tD0hIAAAAAAAA5KlGihEqWLKm6deuaylxdXVW/fn39+uuv+WqzWbNmiomJ0YEDBxQbG6tjx46pRYsWkqSrV6+aZm/+nYeHh65cuZKpLL9iYmLUsWNHlS1bVgsXLtSePXu0d+9eSdLt27fN6hYvXtzs3M7OzqzexYsXM31TMjfxnTlzRra2tqYjY5bo/cyYMUPfffedPv30U1WsWDHLOkuXLlVqaqratWuna9eu6dq1a2rRooXs7e0tfok4y8MBAAAAAACQo1q1amXadCbDvcm93HJxcTFtvnMvV1dXXb58OVN5bGxspqXWD7LMeeXKlXJxcdHSpUtNsxHPnj2br7bKlCmjuLi4TOWxsbH3va9s2bKKiYkxndvb29+3fsZS+ldeeUWdO3fOtl5GYjKrb10uW7ZMn3zyiWxtbe/bV2FhpiUAAAAAAABy1L59e/311186ePCgqeyvv/7SgQMH5OvrW+D9NWvWTImJidq0aZOpLDU1VStXrlSzZs1yvP/eWZDZuXXrlmxtbc0Sn4sWLcpXzP7+/kpISNCWLVtMZQkJCdq8eXOOsfr5+ZmOOnXq3DfeLl26yNvbW5988km29c6ePavdu3erX79+2rp1q9nx8ccf66+//tKGDRvy/pCPCDMtAQAAAAAAkKPg4GA9+eSTCgkJ0bhx4+To6KjIyEjZ29vr9ddfN9UbM2aMxowZo99//z1X37XMTrt27eTv769u3brpo48+koeHh6ZPn66LFy9q+PDhOd5fo0YNSdLMmTMVHBysIkWKZJkMbN26taZOnaqBAwfq+eef1549e7Rw4cJ8xdy2bVs1aNBAL7/8ssaPH6/ixYsrMjJSxYoVy1d7WXnrrbf066+/as6cOTp8+HCWdWrWrGmaZfnOO++oUqVKZtebNWumyMhIRUVFqUOHDgUWW0EiaQkAAAAAAIAcWVlZad26dRoyZIj69u2rO3fu6KmnntKOHTtUunRpU7309HSlpaXJaDQ+UH/W1tZat26d3n77bb3zzjtKSkpSgwYNtGnTplzN7Kxfv77Cw8P13//+VxMmTJCnp6fOnDmTqd6zzz6r8ePHa/r06fr888/VtGlTrVmzRk888USeYzYYDFq1apX69eunvn37qkSJEho4cKBiY2P17bff5rm9rKxbt06S1K9fv2zrbN26VVFRUWratGmmhKUk2djYqGvXrvrss89048YNOTs7F0hsBclgfNAR9JhJTEyUi4uLEhISCjTLXVC8h64t7BAeS2c+alfYITx2GGv5w1jLO8Za/jDW8o6xlj+MtbxjrOUPYy3vGGv5w1jLO8Za/ljiWHvQnEdKSori4uLk7u5usd85xD9TVmOPb1oCAAAAAAAAsCgkLQEAAAAAAABYFJKWAAAAAAAAACwKSUsAAAAAAAAAFoWkJQAAAAAAAACLQtISAAAAAAAAgEWxKewAAAAAAAAAYDlSU1MLOwT8y2Q15khaAgAAAAAAQFZWVjIYDLp69Wphh4J/IYPBICur/18UTtISAAAAAAAAsra2VqlSpZSenl7YoeBfyMrKStbW1qZzi0hazpw5UxMnTtSlS5dUr149TZ8+Xf7+/lnW/eabbxQREaGTJ08qJSVFVatW1VtvvaXu3bs/4qgBAAAAAAD+Waytrc0SR0BhKfSNeJYsWaKwsDCNGjVKBw4cUL169RQUFKTLly9nWd/V1VXvv/++9uzZo0OHDik0NFShoaHauHHjI44cAAAAAAAAwMNQ6EnLKVOmqHfv3goNDVXNmjU1Z84cFSlSRPPnz8+yfmBgoJ5//nnVqFFDlStX1ptvvqm6detq165djzhyAAAAAAAAAA9DoSYt79y5ox9//FGtWrUylVlZWalVq1bas2dPjvcbjUZFR0fr2LFjat68eZZ1kpOTlZiYaHYAAAAAAAAAsFyFmrSMj49XWlqaPDw8zMo9PDx06dKlbO9LSEiQs7Oz7Ozs1K5dO02fPl2tW7fOsm5kZKRcXFxMh6enZ4E+AwAAAAAAAICCVejLw/OjaNGiOnjwoGJiYjRu3DiFhYVp27ZtWdYdNmyYEhISTMf58+cfbbAAAAAAAAAA8qRQdw93c3OTtbW1YmNjzcpjY2NVunTpbO+zsrJSlSpVJEk+Pj46cuSIIiMjFRgYmKmuvb297O3tCzRuAAAAAAAAAA9Poc60tLOzk6+vr6Kjo01l6enpio6OVuPGjXPdTnp6upKTkx9GiAAAAAAAAAAesUKdaSlJYWFh6tmzp/z8/OTv76+pU6cqKSlJoaGhkqQePXqoXLlyioyMlHT3G5V+fn6qXLmykpOTtW7dOi1cuFCzZ88uzMf4v/buPMiq6s4D+LcbAkhacAFZHKTjFmRIIAgaiIpLl5hxjDIaG5SomJASh+iExEyYRcSlQKMGEo2UCzpJBERHDWaUcUQhkxFDbBXjAiZRbEZplhhBUEGl5w8rL9OCRrZ+V/x8ql4V75xz7/2916eA+va59wAAAAAA20nZQ8va2tqsXLkyF154YRoaGtKnT5/Mnj27tDlPfX19Kiv/vCB03bp1Offcc/O///u/2WWXXdKjR4/89Kc/TW1tbbk+AgAAAACwHZU9tEyS0aNHZ/To0Zvte+8GO5deemkuvfTSZqgKAAAAACiHj+Tu4QAAAADAzktoCQAAAAAUitASAAAAACgUoSUAAAAAUChCSwAAAACgUISWAAAAAEChCC0BAAAAgEIRWgIAAAAAhSK0BAAAAAAKRWgJAAAAABSK0BIAAAAAKBShJQAAAABQKEJLAAAAAKBQhJYAAAAAQKEILQEAAACAQhFaAgAAAACFIrQEAAAAAApFaAkAAAAAFIrQEgAAAAAoFKElAAAAAFAoQksAAAAAoFCElgAAAABAoQgtAQAAAIBCEVoCAAAAAIUitAQAAAAACkVoCQAAAAAUitASAAAAACgUoSUAAAAAUChCSwAAAACgUISWAAAAAEChCC0BAAAAgEIRWgIAAAAAhSK0BAAAAAAKRWgJAAAAABSK0BIAAAAAKBShJQAAAABQKEJLAAAAAKBQhJYAAAAAQKEILQEAAACAQhFaAgAAAACFIrQEAAAAAApFaAkAAAAAFEohQstrr7021dXVadOmTQ499NAsWLDgfcfecMMNOfzww7P77rtn9913T01NzQeOBwAAAAA+WsoeWt52220ZM2ZMxo0bl8ceeyy9e/fO4MGDs2LFis2Onzt3boYNG5aHHnoo8+fPT7du3XLsscfmpZdeaubKAQAAAIAdoeyh5dVXX52RI0dmxIgR6dmzZ6ZMmZK2bdtm6tSpmx1/66235txzz02fPn3So0eP3Hjjjdm4cWPmzJnTzJUDAAAAADtCWUPLDRs2pK6uLjU1NaW2ysrK1NTUZP78+R/qHK+//nreeuut7LHHHpvtX79+fdasWdPkBQAAAAAUV1lDy1WrVuWdd95Jp06dmrR36tQpDQ0NH+oc//iP/5iuXbs2CT7/vwkTJqR9+/alV7du3ba5bgAAAABgxyn77eHbYuLEiZkxY0buuuuutGnTZrNjxo4dm9WrV5deS5cubeYqAQAAAIAt0bKcF+/QoUNatGiR5cuXN2lfvnx5Onfu/IHHXnnllZk4cWIeeOCBfPazn33fca1bt07r1q23S70AAAAAwI5X1pWWrVq1ysEHH9xkE50/baozYMCA9z3uiiuuyCWXXJLZs2enX79+zVEqAAAAANBMyrrSMknGjBmTM888M/369cshhxySSZMmZd26dRkxYkSS5Iwzzsjee++dCRMmJEkuv/zyXHjhhZk2bVqqq6tLz76sqqpKVVVV2T4HAAAAALB9lD20rK2tzcqVK3PhhRemoaEhffr0yezZs0ub89TX16ey8s8LQq+77rps2LAhp5xySpPzjBs3LhdddFFzlg4AAAAA7ABlDy2TZPTo0Rk9evRm++bOndvk/ZIlS3Z8QQAAAABA2Xykdw8HAAAAAHY+QksAAAAAoFCElgAAAABAoQgtAQAAAIBCEVoCAAAAAIUitAQAAAAACkVoCQAAAAAUitASAAAAACgUoSUAAAAAUChCSwAAAACgUISWAAAAAEChCC0BAAAAgEIRWgIAAAAAhSK0BAAAAAAKRWgJAAAAABSK0BIAAAAAKBShJQAAAABQKEJLAAAAAKBQhJYAAAAAQKEILQEAAACAQhFaAgAAAACFIrQEAAAAAApFaAkAAAAAFIrQEgAAAAAoFKElAAAAAFAoQksAAAAAoFCElgAAAABAoQgtAQAAAIBCEVoCAAAAAIUitAQAAAAACkVoCQAAAAAUitASAAAAACgUoSUAAAAAUChCSwAAAACgUISWAAAAAEChCC0BAAAAgEIRWgIAAAAAhSK0BAAAAAAKRWgJAAAAABSK0BIAAAAAKBShJQAAAABQKEJLAAAAAKBQyh5aXnvttamurk6bNm1y6KGHZsGCBe879umnn87JJ5+c6urqVFRUZNKkSc1XKAAAAADQLMoaWt52220ZM2ZMxo0bl8ceeyy9e/fO4MGDs2LFis2Of/3117Pvvvtm4sSJ6dy5czNXCwAAAAA0h7KGlldffXVGjhyZESNGpGfPnpkyZUratm2bqVOnbnZ8//79873vfS9Dhw5N69atm7laAAAAAKA5lC203LBhQ+rq6lJTU/PnYiorU1NTk/nz55erLAAAAACgzFqW68KrVq3KO++8k06dOjVp79SpUxYtWrTdrrN+/fqsX7++9H7NmjXb7dwAAAAAwPZX9o14drQJEyakffv2pVe3bt3KXRIAAAAA8AHKFlp26NAhLVq0yPLly5u0L1++fLtusjN27NisXr269Fq6dOl2OzcAAAAAsP2VLbRs1apVDj744MyZM6fUtnHjxsyZMycDBgzYbtdp3bp12rVr1+QFAAAAABRX2Z5pmSRjxozJmWeemX79+uWQQw7JpEmTsm7duowYMSJJcsYZZ2TvvffOhAkTkry7ec8zzzxT+vNLL72UJ554IlVVVdl///3L9jkAAAAAgO2nrKFlbW1tVq5cmQsvvDANDQ3p06dPZs+eXdqcp76+PpWVf14M+vLLL+dzn/tc6f2VV16ZK6+8MoMGDcrcuXObu3wAAAAAYAcoa2iZJKNHj87o0aM32/feILK6ujqNjY3NUBUAAAAAUC47/e7hAAAAAMBHi9ASAAAAACgUoSUAAAAAUChCSwAAAACgUISWAAAAAEChCC0BAAAAgEIRWgIAAAAAhSK0BAAAAAAKRWgJAAAAABSK0BIAAAAAKBShJQAAAABQKEJLAAAAAKBQhJYAAAAAQKEILQEAAACAQhFaAgAAAACFIrQEAAAAAApFaAkAAAAAFIrQEgAAAAAoFKElAAAAAFAoQksAAAAAoFCElgAAAABAoQgtAQAAAIBCEVoCAAAAAIUitAQAAAAACkVoCQAAAAAUitASAAAAACgUoSUAAAAAUChCSwAAAACgUISWAAAAAEChCC0BAAAAgEIRWgIAAAAAhSK0BAAAAAAKRWgJAAAAABSK0BIAAAAAKBShJQAAAABQKEJLAAAAAKBQhJYAAAAAQKEILQEAAACAQhFaAgAAAACFIrQEAAAAAApFaAkAAAAAFIrQEgAAAAAoFKElAAAAAFAohQgtr7322lRXV6dNmzY59NBDs2DBgg8cf/vtt6dHjx5p06ZNPvOZz+Tee+9tpkoBAAAAgB2t7KHlbbfdljFjxmTcuHF57LHH0rt37wwePDgrVqzY7PiHH344w4YNy1e/+tU8/vjjOemkk3LSSSflqaeeaubKAQAAAIAdoeyh5dVXX52RI0dmxIgR6dmzZ6ZMmZK2bdtm6tSpmx0/efLkHHfccbngggty0EEH5ZJLLknfvn1zzTXXNHPlAAAAAMCO0LKcF9+wYUPq6uoyduzYUltlZWVqamoyf/78zR4zf/78jBkzpknb4MGDc/fdd292/Pr167N+/frS+9WrVydJ1qxZs43V7xgb179e7hI+kor68ywyc23rmGtbzlzbOubaljPXto65tuXMta1jrm05c23rmGtbzlzbOkWca3+qqbGxscyVwLYra2i5atWqvPPOO+nUqVOT9k6dOmXRokWbPaahoWGz4xsaGjY7fsKECRk/fvwm7d26ddvKqimi9pPKXQEfF+YazcVco7mYazQXc43mYq7RXIo811577bW0b9++3GXANilraNkcxo4d22Rl5saNG/PKK69kzz33TEVFRRkr+2hZs2ZNunXrlqVLl6Zdu3blLoedmLlGczHXaC7mGs3FXKO5mGs0F3NtyzU2Nua1115L165dy10KbLOyhpYdOnRIixYtsnz58ibty5cvT+fOnTd7TOfOnbdofOvWrdO6desmbbvtttvWF/0x165dO/9Y0CzMNZqLuUZzMddoLuYazcVco7mYa1vGCkt2FmXdiKdVq1Y5+OCDM2fOnFLbxo0bM2fOnAwYMGCzxwwYMKDJ+CT5r//6r/cdDwAAAAB8tJT99vAxY8bkzDPPTL9+/XLIIYdk0qRJWbduXUaMGJEkOeOMM7L33ntnwoQJSZLzzz8/gwYNylVXXZXjjz8+M2bMyKOPPprrr7++nB8DAAAAANhOyh5a1tbWZuXKlbnwwgvT0NCQPn36ZPbs2aXNdurr61NZ+ecFoQMHDsy0adPyL//yL/mnf/qnHHDAAbn77rvTq1evcn2Ej4XWrVtn3Lhxm9xqD9ubuUZzMddoLuYazcVco7mYazQXcw0+3ioaGxsby10EAAAAAMCflPWZlgAAAAAA7yW0BAAAAAAKRWgJAAAAABSK0BIAAAAAKBShJVAo9gYDAAAAWpa7AID/r3Xr1lm4cGEOOuigcpcCAIW2atWqTJ06NfPnz09DQ0OSpHPnzhk4cGDOOuusdOzYscwVAgBsvYpGy5p4j8ceeyy77757PvWpTyVJfvKTn2TKlCmpr69P9+7dM3r06AwdOrTMVfJRN2bMmM22T548OcOHD8+ee+6ZJLn66qubsyx2Ys8++2weeeSRDBgwID169MiiRYsyefLkrF+/PsOHD8/RRx9d7hLZCa1bty4zZ87M7373u3Tp0iXDhg0r/f0G2+LXv/51Bg8enLZt26ampiadOnVKkixfvjxz5szJ66+/nv/8z/9Mv379ylwpO7ulS5dm3LhxmTp1arlLYSfwxhtvpK6uLnvssUd69uzZpO/NN9/MzJkzc8YZZ5SpOqC5CS3ZRO/evXPVVVelpqYmN954Y84777yMHDkyBx10UBYvXpwbb7wxkydPztlnn13uUvkIq6ysTO/evbPbbrs1aZ83b1769euXT37yk6moqMiDDz5YngLZqcyePTsnnnhiqqqq8vrrr+euu+7KGWeckd69e2fjxo2ZN29e7r//fsEl26xnz5755S9/mT322CNLly7NEUcckT/+8Y858MAD8/vf/z4tW7bMI488UvrFIGytz3/+8+ndu3emTJmSioqKJn2NjY0555xz8uSTT2b+/PllqpCPi4ULF6Zv37555513yl0KH3HPPfdcjj322NTX16eioiKHHXZYZsyYkS5duiR595cyXbt2NdfgY0RoySbatm2bZ599Nt27d0/fvn0zatSojBw5stQ/bdq0XHbZZXn66afLWCUfdRMnTsz111+fG2+8sUlQ9IlPfCILFy7c5DersC0GDhyYo48+OpdeemlmzJiRc889N6NGjcpll12WJBk7dmzq6upy//33l7lSPuoqKyvT0NCQvfbaK8OHD88LL7yQe++9N+3bt8/atWszZMiQdOzYMdOmTSt3qXzE7bLLLnn88cfTo0ePzfYvWrQon/vc5/LGG280c2XsbGbNmvWB/c8//3y+9a1vCZLYZkOGDMlbb72VW265Ja+++mr+4R/+Ic8880zmzp2bffbZR2gJH0Oeackm2rZtm1WrVqV79+556aWXcsghhzTpP/TQQ/PCCy+UqTp2Ft/97ndzzDHHZPjw4TnhhBMyYcKEfOITnyh3Weyknn766fz4xz9Okpx66qn5yle+klNOOaXUf/rpp+fmm28uV3nspObPn58pU6akffv2SZKqqqqMHz/eI1bYLjp37pwFCxa8b2i5YMGC0i3jsC1OOumkVFRUfOBmie9d7Qtb4+GHH84DDzyQDh06pEOHDrnnnnty7rnn5vDDD89DDz2UT37yk+UuEWhmdg9nE1/84hdz3XXXJUkGDRqUO+64o0n/zJkzs//++5ejNHYy/fv3T11dXVauXJl+/frlqaee8p9edpg/za3Kysq0adOmFCQlya677prVq1eXqzR2Mn+aa2+++WbplrY/2XvvvbNy5cpylMVO5tvf/na+/vWv5/zzz8+sWbPyq1/9Kr/61a8ya9asnH/++TnnnHPyne98p9xlshPo0qVL7rzzzmzcuHGzr8cee6zcJbKTeOONN9Ky5Z/XVVVUVOS6667LCSeckEGDBuW5554rY3VAOVhpySYuv/zyfOELX8igQYPSr1+/XHXVVZk7d27pmZaPPPJI7rrrrnKXyU6iqqoq//Zv/5YZM2akpqbG7R7sENXV1fntb3+b/fbbL8m7K+D22WefUn99ff0m4RJsrWOOOSYtW7bMmjVrsnjx4vTq1avU9+KLL9qIh+3i7//+79OhQ4d8//vfz49+9KPSv58tWrTIwQcfnFtuuSWnnnpqmatkZ3DwwQenrq4uJ5544mb7/9IqTPiwevTokUcffTQHHXRQk/ZrrrkmSfKlL32pHGUBZSS0ZBNdu3bN448/nokTJ+aee+5JY2NjFixYkKVLl+YLX/hC/ud//sdOlGx3Q4cOzWGHHZa6urp079693OWwkxk1alSTQPz/h0hJct9999mEh+1i3LhxTd5XVVU1eX/PPffk8MMPb86S2InV1tamtrY2b731VlatWpUk6dChg8etsF1dcMEFWbdu3fv277///nnooYeasSJ2VkOGDMn06dPzla98ZZO+a665Jhs3bsyUKVPKUBlQLjbiAQAAAAAKxTMtAQAAAIBCEVoCAAAAAIUitAQAAAAACkVoCQDslG655ZbstttuH3r83LlzU1FRkVdffXWH1QQAAHw4QksAoBDmz5+fFi1a5Pjjj9/iY6urqzNp0qQmbbW1tXnuuec+9DkGDhyYZcuWpX379km2PPR8r/Hjx2f48OGb7bvoootSUVGRioqKtGzZMh06dMgRRxyRSZMmZf369Vt0nXKFrRdddFH69OnTrNcEAODjQ2gJABTCTTfdlG984xv5xS9+kZdffnmbz7fLLrtkr732+tDjW7Vqlc6dO6eiomKbr50kP/vZz/KlL33pffv/+q//OsuWLUt9fX0eeuihfPnLX86ECRMycODAvPbaa9ulBgAA+KgSWgIAZbd27drcdtttGTVqVI4//vjccsstm4y555570r9//7Rp0yYdOnTIkCFDkiRHHnlkXnzxxXzzm98srV5Mmq6UfO6551JRUZFFixY1Oef3v//97LfffkmarlicO3duRowYkdWrV5fOedFFF+Xiiy9Or169NqmtT58++dd//dfS+6VLl+bpp5/Occcd976fuWXLluncuXO6du2az3zmM/nGN76RefPm5amnnsrll19eGveTn/wk/fr1y6677prOnTvntNNOy4oVK5IkS5YsyVFHHZUk2X333VNRUZGzzjorSTJ79uwcdthh2W233bLnnnvmb//2b/P73/++dN4NGzZk9OjR6dKlS9q0aZPu3btnwoQJpf5XX301X/va19KxY8e0a9cuRx99dBYuXFj6bsePH5+FCxeWvp/N/cwAAGBrCS0BgLKbOXNmevTokU9/+tMZPnx4pk6dmsbGxlL/f/zHf2TIkCH5m7/5mzz++OOZM2dODjnkkCTJnXfemb/6q7/KxRdfnGXLlmXZsmWbnP/AAw9Mv379cuuttzZpv/XWW3PaaadtMn7gwIGZNGlS2rVrVzrnt7/97Zx99tl59tln8+tf/7o09vHHH8+TTz6ZESNGlNpmzZqVI488Mu3atdui76FHjx754he/mDvvvLPU9tZbb+WSSy7JwoULc/fdd2fJkiWlYLJbt27593//9yTJ4sWLs2zZskyePDlJsm7duowZMyaPPvpo5syZk8rKygwZMiQbN25MkvzgBz/IrFmzMnPmzCxevDi33nprqqurS9f98pe/nBUrVuS+++5LXV1d+vbtm2OOOSavvPJKamtr861vfau0WnTZsmWpra3dos8KAAAfpGW5CwAAuOmmm0rPfzzuuOOyevXqzJs3L0ceeWSS5LLLLsvQoUMzfvz40jG9e/dOkuyxxx5p0aJFaSXi+zn99NNzzTXX5JJLLkny7urLurq6/PSnP91kbKtWrdK+fftUVFQ0OWdVVVUGDx6cm2++Of3790+S3HzzzRk0aFD23Xff0rif/exnOfHEE7fqu+jRo0fuv//+0vuzzz679Od99903P/jBD9K/f/+sXbs2VVVV2WOPPZIke+21V5NncJ588slNzjt16tR07NgxzzzzTHr16pX6+voccMABOeyww1JRUZHu3buXxv7yl7/MggULsmLFirRu3TpJcuWVV+buu+/OHXfcka9//eupqqoqrRYFAIDtzUpLAKCsFi9enAULFmTYsGFJ3r1tura2NjfddFNpzBNPPJFjjjlmm64zdOjQLFmyJI888kiSd1dZ9u3bNz169Nii84wcOTLTp0/Pm2++mQ0bNmTatGlNgsU1a9Zk3rx5H/g8yw/S2NjY5LmadXV1OeGEE7LPPvtk1113zaBBg5Ik9fX1H3ie3/72txk2bFj23XfftGvXrrSK8k/HnXXWWXniiSfy6U9/Ouedd16ToHThwoVZu3Zt9txzz1RVVZVeL7zwQpNbzAEAYEex0hIAKKubbropb7/9drp27Vpqa2xsTOvWrXPNNdekffv22WWXXbb5Op07d87RRx+dadOm5fOf/3ymTZuWUaNGbfF5TjjhhLRu3Tp33XVXWrVqlbfeeiunnHJKqf++++5Lz549061bt62q89lnn82nPvWpJO/e4j148OAMHjw4t956azp27Jj6+voMHjw4GzZs+It1du/ePTfccEO6du2ajRs3plevXqXj+vbtmxdeeCH33XdfHnjggZx66qmpqanJHXfckbVr16ZLly6ZO3fuJufdlh3VAQDgwxJaAgBl8/bbb+fHP/5xrrrqqhx77LFN+k466aRMnz4955xzTj772c9mzpw5TZ4b+f+1atUq77zzzl+83umnn57vfOc7GTZsWJ5//vkMHTr0fce+3zlbtmyZM888MzfffHNatWqVoUOHNglVt+XW8EWLFmX27NkZO3Zs6f0f/vCHTJw4sRSCPvroo5vUmaRJrX/4wx+yePHi3HDDDTn88MOTvHvL93u1a9cutbW1qa2tzSmnnJLjjjsur7zySvr27ZuGhoa0bNmyyXMu33vdD/OdAwDA1nB7OABQNj//+c/zxz/+MV/96lfTq1evJq+TTz65dIv4uHHjMn369IwbNy7PPvtsfvOb3zTZYbu6ujq/+MUv8tJLL2XVqlXve72/+7u/y2uvvZZRo0blqKOOarK6872qq6uzdu3azJkzJ6tWrcrrr79e6vva176WBx98MLNnz25ya/jbb7+d++6770PdGv7222+noaEhL7/8cn7zm9/khz/8YQYNGpQ+ffrkggsuSJLss88+adWqVX74wx/m+eefz6xZs0rP5PyT7t27p6KiIj//+c+zcuXKrF27Nrvvvnv23HPPXH/99fnd736XBx98MGPGjGly3NVXX53p06dn0aJFee6553L77benc+fO2W233VJTU5MBAwbkpJNOyv33358lS5bk4Ycfzj//8z+XQtPq6uq88MILeeKJJ7Jq1aqsX7/+L35mAAD4sISWAEDZ3HTTTampqUn79u036Tv55JPz6KOP5sknn8yRRx6Z22+/PbNmzUqfPn1y9NFHZ8GCBaWxF198cZYsWZL99tsvHTt2fN/r7brrrjnhhBOycOHCnH766R9Y28CBA3POOeektrY2HTt2zBVXXFHqO+CAAzJw4MD06NEjhx56aKl93rx5qaqqSt++ff/iZ3/66afTpUuX7LPPPjnyyCMzc+bMjB07Nv/93/+dqqqqJEnHjh1zyy235Pbbb0/Pnj0zceLEXHnllU3Os/fee2f8+PH57ne/m06dOmX06NGprKzMjBkzUldXl169euWb3/xmvve9723yXVxxxRXp169f+vfvnyVLluTee+9NZWVlKioqcu+99+aII47IiBEjcuCBB2bo0KF58cUX06lTpyTv/nyOO+64HHXUUenYsWOmT5/+Fz8zAAB8WBWNjY2N5S4CAOCjpLGxMQcccEDOPffcJisYzzvvvLz99tv50Y9+VMbqAADgo88zLQEAtsDKlSszY8aMNDQ0bPKMzV69emXAgAFlqgwAAHYeVloCAGyBioqKdOjQIZMnT85pp51W7nIAAGCnZKUlAMAW8PteAADY8WzEAwAAAAAUitASAAAAACgUoSUAAAAAUChCSwAAAACgUISWAAAAAEChCC0BAAAAgEIRWgIAAAAAhSK0BAAAAAAKRWgJAAAAABTK/wGjqcHtIeb23wAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "dopo.lvl22_plot_input_comparison_with_method(cement_sector_LCAs_w_other, 'cement_global_warming_potential_(gwp100)', '37430') " - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "fa9031b4-0d0f-45f4-877f-36aea286be79", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name '_get_cpc_inputs_of_activities' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[25], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m dopo\u001b[38;5;241m.\u001b[39mlvl23_plot_input_comparison_plot_no_method(small_cement, input_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlist\u001b[39m\u001b[38;5;124m'\u001b[39m, input_number\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m37430\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\plots.py:211\u001b[0m, in \u001b[0;36mlvl23_plot_input_comparison_plot_no_method\u001b[1;34m(activities_list, input_type, input_number)\u001b[0m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mlvl23_plot_input_comparison_plot_no_method\u001b[39m(activities_list, input_type, input_number,):\n\u001b[0;32m 203\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m'''\u001b[39;00m\n\u001b[0;32m 204\u001b[0m \u001b[38;5;124;03m Comparing one specific cpc input among activities without method.\u001b[39;00m\n\u001b[0;32m 205\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 209\u001b[0m \n\u001b[0;32m 210\u001b[0m \u001b[38;5;124;03m '''\u001b[39;00m\n\u001b[1;32m--> 211\u001b[0m cpc_input_dataframe \u001b[38;5;241m=\u001b[39m _get_cpc_inputs_of_activities(activities_list, input_type)\n\u001b[0;32m 213\u001b[0m x_input_fltr\u001b[38;5;241m=\u001b[39m [x \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m cpc_input_dataframe\u001b[38;5;241m.\u001b[39mcolumns \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mstr\u001b[39m(input_number) \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mstr\u001b[39m(x)][\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m 215\u001b[0m df\u001b[38;5;241m=\u001b[39m cpc_input_dataframe[x_input_fltr]\n", - "\u001b[1;31mNameError\u001b[0m: name '_get_cpc_inputs_of_activities' is not defined" - ] - } - ], - "source": [ - "dopo.lvl23_plot_input_comparison_plot_no_method(small_cement, input_type='list', input_number='37430') " - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "54c85b8d-bf38-4a2c-975d-a3d5b903aba5", - "metadata": {}, - "outputs": [], - "source": [ - "small_cement_ei39=[x for x in dopo.generate_sets_from_filters(fp_yaml, database=ei39)['Cement'] \n", - " if'Portland' in x['name'] \n", - " and 'Slag' not in x['name'] \n", - " and 'Pozzolana' not in x['name'] \n", - " and 'Europe without Switzerland' not in x['location'] \n", - " and 'RoW' not in x['location']]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "3f7b1f84-9824-47a0-bedd-5b6f6b5a640e", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'calculate_lca_ecoinvent_scores' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[30], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m dopo\u001b[38;5;241m.\u001b[39mlvl3_plot_relative_changes(small_cement_ei39, small_cement, method\u001b[38;5;241m=\u001b[39mmethod_dict[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmethod_1\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mobject\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m.\u001b[39mname )\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\plots.py:244\u001b[0m, in \u001b[0;36mlvl3_plot_relative_changes\u001b[1;34m(database, premise_database, method)\u001b[0m\n\u001b[0;32m 233\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mlvl3_plot_relative_changes\u001b[39m(database, premise_database, method):\n\u001b[0;32m 235\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m'''\u001b[39;00m\n\u001b[0;32m 236\u001b[0m \u001b[38;5;124;03m A function that plots the relative changes in activitiy LCA scores (for one defined method) between a \"raw\" ecoinvent database and a premise transformed ecoinvent database.\u001b[39;00m\n\u001b[0;32m 237\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 241\u001b[0m \n\u001b[0;32m 242\u001b[0m \u001b[38;5;124;03m '''\u001b[39;00m\n\u001b[1;32m--> 244\u001b[0m ecoinvent_scores \u001b[38;5;241m=\u001b[39m calculate_lca_ecoinvent_scores(database, method)\n\u001b[0;32m 245\u001b[0m premise_scores \u001b[38;5;241m=\u001b[39m calculate_lca_premise_scores(premise_database, method)\n\u001b[0;32m 247\u001b[0m relative_changes \u001b[38;5;241m=\u001b[39m calc_relative_changes(ecoinvent_scores, premise_scores)\n", - "\u001b[1;31mNameError\u001b[0m: name 'calculate_lca_ecoinvent_scores' is not defined" - ] - } - ], - "source": [ - "dopo.lvl3_plot_relative_changes(small_cement_ei39, small_cement, method=method_dict['method_1']['object'].name )" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python (premise)", - "language": "python", - "name": "premise" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/dev/notebook tests/test-1.ipynb b/dev/notebook tests/test-1.ipynb deleted file mode 100644 index 600c6a9..0000000 --- a/dev/notebook tests/test-1.ipynb +++ /dev/null @@ -1,1697 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "import dopo\n", - "from dopo import*" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "FILTERS" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Steel': {'yaml': 'yamls\\\\steel_small.yaml', 'yaml identifier': 'Steel'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml', \n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Steel']= {'yaml':'yamls\\steel_small.yaml',\n", - " 'yaml identifier': 'Steel'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - "Processing Steel with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Steel:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '18b0dcf01dd401e1549b3796e3786213')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - "Processing Steel with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Steel:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '18b0dcf01dd401e1549b3796e3786213')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - "Processing Cement with database ecoinvent 3.9.1 cutoff\n", - "Activities for Cement:\n", - " ('ecoinvent 3.9.1 cutoff', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ecoinvent 3.9.1 cutoff', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ecoinvent 3.9.1 cutoff', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ecoinvent 3.9.1 cutoff', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ecoinvent 3.9.1 cutoff', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ecoinvent 3.9.1 cutoff', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ecoinvent 3.9.1 cutoff', '86841f8c7ee2668f244d3b8e34f41932')\n", - "Processing Steel with database ecoinvent 3.9.1 cutoff\n", - "Activities for Steel:\n", - " ('ecoinvent 3.9.1 cutoff', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ecoinvent 3.9.1 cutoff', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ecoinvent 3.9.1 cutoff', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ecoinvent 3.9.1 cutoff', '18b0dcf01dd401e1549b3796e3786213')\n" - ] - } - ], - "source": [ - "import dopo.filter_sectors\n", - "\n", - "#for plot 1 and 2\n", - "dictionary_one = dopo.filter_sectors.process_yaml_files(files_dict, ei39SSP2)\n", - "\n", - "#for comparison\n", - "premise_dict = dopo.filter_sectors.process_yaml_files(files_dict, ei39SSP2)\n", - "ecoinvent_dict = dopo.filter_sectors.process_yaml_files(files_dict, ei39)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27',\n", - " '86841f8c7ee2668f244d3b8e34f41932')" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dictionary_one['Cement']['activities'][0].key" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "database" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder=dopo.methods.MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "0 0.0\n", - "1 0.0\n", - "2 0.0\n", - "3 0.0\n", - "4 0.0\n", - "5 0.0\n", - "6 0.0\n", - "Name: other, dtype: float64\n", - "0 0.008358\n", - "1 0.006612\n", - "2 0.006691\n", - "3 0.003714\n", - "4 0.006260\n", - "5 0.003002\n", - "6 0.005879\n", - "Name: other, dtype: float64\n", - "[None]\n", - "0 0.0\n", - "1 0.0\n", - "2 0.0\n", - "3 0.0\n", - "4 0.0\n", - "5 0.0\n", - "6 0.0\n", - "Name: other, dtype: float64\n", - "0 0.083118\n", - "1 0.109749\n", - "2 0.272431\n", - "3 0.141921\n", - "4 0.114098\n", - "5 0.104153\n", - "6 0.292700\n", - "Name: other, dtype: float64\n", - "[None]\n", - "0 0.0\n", - "1 0.0\n", - "2 0.0\n", - "3 0.0\n", - "4 0.0\n", - "5 0.0\n", - "6 0.0\n", - "Name: other, dtype: float64\n", - "0 0.020712\n", - "1 0.077349\n", - "2 0.011369\n", - "3 0.003362\n", - "4 0.040139\n", - "5 0.021213\n", - "6 0.004656\n", - "Name: other, dtype: float64\n", - "[None]\n", - "0 0.0\n", - "1 0.0\n", - "2 0.0\n", - "3 0.0\n", - "4 0.0\n", - "5 0.0\n", - "6 0.0\n", - "Name: other, dtype: float64\n", - "0 0.001295\n", - "1 0.000416\n", - "2 0.000326\n", - "3 0.000102\n", - "4 0.001221\n", - "5 0.000139\n", - "6 0.000268\n", - "Name: other, dtype: float64\n", - "[None]\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "0 0.0\n", - "1 0.0\n", - "2 0.0\n", - "3 0.0\n", - "Name: other, dtype: float64\n", - "0 -0.031801\n", - "1 -0.004385\n", - "2 -0.032627\n", - "3 0.018912\n", - "Name: other, dtype: float64\n", - "[None]\n", - "0 0.0\n", - "1 0.0\n", - "2 0.0\n", - "3 0.0\n", - "Name: other, dtype: float64\n", - "0 0.342651\n", - "1 0.360257\n", - "2 0.390817\n", - "3 1.127125\n", - "Name: other, dtype: float64\n", - "[None]\n", - "0 0.0\n", - "1 0.0\n", - "2 0.0\n", - "3 0.0\n", - "Name: other, dtype: float64\n", - "0 0.012999\n", - "1 0.045640\n", - "2 0.015952\n", - "3 0.048418\n", - "Name: other, dtype: float64\n", - "[None]\n", - "0 0.0\n", - "1 0.0\n", - "2 0.0\n", - "3 0.0\n", - "Name: other, dtype: float64\n", - "0 0.000684\n", - "1 0.000886\n", - "2 0.000716\n", - "3 0.001132\n", - "Name: other, dtype: float64\n", - "[None]\n" - ] - } - ], - "source": [ - "scores_dictionary_one = dopo.sector_lca_scores(dictionary_one, method_dict, cutoff=0.01)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores(main_dict, method_dict, cutoff=0.02):\n", - " '''\n", - " Generates the LCA score tables for activity list of each sector.\n", - " The tables contain total scores and cpc input contributions.\n", - " This is done by each method defined in the method dictionary.\n", - "\n", - " :param main_dict: dictionary which is returned by process_yaml_files function\n", - " :param method_dict: dictionary which is created with MethodFinder class\n", - " :param cutoff: cutoff value to summarize inputs below or equal to this threshhold in a \"other\" column\n", - "\n", - " It returns the main dictionary updated as scores dictionary which also holds the former information for each sector.\n", - " The LCA scores are stored by method name in the respective sector dictionary within the main dictionary.\n", - " '''\n", - "\n", - " # Initialize scores_dict as a copy of main_dict\n", - " scores_dict = main_dict.copy()\n", - "\n", - " # Loop through each sector in main_dict\n", - " for sector in scores_dict.keys():\n", - " # Extract activities for the current sector\n", - " sector_activities = scores_dict[sector]['activities']\n", - " \n", - " # Calculate LCA scores using the specified method\n", - " lca_scores = compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier=sector,\n", - " mode='absolute'\n", - " )\n", - " \n", - " # Apply the small_inputs_to_other_column function with the cutoff value\n", - " lca_scores_cut = small_inputs_to_other_column(lca_scores, cutoff)\n", - " \n", - " # Save the LCA scores to the scores_dict\n", - " scores_dict[sector]['lca_scores'] = lca_scores_cut\n", - "\n", - " return scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "def _add_statistics(df, column_name='total'):\n", - "\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions\n", - "\n", - " It adds statistical indicators to a dataframe based on total column which are used for plotting.\n", - "\n", - " returns updated dataframe\n", - " '''\n", - " \n", - " #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values)\n", - " df['rank'] = df[column_name].rank(method=\"first\", ascending=False)\n", - "\n", - " # Calculate mean, standard deviation, and IQR\n", - " df['mean'] = df[column_name].mean()\n", - " df['2std_abv'] = df['mean'] + df[column_name].std() * 2\n", - " df['2std_blw'] = df['mean'] - df[column_name].std() * 2\n", - " df['q1'] = df[column_name].quantile(0.25)\n", - " df['q3'] = df[column_name].quantile(0.75)\n", - " \n", - " # Reorder the columns to place the new columns after 'total'\n", - " cols = df.columns.tolist()\n", - " total_index = cols.index(column_name) + 1\n", - " new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3']\n", - " cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)]\n", - " \n", - " return df[cols]\n", - "\n", - "\n", - "def _find_first_input_column(df):\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be called before _clean_column_labels function.\n", - " Detects the first column in the dataframe which contains input contribution data and saves its index. \n", - " This is relevant for calling the right column for defining the to be plotted data dynamically as not all dataframes have the same column order (some contain \"direct emissions\" for instance).\n", - " '''\n", - " \n", - " def _clean_label(label):\n", - " return label if label is not None else 'Unnamed'\n", - " \n", - " # Apply the cleaning function to all column names\n", - " df.columns = [_clean_label(col) for col in df.columns]\n", - " \n", - " # Regular expression pattern to match \"Number: Name\"\n", - " pattern = r'^\\d+:\\s*'\n", - " \n", - " for idx, column in enumerate(df.columns):\n", - " if (column is not None and re.match(pattern, column)) or column == 'Unnamed' or column == 'direct emissions':\n", - " return idx\n", - "\n", - " return None\n", - "\n", - "def _clean_column_labels(df):\n", - "\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be run after _find_first_input_column.\n", - "\n", - " It removes unnecessary numbers in the column header.\n", - "\n", - " Returns df with formated column labels.\n", - " '''\n", - " # Function to remove numbers and colon from column names\n", - " def _clean_label(label):\n", - " if label is None:\n", - " return 'Unnamed' # or return 'Unnamed' if you prefer a placeholder\n", - " return re.sub(r'^\\d+:\\s*', '', str(label))\n", - "\n", - " # Apply the cleaning function to all column names\n", - " df.columns = [_clean_label(col) for col in df.columns]\n", - "\n", - " return df\n", - "\n", - "def _add_sector_marker(df, sector):\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions.\n", - "\n", - " It adds information about the sector for titel and labeling in plotting.\n", - "\n", - " Returns df with added column.\n", - " '''\n", - " \n", - " # Add sector marker column\n", - " df['sector']=str(sector) # potentially remove!\n", - " # Reorder the columns to move 'sector' after 'product'\n", - " columns = list(df.columns)\n", - "\n", - " if 'product' in df.columns:\n", - " product_index = columns.index('product')\n", - " # Insert 'sector' after 'product'\n", - " columns.insert(product_index + 1, columns.pop(columns.index('sector')))\n", - " else:\n", - " # If 'product' does not exist, 'sector' remains in the last column\n", - " columns.append(columns.pop(columns.index('sector')))\n", - " \n", - " # Reassign the DataFrame with the new column order\n", - " df = df[columns]\n", - " return df\n", - "\n", - "def _categorize_sheets_by_sector(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Skip combined sector sheets (assuming these sheets don't have an underscore)\n", - " if '_' not in sheet_name:\n", - " continue\n", - " \n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict\n", - "\n", - "def _add_database_key(df):\n", - " for act in \n", - " df['key']=" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "def sector_lca_scores_to_excel(scores_dict, excel_file_name):\n", - " \"\"\" \n", - " What it does:\n", - " - Creates a dataframe for each method and sector from the lca scores dictionary\n", - " - Before storing each df in a worksheet in an excel file it:\n", - " - shortens the column labels of the input (removing cpc code)\n", - " - adds a sector name marker for keeping track in excel (when plotting can use it for labeling)\n", - " - adds statistics for plotting\n", - " - creates a dictionary which holds the indexes to the columns we need to call for plotting, this makes it dynamic. Otherwise need to hardcode index column number for openpxyl.\n", - " What it returns:\n", - " - Returns the index positions dictionary where the key is \"sector_method\"\n", - " - Creates excel file as defined by user\n", - " \"\"\"\n", - "\n", - " # Dictionary to store positions of columns for each method\n", - " column_positions = {}\n", - "\n", - " # DataFrames to store combined sector data\n", - " combined_sector_dfs = {}\n", - " method_dfs = []\n", - "\n", - " # Process each sector and its methods\n", - " for sector in scores_dict.keys():\n", - " sector_dfs = []\n", - " lca_scores = scores_dict[sector]['lca_scores']\n", - "\n", - " # Process each method for the current sector\n", - " for method, table in lca_scores.items():\n", - " df = pd.DataFrame(table)\n", - "\n", - " # Add sector marker\n", - " df = _add_sector_marker(df, sector)\n", - "\n", - " # Add statistics to the DataFrame\n", - " df = _add_statistics(df)\n", - "\n", - " # Add database key aka activity key\n", - " df = _add_database_key(df)\n", - "\n", - " # Get the index values of columns\n", - " columns_of_interest = [\"total\", \"rank\", \"mean\", \"2std_abv\", \"2std_blw\", \"q1\", \"q3\", \"method\", \"method unit\"]\n", - " positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns}\n", - " column_positions[f\"{sector}_{method}\"] = positions\n", - "\n", - " # Find the first input column and add it to the positions dictionary\n", - " first_input_col_index = _find_first_input_column(df)\n", - " if first_input_col_index is not None:\n", - " positions[\"first_input\"] = first_input_col_index\n", - "\n", - " # Store the positions for this method\n", - " column_positions[f\"{sector}_{method}\"] = positions\n", - "\n", - " # Remove CPC from input labels\n", - " df = _clean_column_labels(df)\n", - "\n", - " sector_dfs.append(df)\n", - "\n", - " # Store method-specific DataFrames for later\n", - " method_dfs.append((f\"{method}\", df))\n", - "\n", - " # Combine all dataframes for this sector\n", - " combined_df = pd.concat(sector_dfs, axis=0, ignore_index=True, sort=False).fillna(0)\n", - " combined_sector_dfs[sector] = combined_df\n", - "\n", - " # Write to Excel file\n", - " with pd.ExcelWriter(excel_file_name, engine='openpyxl') as writer:\n", - " # First write all combined sector sheets\n", - " for sector, combined_df in combined_sector_dfs.items():\n", - " worksheet_name_big = f\"{sector}\"\n", - " if len(worksheet_name_big) > 31:\n", - " worksheet_name_big = worksheet_name_big[:31]\n", - " combined_df.to_excel(writer, sheet_name=worksheet_name_big, index=False)\n", - "\n", - " # Then write all method-specific sheets\n", - " for worksheet_name, df in method_dfs:\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)\n", - "\n", - " return column_positions\n" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "index_pos=sector_lca_scores_to_excel(scores_dictionary_one, '2808_v7.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "\n", - "def dot_plots_xcl(filepath_workbook, index_positions):\n", - "\n", - " worksheet_dict = _categorize_sheets_by_sector(filepath_workbook)\n", - " \n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name) \n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " current_col = 1 # Start placing charts from column 1\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " min_row = 1\n", - "\n", - " # Find the key in index_positions that contains worksheet_name\n", - " matching_key = None\n", - " for key in index_positions.keys():\n", - " if worksheet_name in key:\n", - " matching_key = key\n", - " break\n", - "\n", - " if not matching_key:\n", - " print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = index_positions[matching_key]\n", - " total_col = positions.get(\"total\", None) + 1\n", - " rank_col = positions.get(\"rank\", None) + 1\n", - " mean_col = positions.get(\"mean\", None) + 1\n", - " std_adv_col = positions.get(\"2std_abv\", None) + 1\n", - " std_blw_col = positions.get(\"2std_blw\", None) + 1\n", - " q1_col = positions.get(\"q1\", None) + 1\n", - " q3_col = positions.get(\"q3\", None) + 1\n", - " method_col = positions.get(\"method\", None) + 1\n", - " method_unit_col = positions.get(\"method unit\", None) + 1\n", - " \n", - " # Ensure that all required columns are present\n", - " if None in [total_col, rank_col, mean_col, std_adv_col, std_blw_col, q1_col, q3_col, method_col, method_unit_col]:\n", - " print(f\"Warning: Missing columns in worksheet '{worksheet_name}' for sector '{sector}'. Skipping...\")\n", - " continue\n", - " \n", - " # Create a ScatterChart (or other chart type as needed)\n", - " chart = ScatterChart()\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"{method_value} LCA scores for {sector} sector\" \n", - " \n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.y_axis.title = f\"{method_unit_value}\"\n", - " chart.x_axis.title = 'activity rank'\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - "\n", - " # Define the data range for the chart\n", - " y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row)\n", - " x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row)\n", - "\n", - " # Create a series and add it to the chart\n", - " series = Series(y_values, x_values, title_from_data=True)\n", - " chart.series.append(series)\n", - " chart.style = 9\n", - "\n", - " # Customize the series to show only markers (dots)\n", - " series.marker.symbol = \"circle\"\n", - " series.marker.size = 5\n", - " series.graphicalProperties.line.noFill = True\n", - "\n", - " # ADJUST X-AXIS\n", - " chart.x_axis.tickLblPos = \"low\"\n", - " chart.x_axis.majorGridlines = None \n", - " chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines \n", - " chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work\n", - "\n", - " chart.x_axis.scaling.orientation = \"minMax\"\n", - " chart.x_axis.crosses = \"autoZero\"\n", - " chart.x_axis.axPos = \"b\"\n", - " chart.x_axis.delete = False\n", - "\n", - " # ADJUST Y-AXIS\n", - " chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.00000'\n", - " chart.y_axis.majorGridlines = None \n", - "\n", - " # ADD STATS\n", - " # MEAN\n", - " mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row)\n", - " mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - " chart.series.append(mean_series)\n", - " mean_series.marker.symbol = \"none\" # No markers, just a line\n", - " mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - " mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # IQR\n", - " iqr1 = Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row)\n", - " iqr3 = Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row)\n", - " iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - " iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - " chart.series.append(iqr1_series)\n", - " chart.series.append(iqr3_series)\n", - " iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - " iqr3_series.marker.symbol = \"none\"\n", - " iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - " iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - " iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # STD\n", - " std_abv = Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row)\n", - " std_blw = Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row)\n", - " std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - " std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - " chart.series.append(std_abv_series)\n", - " chart.series.append(std_blw_series)\n", - " std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - " std_blw_series.marker.symbol = \"none\"\n", - " std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - " std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - " std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # Set legend position to the right of the plot area\n", - " chart.legend.position = 'r' # 'r' for right\n", - " chart.legend.overlay = False\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width +1 \n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - "\n", - " wb.save(filepath_workbook)\n", - " return current_row\n", - "\n", - "\n", - "from openpyxl import load_workbook\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def stacked_bars_xcl(filepath_workbook, index_positions, current_row_dot_plot):\n", - "\n", - " worksheet_dict = _categorize_sheets_by_sector(filepath_workbook)\n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " current_row = current_row_dot_plot + chart_height # Start placing charts from row where dot plots have left of\n", - " current_col = 1 # Start placing charts from column 1\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find the key in index_positions that contains worksheet_name\n", - " matching_key = None\n", - " for key in index_positions.keys():\n", - " if worksheet_name in key:\n", - " matching_key = key\n", - " break\n", - "\n", - " if not matching_key:\n", - " print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = index_positions[matching_key]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " input_min_col = positions.get(\"first_input\", None) + 1\n", - " rank_col = positions.get(\"rank\", None) + 1\n", - " method_col = positions.get(\"method\", None) + 1\n", - " method_unit_col = positions.get(\"method unit\", None) + 1\n", - "\n", - " chart = BarChart()\n", - " chart.type = \"bar\"\n", - " chart.style = 2\n", - " chart.grouping = \"stacked\"\n", - " chart.overlap = 100\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"{sector} sector inputs contributions to {method_value}\"\n", - "\n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.y_axis.title = f\"{method_unit_value}\"\n", - " \n", - " chart.x_axis.title = 'activity rank'\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Define data\n", - " data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col=max_column)\n", - " cats = Reference(ws, min_col=rank_col, min_row=2, max_row=max_row)\n", - "\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(cats)\n", - " chart.shape = 4\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis ticks\n", - " chart.y_axis.tickLblPos = \"nextTo\"\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width +1\n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - " \n", - " wb.save(filepath_workbook)\n", - " return current_row" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "import re\n", - "import pandas as pd\n", - "from dopo import generate_sets_from_filters\n", - "from dopo import compare_activities_multiple_methods\n", - "from dopo import small_inputs_to_other_column\n", - "import openpyxl\n", - "from openpyxl import load_workbook\n", - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def _lca_scores_compare(database_dict, method_dict):\n", - " # Dictionary to store DataFrames for each sector\n", - " sector_dataframes = {}\n", - "\n", - " # Labels for the DataFrame columns\n", - " labels = [\n", - " \"activity\",\n", - " \"activity key\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method\",\n", - " \"method unit\",\n", - " \"total\",\n", - " ]\n", - "\n", - " # Loop through each sector in the database_dict\n", - " for sector, sector_data in database_dict.items():\n", - " # Initialize a dictionary to hold DataFrames for each method in the current sector\n", - " method_dataframes = {}\n", - "\n", - " # Loop through each method in method_dict\n", - " for meth_key, meth_info in method_dict.items():\n", - " data = [] # Initialize a new list to hold data for the current method\n", - " \n", - " # Extract the 'method name' tuple from the current method info\n", - " method_name = meth_info['method name']\n", - " method_short_name=meth_info['short name']\n", - " method_unit = meth_info['unit']\n", - "\n", - " # Now loop through each activity in the sector\n", - " for act in sector_data['activities']:\n", - " # Ensure the activity is an instance of the expected class\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - " \n", - " # Perform LCA calculations\n", - " lca = bw.LCA({act: 1}, method_name)\n", - " lca.lci()\n", - " lca.lcia()\n", - " \n", - " # Collect data for the current activity and method\n", - " data.append([\n", - " act[\"name\"],\n", - " act.key,\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " method_short_name,\n", - " method_unit,\n", - " lca.score,\n", - " ])\n", - " \n", - " # Convert the data list to a DataFrame and store it in the sector's dictionary\n", - " method_dataframes[method_short_name] = pd.DataFrame(data, columns=labels)\n", - "\n", - " # Store the method_dataframes dictionary in the sector_dataframes dictionary\n", - " sector_dataframes[sector] = method_dataframes\n", - "\n", - " # Now `sector_dataframes` is a dictionary where each key is a sector, and the value is another dictionary with method names and their corresponding DataFrames\n", - " return sector_dataframes\n", - "\n", - "\n", - "import pandas as pd\n", - "\n", - "def _relative_changes_df(database_dict_eco, database_dict_premise, method_dict):\n", - "\n", - " ecoinvent_scores = _lca_scores_compare(database_dict_eco, method_dict)\n", - " premise_scores = _lca_scores_compare(database_dict_premise, method_dict)\n", - "\n", - " relative_dict = {}\n", - "\n", - " # Iterate over sectors\n", - " for sector_key in ecoinvent_scores:\n", - " # Initialize the sector key in the output dictionary\n", - " if sector_key not in relative_dict:\n", - " relative_dict[sector_key] = {}\n", - "\n", - " # Iterate over methods within the sector\n", - " for method_key in ecoinvent_scores[sector_key]:\n", - " # Check if the method_key exists in both dictionaries to avoid KeyError\n", - " if method_key in premise_scores.get(sector_key, {}):\n", - " # Get the corresponding DataFrames\n", - " df_ei = ecoinvent_scores[sector_key][method_key]\n", - " df_premise = premise_scores[sector_key][method_key]\n", - "\n", - " #print(df_ei['activity key'])\n", - " #print(df_premise)\n", - "\n", - " # Split the 'activity key' to extract the second part\n", - " df_ei['activity_code'] = df_ei['activity key'].apply(lambda x: x[1]) # Access the second element of the tuple\n", - " df_premise['activity_code'] = df_premise['activity key'].apply(lambda x: x[1])\n", - "\n", - " # Merge the two dataframes based on the activity code and method name\n", - " merged_df = pd.merge(df_ei, df_premise, on=['activity_code', 'method name'], suffixes=('_ei', '_premise'))\n", - "\n", - " # Calculate the relative change\n", - " merged_df['relative_change'] = ((merged_df['total_premise'] - merged_df['total_ei']) / merged_df['total_ei']) * 100\n", - "\n", - " # Store the result in the dictionary\n", - " relative_dict[sector_key][method_key] = merged_df\n", - "\n", - " return relative_dict\n", - "\n", - "def _add_sector_marker(df, sector):\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions.\n", - "\n", - " It adds information about the sector for titel and labeling in plotting.\n", - "\n", - " Returns df with added column.\n", - " '''\n", - " \n", - " # Add sector marker column\n", - " df['sector']=str(sector) # potentially remove!\n", - " # Reorder the columns to move 'sector' after 'product'\n", - " columns = list(df.columns)\n", - "\n", - " if 'product' in df.columns:\n", - " product_index = columns.index('product')\n", - " # Insert 'sector' after 'product'\n", - " columns.insert(product_index + 1, columns.pop(columns.index('sector')))\n", - " else:\n", - " # If 'product' does not exist, 'sector' remains in the last column\n", - " columns.append(columns.pop(columns.index('sector')))\n", - " \n", - " # Reassign the DataFrame with the new column order\n", - " df = df[columns]\n", - " return df\n", - "\n", - "# def relative_changes_db(database_dict_eco, database_dict_premise, method_dict, excel_file):\n", - "\n", - "# relative_dict = (_relative_changes_df(database_dict_eco, database_dict_premise, method_dict))\n", - " \n", - "# # Prepare to save each LCA score table to a different worksheet in the same Excel file\n", - "\n", - "# column_positions = {} #stores the indexes of columns for plotting\n", - "# with pd.ExcelWriter(excel_file, engine='openpyxl') as writer:\n", - "# for sector in relative_dict.keys():\n", - "# relative_changes = relative_dict[sector]\n", - " \n", - "# for method, table in relative_changes.items():\n", - "# # Create a DataFrame for the current LCA score table\n", - "# df = pd.DataFrame(table)\n", - "\n", - "# # Add sector marker\n", - "# df = _add_sector_marker(df, sector) #!! ADJUST \n", - "\n", - "# # Sort the DataFrame by 'relative_change' from largest negative to largest positive\n", - "# df = df.sort_values(by='relative_change', ascending=False)\n", - "\n", - "# # Add a 'rank' column based on the 'relative_change', ranking from most negative to least negative\n", - "# df['rank'] = df['relative_change'].rank(ascending=False, method='dense').astype(int)\n", - " \n", - "# # Get the index values of columns\n", - "# columns_of_interest = [\"rank\", \"relative_change\", \"method\", \"method unit\", ]\n", - "# positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns}\n", - "# column_positions[method] = positions\n", - "\n", - "# # Generate worksheet name\n", - "# worksheet_name = f\"{sector}_comparison_{method}\"\n", - "# if len(worksheet_name) > 31:\n", - "# worksheet_name = worksheet_name[:31]\n", - "\n", - "# # Save the DataFrame to the Excel file in a new worksheet\n", - "# df.to_excel(writer, sheet_name=worksheet_name, index=False)\n", - "# return column_positions\n", - "\n", - "import pandas as pd\n", - "from openpyxl import load_workbook\n", - "\n", - "def relative_changes_db(database_dict_eco, database_dict_premise, method_dict, excel_file):\n", - " relative_dict = _relative_changes_df(database_dict_eco, database_dict_premise, method_dict)\n", - " \n", - " # Load existing workbook and get existing sheet names\n", - " try:\n", - " book = load_workbook(excel_file)\n", - " existing_sheets = book.sheetnames\n", - " except FileNotFoundError:\n", - " # If the file does not exist, we will create a new one, so no need to check existing sheets\n", - " existing_sheets = []\n", - " \n", - " column_positions = {} # stores the indexes of columns for plotting\n", - " \n", - " with pd.ExcelWriter(excel_file, engine='openpyxl', mode='a') as writer:\n", - " for sector in relative_dict.keys():\n", - " relative_changes = relative_dict[sector]\n", - " \n", - " for method, table in relative_changes.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - "\n", - " # Add sector marker\n", - " df = _add_sector_marker(df, sector) #!! ADJUST \n", - "\n", - " # Sort the DataFrame by 'relative_change' from largest negative to largest positive\n", - " df = df.sort_values(by='relative_change', ascending=False)\n", - "\n", - " # Add a 'rank' column based on the 'relative_change', ranking from most negative to least negative\n", - " df['rank'] = df['relative_change'].rank(ascending=False, method='dense').astype(int)\n", - " \n", - " # Get the index values of columns\n", - " columns_of_interest = [\"rank\", \"relative_change\", \"method\", \"method unit\"]\n", - " positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns}\n", - " column_positions[method] = positions\n", - "\n", - " # Generate worksheet name\n", - " worksheet_name = f\"{sector}_comparison_{method}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " \n", - " # Ensure unique sheet name\n", - " original_worksheet_name = worksheet_name\n", - " counter = 1\n", - " while worksheet_name in existing_sheets:\n", - " worksheet_name = f\"{original_worksheet_name}_{counter}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " counter += 1\n", - "\n", - " # Save the DataFrame to the Excel file in a new worksheet\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)\n", - " \n", - " return column_positions\n" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warning: No matching key found for worksheet 'Steel_charts'. Skipping...\n", - "Warning: No matching key found for worksheet 'Cement_charts'. Skipping...\n" - ] - } - ], - "source": [ - "index_post=sector_lca_scores_to_excel(scores_dictionary_one, '2808_v16.xlsx')\n", - "last_row= dot_plots_xcl('2808_v16.xlsx',index_pos)\n", - "current_row_stacked_bar=stacked_bars_xcl('2808_v16.xlsx', index_pos, last_row)" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def stacked_bars_xcl(filepath_workbook, column_positions, current_row_dot_plot):\n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sheet in the workbook\n", - " for sector in wb.sheetnames:\n", - " # Skip chart sheets\n", - " if sector.endswith(\"_charts\"):\n", - " continue\n", - "\n", - " ws = wb[sector]\n", - "\n", - " # Check if the sector exists in column_positions\n", - " if sector not in column_positions:\n", - " print(f\"Warning: '{sector}' not found in column_positions. Skipping...\")\n", - " continue\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " current_row = current_row_dot_plot + chart_height # Start placing charts from row where dot plots have left of\n", - " current_col = 1 # Start placing charts from column 1\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Retrieve the first metric to get the method column index\n", - " first_metric_positions = next(iter(column_positions[sector].values()))\n", - " method_col_idx = first_metric_positions[\"method\"] + 1\n", - " \n", - " # Get the unique methods present in the data\n", - " methods = list(set([ws.cell(row=i, column=method_col_idx).value for i in range(2, ws.max_row + 1)]))\n", - " \n", - " # Iterate over each unique method and create a chart\n", - " for method in methods:\n", - " # Filter rows based on the current method\n", - " filtered_rows = [i for i in range(2, ws.max_row + 1) if ws.cell(row=i, column=method_col_idx).value == method]\n", - "\n", - " if not filtered_rows:\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = column_positions[sector].get(method, {})\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " # input_min_col = positions.get(\"first_input\", None) + 1\n", - " # rank_col = positions.get(\"rank\", None) + 1\n", - " # method_col = positions.get(\"method\", None) + 1\n", - " # method_unit_col = positions.get(\"method unit\", None) + 1\n", - "\n", - " chart = BarChart()\n", - " chart.type = \"bar\"\n", - " chart.style = 2\n", - " chart.grouping = \"stacked\"\n", - " chart.overlap = 100\n", - "\n", - " # Chart titles\n", - " chart.title = f\"{sector} sector inputs contributions to {method}\"\n", - "\n", - " method_unit_value = ws.cell(row=2, column=first_metric_positions[\"method unit\"] + 1).value\n", - " chart.y_axis.title = f\"{method_unit_value}\"\n", - " chart.x_axis.title = 'activity rank'\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Define data\n", - " data = Reference(ws, min_col=first_metric_positions['total']+2, max_col= ws.max_column, min_row=filtered_rows[0], max_row=filtered_rows[-1]) #max_col=input_min_col + len(filtered_rows) - 1)\n", - " cats = Reference(ws, min_col=first_metric_positions[\"rank\"] + 1, min_row=filtered_rows[0], max_row=filtered_rows[-1])\n", - "\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(cats)\n", - " chart.shape = 4\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis ticks\n", - " chart.y_axis.tickLblPos = \"nextTo\"\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width + 1\n", - " if len(methods) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height + 1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - " \n", - " # Save the workbook\n", - " wb.save(filepath_workbook)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "metadata": {}, - "outputs": [], - "source": [ - "def _categorize_sheets_by_sector_comparison(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Skip combined sector sheets (assuming these sheets don't have an underscore)\n", - " if '_comparison' not in sheet_name:\n", - " continue\n", - " \n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict\n" - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def barchart_compare_db_xcl(filename, current_row_stacked_bar): #, index_positions=None):\n", - " \n", - " worksheet_dict=_categorize_sheets_by_sector_comparison(file_path=filename)\n", - " # Load the workbook and select the sheet\n", - " wb = load_workbook(filename)\n", - "\n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name) \n", - " \n", - " # Initial position for the first chart\n", - " current_col = 1 # Start placing charts from column 1\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " charts_per_row = 3 # Number of charts per row\n", - " current_row = current_row_stacked_bar + chart_height\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # # Find the key in index_positions that contains worksheet_name\n", - " # matching_key = None\n", - " # for key in index_positions.keys():\n", - " # if worksheet_name in key:\n", - " # matching_key = key\n", - " # break\n", - "\n", - " # if not matching_key:\n", - " # print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " # continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " # positions = index_positions[matching_key]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " min_col_data = 15 #positions.get(\"relative_change\", None) + 1\n", - " rank_col = 17#positions.get(\"rank\", None) + 1\n", - " method_col = 5#positions.get(\"method\", None) + 1\n", - " method_unit_col = 6#positions.get(\"method unit\", None) + 1\n", - "\n", - " # Create a bar chart\n", - " chart = BarChart()\n", - " chart.type=\"bar\"\n", - " chart.style=2\n", - " chart.overlap= 100\n", - " chart.title = \"Relative Change in LCA Scores\"\n", - "\n", - " chart.y_axis.title = \"Activity\"\n", - " chart.x_axis.title = \"Relative Change (%)\"\n", - "\n", - " # Set the data for the chart\n", - " data = Reference(ws, min_col=min_col_data, min_row=1, max_row=ws.max_row)\n", - " categories = Reference(ws, min_col=rank_col, min_row=2, max_row=ws.max_row)\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(categories)\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis (categories) settings\n", - " chart.y_axis.tickLblPos = \"low\"\n", - " chart.y_axis.majorGridlines = None \n", - " chart.y_axis.tickMarkSkip = 1\n", - " chart.y_axis.tickLblSkip = 1\n", - " chart.y_axis.delete = False\n", - "\n", - " # x-axis (values) settings\n", - " #chart.x_axis.majorGridlines = MajorGridlines() # Show gridlines for easier reading\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"{sector} {method_value} database lca scores relative changes\"\n", - "\n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.x_axis.title = f\"Relative Change (%) - {method_unit_value}\"\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20\n", - " chart.height = 14\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - "\n", - " # Update position for the next chart\n", - " current_col += chart_width +1 \n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - "\n", - " # Add the chart to a new worksheet\n", - " # new_sheet = wb.create_sheet(title=\"LCA Chart\")\n", - " # new_sheet.add_chart(chart, \"A1\")\n", - "\n", - " # Save the workbook\n", - " wb.save(filename)\n", - "\n", - " print(f\"Results and chart saved to {filename}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 107, - "metadata": {}, - "outputs": [], - "source": [ - "relative_changes_db(premise_dict, ecoinvent_dict, method_dict, '2808_v16.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Results and chart saved to 2808_v15.xlsx\n" - ] - } - ], - "source": [ - "barchart_compare_db_xcl('2808_v16.xlsx', current_row_stacked_bar)" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement',\n", - " 'activities': ['cement production, Portland' (kilogram, ZA, None),\n", - " 'cement production, Portland' (kilogram, BR, None),\n", - " 'cement production, Portland' (kilogram, IN, None),\n", - " 'cement production, Portland' (kilogram, CA-QC, None),\n", - " 'cement production, Portland' (kilogram, US, None),\n", - " 'cement production, Portland' (kilogram, CH, None),\n", - " 'cement production, Portland' (kilogram, PE, None)]},\n", - " 'Steel': {'yaml': 'yamls\\\\steel_small.yaml',\n", - " 'yaml identifier': 'Steel',\n", - " 'activities': ['steel production, electric, low-alloyed' (kilogram, CH, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, CA-QC, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, IN, None),\n", - " 'steel production, electric, low-alloyed' (kilogram, AT, None)]}}" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "premise_dict" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement_global_warming_potential_(gwp100)': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Cement_land_occupation': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Cement_use_of_net_fresh_water': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Steel_global_warming_potential_(gwp100)': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Steel_cumulative_energy_demand_-_non-renewable_energy_resources': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Steel_land_occupation': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Steel_use_of_net_fresh_water': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14}}" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import dopo.lca_to_xcl\n", - "\n", - "\n", - "dopo.sector_lca_scores_to_excel_and_column_positions(scores_dictionary_one, '2808_v5.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "property 'sheets' of 'OpenpyxlWriter' object has no setter", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[45], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m sector_lca_scores_to_big_table(scores_dictionary_one, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m2808_v5.xlsx\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "Cell \u001b[1;32mIn[44], line 13\u001b[0m, in \u001b[0;36msector_lca_scores_to_big_table\u001b[1;34m(scores_dict, excel_file_name)\u001b[0m\n\u001b[0;32m 11\u001b[0m book \u001b[38;5;241m=\u001b[39m load_workbook(excel_file)\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pd\u001b[38;5;241m.\u001b[39mExcelWriter(excel_file, engine\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mopenpyxl\u001b[39m\u001b[38;5;124m'\u001b[39m, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ma\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m writer:\n\u001b[1;32m---> 13\u001b[0m writer\u001b[38;5;241m.\u001b[39msheets \u001b[38;5;241m=\u001b[39m {ws\u001b[38;5;241m.\u001b[39mtitle: ws \u001b[38;5;28;01mfor\u001b[39;00m ws \u001b[38;5;129;01min\u001b[39;00m book\u001b[38;5;241m.\u001b[39mworksheets} \u001b[38;5;66;03m# Map the existing sheets to the writer\u001b[39;00m\n\u001b[0;32m 14\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m sector \u001b[38;5;129;01min\u001b[39;00m scores_dict\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[0;32m 15\u001b[0m df \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mDataFrame(scores_dict[sector])\n", - "\u001b[1;31mAttributeError\u001b[0m: property 'sheets' of 'OpenpyxlWriter' object has no setter" - ] - } - ], - "source": [ - "sector_lca_scores_to_big_table(scores_dictionary_one, '2808_v5.xlsx')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/test-2.ipynb b/dev/notebook tests/test-2.ipynb deleted file mode 100644 index 36d9226..0000000 --- a/dev/notebook tests/test-2.ipynb +++ /dev/null @@ -1,1304 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "import dopo\n", - "from dopo import*" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "FILTERS" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Steel': {'yaml': 'yamls\\\\steel_small.yaml', 'yaml identifier': 'Steel'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml', \n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Steel']= {'yaml':'yamls\\steel_small.yaml',\n", - " 'yaml identifier': 'Steel'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - "Processing Steel with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Steel:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '18b0dcf01dd401e1549b3796e3786213')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - "Processing Steel with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Steel:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '18b0dcf01dd401e1549b3796e3786213')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - "Processing Cement with database ecoinvent 3.9.1 cutoff\n", - "Activities for Cement:\n", - " ('ecoinvent 3.9.1 cutoff', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ecoinvent 3.9.1 cutoff', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ecoinvent 3.9.1 cutoff', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ecoinvent 3.9.1 cutoff', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ecoinvent 3.9.1 cutoff', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ecoinvent 3.9.1 cutoff', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ecoinvent 3.9.1 cutoff', '3c16b45db40210cd97de6574b2f47aaf')\n", - "Processing Steel with database ecoinvent 3.9.1 cutoff\n", - "Activities for Steel:\n", - " ('ecoinvent 3.9.1 cutoff', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ecoinvent 3.9.1 cutoff', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ecoinvent 3.9.1 cutoff', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ecoinvent 3.9.1 cutoff', '18b0dcf01dd401e1549b3796e3786213')\n" - ] - } - ], - "source": [ - "import dopo.filter_sectors\n", - "\n", - "#for plot 1 and 2\n", - "dictionary_one = dopo.filter_sectors.process_yaml_files(files_dict, ei39SSP2)\n", - "\n", - "#for comparison\n", - "premise_dict = dopo.filter_sectors.process_yaml_files(files_dict, ei39SSP2)\n", - "ecoinvent_dict = dopo.filter_sectors.process_yaml_files(files_dict, ei39)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder=dopo.methods.MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n" - ] - } - ], - "source": [ - "scores_dictionary_one = dopo.sector_lca_scores(dictionary_one, method_dict, cutoff=0.2)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "from openpyxl import load_workbook\n", - "\n", - "def _add_statistics(df, column_name='total'):\n", - "\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions\n", - "\n", - " It adds statistical indicators to a dataframe based on total column which are used for plotting.\n", - "\n", - " returns updated dataframe\n", - " '''\n", - " \n", - " #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values)\n", - " df['rank'] = df[column_name].rank(method=\"first\", ascending=False)\n", - "\n", - " # Calculate mean, standard deviation, and IQR\n", - " df['mean'] = df[column_name].mean()\n", - " df['2std_abv'] = df['mean'] + df[column_name].std() * 2\n", - " df['2std_blw'] = df['mean'] - df[column_name].std() * 2\n", - " df['q1'] = df[column_name].quantile(0.25)\n", - " df['q3'] = df[column_name].quantile(0.75)\n", - " \n", - " # Reorder the columns to place the new columns after 'total'\n", - " cols = df.columns.tolist()\n", - " total_index = cols.index(column_name) + 1\n", - " new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3']\n", - " cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)]\n", - " \n", - " return df[cols]\n", - "\n", - "\n", - "def _find_first_input_column(df):\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be called before _clean_column_labels function.\n", - " Detects the first column in the dataframe which contains input contribution data and saves its index. \n", - " This is relevant for calling the right column for defining the to be plotted data dynamically as not all dataframes have the same column order (some contain \"direct emissions\" for instance).\n", - " '''\n", - " \n", - " def _clean_label(label):\n", - " return label if label is not None else 'Unnamed'\n", - " \n", - " # Apply the cleaning function to all column names\n", - " df.columns = [_clean_label(col) for col in df.columns]\n", - " \n", - " # Regular expression pattern to match \"Number: Name\"\n", - " pattern = r'^\\d+:\\s*'\n", - " \n", - " for idx, column in enumerate(df.columns):\n", - " if (column is not None and re.match(pattern, column)) or column == 'Unnamed' or column == 'direct emissions':\n", - " return idx\n", - "\n", - " return None\n", - "\n", - "def _clean_column_labels(df):\n", - "\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be run after _find_first_input_column.\n", - "\n", - " It removes unnecessary numbers in the column header.\n", - "\n", - " Returns df with formated column labels.\n", - " '''\n", - " # Function to remove numbers and colon from column names\n", - " def _clean_label(label):\n", - " if label is None:\n", - " return 'Unnamed' # or return 'Unnamed' if you prefer a placeholder\n", - " return re.sub(r'^\\d+:\\s*', '', str(label))\n", - "\n", - " # Apply the cleaning function to all column names\n", - " df.columns = [_clean_label(col) for col in df.columns]\n", - "\n", - " return df\n", - "\n", - "def _add_sector_marker(df, sector):\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions.\n", - "\n", - " It adds information about the sector for titel and labeling in plotting.\n", - "\n", - " Returns df with added column.\n", - " '''\n", - " \n", - " # Add sector marker column\n", - " df['sector']=str(sector) # potentially remove!\n", - " # Reorder the columns to move 'sector' after 'product'\n", - " columns = list(df.columns)\n", - "\n", - " if 'product' in df.columns:\n", - " product_index = columns.index('product')\n", - " # Insert 'sector' after 'product'\n", - " columns.insert(product_index + 1, columns.pop(columns.index('sector')))\n", - " else:\n", - " # If 'product' does not exist, 'sector' remains in the last column\n", - " columns.append(columns.pop(columns.index('sector')))\n", - " \n", - " # Reassign the DataFrame with the new column order\n", - " df = df[columns]\n", - " return df\n", - "\n", - "def _categorize_sheets_by_sector(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Skip combined sector sheets (assuming these sheets don't have an underscore)\n", - " if '_' not in sheet_name:\n", - " continue\n", - " \n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "def sector_lca_scores_to_excel(scores_dict, excel_file_name):\n", - " \"\"\" \n", - " What it does:\n", - " - Creates a dataframe for each method and sector from the lca scores dictionary\n", - " - Before storing each df in a worksheet in an excel file it:\n", - " - shortens the column labels of the input (removing cpc code)\n", - " - adds a sector name marker for keeping track in excel (when plotting can use it for labeling)\n", - " - adds statistics for plotting\n", - " - creates a dictionary which holds the indexes to the columns we need to call for plotting, this makes it dynamic. Otherwise need to hardcode index column number for openpxyl.\n", - " What it returns:\n", - " - Returns the index positions dictionary where the key is \"sector_method\"\n", - " - Creates excel file as defined by user\n", - " \"\"\"\n", - "\n", - " # Dictionary to store positions of columns for each method\n", - " column_positions = {}\n", - "\n", - " # DataFrames to store combined sector data\n", - " combined_sector_dfs = {}\n", - " method_dfs = []\n", - "\n", - " # Process each sector and its methods\n", - " for sector in scores_dict.keys():\n", - " sector_dfs = []\n", - " lca_scores = scores_dict[sector]['lca_scores']\n", - "\n", - " # Process each method for the current sector\n", - " for method, table in lca_scores.items():\n", - " df = pd.DataFrame(table)\n", - "\n", - " # Add sector marker\n", - " df = _add_sector_marker(df, sector)\n", - "\n", - " # Add statistics to the DataFrame\n", - " df = _add_statistics(df)\n", - "\n", - " # Get the index values of columns\n", - " columns_of_interest = [\"total\", \"rank\", \"mean\", \"2std_abv\", \"2std_blw\", \"q1\", \"q3\", \"method\", \"method unit\"]\n", - " positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns}\n", - " column_positions[f\"{sector}_{method}\"] = positions\n", - " #column_positions[sector][method]=positions\n", - "\n", - "\n", - " # Find the first input column and add it to the positions dictionary\n", - " first_input_col_index = _find_first_input_column(df)\n", - " if first_input_col_index is not None:\n", - " positions[\"first_input\"] = first_input_col_index\n", - "\n", - " # Store the positions for this method\n", - " column_positions[f\"{sector}_{method}\"]= positions\n", - "\n", - " # Remove CPC from input labels\n", - " df = _clean_column_labels(df)\n", - "\n", - " sector_dfs.append(df)\n", - "\n", - " # Store method-specific DataFrames for later\n", - " method_dfs.append((f\"{sector}_{method}\", df))\n", - "\n", - " # Combine all dataframes for this sector\n", - " combined_df = pd.concat(sector_dfs, axis=0, ignore_index=True, sort=False).fillna(0)\n", - " combined_sector_dfs[sector] = combined_df\n", - "\n", - " # Write to Excel file\n", - " with pd.ExcelWriter(excel_file_name, engine='openpyxl') as writer:\n", - " # First write all combined sector sheets\n", - " for sector, combined_df in combined_sector_dfs.items():\n", - " worksheet_name_big = f\"{sector}\"\n", - " if len(worksheet_name_big) > 31:\n", - " worksheet_name_big = worksheet_name_big[:31]\n", - " combined_df.to_excel(writer, sheet_name=worksheet_name_big, index=False)\n", - "\n", - " # Then write all method-specific sheets\n", - " for worksheet_name, df in method_dfs:\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)\n", - "\n", - " return column_positions\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "\n", - "def dot_plots_xcl(filepath_workbook, index_positions):\n", - "\n", - " worksheet_dict = _categorize_sheets_by_sector(filepath_workbook)\n", - " \n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name) \n", - " \n", - " # Initial position for the first chart\n", - " current_row = 1 # Start placing charts from row 1\n", - " current_col = 1 # Start placing charts from column 1\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " min_row = 1\n", - "\n", - " # Find the key in index_positions that contains worksheet_name\n", - " matching_key = None\n", - " for key in index_positions.keys():\n", - " if worksheet_name in key:\n", - " matching_key = key\n", - " break\n", - "\n", - " if not matching_key:\n", - " print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = index_positions[matching_key]\n", - " total_col = positions.get(\"total\", None) + 1\n", - " rank_col = positions.get(\"rank\", None) + 1\n", - " mean_col = positions.get(\"mean\", None) + 1\n", - " std_adv_col = positions.get(\"2std_abv\", None) + 1\n", - " std_blw_col = positions.get(\"2std_blw\", None) + 1\n", - " q1_col = positions.get(\"q1\", None) + 1\n", - " q3_col = positions.get(\"q3\", None) + 1\n", - " method_col = positions.get(\"method\", None) + 1\n", - " method_unit_col = positions.get(\"method unit\", None) + 1\n", - " \n", - " # Ensure that all required columns are present\n", - " if None in [total_col, rank_col, mean_col, std_adv_col, std_blw_col, q1_col, q3_col, method_col, method_unit_col]:\n", - " print(f\"Warning: Missing columns in worksheet '{worksheet_name}' for sector '{sector}'. Skipping...\")\n", - " continue\n", - " \n", - " # Create a ScatterChart (or other chart type as needed)\n", - " chart = ScatterChart()\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"{method_value} LCA scores for {sector} sector\" \n", - " \n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.y_axis.title = f\"{method_unit_value}\"\n", - " chart.x_axis.title = 'activity rank'\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - "\n", - " # Define the data range for the chart\n", - " y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row)\n", - " x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row)\n", - "\n", - " # Create a series and add it to the chart\n", - " series = Series(y_values, x_values, title_from_data=True)\n", - " chart.series.append(series)\n", - " chart.style = 9\n", - "\n", - " # Customize the series to show only markers (dots)\n", - " series.marker.symbol = \"circle\"\n", - " series.marker.size = 5\n", - " series.graphicalProperties.line.noFill = True\n", - "\n", - " # ADJUST X-AXIS\n", - " chart.x_axis.tickLblPos = \"low\"\n", - " chart.x_axis.majorGridlines = None \n", - " chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines \n", - " chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work\n", - "\n", - " chart.x_axis.scaling.orientation = \"minMax\"\n", - " chart.x_axis.crosses = \"autoZero\"\n", - " chart.x_axis.axPos = \"b\"\n", - " chart.x_axis.delete = False\n", - "\n", - " # ADJUST Y-AXIS\n", - " chart.y_axis.tickLblPos = \"nextTo\" # Position the labels next to the tick marks\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.00000'\n", - " chart.y_axis.majorGridlines = None \n", - "\n", - " # ADD STATS\n", - " # MEAN\n", - " mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row)\n", - " mean_series = Series(mean_y, x_values, title_from_data=\"True\")\n", - " chart.series.append(mean_series)\n", - " mean_series.marker.symbol = \"none\" # No markers, just a line\n", - " mean_series.graphicalProperties.line.solidFill = \"FF0000\" # Red line for mean value\n", - " mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # IQR\n", - " iqr1 = Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row)\n", - " iqr3 = Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row)\n", - " iqr1_series = Series(iqr1, x_values, title_from_data=\"True\")\n", - " iqr3_series = Series(iqr3, x_values, title_from_data=\"True\")\n", - " chart.series.append(iqr1_series)\n", - " chart.series.append(iqr3_series)\n", - " iqr1_series.marker.symbol = \"none\" # No markers, just a line\n", - " iqr3_series.marker.symbol = \"none\"\n", - " iqr1_series.graphicalProperties.line.solidFill = \"6082B6\" # Blue line \n", - " iqr3_series.graphicalProperties.line.solidFill = \"6082B6\" \n", - " iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # STD\n", - " std_abv = Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row)\n", - " std_blw = Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row)\n", - " std_abv_series = Series(std_abv, x_values, title_from_data=\"True\")\n", - " std_blw_series = Series(std_blw, x_values, title_from_data=\"True\")\n", - " chart.series.append(std_abv_series)\n", - " chart.series.append(std_blw_series)\n", - " std_abv_series.marker.symbol = \"none\" # No markers, just a line\n", - " std_blw_series.marker.symbol = \"none\"\n", - " std_abv_series.graphicalProperties.line.solidFill = \"FFC300\" # yellow line\n", - " std_blw_series.graphicalProperties.line.solidFill = \"FFC300\" \n", - " std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - " std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs)\n", - "\n", - " # Set legend position to the right of the plot area\n", - " chart.legend.position = 'r' # 'r' for right\n", - " chart.legend.overlay = False\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width +1 \n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - "\n", - " wb.save(filepath_workbook)\n", - " return current_row\n", - "\n", - "\n", - "from openpyxl import load_workbook\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def stacked_bars_xcl(filepath_workbook, index_positions, current_row_dot_plot):\n", - "\n", - " worksheet_dict = _categorize_sheets_by_sector(filepath_workbook)\n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " current_row = current_row_dot_plot + chart_height # Start placing charts from row where dot plots have left of\n", - " current_col = 1 # Start placing charts from column 1\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find the key in index_positions that contains worksheet_name\n", - " matching_key = None\n", - " for key in index_positions.keys():\n", - " if worksheet_name in key:\n", - " matching_key = key\n", - " break\n", - "\n", - " if not matching_key:\n", - " print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = index_positions[matching_key]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " input_min_col = positions.get(\"first_input\", None) + 1\n", - " rank_col = positions.get(\"rank\", None) + 1\n", - " method_col = positions.get(\"method\", None) + 1\n", - " method_unit_col = positions.get(\"method unit\", None) + 1\n", - "\n", - " chart = BarChart()\n", - " chart.type = \"bar\"\n", - " chart.style = 2\n", - " chart.grouping = \"stacked\"\n", - " chart.overlap = 100\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"{sector} sector inputs contributions to {method_value}\"\n", - "\n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.y_axis.title = f\"{method_unit_value}\"\n", - " \n", - " chart.x_axis.title = 'activity rank'\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Define data\n", - " data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col=max_column)\n", - " cats = Reference(ws, min_col=rank_col, min_row=2, max_row=max_row)\n", - "\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(cats)\n", - " chart.shape = 4\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis ticks\n", - " chart.y_axis.tickLblPos = \"nextTo\"\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width +1\n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - " \n", - " wb.save(filepath_workbook)\n", - " return current_row" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "import re\n", - "import pandas as pd\n", - "from dopo import generate_sets_from_filters\n", - "from dopo import compare_activities_multiple_methods\n", - "from dopo import small_inputs_to_other_column\n", - "import openpyxl\n", - "from openpyxl import load_workbook\n", - "from openpyxl.chart import ScatterChart, Reference, Series\n", - "from openpyxl.chart import BarChart, Reference\n", - "\n", - "def _lca_scores_compare(database_dict, method_dict):\n", - " # Dictionary to store DataFrames for each sector\n", - " sector_dataframes = {}\n", - "\n", - " # Labels for the DataFrame columns\n", - " labels = [\n", - " \"activity\",\n", - " \"activity key\",\n", - " \"reference product\",\n", - " \"location\",\n", - " \"method\",\n", - " \"method unit\",\n", - " \"total\",\n", - " ]\n", - "\n", - " # Loop through each sector in the database_dict\n", - " for sector, sector_data in database_dict.items():\n", - " # Initialize a dictionary to hold DataFrames for each method in the current sector\n", - " method_dataframes = {}\n", - "\n", - " # Loop through each method in method_dict\n", - " for meth_key, meth_info in method_dict.items():\n", - " data = [] # Initialize a new list to hold data for the current method\n", - " \n", - " # Extract the 'method name' tuple from the current method info\n", - " method_name = meth_info['method name']\n", - " method_short_name=meth_info['short name']\n", - " method_unit = meth_info['unit']\n", - "\n", - " # Now loop through each activity in the sector\n", - " for act in sector_data['activities']:\n", - " # Ensure the activity is an instance of the expected class\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - " \n", - " # Perform LCA calculations\n", - " lca = bw.LCA({act: 1}, method_name)\n", - " lca.lci()\n", - " lca.lcia()\n", - " \n", - " # Collect data for the current activity and method\n", - " data.append([\n", - " act[\"name\"],\n", - " act.key,\n", - " act.get(\"reference product\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " method_short_name,\n", - " method_unit,\n", - " lca.score,\n", - " ])\n", - " \n", - " # Convert the data list to a DataFrame and store it in the sector's dictionary\n", - " method_dataframes[method_short_name] = pd.DataFrame(data, columns=labels)\n", - "\n", - " # Store the method_dataframes dictionary in the sector_dataframes dictionary\n", - " sector_dataframes[sector] = method_dataframes\n", - "\n", - " # Now `sector_dataframes` is a dictionary where each key is a sector, and the value is another dictionary with method names and their corresponding DataFrames\n", - " return sector_dataframes\n", - "\n", - "\n", - "import pandas as pd\n", - "\n", - "def _relative_changes_df(database_dict_eco, database_dict_premise, method_dict):\n", - "\n", - " ecoinvent_scores = _lca_scores_compare(database_dict_eco, method_dict)\n", - " premise_scores = _lca_scores_compare(database_dict_premise, method_dict)\n", - "\n", - " relative_dict = {}\n", - "\n", - " # Iterate over sectors\n", - " for sector_key in ecoinvent_scores:\n", - " # Initialize the sector key in the output dictionary\n", - " if sector_key not in relative_dict:\n", - " relative_dict[sector_key] = {}\n", - "\n", - " # Iterate over methods within the sector\n", - " for method_key in ecoinvent_scores[sector_key]:\n", - " # Check if the method_key exists in both dictionaries to avoid KeyError\n", - " if method_key in premise_scores.get(sector_key, {}):\n", - " # Get the corresponding DataFrames\n", - " df_ei = ecoinvent_scores[sector_key][method_key]\n", - " df_premise = premise_scores[sector_key][method_key]\n", - "\n", - " #print(df_ei['activity key'])\n", - " #print(df_premise)\n", - "\n", - " # Split the 'activity key' to extract the second part\n", - " df_ei['activity_code'] = df_ei['activity key'].apply(lambda x: x[1]) # Access the second element of the tuple\n", - " df_premise['activity_code'] = df_premise['activity key'].apply(lambda x: x[1])\n", - "\n", - " # Merge the two dataframes based on the activity code and method name\n", - " merged_df = pd.merge(df_ei, df_premise, on=['activity_code', 'method'], suffixes=('_ei', '_premise'))\n", - "\n", - " # Calculate the relative change\n", - " merged_df['relative_change'] = ((merged_df['total_premise'] - merged_df['total_ei']) / merged_df['total_ei']) * 100\n", - "\n", - " # Store the result in the dictionary\n", - " relative_dict[sector_key][method_key] = merged_df\n", - "\n", - " return relative_dict\n", - "\n", - "def _add_sector_marker(df, sector):\n", - " '''\n", - " It is called in the function sector_lca_scores_to_excel_and_column_positions.\n", - "\n", - " It adds information about the sector for titel and labeling in plotting.\n", - "\n", - " Returns df with added column.\n", - " '''\n", - " \n", - " # Add sector marker column\n", - " df['sector']=str(sector) # potentially remove!\n", - " # Reorder the columns to move 'sector' after 'product'\n", - " columns = list(df.columns)\n", - "\n", - " if 'product' in df.columns:\n", - " product_index = columns.index('product')\n", - " # Insert 'sector' after 'product'\n", - " columns.insert(product_index + 1, columns.pop(columns.index('sector')))\n", - " else:\n", - " # If 'product' does not exist, 'sector' remains in the last column\n", - " columns.append(columns.pop(columns.index('sector')))\n", - " \n", - " # Reassign the DataFrame with the new column order\n", - " df = df[columns]\n", - " return df\n", - "\n", - "\n", - "\n", - "\n", - "import pandas as pd\n", - "from openpyxl import load_workbook\n", - "\n", - "def relative_changes_db(database_dict_eco, database_dict_premise, method_dict, excel_file):\n", - " relative_dict = _relative_changes_df(database_dict_eco, database_dict_premise, method_dict)\n", - " \n", - " # Load existing workbook and get existing sheet names\n", - " try:\n", - " book = load_workbook(excel_file)\n", - " existing_sheets = book.sheetnames\n", - " except FileNotFoundError:\n", - " # If the file does not exist, we will create a new one, so no need to check existing sheets\n", - " existing_sheets = []\n", - " \n", - " column_positions = {} # stores the indexes of columns for plotting\n", - " \n", - " with pd.ExcelWriter(excel_file, engine='openpyxl', mode='a') as writer:\n", - " for sector in relative_dict.keys():\n", - " relative_changes = relative_dict[sector]\n", - " \n", - " for method, table in relative_changes.items():\n", - " # Create a DataFrame for the current LCA score table\n", - " df = pd.DataFrame(table)\n", - "\n", - " # Add sector marker\n", - " df = _add_sector_marker(df, sector) #!! ADJUST \n", - "\n", - " # Sort the DataFrame by 'relative_change' from largest negative to largest positive\n", - " df = df.sort_values(by='relative_change', ascending=False)\n", - "\n", - " # Add a 'rank' column based on the 'relative_change', ranking from most negative to least negative\n", - " df['rank'] = df['relative_change'].rank(ascending=False, method='dense').astype(int)\n", - " \n", - " # Get the index values of columns\n", - " columns_of_interest = [\"rank\", \"relative_change\", \"method\", \"method unit_ei\"]\n", - " positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns}\n", - " column_positions[f\"{sector}_comparison_{method}\"] = positions\n", - "\n", - " # Generate worksheet name\n", - " worksheet_name = f\"{sector}_comparison_{method}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " \n", - " # Ensure unique sheet name\n", - " original_worksheet_name = worksheet_name\n", - " counter = 1\n", - " while worksheet_name in existing_sheets:\n", - " worksheet_name = f\"{original_worksheet_name}_{counter}\"\n", - " if len(worksheet_name) > 31:\n", - " worksheet_name = worksheet_name[:31]\n", - " counter += 1\n", - "\n", - " # Save the DataFrame to the Excel file in a new worksheet\n", - " df.to_excel(writer, sheet_name=worksheet_name, index=False)\n", - " \n", - " return column_positions\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def _categorize_sheets_by_sector_comparison(file_path):\n", - " # Load the workbook\n", - " workbook = load_workbook(filename=file_path, read_only=True)\n", - " \n", - " # Initialize a dictionary to hold sectors and their corresponding sheet names\n", - " worksheet_dict = {}\n", - " \n", - " # Iterate over all sheet names in the workbook\n", - " for sheet_name in workbook.sheetnames:\n", - " # Skip combined sector sheets (assuming these sheets don't have an underscore)\n", - " if '_comparison' not in sheet_name:\n", - " continue\n", - " \n", - " # Split the sheet name to extract the sector (assumes sector is the first part)\n", - " sector = sheet_name.split('_')[0]\n", - " \n", - " # Add the sheet name to the corresponding sector in the dictionary\n", - " if sector in worksheet_dict:\n", - " worksheet_dict[sector].append(sheet_name)\n", - " else:\n", - " worksheet_dict[sector] = [sheet_name]\n", - " \n", - " return worksheet_dict\n" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "from openpyxl import load_workbook\n", - "from openpyxl.chart import BarChart, Reference\n", - "from openpyxl.chart.axis import ChartLines\n", - "\n", - "def barchart_compare_db_xcl(filename, index_positions, current_row_stacked_bar): #, index_positions=None):\n", - " \n", - " worksheet_dict =_categorize_sheets_by_sector_comparison(file_path=filename)\n", - " # Load the workbook and select the sheet\n", - " wb = load_workbook(filename)\n", - "\n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name) \n", - " \n", - " # Initial position for the first chart\n", - " current_col = 1 # Start placing charts from column 1\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " charts_per_row = 3 # Number of charts per row\n", - " current_row = current_row_stacked_bar + chart_height\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find the key in index_positions that contains worksheet_name\n", - " matching_key = None\n", - " for key in index_positions.keys():\n", - " if worksheet_name in key:\n", - " matching_key = key\n", - " break\n", - "\n", - " if not matching_key:\n", - " print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = index_positions[matching_key]\n", - "\n", - " # Find min_row, max_row and max_column\n", - " min_col_data = positions.get(\"relative_change\", None) + 1 #15\n", - " rank_col = positions.get(\"rank\", None) + 1 #17\n", - " method_col = positions.get(\"method\", None) + 1 #5\n", - " method_unit_col = positions.get(\"method unit_ei\", None) + 1 #6\n", - "\n", - " # Create a bar chart\n", - " chart = BarChart()\n", - " chart.type=\"bar\"\n", - " chart.style=2\n", - " chart.overlap= 100\n", - "\n", - " # Set the data for the chart\n", - " data = Reference(ws, min_col=min_col_data, min_row=2, max_row=ws.max_row)\n", - " categories = Reference(ws, min_col=rank_col, min_row=2, max_row=ws.max_row)\n", - " chart.add_data(data, titles_from_data=False)\n", - " chart.set_categories(categories)\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # Y-axis (categories) settings\n", - " chart.y_axis.majorGridlines = ChartLines()\n", - " chart.y_axis.delete = False\n", - " chart.y_axis.tickLblPos = \"low\"\n", - "\n", - " # X-axis (values) settings\n", - " chart.x_axis.majorGridlines = None\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.title = f\"{sector} - Database relatvie comparison for method: {method_value}\"\n", - "\n", - "\n", - " chart.x_axis.title = \"Activity\"\n", - " chart.y_axis.title = \"Relative Change (%)\"\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 30 # Increased width for better readability\n", - " chart.height = 15\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20\n", - " chart.height = 14\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - "\n", - " # Update position for the next chart\n", - " current_col += chart_width +1 \n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height +1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - "\n", - " # Add the chart to a new worksheet\n", - " # new_sheet = wb.create_sheet(title=\"LCA Chart\")\n", - " # new_sheet.add_chart(chart, \"A1\")\n", - "\n", - " # Save the workbook\n", - " wb.save(filename)\n", - "\n", - " print(f\"Results and chart saved to {filename}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warning: No matching key found for worksheet 'Steel_charts'. Skipping...\n", - "Warning: No matching key found for worksheet 'Cement_charts'. Skipping...\n", - "Results and chart saved to 2908_v13.xlsx\n" - ] - } - ], - "source": [ - "column_positions=sector_lca_scores_to_excel(scores_dictionary_one, '2908_v13.xlsx')\n", - "last_row= dot_plots_xcl('2908_v13.xlsx', column_positions)\n", - "current_row_stacked_bar=stacked_bars_xcl('2908_v13.xlsx', column_positions, last_row)\n", - "column_positions_compare=relative_changes_db(premise_dict, ecoinvent_dict, method_dict, '2908_v13.xlsx')\n", - "barchart_compare_db_xcl('2908_v13.xlsx', column_positions_compare, current_row_stacked_bar)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement_comparison_global warming potential (GWP100)': {'rank': 16,\n", - " 'relative_change': 14,\n", - " 'method': 4,\n", - " 'method unit_ei': 5},\n", - " 'Cement_comparison_Cumulative Energy Demand - non-renewable energy resources': {'rank': 16,\n", - " 'relative_change': 14,\n", - " 'method': 4,\n", - " 'method unit_ei': 5},\n", - " 'Cement_comparison_land occupation': {'rank': 16,\n", - " 'relative_change': 14,\n", - " 'method': 4,\n", - " 'method unit_ei': 5},\n", - " 'Cement_comparison_use of net fresh water': {'rank': 16,\n", - " 'relative_change': 14,\n", - " 'method': 4,\n", - " 'method unit_ei': 5},\n", - " 'Steel_comparison_global warming potential (GWP100)': {'rank': 16,\n", - " 'relative_change': 14,\n", - " 'method': 4,\n", - " 'method unit_ei': 5},\n", - " 'Steel_comparison_Cumulative Energy Demand - non-renewable energy resources': {'rank': 16,\n", - " 'relative_change': 14,\n", - " 'method': 4,\n", - " 'method unit_ei': 5},\n", - " 'Steel_comparison_land occupation': {'rank': 16,\n", - " 'relative_change': 14,\n", - " 'method': 4,\n", - " 'method unit_ei': 5},\n", - " 'Steel_comparison_use of net fresh water': {'rank': 16,\n", - " 'relative_change': 14,\n", - " 'method': 4,\n", - " 'method unit_ei': 5}}" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "column_positions_compare" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement_Cement_global_warming_potential_(gwp100)': {'total': 8,\n", - " 'rank': 9,\n", - " 'mean': 10,\n", - " '2std_abv': 11,\n", - " '2std_blw': 12,\n", - " 'q1': 13,\n", - " 'q3': 14,\n", - " 'method': 6,\n", - " 'method unit': 7,\n", - " 'first_input': 15},\n", - " 'Cement_Cement_cumulative_energy_demand_-_non-renewable_energy_resources': {'total': 8,\n", - " 'rank': 9,\n", - " 'mean': 10,\n", - " '2std_abv': 11,\n", - " '2std_blw': 12,\n", - " 'q1': 13,\n", - " 'q3': 14,\n", - " 'method': 6,\n", - " 'method unit': 7,\n", - " 'first_input': 15},\n", - " 'Cement_Cement_land_occupation': {'total': 8,\n", - " 'rank': 9,\n", - " 'mean': 10,\n", - " '2std_abv': 11,\n", - " '2std_blw': 12,\n", - " 'q1': 13,\n", - " 'q3': 14,\n", - " 'method': 6,\n", - " 'method unit': 7,\n", - " 'first_input': 15},\n", - " 'Cement_Cement_use_of_net_fresh_water': {'total': 8,\n", - " 'rank': 9,\n", - " 'mean': 10,\n", - " '2std_abv': 11,\n", - " '2std_blw': 12,\n", - " 'q1': 13,\n", - " 'q3': 14,\n", - " 'method': 6,\n", - " 'method unit': 7,\n", - " 'first_input': 15},\n", - " 'Steel_Steel_global_warming_potential_(gwp100)': {'total': 8,\n", - " 'rank': 9,\n", - " 'mean': 10,\n", - " '2std_abv': 11,\n", - " '2std_blw': 12,\n", - " 'q1': 13,\n", - " 'q3': 14,\n", - " 'method': 6,\n", - " 'method unit': 7,\n", - " 'first_input': 15},\n", - " 'Steel_Steel_cumulative_energy_demand_-_non-renewable_energy_resources': {'total': 8,\n", - " 'rank': 9,\n", - " 'mean': 10,\n", - " '2std_abv': 11,\n", - " '2std_blw': 12,\n", - " 'q1': 13,\n", - " 'q3': 14,\n", - " 'method': 6,\n", - " 'method unit': 7,\n", - " 'first_input': 15},\n", - " 'Steel_Steel_land_occupation': {'total': 8,\n", - " 'rank': 9,\n", - " 'mean': 10,\n", - " '2std_abv': 11,\n", - " '2std_blw': 12,\n", - " 'q1': 13,\n", - " 'q3': 14,\n", - " 'method': 6,\n", - " 'method unit': 7,\n", - " 'first_input': 15},\n", - " 'Steel_Steel_use_of_net_fresh_water': {'total': 8,\n", - " 'rank': 9,\n", - " 'mean': 10,\n", - " '2std_abv': 11,\n", - " '2std_blw': 12,\n", - " 'q1': 13,\n", - " 'q3': 14,\n", - " 'method': 6,\n", - " 'method unit': 7,\n", - " 'first_input': 15}}" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "index_pos" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/test_dopo_0309.ipynb b/dev/notebook tests/test_dopo_0309.ipynb deleted file mode 100644 index 815fb37..0000000 --- a/dev/notebook tests/test_dopo_0309.ipynb +++ /dev/null @@ -1,778 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import dopo\n", - "from dopo import*" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import brightway2 as bw\n", - "import bw2data as bd" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'C:\\\\Users\\\\fried\\\\premise_validation\\\\dopo\\\\yamls\\\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\cement_small.yaml', \n", - " 'yaml identifier': 'Cement'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "#files_dict['Steel']= {'yaml':r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\steel_small.yaml',\n", - " # 'yaml identifier': 'Steel'}\n", - "#files_dict['Fuel']={'yaml': r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\fuels_small.yaml',\n", - " # 'yaml identifier': 'Fuels' } \n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - "Processing Cement with database ecoinvent 3.9.1 cutoff\n", - "Activities for Cement:\n", - " ('ecoinvent 3.9.1 cutoff', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ecoinvent 3.9.1 cutoff', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ecoinvent 3.9.1 cutoff', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ecoinvent 3.9.1 cutoff', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ecoinvent 3.9.1 cutoff', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ecoinvent 3.9.1 cutoff', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ecoinvent 3.9.1 cutoff', 'fcb666edf2a01467e555eeff5b4a5bbb')\n" - ] - } - ], - "source": [ - "#for comparison\n", - "premise_dict = dopo.sector_filter.process_yaml_files(files_dict, ei39SSP2)\n", - "ecoinvent_dict = dopo.sector_filter.process_yaml_files(files_dict, ei39)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder=dopo.methods.MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "key in method_dfs\n", - "Cement_global_warming_potential_(gwp100)\n", - "key in method_dfs\n", - "Cement_cumulative_energy_demand_-_non-renewable_energy_resources\n", - "key in method_dfs\n", - "Cement_land_occupation\n", - "key in method_dfs\n", - "Cement_use_of_net_fresh_water\n", - "Warning: No matching key found for worksheet 'Cement_charts'. Skipping...\n", - "last row occupied in excel charts sheet\n", - "93\n" - ] - } - ], - "source": [ - "sector_lca_scores_plots(premise_dict, method_dict, '0309_v12.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 PE global warming potential (GWP100) kg CO2-Eq 0.895198 \n", - "1 US global warming potential (GWP100) kg CO2-Eq 0.885515 \n", - "2 BR global warming potential (GWP100) kg CO2-Eq 0.851799 \n", - "3 IN global warming potential (GWP100) kg CO2-Eq 0.891756 \n", - "4 ZA global warming potential (GWP100) kg CO2-Eq 1.000588 \n", - "5 CH global warming potential (GWP100) kg CO2-Eq 0.742421 \n", - "6 CA-QC global warming potential (GWP100) kg CO2-Eq 0.845772 \n", - "\n", - " activity_code \n", - "0 3c16b45db40210cd97de6574b2f47aaf \n", - "1 36a53c174f34e672bc15b7e55563685e \n", - "2 a3c2064d83411f7963af550c04c869a1 \n", - "3 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "4 86841f8c7ee2668f244d3b8e34f41932 \n", - "5 df49e8f525497f2fbd56bcdc80ff0cde \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH global warming potential (GWP100) kg CO2-Eq 0.737734 \n", - "1 CA-QC global warming potential (GWP100) kg CO2-Eq 0.841855 \n", - "2 PE global warming potential (GWP100) kg CO2-Eq 0.869433 \n", - "3 IN global warming potential (GWP100) kg CO2-Eq 0.774079 \n", - "4 US global warming potential (GWP100) kg CO2-Eq 0.821278 \n", - "5 BR global warming potential (GWP100) kg CO2-Eq 0.832335 \n", - "6 ZA global warming potential (GWP100) kg CO2-Eq 0.814768 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "4 36a53c174f34e672bc15b7e55563685e \n", - "5 a3c2064d83411f7963af550c04c869a1 \n", - "6 86841f8c7ee2668f244d3b8e34f41932 \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location method method unit \\\n", - "0 PE Cumulative Energy Demand - non-renewable energ... megajoule \n", - "1 US Cumulative Energy Demand - non-renewable energ... megajoule \n", - "2 BR Cumulative Energy Demand - non-renewable energ... megajoule \n", - "3 IN Cumulative Energy Demand - non-renewable energ... megajoule \n", - "4 ZA Cumulative Energy Demand - non-renewable energ... megajoule \n", - "5 CH Cumulative Energy Demand - non-renewable energ... megajoule \n", - "6 CA-QC Cumulative Energy Demand - non-renewable energ... megajoule \n", - "\n", - " total activity_code \n", - "0 4.172537 3c16b45db40210cd97de6574b2f47aaf \n", - "1 3.599198 36a53c174f34e672bc15b7e55563685e \n", - "2 3.606791 a3c2064d83411f7963af550c04c869a1 \n", - "3 4.785940 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "4 6.186147 86841f8c7ee2668f244d3b8e34f41932 \n", - "5 2.164824 df49e8f525497f2fbd56bcdc80ff0cde \n", - "6 3.992977 fcb666edf2a01467e555eeff5b4a5bbb \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit \\\n", - "0 CH Cumulative Energy Demand - non-renewable energ... megajoule \n", - "1 CA-QC Cumulative Energy Demand - non-renewable energ... megajoule \n", - "2 PE Cumulative Energy Demand - non-renewable energ... megajoule \n", - "3 IN Cumulative Energy Demand - non-renewable energ... megajoule \n", - "4 US Cumulative Energy Demand - non-renewable energ... megajoule \n", - "5 BR Cumulative Energy Demand - non-renewable energ... megajoule \n", - "6 ZA Cumulative Energy Demand - non-renewable energ... megajoule \n", - "\n", - " total activity_code \n", - "0 2.020362 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 3.997485 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3.836765 3c16b45db40210cd97de6574b2f47aaf \n", - "3 3.581588 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "4 2.672874 36a53c174f34e672bc15b7e55563685e \n", - "5 3.419633 a3c2064d83411f7963af550c04c869a1 \n", - "6 4.025051 86841f8c7ee2668f244d3b8e34f41932 \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 PE land occupation square meter-year 0.007055 \n", - "1 US land occupation square meter-year 0.010466 \n", - "2 BR land occupation square meter-year 0.048363 \n", - "3 IN land occupation square meter-year 0.047596 \n", - "4 ZA land occupation square meter-year 0.013459 \n", - "5 CH land occupation square meter-year 0.005397 \n", - "6 CA-QC land occupation square meter-year 0.029134 \n", - "\n", - " activity_code \n", - "0 3c16b45db40210cd97de6574b2f47aaf \n", - "1 36a53c174f34e672bc15b7e55563685e \n", - "2 a3c2064d83411f7963af550c04c869a1 \n", - "3 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "4 86841f8c7ee2668f244d3b8e34f41932 \n", - "5 df49e8f525497f2fbd56bcdc80ff0cde \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH land occupation square meter-year 0.022235 \n", - "1 CA-QC land occupation square meter-year 0.128863 \n", - "2 PE land occupation square meter-year 0.064829 \n", - "3 IN land occupation square meter-year 0.050827 \n", - "4 US land occupation square meter-year 0.050125 \n", - "5 BR land occupation square meter-year 0.073527 \n", - "6 ZA land occupation square meter-year 0.018817 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "4 36a53c174f34e672bc15b7e55563685e \n", - "5 a3c2064d83411f7963af550c04c869a1 \n", - "6 86841f8c7ee2668f244d3b8e34f41932 \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 PE use of net fresh water cubic meter 0.011066 \n", - "1 US use of net fresh water cubic meter 0.001546 \n", - "2 BR use of net fresh water cubic meter 0.003560 \n", - "3 IN use of net fresh water cubic meter 0.000709 \n", - "4 ZA use of net fresh water cubic meter 0.001298 \n", - "5 CH use of net fresh water cubic meter 0.002230 \n", - "6 CA-QC use of net fresh water cubic meter 0.004079 \n", - "\n", - " activity_code \n", - "0 3c16b45db40210cd97de6574b2f47aaf \n", - "1 36a53c174f34e672bc15b7e55563685e \n", - "2 a3c2064d83411f7963af550c04c869a1 \n", - "3 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "4 86841f8c7ee2668f244d3b8e34f41932 \n", - "5 df49e8f525497f2fbd56bcdc80ff0cde \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH use of net fresh water cubic meter 0.001368 \n", - "1 CA-QC use of net fresh water cubic meter 0.002367 \n", - "2 PE use of net fresh water cubic meter 0.002134 \n", - "3 IN use of net fresh water cubic meter 0.000424 \n", - "4 US use of net fresh water cubic meter 0.001388 \n", - "5 BR use of net fresh water cubic meter 0.003192 \n", - "6 ZA use of net fresh water cubic meter 0.001053 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "4 36a53c174f34e672bc15b7e55563685e \n", - "5 a3c2064d83411f7963af550c04c869a1 \n", - "6 86841f8c7ee2668f244d3b8e34f41932 \n", - "{'Cement': {'global warming potential (GWP100)': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US global warming potential (GWP100) kg CO2-Eq 0.885515 \n", - "1 PE global warming potential (GWP100) kg CO2-Eq 0.895198 \n", - "2 ZA global warming potential (GWP100) kg CO2-Eq 1.000588 \n", - "3 BR global warming potential (GWP100) kg CO2-Eq 0.851799 \n", - "4 CH global warming potential (GWP100) kg CO2-Eq 0.742421 \n", - "5 IN global warming potential (GWP100) kg CO2-Eq 0.891756 \n", - "6 CA-QC global warming potential (GWP100) kg CO2-Eq 0.845772 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US kg CO2-Eq \n", - "1 cement, Portland PE kg CO2-Eq \n", - "2 cement, Portland ZA kg CO2-Eq \n", - "3 cement, Portland BR kg CO2-Eq \n", - "4 cement, Portland CH kg CO2-Eq \n", - "5 cement, Portland IN kg CO2-Eq \n", - "6 cement, Portland CA-QC kg CO2-Eq \n", - "\n", - " total_premise relative_change \n", - "0 0.821278 -7.254175 \n", - "1 0.869433 -2.878053 \n", - "2 0.814768 -18.571112 \n", - "3 0.832335 -2.285131 \n", - "4 0.737734 -0.631314 \n", - "5 0.774079 -13.196150 \n", - "6 0.841855 -0.463118 , 'Cumulative Energy Demand - non-renewable energy resources': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method \\\n", - "0 US Cumulative Energy Demand - non-renewable energ... \n", - "1 PE Cumulative Energy Demand - non-renewable energ... \n", - "2 ZA Cumulative Energy Demand - non-renewable energ... \n", - "3 BR Cumulative Energy Demand - non-renewable energ... \n", - "4 CH Cumulative Energy Demand - non-renewable energ... \n", - "5 IN Cumulative Energy Demand - non-renewable energ... \n", - "6 CA-QC Cumulative Energy Demand - non-renewable energ... \n", - "\n", - " method unit_ei total_ei activity_code \\\n", - "0 megajoule 3.599198 36a53c174f34e672bc15b7e55563685e \n", - "1 megajoule 4.172537 3c16b45db40210cd97de6574b2f47aaf \n", - "2 megajoule 6.186147 86841f8c7ee2668f244d3b8e34f41932 \n", - "3 megajoule 3.606791 a3c2064d83411f7963af550c04c869a1 \n", - "4 megajoule 2.164824 df49e8f525497f2fbd56bcdc80ff0cde \n", - "5 megajoule 4.785940 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 megajoule 3.992977 fcb666edf2a01467e555eeff5b4a5bbb \n", - "\n", - " activity_premise \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US megajoule \n", - "1 cement, Portland PE megajoule \n", - "2 cement, Portland ZA megajoule \n", - "3 cement, Portland BR megajoule \n", - "4 cement, Portland CH megajoule \n", - "5 cement, Portland IN megajoule \n", - "6 cement, Portland CA-QC megajoule \n", - "\n", - " total_premise relative_change \n", - "0 2.672874 -25.736953 \n", - "1 3.836765 -8.047184 \n", - "2 4.025051 -34.934447 \n", - "3 3.419633 -5.189055 \n", - "4 2.020362 -6.673179 \n", - "5 3.581588 -25.164373 \n", - "6 3.997485 0.112896 , 'land occupation': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US land occupation square meter-year 0.010466 \n", - "1 PE land occupation square meter-year 0.007055 \n", - "2 ZA land occupation square meter-year 0.013459 \n", - "3 BR land occupation square meter-year 0.048363 \n", - "4 CH land occupation square meter-year 0.005397 \n", - "5 IN land occupation square meter-year 0.047596 \n", - "6 CA-QC land occupation square meter-year 0.029134 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US square meter-year \n", - "1 cement, Portland PE square meter-year \n", - "2 cement, Portland ZA square meter-year \n", - "3 cement, Portland BR square meter-year \n", - "4 cement, Portland CH square meter-year \n", - "5 cement, Portland IN square meter-year \n", - "6 cement, Portland CA-QC square meter-year \n", - "\n", - " total_premise relative_change \n", - "0 0.050125 378.915879 \n", - "1 0.064829 818.902202 \n", - "2 0.018817 39.815303 \n", - "3 0.073527 52.031634 \n", - "4 0.022235 312.027258 \n", - "5 0.050827 6.787316 \n", - "6 0.128863 342.308107 , 'use of net fresh water': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US use of net fresh water cubic meter 0.001546 \n", - "1 PE use of net fresh water cubic meter 0.011066 \n", - "2 ZA use of net fresh water cubic meter 0.001298 \n", - "3 BR use of net fresh water cubic meter 0.003560 \n", - "4 CH use of net fresh water cubic meter 0.002230 \n", - "5 IN use of net fresh water cubic meter 0.000709 \n", - "6 CA-QC use of net fresh water cubic meter 0.004079 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US cubic meter \n", - "1 cement, Portland PE cubic meter \n", - "2 cement, Portland ZA cubic meter \n", - "3 cement, Portland BR cubic meter \n", - "4 cement, Portland CH cubic meter \n", - "5 cement, Portland IN cubic meter \n", - "6 cement, Portland CA-QC cubic meter \n", - "\n", - " total_premise relative_change \n", - "0 0.001388 -10.226164 \n", - "1 0.002134 -80.715994 \n", - "2 0.001053 -18.849829 \n", - "3 0.003192 -10.335907 \n", - "4 0.001368 -38.687357 \n", - "5 0.000424 -40.277346 \n", - "6 0.002367 -41.983902 }}\n", - "Results and chart saved to 0309_v12.xlsx\n" - ] - } - ], - "source": [ - "database_comparison_plots(ecoinvent_dict, premise_dict, method_dict,'0309_v12.xlsx',current_row=93)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/test_dopo_0409.ipynb b/dev/notebook tests/test_dopo_0409.ipynb deleted file mode 100644 index e34157c..0000000 --- a/dev/notebook tests/test_dopo_0409.ipynb +++ /dev/null @@ -1,1403 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "import dopo\n", - "from dopo import*" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import brightway2 as bw\n", - "import bw2data as bd" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'C:\\\\Users\\\\fried\\\\premise_validation\\\\dev\\\\yamls\\\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'},\n", - " 'Steel': {'yaml': 'C:\\\\Users\\\\fried\\\\premise_validation\\\\dev\\\\yamls\\\\steel_small.yaml',\n", - " 'yaml identifier': 'Steel'}}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': r'C:\\Users\\fried\\premise_validation\\dev\\yamls\\cement_small.yaml', \n", - " 'yaml identifier': 'Cement'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict['Steel']= {'yaml':r'C:\\Users\\fried\\premise_validation\\dev\\yamls\\steel_small.yaml',\n", - " 'yaml identifier': 'Steel'}\n", - "#files_dict['Fuel']={'yaml': r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\fuels_small.yaml',\n", - " # 'yaml identifier': 'Fuels' }\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - "Processing Steel with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Steel:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '18b0dcf01dd401e1549b3796e3786213')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - "Processing Cement with database ecoinvent 3.9.1 cutoff\n", - "Activities for Cement:\n", - " ('ecoinvent 3.9.1 cutoff', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ecoinvent 3.9.1 cutoff', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ecoinvent 3.9.1 cutoff', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ecoinvent 3.9.1 cutoff', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ecoinvent 3.9.1 cutoff', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ecoinvent 3.9.1 cutoff', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ecoinvent 3.9.1 cutoff', '86841f8c7ee2668f244d3b8e34f41932')\n", - "Processing Steel with database ecoinvent 3.9.1 cutoff\n", - "Activities for Steel:\n", - " ('ecoinvent 3.9.1 cutoff', '18b0dcf01dd401e1549b3796e3786213')\n", - " ('ecoinvent 3.9.1 cutoff', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ecoinvent 3.9.1 cutoff', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ecoinvent 3.9.1 cutoff', 'af6bd1221fc0206541fbaf481397bf0d')\n" - ] - } - ], - "source": [ - "#for comparison\n", - "premise_dict = dopo.sector_filter.process_yaml_files(files_dict, ei39SSP2)\n", - "ecoinvent_dict = dopo.sector_filter.process_yaml_files(files_dict, ei39)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder=dopo.methods.MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n" - ] - } - ], - "source": [ - "scores_premis = dopo._sector_lca_scores(premise_dict, method_dict, cutoff=0.2)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "from dopo.plots_sector_lca_scores import _categorize_sheets_by_sector\n", - "from openpyxl import load_workbook\n", - "from openpyxl.chart import ScatterChart, BarChart, Reference, Series\n", - "def stacked_bars_xcl(filepath_workbook, column_positions, current_row_dot_plot):\n", - " \"\"\"\n", - " Creates stacked bar charts for each sector in an Excel workbook.\n", - "\n", - " This function reads an Excel workbook, categorizes sheets by sector, and creates \n", - " stacked bar charts to visualize data contributions. The generated charts are added \n", - " to a new or existing sheet within the workbook.\n", - "\n", - " Parameters\n", - " ----------\n", - " filepath_workbook : str\n", - " Path to the Excel workbook file.\n", - " index_positions : dict\n", - " A dictionary containing column index positions for the data required to create \n", - " the charts for each worksheet.\n", - " current_row_dot_plot : int\n", - " The row number in the chart sheet where the dot plots ended, used to determine \n", - " the starting row for the stacked bar charts.\n", - "\n", - " Returns\n", - " -------\n", - " int\n", - " The row position where the last chart was placed.\n", - " \"\"\"\n", - " # Categorize sheets by sector\n", - " worksheet_dict = _categorize_sheets_by_sector(filepath_workbook)\n", - " \n", - " # Load the workbook\n", - " wb = load_workbook(filepath_workbook)\n", - " \n", - " # Iterate over each sector and its associated worksheets\n", - " for sector, worksheet_names in worksheet_dict.items():\n", - " \n", - " # Create or get the chart sheet for the current sector\n", - " chart_sheet_name = f\"{sector}_charts\"\n", - " if chart_sheet_name in wb.sheetnames:\n", - " ws_charts = wb[chart_sheet_name]\n", - " else:\n", - " ws_charts = wb.create_sheet(chart_sheet_name)\n", - " \n", - " # Initial position for the first chart\n", - " chart_height = 30 # Number of rows a chart occupies\n", - " chart_width = 12 # Number of columns a chart occupies\n", - " current_row = current_row_dot_plot + chart_height # Start placing charts from row after dot plots\n", - " current_col = 1 # Start placing charts from column 1\n", - " charts_per_row = 3 # Number of charts per row\n", - " \n", - " # Iterate over each worksheet name in the current sector\n", - " for i, worksheet_name in enumerate(worksheet_names):\n", - " ws = wb[worksheet_name]\n", - "\n", - " # Find the key in index_positions that contains worksheet_name\n", - " matching_key = None\n", - " for key in column_positions.keys():\n", - " if worksheet_name in key:\n", - " matching_key = key\n", - " break\n", - "\n", - " if not matching_key:\n", - " print(f\"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...\")\n", - " continue\n", - "\n", - " # Retrieve the column positions from the index_positions dictionary\n", - " positions = column_positions[matching_key]\n", - "\n", - " # Find min_row, max_row, and max_column\n", - " max_row = ws.max_row\n", - " max_column = ws.max_column\n", - " input_min_col = positions.get(\"first_input\", None) + 1\n", - " rank_col = positions.get(\"rank\", None) + 1\n", - " method_col = positions.get(\"method\", None) + 1\n", - " method_unit_col = positions.get(\"method unit\", None) + 1\n", - "\n", - " # Create a BarChart object for the stacked bar chart\n", - " chart = BarChart()\n", - " chart.type = \"bar\"\n", - " chart.style = 2\n", - " chart.grouping = \"stacked\"\n", - " chart.overlap = 100\n", - "\n", - " # Chart titles\n", - " method_value = ws.cell(row=2, column=method_col).value\n", - " chart.title = f\"Inputs contributions to {method_value} LCA score for sector {sector}\"\n", - "\n", - " method_unit_value = ws.cell(row=2, column=method_unit_col).value\n", - " chart.y_axis.title = f\"{method_unit_value}\"\n", - " chart.x_axis.title = 'activity rank'\n", - "\n", - " # Avoid overlap\n", - " chart.title.overlay = False\n", - " chart.x_axis.title.overlay = False\n", - " chart.y_axis.title.overlay = False \n", - " chart.legend.overlay = False\n", - "\n", - " # Define data for the stacked bar chart\n", - " data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, \n", - " max_col=max_column)\n", - " cats = Reference(ws, min_col=rank_col, min_row=2, max_row=max_row)\n", - "\n", - " chart.add_data(data, titles_from_data=True)\n", - " chart.set_categories(cats)\n", - " chart.shape = 4\n", - "\n", - " # Modify each series in the chart to disable the inversion of negative values \n", - " for series in chart.series:\n", - " series.invertIfNegative = False\n", - "\n", - " # y-axis ticks\n", - " chart.y_axis.tickLblPos = \"nextTo\"\n", - " chart.y_axis.delete = False # Ensure axis is not deleted\n", - " chart.y_axis.number_format = '0.000'\n", - "\n", - " # Adjust X-axis properties\n", - " chart.x_axis.tickLblPos = \"low\" # \"nextTo\"\n", - " chart.x_axis.majorGridlines = None \n", - " chart.x_axis.tickMarkSkip = 1 # Show all tick marks\n", - " chart.x_axis.tickLblSkip = 1 # Show all labels\n", - "\n", - " chart.x_axis.scaling.orientation = \"minMax\"\n", - " chart.x_axis.crosses = \"autoZero\"\n", - " chart.x_axis.axPos = \"b\"\n", - " chart.x_axis.delete = False\n", - "\n", - " # Adjust chart dimensions\n", - " chart.width = 20 # Width of the chart\n", - " chart.height = 14 # Height of the chart\n", - "\n", - " # Add the chart to the chart worksheet\n", - " # Calculate the position for this chart\n", - " position = ws_charts.cell(row=current_row, column=current_col).coordinate\n", - " ws_charts.add_chart(chart, position)\n", - " \n", - " # Update position for the next chart\n", - " current_col += chart_width + 1\n", - " if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts\n", - " current_row += chart_height + 1\n", - " current_col = 1 # Reset to the first column\n", - "\n", - " # Move the chart sheet to the first position\n", - " wb._sheets.remove(ws_charts)\n", - " wb._sheets.insert(0, ws_charts)\n", - " \n", - " # Save the workbook with the charts added\n", - " wb.save(filepath_workbook)\n", - " \n", - " return current_row\n" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "key in method_dfs\n", - "Cement_global_warming_potential_(gwp100)\n", - "key in method_dfs\n", - "Cement_cumulative_energy_demand_-_non-renewable_energy_resources\n", - "key in method_dfs\n", - "Cement_land_occupation\n", - "key in method_dfs\n", - "Cement_use_of_net_fresh_water\n", - "key in method_dfs\n", - "Steel_global_warming_potential_(gwp100)\n", - "key in method_dfs\n", - "Steel_cumulative_energy_demand_-_non-renewable_energy_resources\n", - "key in method_dfs\n", - "Steel_land_occupation\n", - "key in method_dfs\n", - "Steel_use_of_net_fresh_water\n" - ] - } - ], - "source": [ - "#Converting the lca scores and input tables to excel worksheet adding statistics and more. Storing column positions (index) in variable.\n", - "column_positions=_sector_lca_scores_to_excel(scores_premis, '0409_v7.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "#Generating dot plots and stacked bars in the excel storing the location of last plot in variable.\n", - "last_row= dot_plots_xcl('0409_v7.xlsx', column_positions)\n", - "\n", - "# #Comparing premise and ecoinvent database by calculating lca scores, storing table sin excel and plotting barcharts. Again storing column positions in variable.\n", - "# column_positions_compare=relative_changes_db(ecoinvent_dict, premise_dict, method_dict, '0309_v8.xlsx')\n", - "# barchart_compare_db_xcl('0309_v8.xlsx', column_positions_compare, current_row_stacked_bar)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warning: No matching key found for worksheet 'Steel_charts'. Skipping...\n", - "Warning: No matching key found for worksheet 'Cement_charts'. Skipping...\n" - ] - } - ], - "source": [ - "current_row_stacked_bar=stacked_bars_xcl('0409_v7.xlsx', column_positions, last_row)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 IN global warming potential (GWP100) kg CO2-Eq 0.891756 \n", - "1 PE global warming potential (GWP100) kg CO2-Eq 0.895198 \n", - "2 CH global warming potential (GWP100) kg CO2-Eq 0.742421 \n", - "3 US global warming potential (GWP100) kg CO2-Eq 0.885515 \n", - "4 CA-QC global warming potential (GWP100) kg CO2-Eq 0.845772 \n", - "5 BR global warming potential (GWP100) kg CO2-Eq 0.851799 \n", - "6 ZA global warming potential (GWP100) kg CO2-Eq 1.000588 \n", - "\n", - " activity_code \n", - "0 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "1 3c16b45db40210cd97de6574b2f47aaf \n", - "2 df49e8f525497f2fbd56bcdc80ff0cde \n", - "3 36a53c174f34e672bc15b7e55563685e \n", - "4 fcb666edf2a01467e555eeff5b4a5bbb \n", - "5 a3c2064d83411f7963af550c04c869a1 \n", - "6 86841f8c7ee2668f244d3b8e34f41932 \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CA-QC global warming potential (GWP100) kg CO2-Eq 0.841855 \n", - "1 US global warming potential (GWP100) kg CO2-Eq 0.821278 \n", - "2 BR global warming potential (GWP100) kg CO2-Eq 0.832335 \n", - "3 ZA global warming potential (GWP100) kg CO2-Eq 0.814768 \n", - "4 PE global warming potential (GWP100) kg CO2-Eq 0.869433 \n", - "5 CH global warming potential (GWP100) kg CO2-Eq 0.737734 \n", - "6 IN global warming potential (GWP100) kg CO2-Eq 0.774079 \n", - "\n", - " activity_code \n", - "0 fcb666edf2a01467e555eeff5b4a5bbb \n", - "1 36a53c174f34e672bc15b7e55563685e \n", - "2 a3c2064d83411f7963af550c04c869a1 \n", - "3 86841f8c7ee2668f244d3b8e34f41932 \n", - "4 3c16b45db40210cd97de6574b2f47aaf \n", - "5 df49e8f525497f2fbd56bcdc80ff0cde \n", - "6 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "\n", - " location method method unit \\\n", - "0 IN Cumulative Energy Demand - non-renewable energ... megajoule \n", - "1 PE Cumulative Energy Demand - non-renewable energ... megajoule \n", - "2 CH Cumulative Energy Demand - non-renewable energ... megajoule \n", - "3 US Cumulative Energy Demand - non-renewable energ... megajoule \n", - "4 CA-QC Cumulative Energy Demand - non-renewable energ... megajoule \n", - "5 BR Cumulative Energy Demand - non-renewable energ... megajoule \n", - "6 ZA Cumulative Energy Demand - non-renewable energ... megajoule \n", - "\n", - " total activity_code \n", - "0 4.785940 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "1 4.172537 3c16b45db40210cd97de6574b2f47aaf \n", - "2 2.164824 df49e8f525497f2fbd56bcdc80ff0cde \n", - "3 3.599198 36a53c174f34e672bc15b7e55563685e \n", - "4 3.992977 fcb666edf2a01467e555eeff5b4a5bbb \n", - "5 3.606791 a3c2064d83411f7963af550c04c869a1 \n", - "6 6.186147 86841f8c7ee2668f244d3b8e34f41932 \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit \\\n", - "0 CA-QC Cumulative Energy Demand - non-renewable energ... megajoule \n", - "1 US Cumulative Energy Demand - non-renewable energ... megajoule \n", - "2 BR Cumulative Energy Demand - non-renewable energ... megajoule \n", - "3 ZA Cumulative Energy Demand - non-renewable energ... megajoule \n", - "4 PE Cumulative Energy Demand - non-renewable energ... megajoule \n", - "5 CH Cumulative Energy Demand - non-renewable energ... megajoule \n", - "6 IN Cumulative Energy Demand - non-renewable energ... megajoule \n", - "\n", - " total activity_code \n", - "0 3.997485 fcb666edf2a01467e555eeff5b4a5bbb \n", - "1 2.672874 36a53c174f34e672bc15b7e55563685e \n", - "2 3.419633 a3c2064d83411f7963af550c04c869a1 \n", - "3 4.025051 86841f8c7ee2668f244d3b8e34f41932 \n", - "4 3.836765 3c16b45db40210cd97de6574b2f47aaf \n", - "5 2.020362 df49e8f525497f2fbd56bcdc80ff0cde \n", - "6 3.581588 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 IN land occupation square meter-year 0.047596 \n", - "1 PE land occupation square meter-year 0.007055 \n", - "2 CH land occupation square meter-year 0.005397 \n", - "3 US land occupation square meter-year 0.010466 \n", - "4 CA-QC land occupation square meter-year 0.029134 \n", - "5 BR land occupation square meter-year 0.048363 \n", - "6 ZA land occupation square meter-year 0.013459 \n", - "\n", - " activity_code \n", - "0 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "1 3c16b45db40210cd97de6574b2f47aaf \n", - "2 df49e8f525497f2fbd56bcdc80ff0cde \n", - "3 36a53c174f34e672bc15b7e55563685e \n", - "4 fcb666edf2a01467e555eeff5b4a5bbb \n", - "5 a3c2064d83411f7963af550c04c869a1 \n", - "6 86841f8c7ee2668f244d3b8e34f41932 \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CA-QC land occupation square meter-year 0.128863 \n", - "1 US land occupation square meter-year 0.050125 \n", - "2 BR land occupation square meter-year 0.073527 \n", - "3 ZA land occupation square meter-year 0.018817 \n", - "4 PE land occupation square meter-year 0.064829 \n", - "5 CH land occupation square meter-year 0.022235 \n", - "6 IN land occupation square meter-year 0.050827 \n", - "\n", - " activity_code \n", - "0 fcb666edf2a01467e555eeff5b4a5bbb \n", - "1 36a53c174f34e672bc15b7e55563685e \n", - "2 a3c2064d83411f7963af550c04c869a1 \n", - "3 86841f8c7ee2668f244d3b8e34f41932 \n", - "4 3c16b45db40210cd97de6574b2f47aaf \n", - "5 df49e8f525497f2fbd56bcdc80ff0cde \n", - "6 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 IN use of net fresh water cubic meter 0.000709 \n", - "1 PE use of net fresh water cubic meter 0.011066 \n", - "2 CH use of net fresh water cubic meter 0.002230 \n", - "3 US use of net fresh water cubic meter 0.001546 \n", - "4 CA-QC use of net fresh water cubic meter 0.004079 \n", - "5 BR use of net fresh water cubic meter 0.003560 \n", - "6 ZA use of net fresh water cubic meter 0.001298 \n", - "\n", - " activity_code \n", - "0 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "1 3c16b45db40210cd97de6574b2f47aaf \n", - "2 df49e8f525497f2fbd56bcdc80ff0cde \n", - "3 36a53c174f34e672bc15b7e55563685e \n", - "4 fcb666edf2a01467e555eeff5b4a5bbb \n", - "5 a3c2064d83411f7963af550c04c869a1 \n", - "6 86841f8c7ee2668f244d3b8e34f41932 \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CA-QC use of net fresh water cubic meter 0.002367 \n", - "1 US use of net fresh water cubic meter 0.001388 \n", - "2 BR use of net fresh water cubic meter 0.003192 \n", - "3 ZA use of net fresh water cubic meter 0.001053 \n", - "4 PE use of net fresh water cubic meter 0.002134 \n", - "5 CH use of net fresh water cubic meter 0.001368 \n", - "6 IN use of net fresh water cubic meter 0.000424 \n", - "\n", - " activity_code \n", - "0 fcb666edf2a01467e555eeff5b4a5bbb \n", - "1 36a53c174f34e672bc15b7e55563685e \n", - "2 a3c2064d83411f7963af550c04c869a1 \n", - "3 86841f8c7ee2668f244d3b8e34f41932 \n", - "4 3c16b45db40210cd97de6574b2f47aaf \n", - "5 df49e8f525497f2fbd56bcdc80ff0cde \n", - "6 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "df_ei\n", - " activity \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 18b0dcf01dd401e1549b3... steel, low-alloyed \n", - "1 (ecoinvent 3.9.1 cutoff, 2baa0deb3adc89dfe8cb8... steel, low-alloyed \n", - "2 (ecoinvent 3.9.1 cutoff, 1dffacc9e0ca08fb55c6b... steel, low-alloyed \n", - "3 (ecoinvent 3.9.1 cutoff, af6bd1221fc0206541fba... steel, low-alloyed \n", - "\n", - " location method method unit total \\\n", - "0 CH global warming potential (GWP100) kg CO2-Eq 0.411480 \n", - "1 IN global warming potential (GWP100) kg CO2-Eq 3.016886 \n", - "2 AT global warming potential (GWP100) kg CO2-Eq 0.336931 \n", - "3 CA-QC global warming potential (GWP100) kg CO2-Eq 0.843149 \n", - "\n", - " activity_code \n", - "0 18b0dcf01dd401e1549b3796e3786213 \n", - "1 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "2 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "3 af6bd1221fc0206541fbaf481397bf0d \n", - "df_premise\n", - " activity \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "\n", - " location method method unit total \\\n", - "0 CH global warming potential (GWP100) kg CO2-Eq 0.336825 \n", - "1 AT global warming potential (GWP100) kg CO2-Eq 0.186754 \n", - "2 CA-QC global warming potential (GWP100) kg CO2-Eq 0.684917 \n", - "3 IN global warming potential (GWP100) kg CO2-Eq 1.973387 \n", - "\n", - " activity_code \n", - "0 18b0dcf01dd401e1549b3796e3786213 \n", - "1 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "2 af6bd1221fc0206541fbaf481397bf0d \n", - "3 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "df_ei\n", - " activity \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 18b0dcf01dd401e1549b3... steel, low-alloyed \n", - "1 (ecoinvent 3.9.1 cutoff, 2baa0deb3adc89dfe8cb8... steel, low-alloyed \n", - "2 (ecoinvent 3.9.1 cutoff, 1dffacc9e0ca08fb55c6b... steel, low-alloyed \n", - "3 (ecoinvent 3.9.1 cutoff, af6bd1221fc0206541fba... steel, low-alloyed \n", - "\n", - " location method method unit \\\n", - "0 CH Cumulative Energy Demand - non-renewable energ... megajoule \n", - "1 IN Cumulative Energy Demand - non-renewable energ... megajoule \n", - "2 AT Cumulative Energy Demand - non-renewable energ... megajoule \n", - "3 CA-QC Cumulative Energy Demand - non-renewable energ... megajoule \n", - "\n", - " total activity_code \n", - "0 5.808586 18b0dcf01dd401e1549b3796e3786213 \n", - "1 34.862587 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "2 4.180438 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "3 9.447930 af6bd1221fc0206541fbaf481397bf0d \n", - "df_premise\n", - " activity \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "\n", - " location method method unit \\\n", - "0 CH Cumulative Energy Demand - non-renewable energ... megajoule \n", - "1 AT Cumulative Energy Demand - non-renewable energ... megajoule \n", - "2 CA-QC Cumulative Energy Demand - non-renewable energ... megajoule \n", - "3 IN Cumulative Energy Demand - non-renewable energ... megajoule \n", - "\n", - " total activity_code \n", - "0 4.692340 18b0dcf01dd401e1549b3796e3786213 \n", - "1 2.943728 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "2 8.424143 af6bd1221fc0206541fbaf481397bf0d \n", - "3 24.707910 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "df_ei\n", - " activity \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 18b0dcf01dd401e1549b3... steel, low-alloyed \n", - "1 (ecoinvent 3.9.1 cutoff, 2baa0deb3adc89dfe8cb8... steel, low-alloyed \n", - "2 (ecoinvent 3.9.1 cutoff, 1dffacc9e0ca08fb55c6b... steel, low-alloyed \n", - "3 (ecoinvent 3.9.1 cutoff, af6bd1221fc0206541fba... steel, low-alloyed \n", - "\n", - " location method method unit total \\\n", - "0 CH land occupation square meter-year 0.030020 \n", - "1 IN land occupation square meter-year 0.088649 \n", - "2 AT land occupation square meter-year 0.025831 \n", - "3 CA-QC land occupation square meter-year 0.160458 \n", - "\n", - " activity_code \n", - "0 18b0dcf01dd401e1549b3796e3786213 \n", - "1 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "2 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "3 af6bd1221fc0206541fbaf481397bf0d \n", - "df_premise\n", - " activity \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "\n", - " location method method unit total \\\n", - "0 CH land occupation square meter-year 0.091617 \n", - "1 AT land occupation square meter-year 0.071999 \n", - "2 CA-QC land occupation square meter-year 0.703626 \n", - "3 IN land occupation square meter-year 0.178070 \n", - "\n", - " activity_code \n", - "0 18b0dcf01dd401e1549b3796e3786213 \n", - "1 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "2 af6bd1221fc0206541fbaf481397bf0d \n", - "3 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "df_ei\n", - " activity \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, 18b0dcf01dd401e1549b3... steel, low-alloyed \n", - "1 (ecoinvent 3.9.1 cutoff, 2baa0deb3adc89dfe8cb8... steel, low-alloyed \n", - "2 (ecoinvent 3.9.1 cutoff, 1dffacc9e0ca08fb55c6b... steel, low-alloyed \n", - "3 (ecoinvent 3.9.1 cutoff, af6bd1221fc0206541fba... steel, low-alloyed \n", - "\n", - " location method method unit total \\\n", - "0 CH use of net fresh water cubic meter 0.007785 \n", - "1 IN use of net fresh water cubic meter -0.221999 \n", - "2 AT use of net fresh water cubic meter 0.004373 \n", - "3 CA-QC use of net fresh water cubic meter 0.028423 \n", - "\n", - " activity_code \n", - "0 18b0dcf01dd401e1549b3796e3786213 \n", - "1 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "2 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "3 af6bd1221fc0206541fbaf481397bf0d \n", - "df_premise\n", - " activity \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... steel, low-alloyed \n", - "\n", - " location method method unit total \\\n", - "0 CH use of net fresh water cubic meter 0.005082 \n", - "1 AT use of net fresh water cubic meter 0.004089 \n", - "2 CA-QC use of net fresh water cubic meter 0.018781 \n", - "3 IN use of net fresh water cubic meter -0.224548 \n", - "\n", - " activity_code \n", - "0 18b0dcf01dd401e1549b3796e3786213 \n", - "1 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "2 af6bd1221fc0206541fbaf481397bf0d \n", - "3 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "{'Cement': {'global warming potential (GWP100)': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US global warming potential (GWP100) kg CO2-Eq 0.885515 \n", - "1 PE global warming potential (GWP100) kg CO2-Eq 0.895198 \n", - "2 ZA global warming potential (GWP100) kg CO2-Eq 1.000588 \n", - "3 BR global warming potential (GWP100) kg CO2-Eq 0.851799 \n", - "4 CH global warming potential (GWP100) kg CO2-Eq 0.742421 \n", - "5 IN global warming potential (GWP100) kg CO2-Eq 0.891756 \n", - "6 CA-QC global warming potential (GWP100) kg CO2-Eq 0.845772 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US kg CO2-Eq \n", - "1 cement, Portland PE kg CO2-Eq \n", - "2 cement, Portland ZA kg CO2-Eq \n", - "3 cement, Portland BR kg CO2-Eq \n", - "4 cement, Portland CH kg CO2-Eq \n", - "5 cement, Portland IN kg CO2-Eq \n", - "6 cement, Portland CA-QC kg CO2-Eq \n", - "\n", - " total_premise relative_change \n", - "0 0.821278 -7.254175 \n", - "1 0.869433 -2.878053 \n", - "2 0.814768 -18.571112 \n", - "3 0.832335 -2.285131 \n", - "4 0.737734 -0.631314 \n", - "5 0.774079 -13.196150 \n", - "6 0.841855 -0.463118 , 'Cumulative Energy Demand - non-renewable energy resources': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method \\\n", - "0 US Cumulative Energy Demand - non-renewable energ... \n", - "1 PE Cumulative Energy Demand - non-renewable energ... \n", - "2 ZA Cumulative Energy Demand - non-renewable energ... \n", - "3 BR Cumulative Energy Demand - non-renewable energ... \n", - "4 CH Cumulative Energy Demand - non-renewable energ... \n", - "5 IN Cumulative Energy Demand - non-renewable energ... \n", - "6 CA-QC Cumulative Energy Demand - non-renewable energ... \n", - "\n", - " method unit_ei total_ei activity_code \\\n", - "0 megajoule 3.599198 36a53c174f34e672bc15b7e55563685e \n", - "1 megajoule 4.172537 3c16b45db40210cd97de6574b2f47aaf \n", - "2 megajoule 6.186147 86841f8c7ee2668f244d3b8e34f41932 \n", - "3 megajoule 3.606791 a3c2064d83411f7963af550c04c869a1 \n", - "4 megajoule 2.164824 df49e8f525497f2fbd56bcdc80ff0cde \n", - "5 megajoule 4.785940 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 megajoule 3.992977 fcb666edf2a01467e555eeff5b4a5bbb \n", - "\n", - " activity_premise \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US megajoule \n", - "1 cement, Portland PE megajoule \n", - "2 cement, Portland ZA megajoule \n", - "3 cement, Portland BR megajoule \n", - "4 cement, Portland CH megajoule \n", - "5 cement, Portland IN megajoule \n", - "6 cement, Portland CA-QC megajoule \n", - "\n", - " total_premise relative_change \n", - "0 2.672874 -25.736953 \n", - "1 3.836765 -8.047184 \n", - "2 4.025051 -34.934447 \n", - "3 3.419633 -5.189055 \n", - "4 2.020362 -6.673179 \n", - "5 3.581588 -25.164373 \n", - "6 3.997485 0.112896 , 'land occupation': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US land occupation square meter-year 0.010466 \n", - "1 PE land occupation square meter-year 0.007055 \n", - "2 ZA land occupation square meter-year 0.013459 \n", - "3 BR land occupation square meter-year 0.048363 \n", - "4 CH land occupation square meter-year 0.005397 \n", - "5 IN land occupation square meter-year 0.047596 \n", - "6 CA-QC land occupation square meter-year 0.029134 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US square meter-year \n", - "1 cement, Portland PE square meter-year \n", - "2 cement, Portland ZA square meter-year \n", - "3 cement, Portland BR square meter-year \n", - "4 cement, Portland CH square meter-year \n", - "5 cement, Portland IN square meter-year \n", - "6 cement, Portland CA-QC square meter-year \n", - "\n", - " total_premise relative_change \n", - "0 0.050125 378.915879 \n", - "1 0.064829 818.902202 \n", - "2 0.018817 39.815303 \n", - "3 0.073527 52.031634 \n", - "4 0.022235 312.027258 \n", - "5 0.050827 6.787316 \n", - "6 0.128863 342.308107 , 'use of net fresh water': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US use of net fresh water cubic meter 0.001546 \n", - "1 PE use of net fresh water cubic meter 0.011066 \n", - "2 ZA use of net fresh water cubic meter 0.001298 \n", - "3 BR use of net fresh water cubic meter 0.003560 \n", - "4 CH use of net fresh water cubic meter 0.002230 \n", - "5 IN use of net fresh water cubic meter 0.000709 \n", - "6 CA-QC use of net fresh water cubic meter 0.004079 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US cubic meter \n", - "1 cement, Portland PE cubic meter \n", - "2 cement, Portland ZA cubic meter \n", - "3 cement, Portland BR cubic meter \n", - "4 cement, Portland CH cubic meter \n", - "5 cement, Portland IN cubic meter \n", - "6 cement, Portland CA-QC cubic meter \n", - "\n", - " total_premise relative_change \n", - "0 0.001388 -10.226164 \n", - "1 0.002134 -80.715994 \n", - "2 0.001053 -18.849829 \n", - "3 0.003192 -10.335907 \n", - "4 0.001368 -38.687357 \n", - "5 0.000424 -40.277346 \n", - "6 0.002367 -41.983902 }, 'Steel': {'global warming potential (GWP100)': activity_ei \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 18b0dcf01dd401e1549b3... steel, low-alloyed \n", - "1 (ecoinvent 3.9.1 cutoff, 1dffacc9e0ca08fb55c6b... steel, low-alloyed \n", - "2 (ecoinvent 3.9.1 cutoff, 2baa0deb3adc89dfe8cb8... steel, low-alloyed \n", - "3 (ecoinvent 3.9.1 cutoff, af6bd1221fc0206541fba... steel, low-alloyed \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 CH global warming potential (GWP100) kg CO2-Eq 0.411480 \n", - "1 AT global warming potential (GWP100) kg CO2-Eq 0.336931 \n", - "2 IN global warming potential (GWP100) kg CO2-Eq 3.016886 \n", - "3 CA-QC global warming potential (GWP100) kg CO2-Eq 0.843149 \n", - "\n", - " activity_code activity_premise \\\n", - "0 18b0dcf01dd401e1549b3796e3786213 steel production, electric, low-alloyed \n", - "1 1dffacc9e0ca08fb55c6b780d7e677dc steel production, electric, low-alloyed \n", - "2 2baa0deb3adc89dfe8cb89d5e078ba8d steel production, electric, low-alloyed \n", - "3 af6bd1221fc0206541fbaf481397bf0d steel production, electric, low-alloyed \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 steel, low-alloyed CH kg CO2-Eq \n", - "1 steel, low-alloyed AT kg CO2-Eq \n", - "2 steel, low-alloyed IN kg CO2-Eq \n", - "3 steel, low-alloyed CA-QC kg CO2-Eq \n", - "\n", - " total_premise relative_change \n", - "0 0.336825 -18.143158 \n", - "1 0.186754 -44.572122 \n", - "2 1.973387 -34.588602 \n", - "3 0.684917 -18.766781 , 'Cumulative Energy Demand - non-renewable energy resources': activity_ei \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 18b0dcf01dd401e1549b3... steel, low-alloyed \n", - "1 (ecoinvent 3.9.1 cutoff, 1dffacc9e0ca08fb55c6b... steel, low-alloyed \n", - "2 (ecoinvent 3.9.1 cutoff, 2baa0deb3adc89dfe8cb8... steel, low-alloyed \n", - "3 (ecoinvent 3.9.1 cutoff, af6bd1221fc0206541fba... steel, low-alloyed \n", - "\n", - " location_ei method \\\n", - "0 CH Cumulative Energy Demand - non-renewable energ... \n", - "1 AT Cumulative Energy Demand - non-renewable energ... \n", - "2 IN Cumulative Energy Demand - non-renewable energ... \n", - "3 CA-QC Cumulative Energy Demand - non-renewable energ... \n", - "\n", - " method unit_ei total_ei activity_code \\\n", - "0 megajoule 5.808586 18b0dcf01dd401e1549b3796e3786213 \n", - "1 megajoule 4.180438 1dffacc9e0ca08fb55c6b780d7e677dc \n", - "2 megajoule 34.862587 2baa0deb3adc89dfe8cb89d5e078ba8d \n", - "3 megajoule 9.447930 af6bd1221fc0206541fbaf481397bf0d \n", - "\n", - " activity_premise \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 steel, low-alloyed CH megajoule \n", - "1 steel, low-alloyed AT megajoule \n", - "2 steel, low-alloyed IN megajoule \n", - "3 steel, low-alloyed CA-QC megajoule \n", - "\n", - " total_premise relative_change \n", - "0 4.692340 -19.217166 \n", - "1 2.943728 -29.583274 \n", - "2 24.707910 -29.127719 \n", - "3 8.424143 -10.836094 , 'land occupation': activity_ei \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 18b0dcf01dd401e1549b3... steel, low-alloyed \n", - "1 (ecoinvent 3.9.1 cutoff, 1dffacc9e0ca08fb55c6b... steel, low-alloyed \n", - "2 (ecoinvent 3.9.1 cutoff, 2baa0deb3adc89dfe8cb8... steel, low-alloyed \n", - "3 (ecoinvent 3.9.1 cutoff, af6bd1221fc0206541fba... steel, low-alloyed \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 CH land occupation square meter-year 0.030020 \n", - "1 AT land occupation square meter-year 0.025831 \n", - "2 IN land occupation square meter-year 0.088649 \n", - "3 CA-QC land occupation square meter-year 0.160458 \n", - "\n", - " activity_code activity_premise \\\n", - "0 18b0dcf01dd401e1549b3796e3786213 steel production, electric, low-alloyed \n", - "1 1dffacc9e0ca08fb55c6b780d7e677dc steel production, electric, low-alloyed \n", - "2 2baa0deb3adc89dfe8cb89d5e078ba8d steel production, electric, low-alloyed \n", - "3 af6bd1221fc0206541fbaf481397bf0d steel production, electric, low-alloyed \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 steel, low-alloyed CH square meter-year \n", - "1 steel, low-alloyed AT square meter-year \n", - "2 steel, low-alloyed IN square meter-year \n", - "3 steel, low-alloyed CA-QC square meter-year \n", - "\n", - " total_premise relative_change \n", - "0 0.091617 205.191207 \n", - "1 0.071999 178.733007 \n", - "2 0.178070 100.870658 \n", - "3 0.703626 338.512469 , 'use of net fresh water': activity_ei \\\n", - "0 steel production, electric, low-alloyed \n", - "1 steel production, electric, low-alloyed \n", - "2 steel production, electric, low-alloyed \n", - "3 steel production, electric, low-alloyed \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 18b0dcf01dd401e1549b3... steel, low-alloyed \n", - "1 (ecoinvent 3.9.1 cutoff, 1dffacc9e0ca08fb55c6b... steel, low-alloyed \n", - "2 (ecoinvent 3.9.1 cutoff, 2baa0deb3adc89dfe8cb8... steel, low-alloyed \n", - "3 (ecoinvent 3.9.1 cutoff, af6bd1221fc0206541fba... steel, low-alloyed \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 CH use of net fresh water cubic meter 0.007785 \n", - "1 AT use of net fresh water cubic meter 0.004373 \n", - "2 IN use of net fresh water cubic meter -0.221999 \n", - "3 CA-QC use of net fresh water cubic meter 0.028423 \n", - "\n", - " activity_code activity_premise \\\n", - "0 18b0dcf01dd401e1549b3796e3786213 steel production, electric, low-alloyed \n", - "1 1dffacc9e0ca08fb55c6b780d7e677dc steel production, electric, low-alloyed \n", - "2 2baa0deb3adc89dfe8cb89d5e078ba8d steel production, electric, low-alloyed \n", - "3 af6bd1221fc0206541fbaf481397bf0d steel production, electric, low-alloyed \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 steel, low-alloyed CH cubic meter \n", - "1 steel, low-alloyed AT cubic meter \n", - "2 steel, low-alloyed IN cubic meter \n", - "3 steel, low-alloyed CA-QC cubic meter \n", - "\n", - " total_premise relative_change \n", - "0 0.005082 -34.724691 \n", - "1 0.004089 -6.491856 \n", - "2 -0.224548 1.148069 \n", - "3 0.018781 -33.924035 }}\n", - "Results and chart saved to 0409_v7.xlsx\n" - ] - } - ], - "source": [ - "database_comparison_plots(ecoinvent_dict, premise_dict, method_dict,'0409_v7.xlsx',current_row=93)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[9], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m sector_lca_scores_plots(premise_dict, method_dict, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m0409_v2.xlsx\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\sector_lca_scores.py:57\u001b[0m, in \u001b[0;36msector_lca_scores_plots\u001b[1;34m(activity_dict, method_dict, excel_file_name, cutoff)\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;124;03mGenerate plots of Life Cycle Assessment (LCA) scores for different sectors and save them to an \u001b[39;00m\n\u001b[0;32m 21\u001b[0m \u001b[38;5;124;03mExcel file.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 53\u001b[0m \u001b[38;5;124;03m `stacked_bars_xcl` for generating plots.\u001b[39;00m\n\u001b[0;32m 54\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 55\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdopo\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mplots_sector_lca_scores\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m dot_plots_xcl, stacked_bars_xcl\n\u001b[1;32m---> 57\u001b[0m scores_dict\u001b[38;5;241m=\u001b[39m_sector_lca_scores(activity_dict, method_dict, cutoff)\n\u001b[0;32m 58\u001b[0m column_positions\u001b[38;5;241m=\u001b[39m_sector_lca_scores_to_excel(scores_dict, excel_file_name)\n\u001b[0;32m 59\u001b[0m current_row\u001b[38;5;241m=\u001b[39mdot_plots_xcl(excel_file_name, column_positions)\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\sector_lca_scores.py:102\u001b[0m, in \u001b[0;36m_sector_lca_scores\u001b[1;34m(activity_dict, method_dict, cutoff)\u001b[0m\n\u001b[0;32m 99\u001b[0m sector_activities \u001b[38;5;241m=\u001b[39m scores_dict[sector][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mactivities\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m 101\u001b[0m \u001b[38;5;66;03m# Calculate LCA scores using the specified methods\u001b[39;00m\n\u001b[1;32m--> 102\u001b[0m lca_scores \u001b[38;5;241m=\u001b[39m _compare_activities_multiple_methods(\n\u001b[0;32m 103\u001b[0m activities_list\u001b[38;5;241m=\u001b[39msector_activities,\n\u001b[0;32m 104\u001b[0m methods\u001b[38;5;241m=\u001b[39mmethod_dict,\n\u001b[0;32m 105\u001b[0m identifier\u001b[38;5;241m=\u001b[39msector,\n\u001b[0;32m 106\u001b[0m mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mabsolute\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 107\u001b[0m )\n\u001b[0;32m 109\u001b[0m \u001b[38;5;66;03m# Apply cutoff to summarize small inputs in an \"other\" column\u001b[39;00m\n\u001b[0;32m 110\u001b[0m lca_scores_cut \u001b[38;5;241m=\u001b[39m _small_inputs_to_other_column(lca_scores, cutoff)\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\sector_lca_scores.py:251\u001b[0m, in \u001b[0;36m_compare_activities_multiple_methods\u001b[1;34m(activities_list, methods, identifier, output_format, mode)\u001b[0m\n\u001b[0;32m 247\u001b[0m dataframes_dict \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m 249\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m method_key, method_details \u001b[38;5;129;01min\u001b[39;00m methods\u001b[38;5;241m.\u001b[39mitems(): \u001b[38;5;66;03m# method_key is not called, but necessary\u001b[39;00m\n\u001b[0;32m 250\u001b[0m \u001b[38;5;66;03m# Perform the comparison using the Brightway2 analyzer\u001b[39;00m\n\u001b[1;32m--> 251\u001b[0m result \u001b[38;5;241m=\u001b[39m _compare_activities_by_grouped_leaves(\n\u001b[0;32m 252\u001b[0m activities_list,\n\u001b[0;32m 253\u001b[0m method_details[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mobject\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mname,\n\u001b[0;32m 254\u001b[0m output_format\u001b[38;5;241m=\u001b[39moutput_format,\n\u001b[0;32m 255\u001b[0m mode\u001b[38;5;241m=\u001b[39mmode,\n\u001b[0;32m 256\u001b[0m )\n\u001b[0;32m 258\u001b[0m \u001b[38;5;66;03m# Create a variable name using the method name and identifier\u001b[39;00m\n\u001b[0;32m 259\u001b[0m method_name \u001b[38;5;241m=\u001b[39m method_details[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mobject\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mname[\u001b[38;5;241m2\u001b[39m]\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m\"\u001b[39m)\u001b[38;5;241m.\u001b[39mlower()\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\sector_lca_scores.py:565\u001b[0m, in \u001b[0;36m_compare_activities_by_grouped_leaves\u001b[1;34m(activities, lcia_method, mode, max_level, cutoff, output_format, str_length)\u001b[0m\n\u001b[0;32m 562\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(act, bd\u001b[38;5;241m.\u001b[39mbackends\u001b[38;5;241m.\u001b[39mpeewee\u001b[38;5;241m.\u001b[39mproxies\u001b[38;5;241m.\u001b[39mActivity):\n\u001b[0;32m 563\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`activities` must be an iterable of `Activity` instances\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m--> 565\u001b[0m objs \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m 566\u001b[0m ba\u001b[38;5;241m.\u001b[39mcomparisons\u001b[38;5;241m.\u001b[39mgroup_leaves(ba\u001b[38;5;241m.\u001b[39mcomparisons\u001b[38;5;241m.\u001b[39mfind_leaves(act, lcia_method, max_level\u001b[38;5;241m=\u001b[39mmax_level, cutoff\u001b[38;5;241m=\u001b[39mcutoff))\n\u001b[0;32m 567\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m act \u001b[38;5;129;01min\u001b[39;00m activities\n\u001b[0;32m 568\u001b[0m ]\n\u001b[0;32m 569\u001b[0m sorted_keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msorted\u001b[39m(\n\u001b[0;32m 570\u001b[0m [\n\u001b[0;32m 571\u001b[0m (\u001b[38;5;28mmax\u001b[39m([el[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m obj \u001b[38;5;129;01min\u001b[39;00m objs \u001b[38;5;28;01mfor\u001b[39;00m el \u001b[38;5;129;01min\u001b[39;00m obj \u001b[38;5;28;01mif\u001b[39;00m el[\u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m==\u001b[39m key]), key)\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 574\u001b[0m reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 575\u001b[0m )\n\u001b[0;32m 576\u001b[0m name_common \u001b[38;5;241m=\u001b[39m commonprefix([act[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m act \u001b[38;5;129;01min\u001b[39;00m activities])\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\sector_lca_scores.py:566\u001b[0m, in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 562\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(act, bd\u001b[38;5;241m.\u001b[39mbackends\u001b[38;5;241m.\u001b[39mpeewee\u001b[38;5;241m.\u001b[39mproxies\u001b[38;5;241m.\u001b[39mActivity):\n\u001b[0;32m 563\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`activities` must be an iterable of `Activity` instances\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 565\u001b[0m objs \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m--> 566\u001b[0m ba\u001b[38;5;241m.\u001b[39mcomparisons\u001b[38;5;241m.\u001b[39mgroup_leaves(ba\u001b[38;5;241m.\u001b[39mcomparisons\u001b[38;5;241m.\u001b[39mfind_leaves(act, lcia_method, max_level\u001b[38;5;241m=\u001b[39mmax_level, cutoff\u001b[38;5;241m=\u001b[39mcutoff))\n\u001b[0;32m 567\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m act \u001b[38;5;129;01min\u001b[39;00m activities\n\u001b[0;32m 568\u001b[0m ]\n\u001b[0;32m 569\u001b[0m sorted_keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msorted\u001b[39m(\n\u001b[0;32m 570\u001b[0m [\n\u001b[0;32m 571\u001b[0m (\u001b[38;5;28mmax\u001b[39m([el[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m obj \u001b[38;5;129;01min\u001b[39;00m objs \u001b[38;5;28;01mfor\u001b[39;00m el \u001b[38;5;129;01min\u001b[39;00m obj \u001b[38;5;28;01mif\u001b[39;00m el[\u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m==\u001b[39m key]), key)\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 574\u001b[0m reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 575\u001b[0m )\n\u001b[0;32m 576\u001b[0m name_common \u001b[38;5;241m=\u001b[39m commonprefix([act[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m act \u001b[38;5;129;01min\u001b[39;00m activities])\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:210\u001b[0m, in \u001b[0;36mfind_leaves\u001b[1;34m(activity, lcia_method, results, lca_obj, amount, total_score, level, max_level, cutoff)\u001b[0m\n\u001b[0;32m 207\u001b[0m results\u001b[38;5;241m.\u001b[39mappend((direct, amount, activity))\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m exc \u001b[38;5;129;01min\u001b[39;00m activity\u001b[38;5;241m.\u001b[39mtechnosphere():\n\u001b[1;32m--> 210\u001b[0m find_leaves(\n\u001b[0;32m 211\u001b[0m activity\u001b[38;5;241m=\u001b[39mexc\u001b[38;5;241m.\u001b[39minput,\n\u001b[0;32m 212\u001b[0m lcia_method\u001b[38;5;241m=\u001b[39mlcia_method,\n\u001b[0;32m 213\u001b[0m results\u001b[38;5;241m=\u001b[39mresults,\n\u001b[0;32m 214\u001b[0m lca_obj\u001b[38;5;241m=\u001b[39mlca_obj,\n\u001b[0;32m 215\u001b[0m amount\u001b[38;5;241m=\u001b[39mamount \u001b[38;5;241m*\u001b[39m exc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mamount\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 216\u001b[0m total_score\u001b[38;5;241m=\u001b[39mtotal_score,\n\u001b[0;32m 217\u001b[0m level\u001b[38;5;241m=\u001b[39mlevel \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 218\u001b[0m max_level\u001b[38;5;241m=\u001b[39mmax_level,\n\u001b[0;32m 219\u001b[0m cutoff\u001b[38;5;241m=\u001b[39mcutoff,\n\u001b[0;32m 220\u001b[0m )\n\u001b[0;32m 222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msorted\u001b[39m(results, reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:210\u001b[0m, in \u001b[0;36mfind_leaves\u001b[1;34m(activity, lcia_method, results, lca_obj, amount, total_score, level, max_level, cutoff)\u001b[0m\n\u001b[0;32m 207\u001b[0m results\u001b[38;5;241m.\u001b[39mappend((direct, amount, activity))\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m exc \u001b[38;5;129;01min\u001b[39;00m activity\u001b[38;5;241m.\u001b[39mtechnosphere():\n\u001b[1;32m--> 210\u001b[0m find_leaves(\n\u001b[0;32m 211\u001b[0m activity\u001b[38;5;241m=\u001b[39mexc\u001b[38;5;241m.\u001b[39minput,\n\u001b[0;32m 212\u001b[0m lcia_method\u001b[38;5;241m=\u001b[39mlcia_method,\n\u001b[0;32m 213\u001b[0m results\u001b[38;5;241m=\u001b[39mresults,\n\u001b[0;32m 214\u001b[0m lca_obj\u001b[38;5;241m=\u001b[39mlca_obj,\n\u001b[0;32m 215\u001b[0m amount\u001b[38;5;241m=\u001b[39mamount \u001b[38;5;241m*\u001b[39m exc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mamount\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 216\u001b[0m total_score\u001b[38;5;241m=\u001b[39mtotal_score,\n\u001b[0;32m 217\u001b[0m level\u001b[38;5;241m=\u001b[39mlevel \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 218\u001b[0m max_level\u001b[38;5;241m=\u001b[39mmax_level,\n\u001b[0;32m 219\u001b[0m cutoff\u001b[38;5;241m=\u001b[39mcutoff,\n\u001b[0;32m 220\u001b[0m )\n\u001b[0;32m 222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msorted\u001b[39m(results, reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:210\u001b[0m, in \u001b[0;36mfind_leaves\u001b[1;34m(activity, lcia_method, results, lca_obj, amount, total_score, level, max_level, cutoff)\u001b[0m\n\u001b[0;32m 207\u001b[0m results\u001b[38;5;241m.\u001b[39mappend((direct, amount, activity))\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m exc \u001b[38;5;129;01min\u001b[39;00m activity\u001b[38;5;241m.\u001b[39mtechnosphere():\n\u001b[1;32m--> 210\u001b[0m find_leaves(\n\u001b[0;32m 211\u001b[0m activity\u001b[38;5;241m=\u001b[39mexc\u001b[38;5;241m.\u001b[39minput,\n\u001b[0;32m 212\u001b[0m lcia_method\u001b[38;5;241m=\u001b[39mlcia_method,\n\u001b[0;32m 213\u001b[0m results\u001b[38;5;241m=\u001b[39mresults,\n\u001b[0;32m 214\u001b[0m lca_obj\u001b[38;5;241m=\u001b[39mlca_obj,\n\u001b[0;32m 215\u001b[0m amount\u001b[38;5;241m=\u001b[39mamount \u001b[38;5;241m*\u001b[39m exc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mamount\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 216\u001b[0m total_score\u001b[38;5;241m=\u001b[39mtotal_score,\n\u001b[0;32m 217\u001b[0m level\u001b[38;5;241m=\u001b[39mlevel \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 218\u001b[0m max_level\u001b[38;5;241m=\u001b[39mmax_level,\n\u001b[0;32m 219\u001b[0m cutoff\u001b[38;5;241m=\u001b[39mcutoff,\n\u001b[0;32m 220\u001b[0m )\n\u001b[0;32m 222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msorted\u001b[39m(results, reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:189\u001b[0m, in \u001b[0;36mfind_leaves\u001b[1;34m(activity, lcia_method, results, lca_obj, amount, total_score, level, max_level, cutoff)\u001b[0m\n\u001b[0;32m 187\u001b[0m total_score \u001b[38;5;241m=\u001b[39m lca_obj\u001b[38;5;241m.\u001b[39mscore\n\u001b[0;32m 188\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 189\u001b[0m lca_obj\u001b[38;5;241m.\u001b[39mredo_lcia({activity: amount})\n\u001b[0;32m 191\u001b[0m \u001b[38;5;66;03m# If this is a leaf, add the leaf and return\u001b[39;00m\n\u001b[0;32m 192\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mabs\u001b[39m(lca_obj\u001b[38;5;241m.\u001b[39mscore) \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mabs\u001b[39m(total_score \u001b[38;5;241m*\u001b[39m cutoff) \u001b[38;5;129;01mor\u001b[39;00m level \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m max_level:\n\u001b[0;32m 193\u001b[0m \n\u001b[0;32m 194\u001b[0m \u001b[38;5;66;03m# Only add leaves with scores that matter\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2calc\\lca.py:529\u001b[0m, in \u001b[0;36mLCA.redo_lcia\u001b[1;34m(self, demand)\u001b[0m\n\u001b[0;32m 527\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcharacterized_inventory\u001b[39m\u001b[38;5;124m\"\u001b[39m), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMust do LCIA first\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 528\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m demand \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 529\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mredo_lci(demand)\n\u001b[0;32m 530\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdemand \u001b[38;5;241m=\u001b[39m demand\n\u001b[0;32m 531\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlcia_calculation()\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2calc\\lca.py:515\u001b[0m, in \u001b[0;36mLCA.redo_lci\u001b[1;34m(self, demand)\u001b[0m\n\u001b[0;32m 513\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_demand_array(demand)\n\u001b[0;32m 514\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdemand \u001b[38;5;241m=\u001b[39m demand\n\u001b[1;32m--> 515\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlci_calculation()\n\u001b[0;32m 516\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlogger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRedoing LCI\u001b[39m\u001b[38;5;124m\"\u001b[39m, extra\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdemand\u001b[39m\u001b[38;5;124m'\u001b[39m: wrap_functional_unit(demand \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdemand)})\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2calc\\lca.py:353\u001b[0m, in \u001b[0;36mLCA.lci_calculation\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 351\u001b[0m \u001b[38;5;66;03m# Turn 1-d array into diagonal matrix\u001b[39;00m\n\u001b[0;32m 352\u001b[0m count \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mactivity_dict)\n\u001b[1;32m--> 353\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minventory \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbiosphere_matrix \u001b[38;5;241m*\u001b[39m \\\n\u001b[0;32m 354\u001b[0m sparse\u001b[38;5;241m.\u001b[39mspdiags([\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msupply_array], [\u001b[38;5;241m0\u001b[39m], count, count)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\scipy\\sparse\\_matrix.py:44\u001b[0m, in \u001b[0;36mspmatrix.__mul__\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__mul__\u001b[39m(\u001b[38;5;28mself\u001b[39m, other):\n\u001b[1;32m---> 44\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_matmul_dispatch(other)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\scipy\\sparse\\_base.py:606\u001b[0m, in \u001b[0;36m_spbase._matmul_dispatch\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 604\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m other\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m 605\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mCannot yet multiply a 1d sparse array\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m--> 606\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_matmul_sparse(other)\n\u001b[0;32m 608\u001b[0m \u001b[38;5;66;03m# If it's a list or whatever, treat it like an array\u001b[39;00m\n\u001b[0;32m 609\u001b[0m other_a \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39masanyarray(other)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\scipy\\sparse\\_compressed.py:535\u001b[0m, in \u001b[0;36m_cs_matrix._matmul_sparse\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 532\u001b[0m data \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mempty(nnz, dtype\u001b[38;5;241m=\u001b[39mupcast(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdtype, other\u001b[38;5;241m.\u001b[39mdtype))\n\u001b[0;32m 534\u001b[0m fn \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(_sparsetools, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mformat \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_matmat\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m--> 535\u001b[0m fn(M, N, np\u001b[38;5;241m.\u001b[39masarray(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindptr, dtype\u001b[38;5;241m=\u001b[39midx_dtype),\n\u001b[0;32m 536\u001b[0m np\u001b[38;5;241m.\u001b[39masarray(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindices, dtype\u001b[38;5;241m=\u001b[39midx_dtype),\n\u001b[0;32m 537\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata,\n\u001b[0;32m 538\u001b[0m np\u001b[38;5;241m.\u001b[39masarray(other\u001b[38;5;241m.\u001b[39mindptr, dtype\u001b[38;5;241m=\u001b[39midx_dtype),\n\u001b[0;32m 539\u001b[0m np\u001b[38;5;241m.\u001b[39masarray(other\u001b[38;5;241m.\u001b[39mindices, dtype\u001b[38;5;241m=\u001b[39midx_dtype),\n\u001b[0;32m 540\u001b[0m other\u001b[38;5;241m.\u001b[39mdata,\n\u001b[0;32m 541\u001b[0m indptr, indices, data)\n\u001b[0;32m 543\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m((data, indices, indptr), shape\u001b[38;5;241m=\u001b[39m(M, N))\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "sector_lca_scores_plots(premise_dict, method_dict, '0409_v2.xlsx')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/test_dopo_2908.ipynb b/dev/notebook tests/test_dopo_2908.ipynb deleted file mode 100644 index 75e0793..0000000 --- a/dev/notebook tests/test_dopo_2908.ipynb +++ /dev/null @@ -1,1046 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import dopo\n", - "from dopo import*" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "import ast\n", - "import pandas as pd\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'C:\\\\Users\\\\fried\\\\premise_validation\\\\dopo\\\\yamls\\\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\cement_small.yaml', \n", - " 'yaml identifier': 'Cement'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "#files_dict['Steel']= {'yaml':r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\steel_small.yaml',\n", - " # 'yaml identifier': 'Steel'}\n", - "#files_dict['Fuel']={'yaml': r'C:\\Users\\fried\\premise_validation\\dopo\\yamls\\fuels_small.yaml',\n", - " # 'yaml identifier': 'Fuels' } \n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - "Processing Cement with database ecoinvent 3.9.1 cutoff\n", - "Activities for Cement:\n", - " ('ecoinvent 3.9.1 cutoff', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ecoinvent 3.9.1 cutoff', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ecoinvent 3.9.1 cutoff', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ecoinvent 3.9.1 cutoff', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ecoinvent 3.9.1 cutoff', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ecoinvent 3.9.1 cutoff', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ecoinvent 3.9.1 cutoff', '36a53c174f34e672bc15b7e55563685e')\n" - ] - } - ], - "source": [ - "#for plot 1 and 2\n", - "dictionary_one = dopo.sector_filter.process_yaml_files(files_dict, ei39SSP2)\n", - "\n", - "#for comparison\n", - "premise_dict = dopo.sector_filter.process_yaml_files(files_dict, ei39SSP2)\n", - "ecoinvent_dict = dopo.sector_filter.process_yaml_files(files_dict, ei39)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder=dopo.methods.MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[7], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m scores_dictionary_one \u001b[38;5;241m=\u001b[39m dopo\u001b[38;5;241m.\u001b[39msector_lca_scores(dictionary_one, method_dict, cutoff\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.2\u001b[39m)\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\sector_lca_scores.py:51\u001b[0m, in \u001b[0;36msector_lca_scores\u001b[1;34m(activity_dict, method_dict, cutoff)\u001b[0m\n\u001b[0;32m 48\u001b[0m sector_activities \u001b[38;5;241m=\u001b[39m scores_dict[sector][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mactivities\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m 50\u001b[0m \u001b[38;5;66;03m# Calculate LCA scores using the specified methods\u001b[39;00m\n\u001b[1;32m---> 51\u001b[0m lca_scores \u001b[38;5;241m=\u001b[39m _compare_activities_multiple_methods(\n\u001b[0;32m 52\u001b[0m activities_list\u001b[38;5;241m=\u001b[39msector_activities,\n\u001b[0;32m 53\u001b[0m methods\u001b[38;5;241m=\u001b[39mmethod_dict,\n\u001b[0;32m 54\u001b[0m identifier\u001b[38;5;241m=\u001b[39msector,\n\u001b[0;32m 55\u001b[0m mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mabsolute\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 56\u001b[0m )\n\u001b[0;32m 58\u001b[0m \u001b[38;5;66;03m# Apply cutoff to summarize small inputs in an \"other\" column\u001b[39;00m\n\u001b[0;32m 59\u001b[0m lca_scores_cut \u001b[38;5;241m=\u001b[39m _small_inputs_to_other_column(lca_scores, cutoff)\n", - "File \u001b[1;32m~\\premise_validation\\dopo\\sector_lca_scores.py:192\u001b[0m, in \u001b[0;36m_compare_activities_multiple_methods\u001b[1;34m(activities_list, methods, identifier, output_format, mode)\u001b[0m\n\u001b[0;32m 188\u001b[0m dataframes_dict \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m 190\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m method_key, method_details \u001b[38;5;129;01min\u001b[39;00m methods\u001b[38;5;241m.\u001b[39mitems():\n\u001b[0;32m 191\u001b[0m \u001b[38;5;66;03m# Perform the comparison using the Brightway2 analyzer\u001b[39;00m\n\u001b[1;32m--> 192\u001b[0m result \u001b[38;5;241m=\u001b[39m ba\u001b[38;5;241m.\u001b[39mcomparisons\u001b[38;5;241m.\u001b[39mcompare_activities_by_grouped_leaves(\n\u001b[0;32m 193\u001b[0m activities_list,\n\u001b[0;32m 194\u001b[0m method_details[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mobject\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mname,\n\u001b[0;32m 195\u001b[0m output_format\u001b[38;5;241m=\u001b[39moutput_format,\n\u001b[0;32m 196\u001b[0m mode\u001b[38;5;241m=\u001b[39mmode,\n\u001b[0;32m 197\u001b[0m )\n\u001b[0;32m 199\u001b[0m \u001b[38;5;66;03m# Create a variable name using the method name and identifier\u001b[39;00m\n\u001b[0;32m 200\u001b[0m method_name \u001b[38;5;241m=\u001b[39m method_details[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mobject\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mname[\u001b[38;5;241m2\u001b[39m]\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m\"\u001b[39m)\u001b[38;5;241m.\u001b[39mlower()\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:291\u001b[0m, in \u001b[0;36mcompare_activities_by_grouped_leaves\u001b[1;34m(activities, lcia_method, mode, max_level, cutoff, output_format, str_length)\u001b[0m\n\u001b[0;32m 288\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(act, bd\u001b[38;5;241m.\u001b[39mbackends\u001b[38;5;241m.\u001b[39mpeewee\u001b[38;5;241m.\u001b[39mproxies\u001b[38;5;241m.\u001b[39mActivity):\n\u001b[0;32m 289\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`activities` must be an iterable of `Activity` instances\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m--> 291\u001b[0m objs \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m 292\u001b[0m group_leaves(find_leaves(act, lcia_method, max_level\u001b[38;5;241m=\u001b[39mmax_level, cutoff\u001b[38;5;241m=\u001b[39mcutoff))\n\u001b[0;32m 293\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m act \u001b[38;5;129;01min\u001b[39;00m activities\n\u001b[0;32m 294\u001b[0m ]\n\u001b[0;32m 295\u001b[0m sorted_keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msorted\u001b[39m(\n\u001b[0;32m 296\u001b[0m [\n\u001b[0;32m 297\u001b[0m (\u001b[38;5;28mmax\u001b[39m([el[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m obj \u001b[38;5;129;01min\u001b[39;00m objs \u001b[38;5;28;01mfor\u001b[39;00m el \u001b[38;5;129;01min\u001b[39;00m obj \u001b[38;5;28;01mif\u001b[39;00m el[\u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m==\u001b[39m key]), key)\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 300\u001b[0m reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 301\u001b[0m )\n\u001b[0;32m 302\u001b[0m name_common \u001b[38;5;241m=\u001b[39m commonprefix([act[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m act \u001b[38;5;129;01min\u001b[39;00m activities])\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:292\u001b[0m, in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 288\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(act, bd\u001b[38;5;241m.\u001b[39mbackends\u001b[38;5;241m.\u001b[39mpeewee\u001b[38;5;241m.\u001b[39mproxies\u001b[38;5;241m.\u001b[39mActivity):\n\u001b[0;32m 289\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`activities` must be an iterable of `Activity` instances\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 291\u001b[0m objs \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m--> 292\u001b[0m group_leaves(find_leaves(act, lcia_method, max_level\u001b[38;5;241m=\u001b[39mmax_level, cutoff\u001b[38;5;241m=\u001b[39mcutoff))\n\u001b[0;32m 293\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m act \u001b[38;5;129;01min\u001b[39;00m activities\n\u001b[0;32m 294\u001b[0m ]\n\u001b[0;32m 295\u001b[0m sorted_keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msorted\u001b[39m(\n\u001b[0;32m 296\u001b[0m [\n\u001b[0;32m 297\u001b[0m (\u001b[38;5;28mmax\u001b[39m([el[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m obj \u001b[38;5;129;01min\u001b[39;00m objs \u001b[38;5;28;01mfor\u001b[39;00m el \u001b[38;5;129;01min\u001b[39;00m obj \u001b[38;5;28;01mif\u001b[39;00m el[\u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m==\u001b[39m key]), key)\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 300\u001b[0m reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 301\u001b[0m )\n\u001b[0;32m 302\u001b[0m name_common \u001b[38;5;241m=\u001b[39m commonprefix([act[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m act \u001b[38;5;129;01min\u001b[39;00m activities])\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:210\u001b[0m, in \u001b[0;36mfind_leaves\u001b[1;34m(activity, lcia_method, results, lca_obj, amount, total_score, level, max_level, cutoff)\u001b[0m\n\u001b[0;32m 207\u001b[0m results\u001b[38;5;241m.\u001b[39mappend((direct, amount, activity))\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m exc \u001b[38;5;129;01min\u001b[39;00m activity\u001b[38;5;241m.\u001b[39mtechnosphere():\n\u001b[1;32m--> 210\u001b[0m find_leaves(\n\u001b[0;32m 211\u001b[0m activity\u001b[38;5;241m=\u001b[39mexc\u001b[38;5;241m.\u001b[39minput,\n\u001b[0;32m 212\u001b[0m lcia_method\u001b[38;5;241m=\u001b[39mlcia_method,\n\u001b[0;32m 213\u001b[0m results\u001b[38;5;241m=\u001b[39mresults,\n\u001b[0;32m 214\u001b[0m lca_obj\u001b[38;5;241m=\u001b[39mlca_obj,\n\u001b[0;32m 215\u001b[0m amount\u001b[38;5;241m=\u001b[39mamount \u001b[38;5;241m*\u001b[39m exc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mamount\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 216\u001b[0m total_score\u001b[38;5;241m=\u001b[39mtotal_score,\n\u001b[0;32m 217\u001b[0m level\u001b[38;5;241m=\u001b[39mlevel \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 218\u001b[0m max_level\u001b[38;5;241m=\u001b[39mmax_level,\n\u001b[0;32m 219\u001b[0m cutoff\u001b[38;5;241m=\u001b[39mcutoff,\n\u001b[0;32m 220\u001b[0m )\n\u001b[0;32m 222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msorted\u001b[39m(results, reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:210\u001b[0m, in \u001b[0;36mfind_leaves\u001b[1;34m(activity, lcia_method, results, lca_obj, amount, total_score, level, max_level, cutoff)\u001b[0m\n\u001b[0;32m 207\u001b[0m results\u001b[38;5;241m.\u001b[39mappend((direct, amount, activity))\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m exc \u001b[38;5;129;01min\u001b[39;00m activity\u001b[38;5;241m.\u001b[39mtechnosphere():\n\u001b[1;32m--> 210\u001b[0m find_leaves(\n\u001b[0;32m 211\u001b[0m activity\u001b[38;5;241m=\u001b[39mexc\u001b[38;5;241m.\u001b[39minput,\n\u001b[0;32m 212\u001b[0m lcia_method\u001b[38;5;241m=\u001b[39mlcia_method,\n\u001b[0;32m 213\u001b[0m results\u001b[38;5;241m=\u001b[39mresults,\n\u001b[0;32m 214\u001b[0m lca_obj\u001b[38;5;241m=\u001b[39mlca_obj,\n\u001b[0;32m 215\u001b[0m amount\u001b[38;5;241m=\u001b[39mamount \u001b[38;5;241m*\u001b[39m exc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mamount\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 216\u001b[0m total_score\u001b[38;5;241m=\u001b[39mtotal_score,\n\u001b[0;32m 217\u001b[0m level\u001b[38;5;241m=\u001b[39mlevel \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 218\u001b[0m max_level\u001b[38;5;241m=\u001b[39mmax_level,\n\u001b[0;32m 219\u001b[0m cutoff\u001b[38;5;241m=\u001b[39mcutoff,\n\u001b[0;32m 220\u001b[0m )\n\u001b[0;32m 222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msorted\u001b[39m(results, reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - " \u001b[1;31m[... skipping similar frames: find_leaves at line 210 (1 times)]\u001b[0m\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:210\u001b[0m, in \u001b[0;36mfind_leaves\u001b[1;34m(activity, lcia_method, results, lca_obj, amount, total_score, level, max_level, cutoff)\u001b[0m\n\u001b[0;32m 207\u001b[0m results\u001b[38;5;241m.\u001b[39mappend((direct, amount, activity))\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m exc \u001b[38;5;129;01min\u001b[39;00m activity\u001b[38;5;241m.\u001b[39mtechnosphere():\n\u001b[1;32m--> 210\u001b[0m find_leaves(\n\u001b[0;32m 211\u001b[0m activity\u001b[38;5;241m=\u001b[39mexc\u001b[38;5;241m.\u001b[39minput,\n\u001b[0;32m 212\u001b[0m lcia_method\u001b[38;5;241m=\u001b[39mlcia_method,\n\u001b[0;32m 213\u001b[0m results\u001b[38;5;241m=\u001b[39mresults,\n\u001b[0;32m 214\u001b[0m lca_obj\u001b[38;5;241m=\u001b[39mlca_obj,\n\u001b[0;32m 215\u001b[0m amount\u001b[38;5;241m=\u001b[39mamount \u001b[38;5;241m*\u001b[39m exc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mamount\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 216\u001b[0m total_score\u001b[38;5;241m=\u001b[39mtotal_score,\n\u001b[0;32m 217\u001b[0m level\u001b[38;5;241m=\u001b[39mlevel \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 218\u001b[0m max_level\u001b[38;5;241m=\u001b[39mmax_level,\n\u001b[0;32m 219\u001b[0m cutoff\u001b[38;5;241m=\u001b[39mcutoff,\n\u001b[0;32m 220\u001b[0m )\n\u001b[0;32m 222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msorted\u001b[39m(results, reverse\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2analyzer\\comparisons.py:189\u001b[0m, in \u001b[0;36mfind_leaves\u001b[1;34m(activity, lcia_method, results, lca_obj, amount, total_score, level, max_level, cutoff)\u001b[0m\n\u001b[0;32m 187\u001b[0m total_score \u001b[38;5;241m=\u001b[39m lca_obj\u001b[38;5;241m.\u001b[39mscore\n\u001b[0;32m 188\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 189\u001b[0m lca_obj\u001b[38;5;241m.\u001b[39mredo_lcia({activity: amount})\n\u001b[0;32m 191\u001b[0m \u001b[38;5;66;03m# If this is a leaf, add the leaf and return\u001b[39;00m\n\u001b[0;32m 192\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mabs\u001b[39m(lca_obj\u001b[38;5;241m.\u001b[39mscore) \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mabs\u001b[39m(total_score \u001b[38;5;241m*\u001b[39m cutoff) \u001b[38;5;129;01mor\u001b[39;00m level \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m max_level:\n\u001b[0;32m 193\u001b[0m \n\u001b[0;32m 194\u001b[0m \u001b[38;5;66;03m# Only add leaves with scores that matter\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2calc\\lca.py:529\u001b[0m, in \u001b[0;36mLCA.redo_lcia\u001b[1;34m(self, demand)\u001b[0m\n\u001b[0;32m 527\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcharacterized_inventory\u001b[39m\u001b[38;5;124m\"\u001b[39m), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMust do LCIA first\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 528\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m demand \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 529\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mredo_lci(demand)\n\u001b[0;32m 530\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdemand \u001b[38;5;241m=\u001b[39m demand\n\u001b[0;32m 531\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlcia_calculation()\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2calc\\lca.py:515\u001b[0m, in \u001b[0;36mLCA.redo_lci\u001b[1;34m(self, demand)\u001b[0m\n\u001b[0;32m 513\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_demand_array(demand)\n\u001b[0;32m 514\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdemand \u001b[38;5;241m=\u001b[39m demand\n\u001b[1;32m--> 515\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlci_calculation()\n\u001b[0;32m 516\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlogger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRedoing LCI\u001b[39m\u001b[38;5;124m\"\u001b[39m, extra\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdemand\u001b[39m\u001b[38;5;124m'\u001b[39m: wrap_functional_unit(demand \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdemand)})\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\bw2calc\\lca.py:353\u001b[0m, in \u001b[0;36mLCA.lci_calculation\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 351\u001b[0m \u001b[38;5;66;03m# Turn 1-d array into diagonal matrix\u001b[39;00m\n\u001b[0;32m 352\u001b[0m count \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mactivity_dict)\n\u001b[1;32m--> 353\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minventory \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbiosphere_matrix \u001b[38;5;241m*\u001b[39m \\\n\u001b[0;32m 354\u001b[0m sparse\u001b[38;5;241m.\u001b[39mspdiags([\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msupply_array], [\u001b[38;5;241m0\u001b[39m], count, count)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\scipy\\sparse\\_matrix.py:44\u001b[0m, in \u001b[0;36mspmatrix.__mul__\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__mul__\u001b[39m(\u001b[38;5;28mself\u001b[39m, other):\n\u001b[1;32m---> 44\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_matmul_dispatch(other)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\scipy\\sparse\\_base.py:606\u001b[0m, in \u001b[0;36m_spbase._matmul_dispatch\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 604\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m other\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m 605\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mCannot yet multiply a 1d sparse array\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m--> 606\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_matmul_sparse(other)\n\u001b[0;32m 608\u001b[0m \u001b[38;5;66;03m# If it's a list or whatever, treat it like an array\u001b[39;00m\n\u001b[0;32m 609\u001b[0m other_a \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39masanyarray(other)\n", - "File \u001b[1;32mc:\\Users\\fried\\miniconda3\\envs\\premise\\Lib\\site-packages\\scipy\\sparse\\_compressed.py:535\u001b[0m, in \u001b[0;36m_cs_matrix._matmul_sparse\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 532\u001b[0m data \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mempty(nnz, dtype\u001b[38;5;241m=\u001b[39mupcast(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdtype, other\u001b[38;5;241m.\u001b[39mdtype))\n\u001b[0;32m 534\u001b[0m fn \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(_sparsetools, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mformat \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_matmat\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m--> 535\u001b[0m fn(M, N, np\u001b[38;5;241m.\u001b[39masarray(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindptr, dtype\u001b[38;5;241m=\u001b[39midx_dtype),\n\u001b[0;32m 536\u001b[0m np\u001b[38;5;241m.\u001b[39masarray(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindices, dtype\u001b[38;5;241m=\u001b[39midx_dtype),\n\u001b[0;32m 537\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata,\n\u001b[0;32m 538\u001b[0m np\u001b[38;5;241m.\u001b[39masarray(other\u001b[38;5;241m.\u001b[39mindptr, dtype\u001b[38;5;241m=\u001b[39midx_dtype),\n\u001b[0;32m 539\u001b[0m np\u001b[38;5;241m.\u001b[39masarray(other\u001b[38;5;241m.\u001b[39mindices, dtype\u001b[38;5;241m=\u001b[39midx_dtype),\n\u001b[0;32m 540\u001b[0m other\u001b[38;5;241m.\u001b[39mdata,\n\u001b[0;32m 541\u001b[0m indptr, indices, data)\n\u001b[0;32m 543\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m((data, indices, indptr), shape\u001b[38;5;241m=\u001b[39m(M, N))\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "scores_dictionary_one = dopo.sector_lca_scores(dictionary_one, method_dict, cutoff=0.2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'C:\\\\Users\\\\fried\\\\premise_validation\\\\dopo\\\\yamls\\\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement',\n", - " 'activities': ['cement production, Portland' (kilogram, BR, None),\n", - " 'cement production, Portland' (kilogram, PE, None),\n", - " 'cement production, Portland' (kilogram, US, None),\n", - " 'cement production, Portland' (kilogram, IN, None),\n", - " 'cement production, Portland' (kilogram, ZA, None),\n", - " 'cement production, Portland' (kilogram, CA-QC, None),\n", - " 'cement production, Portland' (kilogram, CH, None)],\n", - " 'lca_scores': {'Cement_global_warming_potential_(gwp100)': activity activity key product \\\n", - " 6 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 5 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 4 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 3 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 2 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 1 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 0 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " \n", - " location unit method method unit total \\\n", - " 6 PE kilogram global warming potential (GWP100) kg CO2-Eq 0.869433 \n", - " 5 CA-QC kilogram global warming potential (GWP100) kg CO2-Eq 0.841855 \n", - " 4 BR kilogram global warming potential (GWP100) kg CO2-Eq 0.832335 \n", - " 3 US kilogram global warming potential (GWP100) kg CO2-Eq 0.821278 \n", - " 2 ZA kilogram global warming potential (GWP100) kg CO2-Eq 0.814768 \n", - " 1 IN kilogram global warming potential (GWP100) kg CO2-Eq 0.774079 \n", - " 0 CH kilogram global warming potential (GWP100) kg CO2-Eq 0.737734 \n", - " \n", - " 37430: Cement clinkers other \n", - " 6 0.824794 0.043989 \n", - " 5 0.781589 0.059457 \n", - " 4 0.742414 0.089157 \n", - " 3 0.759166 0.061235 \n", - " 2 0.758633 0.055771 \n", - " 1 0.718396 0.055230 \n", - " 0 0.701263 0.036028 ,\n", - " 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources': activity activity key product \\\n", - " 6 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 5 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 4 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 3 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 2 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 1 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 0 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " \n", - " location unit method \\\n", - " 6 ZA kilogram Cumulative Energy Demand - non-renewable energ... \n", - " 5 CA-QC kilogram Cumulative Energy Demand - non-renewable energ... \n", - " 4 PE kilogram Cumulative Energy Demand - non-renewable energ... \n", - " 3 IN kilogram Cumulative Energy Demand - non-renewable energ... \n", - " 2 BR kilogram Cumulative Energy Demand - non-renewable energ... \n", - " 1 US kilogram Cumulative Energy Demand - non-renewable energ... \n", - " 0 CH kilogram Cumulative Energy Demand - non-renewable energ... \n", - " \n", - " method unit total 11010: Hard coal \\\n", - " 6 megajoule 4.025051 3.006553 \n", - " 5 megajoule 3.997485 2.156479 \n", - " 4 megajoule 3.836765 2.269998 \n", - " 3 megajoule 3.581588 1.816200 \n", - " 2 megajoule 3.419633 0.000000 \n", - " 1 megajoule 2.672874 0.771238 \n", - " 0 megajoule 2.020362 0.858092 \n", - " \n", - " 33: Coke oven products; refined petroleum products; nuclear fuel \\\n", - " 6 0.000000 \n", - " 5 0.000000 \n", - " 4 0.000000 \n", - " 3 0.000000 \n", - " 2 2.955938 \n", - " 1 0.000000 \n", - " 0 0.000000 \n", - " \n", - " 12010: Petroleum oils and oils obtained from bituminous minerals, crude \\\n", - " 6 0.000000 \n", - " 5 1.318393 \n", - " 4 0.000000 \n", - " 3 1.309163 \n", - " 2 0.000000 \n", - " 1 1.199670 \n", - " 0 0.000000 \n", - " \n", - " 12020: Natural gas, liquefied or in the gaseous state other \n", - " 6 0.000000 1.014950 \n", - " 5 0.000000 0.515297 \n", - " 4 1.202036 0.362019 \n", - " 3 0.000000 0.446288 \n", - " 2 0.000000 0.460484 \n", - " 1 0.000000 0.693157 \n", - " 0 0.000000 1.150103 ,\n", - " 'Cement_land_occupation': activity activity key product \\\n", - " 6 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 5 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 4 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 3 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 2 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 1 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 0 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " \n", - " location unit method method unit total \\\n", - " 6 CA-QC kilogram land occupation square meter-year 0.128863 \n", - " 5 BR kilogram land occupation square meter-year 0.073527 \n", - " 4 PE kilogram land occupation square meter-year 0.064829 \n", - " 3 IN kilogram land occupation square meter-year 0.050827 \n", - " 2 US kilogram land occupation square meter-year 0.050125 \n", - " 1 CH kilogram land occupation square meter-year 0.022235 \n", - " 0 ZA kilogram land occupation square meter-year 0.018817 \n", - " \n", - " 15200: Gypsum; anhydrite; limestone flux; limestone and other calcareous stone, of a kind used for the manufacture of[…] \\\n", - " 6 0.000000 \n", - " 5 0.000000 \n", - " 4 0.000000 \n", - " 3 0.037907 \n", - " 2 0.000000 \n", - " 1 0.000000 \n", - " 0 0.000000 \n", - " \n", - " 31230: Wood in chips or particles 34510: Wood charcoal \\\n", - " 6 0.035444 0.000000 \n", - " 5 0.000000 0.033374 \n", - " 4 0.000000 0.000000 \n", - " 3 0.000000 0.000000 \n", - " 2 0.012372 0.000000 \n", - " 1 0.000000 0.000000 \n", - " 0 0.000000 0.000000 \n", - " \n", - " 6511: Road transport services of freight 11010: Hard coal other \n", - " 6 0.000000 0.000000 0.093180 \n", - " 5 0.000000 0.000000 0.040044 \n", - " 4 0.000000 0.000000 0.064730 \n", - " 3 0.000000 0.000000 0.012688 \n", - " 2 0.000000 0.000000 0.037559 \n", - " 1 0.000000 0.000000 0.022103 \n", - " 0 0.004224 0.003802 0.010777 ,\n", - " 'Cement_use_of_net_fresh_water': activity activity key product \\\n", - " 6 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 5 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 4 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 3 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 2 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 1 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " 0 Portland (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - " \n", - " location unit method method unit total \\\n", - " 6 BR kilogram use of net fresh water cubic meter 0.003192 \n", - " 5 CA-QC kilogram use of net fresh water cubic meter 0.002367 \n", - " 4 PE kilogram use of net fresh water cubic meter 0.002134 \n", - " 3 US kilogram use of net fresh water cubic meter 0.001388 \n", - " 2 CH kilogram use of net fresh water cubic meter 0.001368 \n", - " 1 ZA kilogram use of net fresh water cubic meter 0.001053 \n", - " 0 IN kilogram use of net fresh water cubic meter 0.000424 \n", - " \n", - " 17100: Electrical energy 37430: Cement clinkers \\\n", - " 6 0.000886 0.000000 \n", - " 5 0.000888 0.000702 \n", - " 4 0.000535 0.000000 \n", - " 3 0.000000 0.000000 \n", - " 2 0.000460 0.000000 \n", - " 1 0.000000 0.000000 \n", - " 0 0.000099 0.000000 \n", - " \n", - " 161: Chemical and fertilizer minerals 18000: Natural water other \n", - " 6 0.000000 0.000000 0.002302 \n", - " 5 0.000000 0.000000 0.000770 \n", - " 4 0.000000 0.000000 0.001595 \n", - " 3 0.000618 0.000315 0.000448 \n", - " 2 0.000000 0.000313 0.000586 \n", - " 1 0.000000 0.000296 0.000757 \n", - " 0 0.000000 0.000000 0.000323 }}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores_dictionary_one" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "key in method_dfs\n", - "Cement_global_warming_potential_(gwp100)\n", - "key in method_dfs\n", - "Cement_cumulative_energy_demand_-_non-renewable_energy_resources\n", - "key in method_dfs\n", - "Cement_land_occupation\n", - "key in method_dfs\n", - "Cement_use_of_net_fresh_water\n", - "Warning: No matching key found for worksheet 'Cement_charts'. Skipping...\n", - "last row occupied in excel charts sheet\n", - "93\n" - ] - } - ], - "source": [ - "sector_lca_scores_plots(dictionary_one, method_dict, '0309_v10.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'database_comparison_plots' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[10], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m database_comparison_plots(ecoinvent_dict, premise_dict, method_dict,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m0309_v10.xlsx\u001b[39m\u001b[38;5;124m'\u001b[39m,current_row\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m93\u001b[39m)\n", - "\u001b[1;31mNameError\u001b[0m: name 'database_comparison_plots' is not defined" - ] - } - ], - "source": [ - "database_comparison_plots(ecoinvent_dict, premise_dict, method_dict,'0309_v10.xlsx',current_row=93)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "key in method_dfs\n", - "Cement_global_warming_potential_(gwp100)\n", - "key in method_dfs\n", - "Cement_cumulative_energy_demand_-_non-renewable_energy_resources\n", - "key in method_dfs\n", - "Cement_land_occupation\n", - "key in method_dfs\n", - "Cement_use_of_net_fresh_water\n", - "Warning: No matching key found for worksheet 'Cement_charts'. Skipping...\n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH global warming potential (GWP100) kg CO2-Eq 0.742421 \n", - "1 CA-QC global warming potential (GWP100) kg CO2-Eq 0.845772 \n", - "2 PE global warming potential (GWP100) kg CO2-Eq 0.895198 \n", - "3 BR global warming potential (GWP100) kg CO2-Eq 0.851799 \n", - "4 ZA global warming potential (GWP100) kg CO2-Eq 1.000588 \n", - "5 IN global warming potential (GWP100) kg CO2-Eq 0.891756 \n", - "6 US global warming potential (GWP100) kg CO2-Eq 0.885515 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 a3c2064d83411f7963af550c04c869a1 \n", - "4 86841f8c7ee2668f244d3b8e34f41932 \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 36a53c174f34e672bc15b7e55563685e \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH global warming potential (GWP100) kg CO2-Eq 0.737734 \n", - "1 CA-QC global warming potential (GWP100) kg CO2-Eq 0.841855 \n", - "2 PE global warming potential (GWP100) kg CO2-Eq 0.869433 \n", - "3 ZA global warming potential (GWP100) kg CO2-Eq 0.814768 \n", - "4 BR global warming potential (GWP100) kg CO2-Eq 0.832335 \n", - "5 IN global warming potential (GWP100) kg CO2-Eq 0.774079 \n", - "6 US global warming potential (GWP100) kg CO2-Eq 0.821278 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 86841f8c7ee2668f244d3b8e34f41932 \n", - "4 a3c2064d83411f7963af550c04c869a1 \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 36a53c174f34e672bc15b7e55563685e \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "\n", - " location method method unit \\\n", - "0 CH Cumulative Energy Demand - non-renewable energ... megajoule \n", - "1 CA-QC Cumulative Energy Demand - non-renewable energ... megajoule \n", - "2 PE Cumulative Energy Demand - non-renewable energ... megajoule \n", - "3 BR Cumulative Energy Demand - non-renewable energ... megajoule \n", - "4 ZA Cumulative Energy Demand - non-renewable energ... megajoule \n", - "5 IN Cumulative Energy Demand - non-renewable energ... megajoule \n", - "6 US Cumulative Energy Demand - non-renewable energ... megajoule \n", - "\n", - " total activity_code \n", - "0 2.164824 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 3.992977 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 4.172537 3c16b45db40210cd97de6574b2f47aaf \n", - "3 3.606791 a3c2064d83411f7963af550c04c869a1 \n", - "4 6.186147 86841f8c7ee2668f244d3b8e34f41932 \n", - "5 4.785940 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 3.599198 36a53c174f34e672bc15b7e55563685e \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit \\\n", - "0 CH Cumulative Energy Demand - non-renewable energ... megajoule \n", - "1 CA-QC Cumulative Energy Demand - non-renewable energ... megajoule \n", - "2 PE Cumulative Energy Demand - non-renewable energ... megajoule \n", - "3 ZA Cumulative Energy Demand - non-renewable energ... megajoule \n", - "4 BR Cumulative Energy Demand - non-renewable energ... megajoule \n", - "5 IN Cumulative Energy Demand - non-renewable energ... megajoule \n", - "6 US Cumulative Energy Demand - non-renewable energ... megajoule \n", - "\n", - " total activity_code \n", - "0 2.020362 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 3.997485 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3.836765 3c16b45db40210cd97de6574b2f47aaf \n", - "3 4.025051 86841f8c7ee2668f244d3b8e34f41932 \n", - "4 3.419633 a3c2064d83411f7963af550c04c869a1 \n", - "5 3.581588 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 2.672874 36a53c174f34e672bc15b7e55563685e \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH land occupation square meter-year 0.005397 \n", - "1 CA-QC land occupation square meter-year 0.029134 \n", - "2 PE land occupation square meter-year 0.007055 \n", - "3 BR land occupation square meter-year 0.048363 \n", - "4 ZA land occupation square meter-year 0.013459 \n", - "5 IN land occupation square meter-year 0.047596 \n", - "6 US land occupation square meter-year 0.010466 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 a3c2064d83411f7963af550c04c869a1 \n", - "4 86841f8c7ee2668f244d3b8e34f41932 \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 36a53c174f34e672bc15b7e55563685e \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH land occupation square meter-year 0.022235 \n", - "1 CA-QC land occupation square meter-year 0.128863 \n", - "2 PE land occupation square meter-year 0.064829 \n", - "3 ZA land occupation square meter-year 0.018817 \n", - "4 BR land occupation square meter-year 0.073527 \n", - "5 IN land occupation square meter-year 0.050827 \n", - "6 US land occupation square meter-year 0.050125 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 86841f8c7ee2668f244d3b8e34f41932 \n", - "4 a3c2064d83411f7963af550c04c869a1 \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 36a53c174f34e672bc15b7e55563685e \n", - "df_ei\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH use of net fresh water cubic meter 0.002230 \n", - "1 CA-QC use of net fresh water cubic meter 0.004079 \n", - "2 PE use of net fresh water cubic meter 0.011066 \n", - "3 BR use of net fresh water cubic meter 0.003560 \n", - "4 ZA use of net fresh water cubic meter 0.001298 \n", - "5 IN use of net fresh water cubic meter 0.000709 \n", - "6 US use of net fresh water cubic meter 0.001546 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 a3c2064d83411f7963af550c04c869a1 \n", - "4 86841f8c7ee2668f244d3b8e34f41932 \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 36a53c174f34e672bc15b7e55563685e \n", - "df_premise\n", - " activity \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key reference product \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... cement, Portland \n", - "\n", - " location method method unit total \\\n", - "0 CH use of net fresh water cubic meter 0.001368 \n", - "1 CA-QC use of net fresh water cubic meter 0.002367 \n", - "2 PE use of net fresh water cubic meter 0.002134 \n", - "3 ZA use of net fresh water cubic meter 0.001053 \n", - "4 BR use of net fresh water cubic meter 0.003192 \n", - "5 IN use of net fresh water cubic meter 0.000424 \n", - "6 US use of net fresh water cubic meter 0.001388 \n", - "\n", - " activity_code \n", - "0 df49e8f525497f2fbd56bcdc80ff0cde \n", - "1 fcb666edf2a01467e555eeff5b4a5bbb \n", - "2 3c16b45db40210cd97de6574b2f47aaf \n", - "3 86841f8c7ee2668f244d3b8e34f41932 \n", - "4 a3c2064d83411f7963af550c04c869a1 \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 36a53c174f34e672bc15b7e55563685e \n", - "{'Cement': {'global warming potential (GWP100)': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US global warming potential (GWP100) kg CO2-Eq 0.885515 \n", - "1 PE global warming potential (GWP100) kg CO2-Eq 0.895198 \n", - "2 ZA global warming potential (GWP100) kg CO2-Eq 1.000588 \n", - "3 BR global warming potential (GWP100) kg CO2-Eq 0.851799 \n", - "4 CH global warming potential (GWP100) kg CO2-Eq 0.742421 \n", - "5 IN global warming potential (GWP100) kg CO2-Eq 0.891756 \n", - "6 CA-QC global warming potential (GWP100) kg CO2-Eq 0.845772 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US kg CO2-Eq \n", - "1 cement, Portland PE kg CO2-Eq \n", - "2 cement, Portland ZA kg CO2-Eq \n", - "3 cement, Portland BR kg CO2-Eq \n", - "4 cement, Portland CH kg CO2-Eq \n", - "5 cement, Portland IN kg CO2-Eq \n", - "6 cement, Portland CA-QC kg CO2-Eq \n", - "\n", - " total_premise relative_change \n", - "0 0.821278 -7.254175 \n", - "1 0.869433 -2.878053 \n", - "2 0.814768 -18.571112 \n", - "3 0.832335 -2.285131 \n", - "4 0.737734 -0.631314 \n", - "5 0.774079 -13.196150 \n", - "6 0.841855 -0.463118 , 'Cumulative Energy Demand - non-renewable energy resources': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method \\\n", - "0 US Cumulative Energy Demand - non-renewable energ... \n", - "1 PE Cumulative Energy Demand - non-renewable energ... \n", - "2 ZA Cumulative Energy Demand - non-renewable energ... \n", - "3 BR Cumulative Energy Demand - non-renewable energ... \n", - "4 CH Cumulative Energy Demand - non-renewable energ... \n", - "5 IN Cumulative Energy Demand - non-renewable energ... \n", - "6 CA-QC Cumulative Energy Demand - non-renewable energ... \n", - "\n", - " method unit_ei total_ei activity_code \\\n", - "0 megajoule 3.599198 36a53c174f34e672bc15b7e55563685e \n", - "1 megajoule 4.172537 3c16b45db40210cd97de6574b2f47aaf \n", - "2 megajoule 6.186147 86841f8c7ee2668f244d3b8e34f41932 \n", - "3 megajoule 3.606791 a3c2064d83411f7963af550c04c869a1 \n", - "4 megajoule 2.164824 df49e8f525497f2fbd56bcdc80ff0cde \n", - "5 megajoule 4.785940 f8b84f45f50d3bd7ff4feaabdb493f6a \n", - "6 megajoule 3.992977 fcb666edf2a01467e555eeff5b4a5bbb \n", - "\n", - " activity_premise \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US megajoule \n", - "1 cement, Portland PE megajoule \n", - "2 cement, Portland ZA megajoule \n", - "3 cement, Portland BR megajoule \n", - "4 cement, Portland CH megajoule \n", - "5 cement, Portland IN megajoule \n", - "6 cement, Portland CA-QC megajoule \n", - "\n", - " total_premise relative_change \n", - "0 2.672874 -25.736953 \n", - "1 3.836765 -8.047184 \n", - "2 4.025051 -34.934447 \n", - "3 3.419633 -5.189055 \n", - "4 2.020362 -6.673179 \n", - "5 3.581588 -25.164373 \n", - "6 3.997485 0.112896 , 'land occupation': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US land occupation square meter-year 0.010466 \n", - "1 PE land occupation square meter-year 0.007055 \n", - "2 ZA land occupation square meter-year 0.013459 \n", - "3 BR land occupation square meter-year 0.048363 \n", - "4 CH land occupation square meter-year 0.005397 \n", - "5 IN land occupation square meter-year 0.047596 \n", - "6 CA-QC land occupation square meter-year 0.029134 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US square meter-year \n", - "1 cement, Portland PE square meter-year \n", - "2 cement, Portland ZA square meter-year \n", - "3 cement, Portland BR square meter-year \n", - "4 cement, Portland CH square meter-year \n", - "5 cement, Portland IN square meter-year \n", - "6 cement, Portland CA-QC square meter-year \n", - "\n", - " total_premise relative_change \n", - "0 0.050125 378.915879 \n", - "1 0.064829 818.902202 \n", - "2 0.018817 39.815303 \n", - "3 0.073527 52.031634 \n", - "4 0.022235 312.027258 \n", - "5 0.050827 6.787316 \n", - "6 0.128863 342.308107 , 'use of net fresh water': activity_ei \\\n", - "0 cement production, Portland \n", - "1 cement production, Portland \n", - "2 cement production, Portland \n", - "3 cement production, Portland \n", - "4 cement production, Portland \n", - "5 cement production, Portland \n", - "6 cement production, Portland \n", - "\n", - " activity key_ei reference product_ei \\\n", - "0 (ecoinvent 3.9.1 cutoff, 36a53c174f34e672bc15b... cement, Portland \n", - "1 (ecoinvent 3.9.1 cutoff, 3c16b45db40210cd97de6... cement, Portland \n", - "2 (ecoinvent 3.9.1 cutoff, 86841f8c7ee2668f244d3... cement, Portland \n", - "3 (ecoinvent 3.9.1 cutoff, a3c2064d83411f7963af5... cement, Portland \n", - "4 (ecoinvent 3.9.1 cutoff, df49e8f525497f2fbd56b... cement, Portland \n", - "5 (ecoinvent 3.9.1 cutoff, f8b84f45f50d3bd7ff4fe... cement, Portland \n", - "6 (ecoinvent 3.9.1 cutoff, fcb666edf2a01467e555e... cement, Portland \n", - "\n", - " location_ei method method unit_ei total_ei \\\n", - "0 US use of net fresh water cubic meter 0.001546 \n", - "1 PE use of net fresh water cubic meter 0.011066 \n", - "2 ZA use of net fresh water cubic meter 0.001298 \n", - "3 BR use of net fresh water cubic meter 0.003560 \n", - "4 CH use of net fresh water cubic meter 0.002230 \n", - "5 IN use of net fresh water cubic meter 0.000709 \n", - "6 CA-QC use of net fresh water cubic meter 0.004079 \n", - "\n", - " activity_code activity_premise \\\n", - "0 36a53c174f34e672bc15b7e55563685e cement production, Portland \n", - "1 3c16b45db40210cd97de6574b2f47aaf cement production, Portland \n", - "2 86841f8c7ee2668f244d3b8e34f41932 cement production, Portland \n", - "3 a3c2064d83411f7963af550c04c869a1 cement production, Portland \n", - "4 df49e8f525497f2fbd56bcdc80ff0cde cement production, Portland \n", - "5 f8b84f45f50d3bd7ff4feaabdb493f6a cement production, Portland \n", - "6 fcb666edf2a01467e555eeff5b4a5bbb cement production, Portland \n", - "\n", - " activity key_premise \\\n", - "0 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "1 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "2 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "3 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "4 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "5 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "6 (ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-2... \n", - "\n", - " reference product_premise location_premise method unit_premise \\\n", - "0 cement, Portland US cubic meter \n", - "1 cement, Portland PE cubic meter \n", - "2 cement, Portland ZA cubic meter \n", - "3 cement, Portland BR cubic meter \n", - "4 cement, Portland CH cubic meter \n", - "5 cement, Portland IN cubic meter \n", - "6 cement, Portland CA-QC cubic meter \n", - "\n", - " total_premise relative_change \n", - "0 0.001388 -10.226164 \n", - "1 0.002134 -80.715994 \n", - "2 0.001053 -18.849829 \n", - "3 0.003192 -10.335907 \n", - "4 0.001368 -38.687357 \n", - "5 0.000424 -40.277346 \n", - "6 0.002367 -41.983902 }}\n", - "Results and chart saved to 0309_v8.xlsx\n" - ] - } - ], - "source": [ - "# #Converting the lca scores and input tables to excel worksheet adding statistics and more. Storing column positions (index) in variable.\n", - "# column_positions=sector_lca_scores_to_excel(scores_dictionary_one, '0309_v8.xlsx')\n", - "\n", - "# #Generating dot plots and stacked bars in the excel storing the location of last plot in variable.\n", - "# last_row= dot_plots_xcl('0309_v8.xlsx', column_positions)\n", - "# current_row_stacked_bar=stacked_bars_xcl('0309_v8.xlsx', column_positions, last_row)\n", - "\n", - "# #Comparing premise and ecoinvent database by calculating lca scores, storing table sin excel and plotting barcharts. Again storing column positions in variable.\n", - "# column_positions_compare=relative_changes_db(ecoinvent_dict, premise_dict, method_dict, '0309_v8.xlsx')\n", - "# barchart_compare_db_xcl('0309_v8.xlsx', column_positions_compare, current_row_stacked_bar)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/test_excel_flow.ipynb b/dev/notebook tests/test_excel_flow.ipynb deleted file mode 100644 index b66ddd3..0000000 --- a/dev/notebook tests/test_excel_flow.ipynb +++ /dev/null @@ -1,297 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "0. import dopo" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# from functions_v2 import*\n", - "# from methods import MethodFinder\n", - "import dopo\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1. Define a bw project, bw setup, get the databases" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2. Define filter files" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Electricity': {'yaml': 'yamls\\\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml',\n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Electricity']= {'yaml':'yamls\\electricity_small.yaml',\n", - " 'yaml identifier': 'Electricity'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3. Get activity lists from filters and store them in a dictionary by sector" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "sectors_dict = dopo.dopo_excel.process_yaml_files(files_dict, ei39SSP2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2. Initiate MethodFinder()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "finder=dopo.methods.MethodFinder()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3. Define methods and store them in a dictionary" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': ('selected LCI results', 'resource', 'land occupation'),\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'use of net fresh water'),\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4. get LCA score tables and store them in scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n", - "Omitting activity name common prefix: 'electricity production, at biomass-fired IGCC power '\n" - ] - } - ], - "source": [ - "scores_dict = dopo.dopo_excel.sector_lca_scores(sectors_dict, method_dict) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5. trasnfer lca tables to excel, add some statistics, get positions of columns." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "index_positions = dopo.dopo_excel.sector_lca_scores_to_excel_and_column_positions(scores_dict, 'test_charts_v1.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6. group sheets by sector" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "worksheet_dict=dopo.dopo_excel.categorize_sheets_by_sector('test_charts_v1.xlsx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7. generate dot plot and store row position of last chart in variable for stacked bar inital position" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "current_row_dots=dopo.dopo_excel.dot_plots('test_charts_v1.xlsx', worksheet_dict, index_positions=index_positions)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8. get stacked bars on the same sheet as the dot plots" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "dopo.dopo_excel.stacked_bars('test_charts_v1.xlsx', worksheet_dict, index_positions, current_row_dots)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Et voila" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/test_function_flow_v4.ipynb b/dev/notebook tests/test_function_flow_v4.ipynb deleted file mode 100644 index 7c9f990..0000000 --- a/dev/notebook tests/test_function_flow_v4.ipynb +++ /dev/null @@ -1,1294 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Notebook exemplifying outlier detection framework**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Structure of this workbook:\n", - "1. Setting-up the dependencies\n", - "2. Filter the databases for sectors/ set of activities that we want to compare\n", - "3. Choosing the methods we want to use in the comparison\n", - "4. Generate tables that hold total scores and input contributions to scores\n", - "5. Plotting the scores in a couple of ways characterized but also not characterized " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1. Dependencies - Imports and brightway setup" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from functions_v2 import*\n", - "\n", - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Setting up the brightway dependencies in terms of setting the project and loading the necessary databases (ecoinvent original, premise based ecoinvent)*" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2. Database Filters - Yaml filters and activties list" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*load in file path to file and its name (.yaml) which contains defined sector filters*" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "c:\\Users\\fried\\premise_validation\\dev\n" - ] - } - ], - "source": [ - "print(os.getcwd())" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "fp_yaml='cement_concrete.yaml'\n", - "\n", - "set_cement_concrete=generate_sets_from_filters(fp_yaml, database=ei39SSP2)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*generate_sets_from_filters function returns a dictionary of sectors as keys according to the .yaml file. Using list comprehension we generate a list of activities for one ore more of the sectors e.g. 'Cement'*" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['cement production, CP V RS' (kilogram, BR, None),\n", - " 'cement production, type ICo' (kilogram, PE, None),\n", - " 'cement production, Portland' (kilogram, IN, None),\n", - " 'cement production, CP II-E' (kilogram, BR, None),\n", - " 'cement production, CEM III/A' (kilogram, ZA, None),\n", - " 'cement production, type IS' (kilogram, US, None),\n", - " 'cement production, CEM V/B' (kilogram, RoW, None),\n", - " 'cement production, Portland' (kilogram, CH, None),\n", - " 'cement production, CEM V/A' (kilogram, RoW, None),\n", - " 'cement production, CEM II/A' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM II/A-V' (kilogram, ZA, None),\n", - " 'cement production, CEM IV/B' (kilogram, CH, None),\n", - " 'cement production, type I-PM' (kilogram, US, None),\n", - " 'cement production, CEM II/B-V' (kilogram, ZA, None),\n", - " 'cement production, Portland' (kilogram, ZA, None),\n", - " 'cement production, CEM V/A' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM III/C' (kilogram, RoW, None),\n", - " 'cement production, CEM III/B' (kilogram, CH, None),\n", - " 'cement production, CEM V/A' (kilogram, CH, None),\n", - " 'cement production, CEM V/B' (kilogram, CH, None),\n", - " 'cement production, Portland' (kilogram, RoW, None),\n", - " 'cement production, CEM II/B' (kilogram, CH, None),\n", - " 'cement production, CEM II/A-S' (kilogram, ZA, None),\n", - " 'cement production, CEM III/A' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, Pozzolana Portland' (kilogram, IN, None),\n", - " 'cement production, CEM II/A' (kilogram, CH, None),\n", - " 'cement production, CEM II/B' (kilogram, RoW, None),\n", - " 'cement production, CEM II/B-S' (kilogram, ZA, None),\n", - " 'cement production, CEM III/C' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, type IP' (kilogram, PE, None),\n", - " 'cement production, CP IV' (kilogram, BR, None),\n", - " 'cement production, CEM IV/B' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, Portland' (kilogram, BR, None),\n", - " 'cement production, CEM III/B' (kilogram, RoW, None),\n", - " 'cement production, type general use' (kilogram, CO, None),\n", - " 'cement production, type IP/P' (kilogram, US, None),\n", - " 'cement production, CEM IV/A' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM II/A' (kilogram, CA-QC, None),\n", - " 'cement production, CEM II/A' (kilogram, RoW, None),\n", - " 'cement production, CEM IV/A' (kilogram, CH, None),\n", - " 'cement production, Portland' (kilogram, PE, None),\n", - " 'cement production, CEM II/A-L' (kilogram, ZA, None),\n", - " 'cement production, Portland' (kilogram, US, None),\n", - " 'cement production, type I (SM)' (kilogram, US, None),\n", - " 'cement production, CEM IV/B' (kilogram, RoW, None),\n", - " 'cement production, CEM III/C' (kilogram, CH, None),\n", - " 'cement production, type S' (kilogram, US, None),\n", - " 'cement production, Portland' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM II/B' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CEM III/A' (kilogram, RoW, None),\n", - " 'cement production, CEM III/B' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, Portland' (kilogram, CA-QC, None),\n", - " 'cement production, CP II-F' (kilogram, BR, None),\n", - " 'cement production, CP III' (kilogram, BR, None),\n", - " 'cement production, CEM IV/A' (kilogram, RoW, None),\n", - " 'cement production, CEM V/B' (kilogram, Europe without Switzerland, None),\n", - " 'cement production, CP II-Z' (kilogram, BR, None),\n", - " 'cement production, ART' (kilogram, CO, None),\n", - " 'cement production, CEM II/B-L' (kilogram, ZA, None),\n", - " 'cement production, CEM III/A' (kilogram, CH, None),\n", - " 'cement production, Portland Slag' (kilogram, IN, None)]" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#List comprehension of yaml filtered sets to create activity list.\n", - "sector_cement=[x for x in set_cement_concrete['Cement']]\n", - "sector_cement" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Need to select the items from the list by splicing [:]. To reduce runtime, only 4 activities of the sector cement are selected. We could also further filter the secotr by a certain product type for instance Portland cement.*" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['cement production, CP V RS' (kilogram, BR, None),\n", - " 'cement production, type ICo' (kilogram, PE, None),\n", - " 'cement production, Portland' (kilogram, IN, None),\n", - " 'cement production, CP II-E' (kilogram, BR, None)]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Activity list\n", - "sector_cement_small=sector_cement[:4]\n", - "sector_cement_small" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3. Method - Get Methods, call bw.Method and store as variables in method list as well as in method dictionary.\n", - "(!This step needs to be polished: just one dictionary which is well structued is enough)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Define method variables using the function find_and_create_method by defining certain method filters (or do it by hand)*" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "finder=MethodFinder()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': \"('IPCC 2013', 'climate change', 'global warming potential (GWP100)')\",\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': \"('EN15804', 'inventory indicators ISO21930', 'Cumulative Energy Demand - non-renewable energy resources')\",\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'}}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': \"('selected LCI results', 'resource', 'land occupation')\",\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['land occupation','selected'])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': \"('EN15804', 'inventory indicators ISO21930', 'use of net fresh water')\",\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder.find_and_create_method(criteria=['EN15804','fresh water'])" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': \"('IPCC 2013', 'climate change', 'global warming potential (GWP100)')\",\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': \"('EN15804', 'inventory indicators ISO21930', 'Cumulative Energy Demand - non-renewable energy resources')\",\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'},\n", - " 'method_3': {'object': Brightway2 Method: selected LCI results: resource: land occupation,\n", - " 'method name': \"('selected LCI results', 'resource', 'land occupation')\",\n", - " 'short name': 'land occupation',\n", - " 'unit': 'square meter-year'},\n", - " 'method_4': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: use of net fresh water,\n", - " 'method name': \"('EN15804', 'inventory indicators ISO21930', 'use of net fresh water')\",\n", - " 'short name': 'use of net fresh water',\n", - " 'unit': 'cubic meter'}}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('IPCC 2013', 'climate change', 'global warming potential (GWP100)')" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "method_dict['method_1']['object'].name" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5. Sector Scores Dataframes - Total Scores, Input Contribution Tables to Dataframe stored in list, save to excel too" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*With the defined activity list and method list (or dict) we can now generate the dataframes containg the total score and input contributions from which we generate the plots. (Fyi: This step can take a while)*" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n" - ] - } - ], - "source": [ - "cement_sector_compare=compare_activities_multiple_methods(\n", - " activities_list=sector_cement_small, \n", - " methods=method_dict, \n", - " identifier='cement',\n", - " output_format='pandas',\n", - " mode='absolute')" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'cement_global_warming_potential_(gwp100)': activity product location unit method \\\n", - " 0 CP II-E CP II-E BR kilogram global warming potential (GWP100) \n", - " 1 CP V RS CP V RS BR kilogram global warming potential (GWP100) \n", - " 2 Portland Portland IN kilogram global warming potential (GWP100) \n", - " 3 type ICo type ICo PE kilogram global warming potential (GWP100) \n", - " \n", - " method unit total direct emissions 37430: Cement clinkers \\\n", - " 0 kg CO2-Eq 0.624661 0.0 0.551174 \n", - " 1 kg CO2-Eq 0.703074 0.0 0.626334 \n", - " 2 kg CO2-Eq 0.774079 0.0 0.718396 \n", - " 3 kg CO2-Eq 0.642528 0.0 0.607743 \n", - " \n", - " 33: Coke oven products; refined petroleum products; nuclear fuel ... \\\n", - " 0 0.032559 ... \n", - " 1 0.036998 ... \n", - " 2 0.008160 ... \n", - " 3 0.000000 ... \n", - " \n", - " 373: Refractory products and structural non-refractory clay products \\\n", - " 0 0.000231 \n", - " 1 0.000263 \n", - " 2 0.000353 \n", - " 3 0.000343 \n", - " \n", - " 65219: Other coastal and transoceanic water transport services of other freight \\\n", - " 0 0.000260 \n", - " 1 0.000295 \n", - " 2 0.000156 \n", - " 3 0.000000 \n", - " \n", - " 49114: Motor vehicles n.e.c. for the transport of goods \\\n", - " 0 0.000251 \n", - " 1 0.000285 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 17100: Electrical energy \\\n", - " 0 0.000000 \n", - " 1 0.000000 \n", - " 2 0.000000 \n", - " 3 0.000276 \n", - " \n", - " 14290: Other non-ferrous metal ores and concentrates (other than uranium or thorium ores and concentrates) \\\n", - " 0 0.000186 \n", - " 1 0.000212 \n", - " 2 0.000198 \n", - " 3 0.000000 \n", - " \n", - " 11040: Brown coal briquettes and similar solid fuels manufactured from brown coal \\\n", - " 0 0.000000 \n", - " 1 0.000000 \n", - " 2 0.000197 \n", - " 3 0.000000 \n", - " \n", - " 14100: Iron ores and concentrates, other than roasted iron pyrites \\\n", - " 0 0.000000 \n", - " 1 0.000000 \n", - " 2 0.000000 \n", - " 3 0.000177 \n", - " \n", - " 87141: Maintenance and repair services of motor vehicles \\\n", - " 0 0.000138 \n", - " 1 0.000157 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 65229: Other inland water transport services of freight \\\n", - " 0 0.000087 \n", - " 1 0.000099 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 15310: Natural sands \n", - " 0 0.000073 \n", - " 1 0.000083 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " [4 rows x 40 columns],\n", - " 'cement_cumulative_energy_demand_-_non-renewable_energy_resources': activity product location unit \\\n", - " 0 CP II-E CP II-E BR kilogram \n", - " 1 CP V RS CP V RS BR kilogram \n", - " 2 Portland Portland IN kilogram \n", - " 3 type ICo type ICo PE kilogram \n", - " \n", - " method method unit total \\\n", - " 0 Cumulative Energy Demand - non-renewable energ... megajoule 2.625512 \n", - " 1 Cumulative Energy Demand - non-renewable energ... megajoule 2.889693 \n", - " 2 Cumulative Energy Demand - non-renewable energ... megajoule 3.581588 \n", - " 3 Cumulative Energy Demand - non-renewable energ... megajoule 2.855763 \n", - " \n", - " direct emissions \\\n", - " 0 0.0 \n", - " 1 0.0 \n", - " 2 0.0 \n", - " 3 0.0 \n", - " \n", - " 33: Coke oven products; refined petroleum products; nuclear fuel \\\n", - " 0 2.194510 \n", - " 1 2.493761 \n", - " 2 0.007698 \n", - " 3 0.000000 \n", - " \n", - " 11010: Hard coal ... \\\n", - " 0 0.00000 ... \n", - " 1 0.00000 ... \n", - " 2 1.81620 ... \n", - " 3 1.67263 ... \n", - " \n", - " 34800: Synthetic rubber and factice derived from oils, and mixtures thereof with natural rubber and similar natural g[…] \\\n", - " 0 0.001569 \n", - " 1 0.001698 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 65229: Other inland water transport services of freight \\\n", - " 0 0.001481 \n", - " 1 0.001683 \n", - " 2 0.000643 \n", - " 3 0.000000 \n", - " \n", - " 15310: Natural sands 53252: Local cables and related works \\\n", - " 0 0.001017 0.001068 \n", - " 1 0.001156 0.001141 \n", - " 2 0.000000 0.000527 \n", - " 3 0.000000 0.000976 \n", - " \n", - " 15: Stone, sand and clay \\\n", - " 0 0.000848 \n", - " 1 0.000963 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 54211: General construction services of highways (except elevated highways), streets and roads \\\n", - " 0 0.000845 \n", - " 1 0.000498 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 444: Machinery for mining, quarrying and construction, and parts thereof \\\n", - " 0 0.000536 \n", - " 1 0.000609 \n", - " 2 0.000775 \n", - " 3 0.000568 \n", - " \n", - " 53251: Local pipelines \\\n", - " 0 0.000000 \n", - " 1 0.000000 \n", - " 2 0.000000 \n", - " 3 0.000754 \n", - " \n", - " 15320: Pebbles, gravel, broken or crushed stone, macadam; granules, chippings and powder of stone \\\n", - " 0 0.000434 \n", - " 1 0.000494 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 69120: Gas distribution through mains (on own account) \n", - " 0 0.000263 \n", - " 1 0.000299 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " [4 rows x 50 columns],\n", - " 'cement_land_occupation': activity product location unit method method unit \\\n", - " 0 CP II-E CP II-E BR kilogram land occupation square meter-year \n", - " 1 CP V RS CP V RS BR kilogram land occupation square meter-year \n", - " 2 Portland Portland IN kilogram land occupation square meter-year \n", - " 3 type ICo type ICo PE kilogram land occupation square meter-year \n", - " \n", - " total direct emissions \\\n", - " 0 0.059294 0.0 \n", - " 1 0.064432 0.0 \n", - " 2 0.050827 0.0 \n", - " 3 0.053309 0.0 \n", - " \n", - " 15200: Gypsum; anhydrite; limestone flux; limestone and other calcareous stone, of a kind used for the manufacture of[…] \\\n", - " 0 0.000317 \n", - " 1 0.000357 \n", - " 2 0.037907 \n", - " 3 0.000336 \n", - " \n", - " None ... \\\n", - " 0 0.015324 ... \n", - " 1 0.017723 ... \n", - " 2 0.003362 ... \n", - " 3 0.029874 ... \n", - " \n", - " 373: Refractory products and structural non-refractory clay products \\\n", - " 0 0.000014 \n", - " 1 0.000016 \n", - " 2 0.000025 \n", - " 3 0.000021 \n", - " \n", - " 14100: Iron ores and concentrates, other than roasted iron pyrites \\\n", - " 0 0.000000 \n", - " 1 0.000000 \n", - " 2 0.000006 \n", - " 3 0.000024 \n", - " \n", - " 444: Machinery for mining, quarrying and construction, and parts thereof \\\n", - " 0 0.000007 \n", - " 1 0.000008 \n", - " 2 0.000017 \n", - " 3 0.000014 \n", - " \n", - " 53251: Local pipelines \\\n", - " 0 0.000000 \n", - " 1 0.000000 \n", - " 2 0.000000 \n", - " 3 0.000012 \n", - " \n", - " 15320: Pebbles, gravel, broken or crushed stone, macadam; granules, chippings and powder of stone \\\n", - " 0 0.000008 \n", - " 1 0.000009 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 14290: Other non-ferrous metal ores and concentrates (other than uranium or thorium ores and concentrates) \\\n", - " 0 0.000008 \n", - " 1 0.000009 \n", - " 2 0.000008 \n", - " 3 0.000000 \n", - " \n", - " 34800: Synthetic rubber and factice derived from oils, and mixtures thereof with natural rubber and similar natural g[…] \\\n", - " 0 0.000006 \n", - " 1 0.000007 \n", - " 2 0.000000 \n", - " 3 0.000000 \n", - " \n", - " 53262: Power plants 33380: Lubricants \\\n", - " 0 0.000007 0.000000 \n", - " 1 0.000007 0.000000 \n", - " 2 0.000000 0.000006 \n", - " 3 0.000000 0.000006 \n", - " \n", - " 43550: Pneumatic and other continuous action elevators and conveyors, for goods or materials \n", - " 0 0.000000 \n", - " 1 0.000000 \n", - " 2 0.000005 \n", - " 3 0.000005 \n", - " \n", - " [4 rows x 50 columns],\n", - " 'cement_use_of_net_fresh_water': activity product location unit method method unit \\\n", - " 0 CP II-E CP II-E BR kilogram use of net fresh water cubic meter \n", - " 1 CP V RS CP V RS BR kilogram use of net fresh water cubic meter \n", - " 2 Portland Portland IN kilogram use of net fresh water cubic meter \n", - " 3 type ICo type ICo PE kilogram use of net fresh water cubic meter \n", - " \n", - " total direct emissions None 17100: Electrical energy ... \\\n", - " 0 0.002857 0.000183 0.000980 0.000886 ... \n", - " 1 0.002867 0.000183 0.001100 0.000886 ... \n", - " 2 0.000424 0.000000 0.000102 0.000099 ... \n", - " 3 0.001752 0.000000 0.000909 0.000535 ... \n", - " \n", - " 31230: Wood in chips or particles 33370: Fuel oils n.e.c. \\\n", - " 0 0.000000e+00 3.979157e-07 \n", - " 1 0.000000e+00 4.521769e-07 \n", - " 2 0.000000e+00 6.484287e-08 \n", - " 3 5.030876e-07 0.000000e+00 \n", - " \n", - " 65219: Other coastal and transoceanic water transport services of other freight \\\n", - " 0 0.000000e+00 \n", - " 1 0.000000e+00 \n", - " 2 3.622115e-07 \n", - " 3 0.000000e+00 \n", - " \n", - " 33380: Lubricants \\\n", - " 0 0.000000e+00 \n", - " 1 0.000000e+00 \n", - " 2 3.188157e-07 \n", - " 3 3.370071e-07 \n", - " \n", - " 43550: Pneumatic and other continuous action elevators and conveyors, for goods or materials \\\n", - " 0 0.000000e+00 \n", - " 1 0.000000e+00 \n", - " 2 2.695155e-07 \n", - " 3 2.054048e-07 \n", - " \n", - " 39: Wastes or scraps 54320: Site formation and clearance services \\\n", - " 0 0.000000e+00 0.000000e+00 \n", - " 1 0.000000e+00 0.000000e+00 \n", - " 2 4.806349e-08 2.344593e-07 \n", - " 3 2.420684e-07 0.000000e+00 \n", - " \n", - " 65229: Other inland water transport services of freight \\\n", - " 0 0.000000e+00 \n", - " 1 0.000000e+00 \n", - " 2 1.070759e-07 \n", - " 3 0.000000e+00 \n", - " \n", - " 9441: Site remediation and clean-up services 39990: Other wastes n.e.c. \n", - " 0 0.000000e+00 -0.000005 \n", - " 1 0.000000e+00 -0.000005 \n", - " 2 8.875218e-08 0.000000 \n", - " 3 0.000000e+00 0.000000 \n", - " \n", - " [4 rows x 58 columns]}" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cement_sector_compare" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['cement_global_warming_potential_(gwp100)',\n", - " 'cement_cumulative_energy_demand_-_non-renewable_energy_resources',\n", - " 'cement_land_occupation',\n", - " 'cement_use_of_net_fresh_water']" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(cement_sector_compare.keys())[:] #getting name of the dataframe which holds gwp method scores" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Manipulate the output a little using small_inputs_to_other_column reducing the size of the dataframe by neglecting the inputs that contribute 0.01 or less to the overall score of an activity/dataset*" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'cement_global_warming_potential_(gwp100)': activity product location unit method \\\n", - " 2 Portland Portland IN kilogram global warming potential (GWP100) \n", - " 1 CP V RS CP V RS BR kilogram global warming potential (GWP100) \n", - " 3 type ICo type ICo PE kilogram global warming potential (GWP100) \n", - " 0 CP II-E CP II-E BR kilogram global warming potential (GWP100) \n", - " \n", - " method unit total 37430: Cement clinkers \\\n", - " 2 kg CO2-Eq 0.774079 0.718396 \n", - " 1 kg CO2-Eq 0.703074 0.626334 \n", - " 3 kg CO2-Eq 0.642528 0.607743 \n", - " 0 kg CO2-Eq 0.624661 0.551174 \n", - " \n", - " 33: Coke oven products; refined petroleum products; nuclear fuel \\\n", - " 2 0.000000 \n", - " 1 0.036998 \n", - " 3 0.000000 \n", - " 0 0.032559 \n", - " \n", - " 11010: Hard coal other \n", - " 2 0.016089 0.039142 \n", - " 1 0.000000 0.039087 \n", - " 3 0.000000 0.034305 \n", - " 0 0.000000 0.040345 ,\n", - " 'cement_cumulative_energy_demand_-_non-renewable_energy_resources': activity product location unit \\\n", - " 2 Portland Portland IN kilogram \n", - " 1 CP V RS CP V RS BR kilogram \n", - " 3 type ICo type ICo PE kilogram \n", - " 0 CP II-E CP II-E BR kilogram \n", - " \n", - " method method unit total \\\n", - " 2 Cumulative Energy Demand - non-renewable energ... megajoule 3.581588 \n", - " 1 Cumulative Energy Demand - non-renewable energ... megajoule 2.889693 \n", - " 3 Cumulative Energy Demand - non-renewable energ... megajoule 2.855763 \n", - " 0 Cumulative Energy Demand - non-renewable energ... megajoule 2.625512 \n", - " \n", - " 33: Coke oven products; refined petroleum products; nuclear fuel \\\n", - " 2 0.000000 \n", - " 1 2.493761 \n", - " 3 0.000000 \n", - " 0 2.194510 \n", - " \n", - " 11010: Hard coal \\\n", - " 2 1.81620 \n", - " 1 0.00000 \n", - " 3 1.67263 \n", - " 0 0.00000 \n", - " \n", - " 12010: Petroleum oils and oils obtained from bituminous minerals, crude \\\n", - " 2 1.309163 \n", - " 1 0.000000 \n", - " 3 0.000000 \n", - " 0 0.000000 \n", - " \n", - " 12020: Natural gas, liquefied or in the gaseous state None \\\n", - " 2 0.00000 0.141921 \n", - " 1 0.00000 0.074565 \n", - " 3 0.88571 0.092596 \n", - " 0 0.00000 0.069027 \n", - " \n", - " 33360: Gas oil 6511: Road transport services of freight \\\n", - " 2 0.000000 0.076322 \n", - " 1 0.080916 0.000000 \n", - " 3 0.000000 0.000000 \n", - " 0 0.115413 0.000000 \n", - " \n", - " 15200: Gypsum; anhydrite; limestone flux; limestone and other calcareous stone, of a kind used for the manufacture of[…] \\\n", - " 2 0.072773 \n", - " 1 0.000000 \n", - " 3 0.000000 \n", - " 0 0.000000 \n", - " \n", - " other \n", - " 2 0.155272 \n", - " 1 0.238398 \n", - " 3 0.202601 \n", - " 0 0.244814 ,\n", - " 'cement_land_occupation': activity product location unit method method unit \\\n", - " 1 CP V RS CP V RS BR kilogram land occupation square meter-year \n", - " 0 CP II-E CP II-E BR kilogram land occupation square meter-year \n", - " 3 type ICo type ICo PE kilogram land occupation square meter-year \n", - " 2 Portland Portland IN kilogram land occupation square meter-year \n", - " \n", - " total \\\n", - " 1 0.064432 \n", - " 0 0.059294 \n", - " 3 0.053309 \n", - " 2 0.050827 \n", - " \n", - " 15200: Gypsum; anhydrite; limestone flux; limestone and other calcareous stone, of a kind used for the manufacture of[…] \\\n", - " 1 0.000000 \n", - " 0 0.000000 \n", - " 3 0.000000 \n", - " 2 0.037907 \n", - " \n", - " None 34510: Wood charcoal 31230: Wood in chips or particles \\\n", - " 1 0.017723 0.028155 0.010174 \n", - " 0 0.015324 0.024777 0.010572 \n", - " 3 0.029874 0.000000 0.011081 \n", - " 2 0.003362 0.000000 0.001020 \n", - " \n", - " 17100: Electrical energy 11010: Hard coal \\\n", - " 1 0.002975 0.000000 \n", - " 0 0.002975 0.000000 \n", - " 3 0.006535 0.001894 \n", - " 2 0.000000 0.003716 \n", - " \n", - " 33: Coke oven products; refined petroleum products; nuclear fuel \\\n", - " 1 0.001488 \n", - " 0 0.001310 \n", - " 3 0.000000 \n", - " 2 0.000000 \n", - " \n", - " 531: Buildings \\\n", - " 1 0.000000 \n", - " 0 0.000000 \n", - " 3 0.001477 \n", - " 2 0.001477 \n", - " \n", - " 53211: Highways (except elevated highways), streets and roads other \n", - " 1 0.00000 0.003819 \n", - " 0 0.00123 0.003014 \n", - " 3 0.00000 0.002371 \n", - " 2 0.00000 0.003112 ,\n", - " 'cement_use_of_net_fresh_water': activity product location unit method method unit \\\n", - " 1 CP V RS CP V RS BR kilogram use of net fresh water cubic meter \n", - " 0 CP II-E CP II-E BR kilogram use of net fresh water cubic meter \n", - " 3 type ICo type ICo PE kilogram use of net fresh water cubic meter \n", - " 2 Portland Portland IN kilogram use of net fresh water cubic meter \n", - " \n", - " total direct emissions None 17100: Electrical energy ... \\\n", - " 1 0.002867 0.000183 0.001100 0.000886 ... \n", - " 0 0.002857 0.000183 0.000980 0.000886 ... \n", - " 3 0.001752 0.000000 0.000909 0.000535 ... \n", - " 2 0.000424 0.000000 0.000102 0.000099 ... \n", - " \n", - " 37430: Cement clinkers 34510: Wood charcoal 18000: Natural water \\\n", - " 1 0.000183 0.000123 0.00000 \n", - " 0 0.000161 0.000108 0.00011 \n", - " 3 0.000087 0.000000 0.00000 \n", - " 2 0.000040 0.000000 0.00000 \n", - " \n", - " 15200: Gypsum; anhydrite; limestone flux; limestone and other calcareous stone, of a kind used for the manufacture of[…] \\\n", - " 1 0.000093 \n", - " 0 0.000084 \n", - " 3 0.000094 \n", - " 2 0.000032 \n", - " \n", - " 11010: Hard coal \\\n", - " 1 0.000000 \n", - " 0 0.000000 \n", - " 3 0.000000 \n", - " 2 0.000046 \n", - " \n", - " 12010: Petroleum oils and oils obtained from bituminous minerals, crude \\\n", - " 1 0.000000 \n", - " 0 0.000000 \n", - " 3 0.000000 \n", - " 2 0.000022 \n", - " \n", - " 531: Buildings 16: Other minerals \\\n", - " 1 0.000000 0.000000 \n", - " 0 0.000000 0.000000 \n", - " 3 0.000000 0.000000 \n", - " 2 0.000021 0.000012 \n", - " \n", - " 6511: Road transport services of freight other \n", - " 1 0.000000 0.000158 \n", - " 0 0.000000 0.000144 \n", - " 3 0.000000 0.000124 \n", - " 2 0.000009 0.000038 \n", - " \n", - " [4 rows x 21 columns]}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cement_sector_compare=small_inputs_to_other_column(cement_sector_compare, cutoff = 0.02)\n", - "cement_sector_compare" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3. Plotting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3.1. Level 1 dot plots" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKYAAAJOCAYAAACN2Q8zAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAADDdUlEQVR4nOzdeXhM1xsH8O9ksu+RRRISQUJCEIIIgipiS+21E7XTqrW172stpfb6IdZSqlRrTxNEYlf7ThISISH7PjP390fkNmMmqzDK9/M896k5973nnnvmztS8zjlXIgiCACIiIiIiIiIiovdMS9MNICIiIiIiIiKiTxMTU0REREREREREpBFMTBERERERERERkUYwMUVERERERERERBrBxBQREREREREREWkEE1NERERERERERKQRTEwREREREREREZFGMDFFREREREREREQawcQUERERERERERFpBBNTRERUKvz9/eHk5FSiYyUSCb7++utSa0twcDAkEgmCg4NLrc4PTbNmzdCsWTNNN+OjMnPmTEgkkhIdW5z3IyUlBTY2NtixY0eJzvWpWbduHRwdHZGZmVmk+Lf5LlInICAAEokEFy9eLLU6iYiI6F9MTBER/celpaVh5syZH3UShj5ut27dwsyZMxEeHv7Oz/UhfF5WrFgBExMT9OjRQ2XftWvXMGDAAFSsWBH6+vowNjaGh4cHvvvuOzx69EiMGzFiBLS0tPDq1Sul41+9egUtLS3o6ekhIyNDad+jR48gkUgwefJkAEB4eDgkEom4SaVSODo6olOnTvjnn3+Ujt29ezf69OkDFxcXSCSSApNwmZmZ+P7772Fvbw8DAwN4eXnh+PHjamNDQ0PRuHFjGBoawtbWFqNGjUJKSopSjL+/P7KysrB+/fp8z/kx+f3339GmTRtYWVlBV1cX9vb2+PLLL/H333+rxEZGRmLYsGFwcnKCnp4ebGxs0LFjR5w5c0Yl9s6dO/juu+/g4eEBExMT2NnZoV27dsVKuDVr1kzpnsm7ubq6vtV1ExHRp0tb0w0gIqK3k5aWhlmzZgEAR9B8Qo4dO6bpJpSaW7duYdasWWjWrFmpjnRRp6DPy9SpUzFx4sR3ev7s7GysWLECY8aMgVQqVdq3YcMGDB8+HFZWVujduzdcXV0hk8lw48YNbN26FcuXL0d6ejqkUikaN26MtWvX4syZ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TuDgwYOwtLQEAMyePRvh4eGoXLmy+BTABg0aYMOGDVixYgVq1aqFY8eOYerUqQW27YsvvsCYMWPw9ddfw8PDA6GhoZg2bZpKnLOzMzp37oy2bduiVatWqFmzJtasWSPuHzVqFMaOHYtx48ahRo0aOHLkCP744w+lNZiAnOl8V69ehY+Pj8rIss2bN6Nfv34YN24cqlatio4dO+LChQtqR6C9DV9fX/z55584duwY6tWrhwYNGuDHH38Uk361atXCsmXLsGjRIri7u2PHjh1YsGBBqbaB6H3gU/nUyH0qH58uQEREREREGRkZePz4MSpWrKj0ZDK5XI6nT5+W+npKBdHR0UH58uUhlUrf2znp05XfvQ/wdzOVHk7lIyIiIiIiKgGpVIry5cuLi1W/D1paWkxKEdFHhYkpIiIiIiKiEpJKpUwUERG9Ba4xRUREREREREREGsHEFBERERERERERaQQTU0REREREREXA50bRp4b3PL0PTEwREREREREVQEdHBwCQlpam4ZYQvV+593zuZ4DoXeDi50RERERERAWQSqUwNzfHixcvAACGhoaQSCQabhXRuyMIAtLS0vDixQuYm5tzgX96p5iYIiIiIiIiKoStrS0AiMkpok+Bubm5eO8TvStMTBERERERERVCIpHAzs4ONjY2yM7O1nRziN45HR0djpSi94KJKSIiIiIioiKSSqX8sU5EVIq4+DkREREREREREWmExhNTq1evhpOTE/T19eHl5YXz588XGL98+XJUrVoVBgYGcHBwwJgxY5CRkfFWdRIRERERERER0fun0cTU7t27MXbsWMyYMQOXL19GrVq14Ovrm++Cgjt37sTEiRMxY8YM3L59Gxs3bsTu3bsxefLkEtdJRERERERERESaIREEQdDUyb28vFCvXj2sWrUKAKBQKODg4IBvvvkGEydOVIn/+uuvcfv2bQQGBopl48aNw7lz5xASElKiOtVJSkqCmZkZEhMTYWpq+raXSURERERERPRR4e9mKi0aGzGVlZWFS5cuoUWLFv82RksLLVq0QFhYmNpjGjZsiEuXLolT8x49eoRDhw6hbdu2Ja6TiIiIiIiIiIg0Q2NP5YuLi4NcLkfZsmWVysuWLYs7d+6oPaZXr16Ii4tD48aNIQgCZDIZhg0bJk7lK0mdAJCZmYnMzEzxdVJSUkkvi4iIiIiIiIiIikjji58XR3BwMObPn481a9bg8uXL2LdvH/766y/MmTPnrepdsGABzMzMxM3BwaGUWkxERERERERERPnR2IgpKysrSKVSPH/+XKn8+fPnsLW1VXvMtGnT0LdvXwwaNAgAUKNGDaSmpmLIkCGYMmVKieoEgEmTJmHs2LHi66SkJCaniIiIiIiIiIjeMY2NmNLV1YWnp6fSQuYKhQKBgYHw9vZWe0xaWhq0tJSbLJVKAQCCIJSoTgDQ09ODqamp0kZERERERERERO+WxkZMAcDYsWPRv39/1K1bF/Xr18fy5cuRmpqKAQMGAAD69euHcuXKYcGCBQAAPz8/LFu2DLVr14aXlxcePHiAadOmwc/PT0xQFVYnERERERERERF9GDSamOrevTtiY2Mxffp0xMTEwMPDA0eOHBEXL4+MjFQaITV16lRIJBJMnToVUVFRsLa2hp+fH+bNm1fkOomIiIiIiIiI6MMgEQRB0HQjPjRJSUkwMzNDYmIip/URERERERERvYG/m6m0/KeeykdERERERERERB8PJqaIiIiIiIiIiEgjmJgiIiIiIiIiIiKNYGKKiIiIiIiIiIg0gokpIiIiIiIiIiLSCCamiIiIiIiIiIhII5iYIiIiIiIiIiIijWBiioiIiIiIiIiINIKJKSIiIiIiIiIi0ggmpoiIiIiIiIiISCOYmCIiIiIiIiIiIo1gYoqIiIiIiIiIiDSCiSkiIiIiIiIiItIIJqaIiIiIiIiIiEgjmJgiIiIiIiIiIiKNYGKKiIiIiIiIiIg0gokpIiIiIiIiIiLSCCamiIiIiIiIiIhII5iYIiIiIiIiIiIijWBiioiIiIiIiIiINIKJKSIiIiIiIiIi0ghtTTeA6FN19GYM1gQ9wL3nKahS1hgjPnOGb3VbTTeLiIiIiIiI6L3hiCkiDTh6MwZDt13C1aeJSM+W4+rTRAzbfglHb8ZoumlERERERERE7w0TU0QasCbogUqZIABrgh9qoDVEREREREREmsHEFJEG3Hueorb8/vPk99wSIiIiIiIiIs1hYopIA6qUNVZb7lLW5D23hIiIiIiIiEhzmJgi0oARnzlDIlEuk0iAkc0qa6ZBRERERERERBrAxBSRBvhWt8W6Pp6o5WAOQ10pajmYY30fT7TiU/mIiIiIiIjoE6Kt6QYQfap8q9vCl4koIiIiIiIi+oRxxBQREREREREREWkEE1NERERERERERKQRTEwREREREREREZFGMDFFREREREREREQawcQUERERERERERFpBBNTRERERERERESkEUxMERERERERERGRRjAxRUREREREREREGsHEFBERERERERERaQQTU0REREREREREpBFMTBERERERERERkUYwMUVERERERERERBrBxBQREREREREREWkEE1NERERERERERKQRTEwREREREREREZFGMDFFREREREREREQawcQUERERERERERFpBBNTRERERERERESkER9EYmr16tVwcnKCvr4+vLy8cP78+XxjmzVrBolEorK1a9dOjPH391fZ37p16/dxKUREREREREREVETamm7A7t27MXbsWKxbtw5eXl5Yvnw5fH19cffuXdjY2KjE79u3D1lZWeLrly9folatWujWrZtSXOvWrbF582bxtZ6e3ru7CCIiIiIiIiIiKjaNj5hatmwZBg8ejAEDBqBatWpYt24dDA0NsWnTJrXxZcqUga2trbgdP34choaGKokpPT09pTgLC4v3cTlERERERERERFREGk1MZWVl4dKlS2jRooVYpqWlhRYtWiAsLKxIdWzcuBE9evSAkZGRUnlwcDBsbGxQtWpVDB8+HC9fvsy3jszMTCQlJSltRERERERERET0bmk0MRUXFwe5XI6yZcsqlZctWxYxMTGFHn/+/HncuHEDgwYNUipv3bo1tm7disDAQCxatAgnT55EmzZtIJfL1dazYMECmJmZiZuDg0PJL4qIiIiIiIiIiIpE42tMvY2NGzeiRo0aqF+/vlJ5jx49xD/XqFEDNWvWROXKlREcHIzPP/9cpZ5JkyZh7Nix4uukpCQmp4iIiIiIiIiI3jGNjpiysrKCVCrF8+fPlcqfP38OW1vbAo9NTU3Frl27MHDgwELPU6lSJVhZWeHBgwdq9+vp6cHU1FRpIyIiIiIiIiKid0ujiSldXV14enoiMDBQLFMoFAgMDIS3t3eBx+7ZsweZmZno06dPoed5+vQpXr58CTs7u7duMxERERERERERlQ6NP5Vv7Nix2LBhA7Zs2YLbt29j+PDhSE1NxYABAwAA/fr1w6RJk1SO27hxIzp27AhLS0ul8pSUFEyYMAFnz55FeHg4AgMD0aFDBzg7O8PX1/e9XBMRERERERERERVO42tMde/eHbGxsZg+fTpiYmLg4eGBI0eOiAuiR0ZGQktLOX929+5dhISE4NixYyr1SaVSXLt2DVu2bEFCQgLs7e3RqlUrzJkzB3p6eu/lmoiIiIiIiIiIqHASQRAETTfiQ5OUlAQzMzMkJiZyvSkiIiIiIiKiN/B3M5UWjU/lIyIiIiIiIiKiTxMTU0REREREREREpBFMTBERERERERERkUYwMUVERERERERERBrBxBQREREREREREWkEE1NERERERERERKQRTEwREREREREREZFGMDFFREREREREREQawcQUERERERERERFpBBNTRERERERERESkEUxMERERERERERGRRjAxRUREREREREREGsHEFBERERERERERaQQTU0REREREREREpBFMTBERERERERERkUYwMUVERERERERERBrBxBQREREREREREWkEE1NERERERERERKQRTEwREREREREREZFGMDFFREREREREREQawcQUERERERERERFpBBNTRERERERERESkEUxMERERERERERGRRjAxRUREREREREREGsHEFBERERERERERaQQTUx+JdJkciZnZ4uukzGykZcsBAHKFgPiMbGQrFACADJkcCRn/xiZnyZCWLQMAKITXsfKc2Mw3YlOyZEjNyokVXsdm5cbKFYjPyIYgCGJsyhuxma9js96ITc0TCwAJGdnIlOW0P/t1rOJ1bFq2DMlvxGbkxipyYuWK3Fg5kvL0S2JmNtJfx8reiE1/I1ZdH8pe92G6TI7EjEL6W55/f6e+0d9Zefo7voj9XVgfxmdkI1OmHKvIE5tvH6r0txzJmf/GJuaJfbMPC+7v3D4U/u3DIvZ3xhv9nZwpE2PfvGfV9ndWfv2tKOX+lqvv74LuWXkhfZiR/z37ZmxSZjbSC7pn+R3B7wh+R/A7gt8R/I7gdwS/I/gd8cF/RxB9apiY+kg8TkjDmaevxNfnoxNw/1UKgJz/kQRFxIlf+pFJ6Tj95KUYe+lZAm6/zInNlCsQFBGHuPQsAMDT5AwER8aJsVeeJ+JmXDKAnL8gBEXE4UVaJgAgJiUDQRFxEF7HXnuRhGsvkgAAAoCgiDjEpGQAAF6kZSIoIk78y8XNuGRceZ4onic4Mg5Pk3Ni49KzEBQRJ/6P5vbLFFx6liDGnn7yEpFJ6QBy/scRFBEn/g/h/qsUnI/+N/bM01d4nJAGAEjKlCEo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3njjDb3xxhuyWq2SlOVRhtc+whAAAAAAAODvPPXUU2rQoIFq1aqlAgUKaN++fZo2bZpq1aqlTp06OetNmDBBEyZM0IkTJ264zlS1atW0YcMG/fDDDypatKjKlSun4sWLS5Jq166thg0basuWLZoyZUq2+/v4+Khdu3Z6/fXXFRsbq5EjR6pRo0bORdMff/xxtW/fXm3bttVrr72mWrVqKTExUQcPHtTx48f13//+N9fH7u3trS+++EJt27ZVgwYNNHz4cFWvXl1Wq1Vr167VvHnztGPHDgUHB2vcuHHq1KmTevfurd69e+vIkSMaPXq0nn766Xxb+Dy3kpKStH379izbg4ODVapUqVy1kefFz5csWeL8b19fX5dQ6tVXX81rcwAAAAAAAGrUqJGWLVumnj17qmPHjlqwYIH69++vH3/8UZ6ens56drtd6enpf7tG0uTJk1W6dGk9/fTTatiwob799luX8s6dO8tsNutf//pXtvt37txZHTp00MCBA/XCCy+oYcOGWrFihUud5cuXa+DAgZo9e7batWun5557TuvWrVPz5s3zfPxNmjTR3r171bx5c02ePFmtW7dWnz59dOzYMS1ZskS1a9eWJHXo0EHLli3T/v371bFjR7399tsaMGCAPv300zx/5q06efKkQkNDs7wWLlyY6zZMjr/7SV6nSJEiWrJkSZbHHg4fPlxLly51LgJ2L7NarbJYLIqLi8tyNRgAAAAAAA+6m/27OS0tTRcvXpSfn1+Oi4bfKY8++qgsFkuWwEqSQkJC9OSTT2rmzJkG9Oz+ld3PP8+38i1evFg9evTQd99957x3cejQofrqq6+0cePG/O0xAAAAAABAPvr555/1448/6scff9QPP/xgdHceeHkOpp544gnNnj1bHTp00A8//KD58+frm2++0caNG1W5cuXb0UcAAAAAAIB80bBhQ1ksFr355ptq3bq10d154OU5mJKknj17KjY2Vg8//LD8/Py0efNmVaxYMb/7BgAAAAAAkK9ys6LRqVOnbn9HICmXwVR4eHi22/38/FSvXj3Nnj3bue3dd9/Nn54BAAAAAADgvparYGrv3r3Zbq9YsaKsVquz3GQy5V/PAAAAAAAAcF/LVTB1Oxc1nzVrlqZNm6bIyEjVrl1b77//vho1apRj/djYWL3xxhv66quvdPnyZZUtW1bTp0/XP/7xD0nSuHHjNH78eJd9qlSposOHD9+2YwAAAAAAAEDe3dQaU/nl888/V3h4uObMmaPGjRtr+vTpCgsL05EjR+Tv75+lfmpqqh5//HH5+/tr+fLlKlWqlE6fPq0iRYq41KtRo4bWr1/vfO/ubuhhAgAAAACAa9hsNqO7AANk93M3NLF599131b9/f/Xr10+SNGfOHH3//fdasGCBXn/99Sz1FyxYoMuXL2vr1q3y8PCQJIWEhGSp5+7ursDAwNvadwAAAAAAkDdubm4ymUyKiYkxuiswiMlkkpubm/O9YcFUamqqdu/erVGjRjm3ubm5qXXr1tq2bVu2+6xcuVKhoaEaMmSIvvnmG/n5+alnz54aOXKkzGazs96xY8dUsmRJeXt7KzQ0VFOmTFGZMmVy7EtKSopSUlKc761Waz4cIQAAAAAAuJbZbJa/v7/sdrvRXYFB3NzcXDIcw4Kp6OhopaenKyAgwGV7QEBAjutBnTx5Uhs2bFCvXr20atUqHT9+XIMHD1ZaWprGjh0rSWrcuLEWLVqkKlWq6Pz58xo/frweeeQRHThwQD4+Ptm2O2XKlCzrUgEAAAAAgPxnNptdggk82O6pxZfsdrv8/f01d+5cmc1m1a9fX3/88YemTZvmDKbatWvnrF+rVi01btxYZcuW1RdffKHnnnsu23ZHjRql8PBw53ur1arg4ODbezAAAAAAAAAPOMOCqRIlSshsNisqKsple1RUVI7rQwUFBcnDw8MlWa1WrZoiIyOVmpoqT0/PLPsUKVJElStX1vHjx3Psi5eXl7y8vG7ySAAAAAAAAHAz3P6+yu3h6emp+vXrKyIiwrnNbrcrIiJCoaGh2e7z8MMP6/jx4y73oh49elRBQUHZhlKSlJCQoBMnTigoKCh/DwAAAAAAAAC3xLBgSpLCw8M1b948ffTRRzp06JAGDRqkxMRE51P6+vTp47I4+qBBg3T58mW99NJLOnr0qL7//ntNnjxZQ4YMcdZ55ZVXtHnzZp06dUpbt25V586dZTab1aNHjzt+fAAAAAAAAMiZoWtMdevWTRcvXtSYMWMUGRmpOnXqaM2aNc4F0c+cOePyCMHg4GCtXbtWw4cPV61atVSqVCm99NJLGjlypLPOuXPn1KNHD126dEl+fn5q1qyZtm/fLj8/vzt+fAAAAAAAAMiZyeFwOIzuxN3GarXKYrEoLi5Ovr6+RncHAADgnrT2YKRmbzyuo1EJqhxQWINbVlRYjezXEgUA3Fv4uxn5xdBb+QAAAHB/WnswUi98slv7zsUpKS1d+87FaeCnu7X2YKTRXQMAAHcRgikAAADku9kbsz4R2eGQZm86YUBvAADA3YpgCgAAAPnuaFRCttuPRcXf4Z4AAIC7GcEUAAAA8l3lgMLZbq8U4HOHewIAAO5mBFMAAADId4NbVpTJ5LrNZJKGtKhgTIcAAMBdiWAKAAAA+S6sRqDm9K6v2sFFVNDTrNrBRfRh7/pqw1P5AADANQim7hNJtnTFpaQ531tT0nQlLV2SlG53KCY5TWl2uyQp2Zau2OS/6san2nQlzSZJsjuu1k3PqJtyXd2EVJsSUzPqOq7WTc2sm25XTHKaHA6Hs27CdXVTrtZNva5u4jV1JSk2OU0ptoz+p12ta79a90qaTfHX1U3OrGvPqJtuz6ybLus14xKXkqakq3Vt19VNuq5udmNouzqGSbZ0xSX/zXin5zzeideNd+o14x2Ty/H+uzGMSU5Tis21rv2aujmOYZbxTld8yl91466pe/0Y3ni8M8fQ8dcY5nK8k68b7/gUm7Pu9edstuOdmtN42/N5vNOzH+8bnbPpfzOGyTmfs9fXtaakKelG5yxzBHMEcwRzxB2eI1pU8dNHzzXSbxPa6pshD6tppRLMEWKOYI5gjuD3iBufs8CDhmDqPvF77BX979xl5/udf8bq2OWMRUeTbOnaeDraOemfsSbpx7OXnHV3n4/VoUsZdVPS7dp4OlrRSamSpHPxydp0JtpZd29UnA5GZyxaarM7tPF0tC5cSZEkRSYka+PpaDmu1v31glW/XrBKkhySNp6OVmRCsiTpwpUUbTwd7fzl4mB0vPZGxTk/Z9OZaJ2Lz6gbnZSqjaejnf/QHLqUoN3nY511fzx7SWesSZIy/uHYeDra+Q/CscsJ2vnnX3X/d+6yfo+9Ikmypti08XS08x+pE7GJ2vZHjLPu9j9idCImUVLGLwQbT0cr7uovVqfjruina8Z71/lYHb063snpGeOd+YvKWWuStlwz3nsiY3UoOqNu2nXj/UdCsjad/mu8f4mK04GLGeOd7sgY76hE1/G+OoTaf9GqfVfHW1fH+8+r433xuvH+LTpeeyP/Gu/NZy45x/vy1TFMvvrL6OFLCdoVec14n7us03GZ450xLleujvfxmETtuGa8t52L0cmYjPGOT82om/kP/cmYK9p27q/x3vFnrI5fHe8rznM2c7yT9OO14x0Zq8NXz9lkW8YYXr463ufik7X5zF/jvTcyTr9dd85evHrO/nl1DDPtu2DV/osZY2h3uJ6zUYkZY5h+9ZeWAxfj9cu15+zpaP2R4HrOZv7SdSg6QXuuGcMtZy/p7NVzNiZzvNMzxvDo5QTtuub8/uncZZ2OyxjDuKvnbOYfJCdiErX9mnN22x8xOhGbMYYJV8fbevWcZY5gjmCOYI5gjmCOYI64Ot7MEZKYI+7mOQJ40JgcmTEynKxWqywWi+Li4uTr62t0d3IlyZau1HS7LF4ekjISeHc3NxX0MCvd7pA11abCnmZ5uLkp2ZauZJtdRbwz6san2mQ2SQU93GV3OBSXYlNhD7M8zG5KsaUr6Zq6Cak2mSQV8nSXw+FQbIpNhTzM8jS7KSXdritp6Sri5S6TyeSchAtfU7egh1leZjelptuVeE3dxFSbHFfrShmTfgF3N3m5m5WWbldCWrosXu5yM5l0Jc2mdIfkc01db3c3ebublWa3KyE1Xb6e7jK7mXQlLV02u12+V8clLiVNnmY3FXA3y2a3K/6auklp6Uq7pm52Y+jjaZa7m1vGeNvssnjfYLyvjmF24+1mkgpdM97OMbSl64rNrqK5GO+/G8OY5DQVdDfLy/2vupljmJhqk105jGGW8U5Xut0hH6+MunHJafK6Wvf6MbzxeDsUn2qTj6e73N1MuTpnM8c72ZaulGvGOz7FJrObSQU9zFnO2WzH++oYZh1vu67Y0vNxvDPO2SzjnWaTPadz9up45ziGyWnydM/+nL2+rjUlTR5ubiqQ0znLHMEcwRzBHMEcwRzBHMEcwRxx188R94p78e9m3J0IprLBFwwAAAAAgJzxdzPyy70TxwIAAAAAAOC+QjAFAAAAAAAAQxBMAQAAAAAAwBAEUwAAAAAAADAEwRQAAAAAAAAMQTAFAAAAAAAAQxBMAQAAAAAAwBAEUwAAAAAAADAEwRQAAAAAAAAM4W50BwAAAAAAt27twUjN3nhcR6MSVDmgsAa3rKiwGoFGdwsAbogrpgAAAADgHrf2YKRe+GS39p2LU1Jauvadi9PAT3dr7cFIo7sGADdEMAUAAAAA97jZG49n2eZwSLM3nTCgNwCQewRTAAAAAHCPOxqVkO32Y1Hxd7gnAJA3BFMAAAAAcI+rHFA42+2VAnzucE8AIG8IpgAAAADgHje4ZUWZTK7bTCZpSIsKxnQIAHKJYAoAAAAA7nFhNQI1p3d91Q4uooKeZtUOLqIPe9dXG57KB+Au5250BwAAAAAAty6sRqDCCKIA3GO4YgoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAjDg6lZs2YpJCRE3t7eaty4sXbu3HnD+rGxsRoyZIiCgoLk5eWlypUra9WqVbfUJgAAAAAAAO48Q4Opzz//XOHh4Ro7dqz27Nmj2rVrKywsTBcuXMi2fmpqqh5//HGdOnVKy5cv15EjRzRv3jyVKlXqptsEAAAAAACAMUwOh8Nh1Ic3btxYDRs21MyZMyVJdrtdwcHBGjp0qF5//fUs9efMmaNp06bp8OHD8vDwyJc2s2O1WmWxWBQXFydfX9+bPDoAAAAAAO5P/N2M/GLYFVOpqanavXu3Wrdu/Vdn3NzUunVrbdu2Ldt9Vq5cqdDQUA0ZMkQBAQGqWbOmJk+erPT09JtuU5JSUlJktVpdXgAAAAAAALi9DAumoqOjlZ6eroCAAJftAQEBioyMzHafkydPavny5UpPT9eqVav05ptv6t///rfeeuutm25TkqZMmSKLxeJ8BQcH3+LRAQAAAAAA4O8Yvvh5Xtjtdvn7+2vu3LmqX7++unXrpjfeeENz5sy5pXZHjRqluLg45+vs2bP51GMAAAAAAADkxN2oDy5RooTMZrOioqJctkdFRSkwMDDbfYKCguTh4SGz2ezcVq1aNUVGRio1NfWm2pQkLy8veXl53cLRAAAAAAAAIK8Mu2LK09NT9evXV0REhHOb3W5XRESEQkNDs93n4Ycf1vHjx2W3253bjh49qqCgIHl6et5UmwAAAAAAADCGobfyhYeHa968efroo4906NAhDRo0SImJierXr58kqU+fPho1apSz/qBBg3T58mW99NJLOnr0qL7//ntNnjxZQ4YMyXWbAAAAAAAAuDsYdiufJHXr1k0XL17UmDFjFBkZqTp16mjNmjXOxcvPnDkjN7e/srPg4GCtXbtWw4cPV61atVSqVCm99NJLGjlyZK7bBAAAAAAAwN3B5HA4HEZ34m5jtVplsVgUFxcnX19fo7sDAAAAAMBdhb+bkV/uqafyAQAAAAAA4P5BMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMATBFAAAAAAAAAxBMAUAAAAAAABD3BXB1KxZsxQSEiJvb281btxYO3fuzLHuokWLZDKZXF7e3t4udfr27ZulTtu2bW/3YQAAAAAAACAP3I3uwOeff67w8HDNmTNHjRs31vTp0xUWFqYjR47I398/2318fX115MgR53uTyZSlTtu2bbVw4ULney8vr/zvPAAAAAAAAG6a4cHUu+++q/79+6tfv36SpDlz5uj777/XggUL9Prrr2e7j8lkUmBg4A3b9fLy+ts6fyctLU1paWm31AYAAAAAAPcb/lZGfjE0mEpNTdXu3bs1atQo5zY3Nze1bt1a27Zty3G/hIQElS1bVna7XfXq1dPkyZNVo0YNlzqbNm2Sv7+/ihYtqlatWumtt95S8eLF89S/M2fOyMfHJ28HBQAAAADAfS4+Pt7oLuA+YWgwFR0drfT0dAUEBLhsDwgI0OHDh7Pdp0qVKlqwYIFq1aqluLg4vfPOO2ratKkOHjyo0qVLS8q4je+pp55SuXLldOLECY0ePVrt2rXTtm3bZDabs7SZkpKilJQU53ur1SopIyTz9PTMr8MFAAAAAOC+4OZ2VyxZjfuA4bfy5VVoaKhCQ0Od75s2bapq1arpww8/1MSJEyVJ3bt3d5Y/9NBDqlWrlipUqKBNmzbpsccey9LmlClTNH78+Czb3d3d5e5+zw0RAAAAAAC3FX8rI78YGnGWKFFCZrNZUVFRLtujoqJyvT6Uh4eH6tatq+PHj+dYp3z58ipRokSOdUaNGqW4uDjn6+zZs7k/CAAAAAAAANwUQ4MpT09P1a9fXxEREc5tdrtdERERLldF3Uh6err279+voKCgHOucO3dOly5dyrGOl5eXfH19XV4AAAAAAAC4vQy/KTQ8PFzz5s3TRx99pEOHDmnQoEFKTEx0PqWvT58+LoujT5gwQevWrdPJkye1Z88e9e7dW6dPn9bzzz8vKWNh9FdffVXbt2/XqVOnFBERoY4dO6pixYoKCwsz5BgBAAAAAACQleE3hXbr1k0XL17UmDFjFBkZqTp16mjNmjXOBdHPnDnjsqhaTEyM+vfvr8jISBUtWlT169fX1q1bVb16dUmS2WzWr7/+qo8++kixsbEqWbKk2rRpo4kTJ8rLy8uQYwQAAAAAAEBWJofD4TC6E3cbq9Uqi8WiAwcOqGjRokZ3BwAAAACAu0pMTIxq1qypuLg4lsPBLTH8Vj4AAAAAAAA8mAimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAiCKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYIi7IpiaNWuWQkJC5O3trcaNG2vnzp051l20aJFMJpPLy9vb26WOw+HQmDFjFBQUpAIFCqh169Y6duzY7T4MAAAAAAAA5IHhwdTnn3+u8PBwjR07Vnv27FHt2rUVFhamCxcu5LiPr6+vzp8/73ydPn3apXzq1KmaMWOG5syZox07dqhQoUIKCwtTcnLy7T4cAAAAAAAA5JLhwdS7776r/v37q1+/fqpevbrmzJmjggULasGCBTnuYzKZFBgY6HwFBAQ4yxwOh6ZPn67/+7//U8eOHVWrVi19/PHH+vPPP/X111/fgSMCAAAAAABAbhgaTKWmpmr37t1q3bq1c5ubm5tat26tbdu25bhfQkKCypYtq+DgYHXs2FEHDx50lv3++++KjIx0adNisahx48Y3bBMAAAAAAAB3lqHBVHR0tNLT012ueJKkgIAARUZGZrtPlSpVtGDBAn3zzTf69NNPZbfb1bRpU507d06SnPvlpc2UlBRZrVaXFwAAAAAAAG4vw2/ly6vQ0FD16dNHderUUfPmzfXVV1/Jz89PH3744U23OWXKFFksFucrODg4H3sMAAAAAACA7BgaTJUoUUJms1lRUVEu26OiohQYGJirNjw8PFS3bl0dP35ckpz75aXNUaNGKS4uzvk6e/ZsXg8FAAAAAAAAeWRoMOXp6an69esrIiLCuc1utysiIkKhoaG5aiM9PV379+9XUFCQJKlcuXIKDAx0adNqtWrHjh05tunl5SVfX1+XFwAAAAAAAG4vd6M7EB4ern/9619q0KCBGjVqpOnTpysxMVH9+vWTJPXp00elSpXSlClTJEkTJkxQkyZNVLFiRcXGxmratGk6ffq0nn/+eUkZT+x7+eWX9dZbb6lSpUoqV66c3nzzTZUsWVKdOnUy6jABAAAAAABwHcODqW7duunixYsaM2aMIiMjVadOHa1Zs8a5ePmZM2fk5vbXhV0xMTHq37+/IiMjVbRoUdWvX19bt25V9erVnXVee+01JSYmasCAAYqNjVWzZs20Zs0aeXt73/HjAwAAAAAAQPZMDofDYXQn7jZWq1UWi0UHDhxQ0aJFje4OAAAAAAB3lZiYGNWsWVNxcXEsh4Nbcs89lQ8AAAAAAAD3B4IpAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAh3I3uwN3MZrPJZrMZ3Q0AAAAAAO4q/K2M/EIwdQN2u12pqalGdwMAAAAAgLuK3W43ugu4TxBM3UCZMmXk6+trdDcAAAAAALirWK1Wo7uA+wTB1A14eHjIw8PD6G4AAAAAAHBX4W9l5BcWPwcAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGMLd6A7cjRwOhyTJarUa3BMAAAAAAO4+mX8vZ/79DNwsgqlsxMfHS5KCg4MN7gkAAAAAAHev+Ph4WSwWo7uBe5jJQbyZhd1u159//ikfHx+ZTCaju4P7mNVqVXBwsM6ePStfX1+juwPc9/jOAXce3zvgzuI7hzvF4XAoPj5eJUuWlJsbqwTh5nHFVDbc3NxUunRpo7uBB4ivry+/OAB3EN854M7jewfcWXzncCdwpRTyA7EmAAAAAAAADEEwBQAAAAAAAEMQTAEG8vLy0tixY+Xl5WV0V4AHAt854M7jewfcWXznANxrWPwcAAAAAAAAhuCKKQAAAAAAABiCYAoAAAAAAACGIJgCAAAAAACAIQimAAAAAAAAYAh3ozsAAAAAALg50dHRWrBggbZt26bIyEhJUmBgoJo2baq+ffvKz8/P4B4CwI1xxRRwByUlJemnn37Sb7/9lqUsOTlZH3/8sQG9Ah5cZ8+e1bPPPmt0N4D7yqFDh7Rw4UIdPnxYknT48GENGjRIzz77rDZs2GBw74D7y65du1S5cmXNmDFDFotFjz76qB599FFZLBbNmDFDVatW1c8//2x0NwHghkwOh8NhdCeAB8HRo0fVpk0bnTlzRiaTSc2aNdPSpUsVFBQkSYqKilLJkiWVnp5ucE+BB8e+fftUr149vndAPlmzZo06duyowoUL68qVK1qxYoX69Omj2rVry263a/PmzVq3bp1atWpldFeB+0KTJk1Uu3ZtzZkzRyaTyaXM4XBo4MCB+vXXX7Vt2zaDeggAf49gCrhDOnfurLS0NC1atEixsbF6+eWX9dtvv2nTpk0qU6YMwRRwG6xcufKG5SdPntSIESP43gH5pGnTpmrVqpXeeustLV26VIMHD9agQYM0adIkSdKoUaO0e/durVu3zuCeAveHAgUKaO/evapatWq25YcPH1bdunWVlJR0h3sGALlHMAXcIQEBAVq/fr0eeughSRn/F2vw4MFatWqVNm7cqEKFChFMAfnMzc1NJpNJN/qnzmQy8b0D8onFYtHu3btVsWJF2e12eXl5aefOnapbt64k6cCBA2rdurVzHRwAt6ZcuXIaP368+vTpk235xx9/rDFjxujUqVN3tmMAkAcsfg7cIUlJSXJ3/+srZzKZ9MEHH+jFF19U8+bN9dlnnxnYO+D+FBQUpNmzZ6tjx47Zlv/yyy+qX7/+He4VcH/LvJ3Izc1N3t7eslgszjIfHx/FxcUZ1TXgvvPKK69owIAB2r17tx577DEFBARIylgiIiIiQvPmzdM777xjcC8B4MYIpoA7JHPxyWrVqrlsnzlzpiSpQ4cORnQLuK/Vr19fu3fvzjGY+rurqQDkTUhIiI4dO6YKFSpIkrZt26YyZco4y8+cOeNcWxHArRsyZIhKlCih//znP5o9e7bzCmCz2az69etr0aJF6tq1q8G9BIAbI5gC7pDOnTtryZIl+uc//5mlbObMmbLb7ZozZ44BPQPuX6+++qoSExNzLK9YsaI2btx4B3sE3N8GDRrkcmtszZo1XcpXr17NwudAPuvWrZu6deumtLQ0RUdHS5JKlCghDw8Pg3sGALnDGlMAAAAAAAAwhJvRHQAAAAAAAMCDiWAKAAAAAAAAhiCYAgAAAAAAgCEIpgAAAAAAAGAIgikAAJCjRYsWqUiRIrmuv2nTJplMJsXGxt62PgEAAOD+QTAFAMB9ZNu2bTKbzXriiSfyvG9ISIimT5/usq1bt246evRortto2rSpzp8/L4vFIinvwdb1xo8fr969e2dbNm7cOJlMJplMJrm7u6tEiRJ69NFHNX36dKWkpOTpc4wK1MaNG6c6derc0c8EAAC4mxBMAQBwH5k/f76GDh2qLVu26M8//7zl9goUKCB/f/9c1/f09FRgYKBMJtMtf7YkffPNN+rQoUOO5TVq1ND58+d15swZbdy4Uc8884ymTJmipk2bKj4+Pl/6AAAAgNuHYAoAgPtEQkKCPv/8cw0aNEhPPPGEFi1alKXOt99+q4YNG8rb21slSpRQ586dJUktWrTQ6dOnNXz4cOdVSJLrFU9Hjx6VyWTS4cOHXdr8z3/+owoVKkhyvfJo06ZN6tevn+Li4pxtjhs3ThMmTFDNmjWz9K1OnTp68803ne/Pnj2rgwcPqm3btjkes7u7uwIDA1WyZEk99NBDGjp0qDZv3qwDBw7o//2//+es98knn6hBgwby8fFRYGCgevbsqQsXLkiSTp06pZYtW0qSihYtKpPJpL59+0qS1qxZo2bNmqlIkSIqXry4nnzySZ04ccLZbmpqql588UUFBQXJ29tbZcuW1ZQpU5zlsbGxev755+Xn5ydfX1+1atVK+/btc47t+PHjtW/fPuf4ZPczAwAAuJ8RTAEAcJ/44osvVLVqVVWpUkW9e/fWggUL5HA4nOXff/+9OnfurH/84x/au3evIiIi1KhRI0nSV199pdKlS2vChAk6f/68zp8/n6X9ypUrq0GDBlq8eLHL9sWLF6tnz55Z6jdt2lTTp0+Xr6+vs81XXnlFzz77rA4dOqRdu3Y56+7du1e//vqr+vXr59y2cuVKtWjRQr6+vnkah6pVq6pdu3b66quvnNvS0tI0ceJE7du3T19//bVOnTrlDJ+Cg4P15ZdfSpKOHDmi8+fP67333pMkJSYmKjw8XD///LMiIiLk5uamzp07y263S5JmzJihlStX6osvvtCRI0e0ePFihYSEOD/3mWee0YULF7R69Wrt3r1b9erV02OPPabLly+rW7duGjFihPOqr/Pnz6tbt255OlYAAIB7nbvRHQAAAPlj/vz5zvWY2rZtq7i4OG3evFktWrSQJE2aNEndu3fX+PHjnfvUrl1bklSsWDGZzWbnFUU56dWrl2bOnKmJEydKyriKavfu3fr000+z1PX09JTFYpHJZHJps3DhwgoLC9PChQvVsGFDSdLChQvVvHlzlS9f3lnvm2++UceOHW9qLKpWrap169Y53z/77LPO/y5fvrxmzJihhg0bKiEhQYULF1axYsUkSf7+/i5rYj399NMu7S5YsEB+fn767bffVLNmTZ05c0aVKlVSs2bNZDKZVLZsWWfdn376STt37tSFCxfk5eUlSXrnnXf09ddfa/ny5RowYIAKFy7svOoLAADgQcQVUwAA3AeOHDminTt3qkePHpIybnHr1q2b5s+f76zzyy+/6LHHHrulz+nevbtOnTql7du3S8q4WqpevXqqWrVqntrp37+/lixZouTkZKWmpuqzzz5zCY+sVqs2b958w/WlbsThcLisc7V79261b99eZcqUkY+Pj5o3by5JOnPmzA3bOXbsmHr06KHy5cvL19fXeTVU5n59+/bVL7/8oipVqmjYsGEuYdi+ffuUkJCg4sWLq3Dhws7X77//7nI7IAAAwIOMK6YAALgPzJ8/XzabTSVLlnRuczgc8vLy0syZM2WxWFSgQIFb/pzAwEC1atVKn332mZo0aaLPPvtMgwYNynM77du3l5eXl1asWCFPT0+lpaWpS5cuzvLVq1erevXqCg4Ovql+Hjp0SOXKlZOUcTteWFiYwsLCtHjxYvn5+enMmTMKCwtTamrq3/azbNmymjdvnkqWLCm73a6aNWs696tXr55+//13rV69WuvXr1fXrl3VunVrLV++XAkJCQoKCtKmTZuytHsrTyoEAAC4nxBMAQBwj7PZbPr444/173//W23atHEp69Spk5YsWaKBAweqVq1aioiIcFnH6Vqenp5KT0//28/r1auXXnvtNfXo0UMnT55U9+7dc6ybU5vu7u7617/+pYULF8rT01Pdu3d3Cc5u5Ta+w4cPa82aNRo1apTz/aVLl/T22287g66ff/45Sz8lufT10qVLOnLkiObNm6dHHnlEUsbtedfz9fVVt27d1K1bN3Xp0kVt27bV5cuXVa9ePUVGRsrd3d1l3anrPzc3Yw4AAHC/4lY+AADucd99951iYmL03HPPqWbNmi6vp59+2nk739ixY7VkyRKNHTtWhw4d0v79+12eXBcSEqItW7bojz/+UHR0dI6f99RTTyk+Pl6DBg1Sy5YtXa7Sul5ISIgSEhIUERGh6OhoXblyxVn2/PPPa8OGDVqzZo3LbXw2m02rV6/O1W18NptNkZGR+vPPP7V//369//77at68uerUqaNXX31VklSmTBl5enrq/fff18mTJ7Vy5UrnGlmZypYtK5PJpO+++04XL15UQkKCihYtquLFi2vu3Lk6fvy4NmzYoPDwcJf93n33XS1ZskSHDx/W0aNHtWzZMgUGBqpIkSJq3bq1QkND1alTJ61bt06nTp3S1q1b9cYbbziDsZCQEP3+++/65ZdfFB0drZSUlL89ZgAAgPsJwRQAAPe4+fPnq3Xr1rJYLFnKnn76af3888/69ddf1aJFCy1btkwrV65UnTp11KpVK+3cudNZd8KECTp16pQqVKggPz+/HD/Px8dH7du31759+9SrV68b9q1p06YaOHCgunXrJj8/P02dOtVZVqlSJTVt2lRVq1ZV48aNnds3b96swoULq169en977AcPHlRQUJDKlCmjFi1a6IsvvtCoUaP0448/qnDhwpIkPz8/LVq0SMuWLVP16tX19ttv65133nFpp1SpUho/frxef/11BQQE6MUXX5Sbm5uWLl2q3bt3q2bNmho+fLimTZuWZSymTp2qBg0aqGHDhjp16pRWrVolNzc3mUwmrVq1So8++qj69eunypUrq3v37jp9+rQCAgIkZfx82rZtq5YtW8rPz09Lliz522MGAAC4n5gc1z5HGgAA4A5xOByqVKmSBg8e7HIl0rBhw2Sz2TR79mwDewcAAIA7gTWmAADAHXfx4kUtXbpUkZGRWda8qlmzpkJDQw3qGQAAAO4krpgCAAB3nMlkUokSJfTee++pZ8+eRncHAAAABuGKKQAAcMfx/8UAAAAgsfg5AAAAAAAADEIwBQAAAAAAAEMQTAEAAAAAAMAQBFMAAAAAAAAwBMEUAAAAAAAADEEwBQAAAAAAAEMQTAEAAAAAAMAQBFMAAAAAAAAwBMEUAAAAAAAADPH/AXEVhCP2C7TwAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKcAAAJOCAYAAABiG2QNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC5/klEQVR4nOzdd1gURx8H8O9xwFGPjqDSBKyoKDZExMQuEnvvFUteY0uiMWrsmkQTo7Em9t6iMdHYgr2XWFDsFEEFpXe42/cPZOW4o4peot/P89yjtzM7Ozu3N3f3Y2ZWIgiCACIiIiIiIiIiIi3Q0XYFiIiIiIiIiIjow8XgFBERERERERERaQ2DU0REREREREREpDUMThERERERERERkdYwOEVERERERERERFrD4BQREREREREREWkNg1NERERERERERKQ1DE4REREREREREZHWMDhFRERERERERERaw+AUEdEr69atg0QiQWhoaJmVGRoaColEgnXr1pVZmUTF5ezsjIEDB2q7GvQWNGvWDB4eHkXmYx9E/wXNmjVDs2bNtF2Nf4Xjx49DIpHg+PHjb/U4EokE33zzzVs9BhFRSTA4RfQBSU1NxTfffPNWv/AkJiZixowZqF27NkxMTGBoaAgPDw98+eWXiIqKemvH1bYtW7bgxx9/1HY1RLk/SAt6zJ8/X9tVfKuaNWsmnquOjg7kcjmqVKmCfv364ciRI9quHhERERER5aGr7QoQ0buTmpqKGTNmAMBb+Qvlo0eP0KJFC4SHh6Nbt24YPnw49PX1cePGDfz666/47bffcO/evTI/7r/Bli1bcOvWLYwdO1Zlu5OTE9LS0qCnp6eVevXq1Qvt2rVT216nTh0t1ObdqlixIubNmwcASElJwYMHD7Bnzx5s2rQJ3bt3x6ZNm7T2uhAR0WuHDx/WdhX+NZo2bYq0tDTo6+truypERO8Ug1NEVCays7PRuXNnPH/+HMePH0eTJk1U0ufMmYMFCxZoqXbaI5FIYGBgoLXj161bF3379tXa8XNlZ2dDqVS+0y/bZmZmauc+f/58jBkzBsuWLYOzs/MHeU1+CJRKJTIzM7X63qN3Qxt9S16CICA9PR2GhoZaOf6bSE1NhZGRkbarAQAMxOSho6PDvouIPkic1keUT2RkJIYMGYLy5ctDJpPBxcUFI0eORGZmppgnPj4eY8eOhYODA2QyGdzc3LBgwQIolUoxT+60qu+//x4///wzKlWqBCMjI7Rq1QoREREQBAGzZs1CxYoVYWhoiA4dOiA2NlatPgcPHoSvry+MjY1hamoKf39/BAcHq+QZOHAgTExMEBkZiY4dO8LExAQ2NjaYOHEiFAqFWB8bGxsAwIwZM8QpT2W13sDu3btx/fp1TJkyRS0wBQByuRxz5swRnxe0Fk7+dSdy117YsWMHZsyYgQoVKsDU1BRdu3ZFQkICMjIyMHbsWNja2sLExASDBg1CRkaGuH9h660U5/z37dsHf39/8XpwdXXFrFmzxHbNrfOff/6JsLAwsV2dnZ01Hv/777+HRCJBWFiY2rEmT54MfX19xMXFidsuXLiANm3awMzMDEZGRvDz88OZM2cKrXNJOTs7o3379jh9+jQaNGgAAwMDVKpUCRs2bFDLW9Jr/8cff4SrqytkMhlu374NIOc1rVevHgwMDODq6oqVK1fim2++gUQiEcvw8/ND7dq1Nda3SpUqaN26danOVSqV4qeffkL16tWxdOlSJCQkqKRv2rQJXl5eMDQ0hKWlJXr27ImIiAiVPLlr/dy4cQN+fn4wMjKCm5sbdu3aBQA4ceIEGjZsCENDQ1SpUgVHjx5V2T8sLAyjRo1ClSpVYGhoCCsrK3Tr1k1trbPcNdDOnDmD8ePHw8bGBsbGxujUqRNiYmJU8gqCgNmzZ6NixYowMjLCRx99pNZPlBWJRIJPP/0Ue/fuhYeHB2QyGWrUqIG//vpLLe+1a9fQtm1byOVymJiYoHnz5jh//nypz7OoOm3evBk1atSATCYT6xMZGYnBgwejXLlyYl3XrFmjsn/efmbOnDmoWLEiDAwM0Lx5czx48EDteEW9L2/cuAGJRILff/9d3HblyhVIJBLUrVtXpay2bduiYcOG4vPi9Dl5XblyBY0bN4ahoSFcXFywYsWKYrVZSEgIunbtCktLSxgYGKBevXoq9S2MUqnEjz/+iBo1asDAwADlypVDYGCgSt8FvJ99S+45HTp0CPXq1YOhoSFWrlxZ7HMAgG3btsHLywumpqaQy+WoWbMmFi9erJLn0aNH6NatGywtLWFkZIRGjRrhzz//VMlT0DqJmtYsyu23rly5gqZNm8LIyAhfffUVACA9PR3ffPMNKleuDAMDA9jb26Nz5854+PChuH9xX/PLly+jdevWsLa2Fq/JwYMHF9qmufUr6LO/OO/J/HJf93v37qFv374wMzODjY0Npk6dCkEQEBERgQ4dOkAul8POzg4LFy5UKyMjIwPTp0+Hm5sbZDIZHBwc8MUXX6h8xwCAtLQ0jBkzBtbW1jA1NcUnn3yCyMhIte8Yxe37C1pzaufOneLnk7W1Nfr27YvIyMhC2zHXwIEDxe8lhSlOf0lE9LZw5BRRHlFRUWjQoAHi4+MxfPhwVK1aFZGRkdi1axdSU1Ohr6+P1NRU+Pn5ITIyEoGBgXB0dMTZs2cxefJkPH36VG3doc2bNyMzMxP/+9//EBsbi2+//Rbdu3fHxx9/jOPHj+PLL7/EgwcPsGTJEkycOFHlS8DGjRsxYMAAtG7dGgsWLEBqaiqWL1+OJk2a4Nq1aypfNBQKBVq3bo2GDRvi+++/x9GjR7Fw4UK4urpi5MiRsLGxwfLlyzFy5Eh06tQJnTt3BgDUqlWrTNou90dNv379yqS8/ObNmwdDQ0NMmjRJbC89PT3o6OggLi4O33zzDc6fP49169bBxcUF06ZNK5Pjrlu3DiYmJhg/fjxMTEzw999/Y9q0aUhMTMR3330HAJgyZQoSEhLw5MkT/PDDDwAAExMTjeV1794dX3zxBXbs2IHPP/9cJW3Hjh1o1aoVLCwsAAB///032rZtCy8vL0yfPh06OjpYu3YtPv74Y5w6dQoNGjQosv6pqal48eKF2nZzc3Po6r7+CHjw4AG6du2KIUOGYMCAAVizZg0GDhwILy8v1KhRQyyrJNf+2rVrkZ6ejuHDh0Mmk8HS0hLXrl1DmzZtYG9vjxkzZkChUGDmzJli4DRXv379MGzYMNy6dUtl0edLly7h3r17+Prrr4s894JIpVL06tULU6dOxenTp+Hv7w8gZ3Tf1KlT0b17dwwdOhQxMTFYsmQJmjZtimvXrsHc3FwsIy4uDu3bt0fPnj3RrVs3LF++HD179sTmzZsxduxYjBgxAr1798Z3332Hrl27IiIiAqampuI5nD17Fj179kTFihURGhqK5cuXo1mzZrh9+7baSIb//e9/sLCwwPTp0xEaGooff/wRn376KbZv3y7mmTZtGmbPno127dqhXbt2uHr1Klq1aqUSVC9Lp0+fxp49ezBq1CiYmprip59+QpcuXRAeHg4rKysAQHBwMHx9fSGXy/HFF19AT08PK1euRLNmzcQAXknPszB///03duzYgU8//RTW1tZwdnbG8+fP0ahRIzF4ZWNjg4MHD2LIkCFITExUm4Y7f/586OjoYOLEiUhISMC3336LPn364MKFCyrHKep96eHhAXNzc5w8eRKffPIJAODUqVPQ0dHB9evXkZiYCLlcDqVSibNnz2L48OFi+cXpc3LFxcWhXbt26N69O3r16oUdO3Zg5MiR0NfXLzQgEBwcDB8fH1SoUAGTJk2CsbExduzYgY4dO2L37t3o1KlToW0dGBiIdevWYdCgQRgzZgweP36MpUuX4tq1azhz5ozKdNn3sW+5e/cuevXqhcDAQAwbNgxVqlQp9jkcOXIEvXr1QvPmzcWRm3fu3MGZM2fw2WefAQCeP3+Oxo0bIzU1FWPGjIGVlRXWr1+PTz75BLt27Sry9SnIy5cv0bZtW/Ts2RN9+/ZFuXLloFAo0L59exw7dgw9e/bEZ599hqSkJBw5cgS3bt2Cq6srgOK95tHR0WjVqhVsbGwwadIkmJubIzQ0FHv27ClVfYHivScL06NHD1SrVg3z58/Hn3/+idmzZ8PS0hIrV67Exx9/jAULFmDz5s2YOHEi6tevj6ZNmwLICcZ98sknOH36NIYPH45q1arh5s2b+OGHH3Dv3j3s3btXPMbAgQOxY8cO9OvXD40aNcKJEyfEz5W8Str355Xb9vXr18e8efPw/PlzLF68GGfOnFH7fCqtkvaXRERlTiAiUf/+/QUdHR3h0qVLamlKpVIQBEGYNWuWYGxsLNy7d08lfdKkSYJUKhXCw8MFQRCEx48fCwAEGxsbIT4+Xsw3efJkAYBQu3ZtISsrS9zeq1cvQV9fX0hPTxcEQRCSkpIEc3NzYdiwYSrHefbsmWBmZqayfcCAAQIAYebMmSp569SpI3h5eYnPY2JiBADC9OnTS9IsxVKnTh3BzMys2PmdnJyEAQMGqG338/MT/Pz8xOdBQUECAMHDw0PIzMwUt/fq1UuQSCRC27ZtVfb39vYWnJycxOe5r8PatWvVjpW/LdauXSsAEB4/fixuS01NVdsvMDBQMDIyEl8rQRAEf39/leMWdnxvb2+V10UQBOHixYsCAGHDhg2CIORcb+7u7kLr1q3Fay+3Pi4uLkLLli3VjqXpuAU9zp07J+Z1cnISAAgnT54Ut0VHRwsymUyYMGGCuK2k175cLheio6NV8gYEBAhGRkZCZGSkuO3+/fuCrq6ukPcjKT4+XjAwMBC+/PJLlf3HjBkjGBsbC8nJyYWev5+fn1CjRo0C03/77TcBgLB48WJBEAQhNDRUkEqlwpw5c1Ty3bx5U9DV1VXZ7ufnJwAQtmzZIm4LCQkRAAg6OjrC+fPnxe2HDh1Se/01XVPnzp1Tef0F4fX12KJFC5VrYNy4cYJUKhX7lejoaEFfX1/w9/dXyffVV18JADS+z94EAEFfX1948OCBuO369esCAGHJkiXito4dOwr6+vrCw4cPxW1RUVGCqamp0LRp0xKfZ1F10tHREYKDg1W2DxkyRLC3txdevHihsr1nz56CmZmZ+Frk9jPVqlUTMjIyxHyLFy8WAAg3b94UBKFk70t/f3+hQYMG4vPOnTsLnTt3FqRSqXDw4EFBEATh6tWrAgBh3759KmXlp6nPyb0OFy5cKG7LyMgQPD09BVtbW7G/1NQHNW/eXKhZs6ZKeUqlUmjcuLHg7u6udvy8Tp06JQAQNm/erLL9r7/+Utv+PvYtuef0119/qWwv7jl89tlnglwuF7Kzsws8xtixYwUAwqlTp8RtSUlJgouLi+Ds7CwoFApBEDR/ZgnC6+s5KChI3JZ7vaxYsUIl75o1awQAwqJFi9TqkXuNF/c1z+1XNX2HKkpBn/1FvScLMn36dAGAMHz4cHFbdna2ULFiRUEikQjz588Xt8fFxQmGhoYqfeXGjRsFHR0dlddAEARhxYoVAgDhzJkzgiAIwpUrVwQAwtixY1XyDRw4UO07RnH7/vyvX2ZmpmBrayt4eHgIaWlpYr4//vhDACBMmzZN3Ja/HXMNGDBA7TtK/voVt78kInpbOK2P6BWlUom9e/ciICAA9erVU0vPnRawc+dO+Pr6wsLCAi9evBAfLVq0gEKhwMmTJ1X269atG8zMzMTnuaMF+vbtqzJypWHDhsjMzBSHaB85cgTx8fHo1auXynGkUikaNmyIoKAgtTqOGDFC5bmvry8ePXpUyhYpmcTERHFkyNvQv39/lb/GN2zYEIIgqI0OaNiwISIiIpCdnV0mx827jkhSUhJevHgBX19fpKamIiQkpFRl9ujRA1euXFGZMrF9+3bIZDJ06NABAPDPP//g/v376N27N16+fCm+/ikpKWjevDlOnjypNlVEk+HDh+PIkSNqj+rVq6vkq169Onx9fcXnNjY2qFKlisr1U9Jrv0uXLiqjFhQKBY4ePYqOHTuifPny4nY3Nze0bdtWZV8zMzN06NABW7duhSAI4v7bt29Hx44dYWxsXOS5FyZ3ZFtSUhIAYM+ePVAqlejevbvKudnZ2cHd3V3t/WZiYoKePXuKz6tUqQJzc3NUq1ZNZURQ7v/ztmPeayorKwsvX76Em5sbzM3NcfXqVbW6Dh8+XGVakq+vLxQKhTg19OjRo+LozLz53uZfuVu0aCGOqAByRmDK5XLxPBUKBQ4fPoyOHTuiUqVKYj57e3v07t0bp0+fRmJiokqZRZ1nUfz8/FSua0EQsHv3bgQEBEAQBJXXtXXr1khISFBr70GDBqmsfZP7nsg9r5K8L319fXH16lWkpKQAyBlt1q5dO3h6euLUqVMAckZTSSQSlanQJelzdHV1ERgYKD7X19dHYGAgoqOjceXKFY3tFBsbi7///hvdu3cXy3/x4gVevnyJ1q1b4/79+2pThfLauXMnzMzM0LJlS5U29fLygomJidp75X3sW1xcXNSm/xX3HMzNzZGSklLoXUMPHDiABg0aqFwXJiYmGD58OEJDQ8VpjCUlk8kwaNAglW27d++GtbU1/ve//6nlz/u9pzivee7onT/++ANZWVmlqmN+Rb0nizJ06FDx/1KpFPXq1YMgCBgyZIi43dzcXOM1Wa1aNVStWlXlnD/++GMAEM85d/rwqFGjVI6rqT1L2vfnunz5MqKjozFq1CiVtaj8/f1RtWpVtemepVGa/pKIqKxxWh/RKzExMUhMTFQZ5q/J/fv3cePGDbWpArmio6NVnjs6Oqo8zw1UOTg4aNyeu37D/fv3AUD8IpSfXC5XeW5gYKBWJwsLC7X1IIpLoVCorfdiaWlZ4KKleX+Yvg0laUelUomEhARxetGbCA4Oxtdff42///5b7cd0/vWKiqtbt24YP348tm/fjq+++gqCIGDnzp3i2jzA69d/wIABBZaTkJAgTgEsiLu7O1q0aFFknfK3L6B+/ZT02ndxcVFLT0tLg5ubm9q+mrb1798f27dvx6lTp9C0aVMcPXoUz58/L5Opo8nJyQAgBlTv378PQRDg7u6uMX/+u/pVrFhRJZAC5Fx7Rb2vgZz1SebNm4e1a9ciMjJS/IEMaL6m8r82ua95bpm5wZv8dbexsSny+gBy+r686xmZmJgUOC21oDrl1iu3TjExMUhNTUWVKlXU8lWrVg1KpRIRERHitC5NZeY/z4SEBKSlpYnp+vr6sLS0FJ/nv95iYmIQHx+PVatWYdWqVRrPo6j+On8dSvK+9PX1RXZ2Ns6dOwcHBwdER0fD19cXwcHBKsGp6tWrq5xHSfqc8uXLqwVTKleuDCBnfaZGjRqp1e/BgwcQBAFTp07F1KlTNZ5DdHQ0KlSooDHt/v37SEhIgK2tbYH75vU+9i35j1+Scxg1ahR27NiBtm3bokKFCmjVqhW6d++ONm3aiHnDwsLUpr0COe+d3PSivqtoUqFCBbXP8IcPH6JKlSoqfyzTdG7Fec39/PzQpUsXzJgxAz/88AOaNWuGjh07onfv3pDJZCWuL1D0e7Kk+5uZmcHAwADW1tZq21++fCk+v3//Pu7cuVPk6xkWFgYdHR21a0LTdVfSvj9Xbh+vqT+tWrUqTp8+XeC+xVWa/pKIqKwxOEVUQkqlEi1btsQXX3yhMT33h0EuqVSqMV9B23O/rOT+9X3jxo2ws7NTy5f/i2RB5ZVWRESE2petoKAgjQttAjlfkK5du4aIiAi1H+ia5P9hn0uhUGg8l9K2Y2HHKUp8fDz8/Pwgl8sxc+ZMuLq6wsDAAFevXsWXX35ZrJFLmpQvXx6+vr7YsWMHvvrqK5w/fx7h4eEqd47LLfu7776Dp6enxnKKCiCURFHtmFunklz7b3r3qtatW6NcuXLYtGkTmjZtik2bNsHOzq5Ywbai3Lp1C8DrHxBKpRISiQQHDx7U2Bb527q01yOQ8xf1tWvXYuzYsfD29oaZmRkkEgl69uyp8ZoqTplvon79+iqjk6ZPn17kjQLeRp2KKvOzzz7D+vXrxe1+fn4qCwbnv95y27Jv374FBpPyr7lX3H65OO/L3IW5T548CUdHR9ja2qJy5crw9fXFsmXLkJGRgVOnTqmsH/S2+py8csuYOHFigYt/a/phnXd/W1tbbN68WWN6/h/z72Pfoun4xT0HW1tb/PPPPzh06BAOHjyIgwcPYu3atejfv7/K9V0cJf18K227Ffc1l0gk2LVrF86fP4/9+/fj0KFDGDx4MBYuXIjz58+X6jPrTfuaknyfyH9N1qxZE4sWLdKYtzjfc/Irad9fGhKJRGPbFPWdpzT9JRFRWWNwiugVGxsbyOVy8UdrQVxdXZGcnFwmP5CLOg6Q80W2rI5V0BdZTezs7NSmHRR0hyMACAgIwNatW7Fp0yZMnjy5yPItLCwQHx+vtj0sLExlGtCbyv0ra/5jFWeq0PHjx/Hy5Uvs2bNHXCQVAB4/fqyWtyRtC+RM7Rs1ahTu3r2L7du3w8jICAEBAWJ67usvl8vf+rVWXG967dva2sLAwEDjnZY0bZNKpejduzfWrVuHBQsWYO/evRg2bNgbB2IVCgW2bNkCIyMjcdqMq6srBEGAi4uL2g/hsrZr1y4MGDBA5e5Q6enpGt8PxeHk5AQg5y/9ed87MTExxRpdsHnzZpURSWXx/rOxsYGRkRHu3r2rlhYSEgIdHZ0S/7j74osv0LdvX/F5UaPCbGxsYGpqCoVCUWbvoZK8L/X19dGgQQOcOnUKjo6O4nQkX19fZGRkYPPmzXj+/LlK31KSPgfIuYlHSkqKyuipe/fuAUCBd+bKfX319PRK1S6urq44evQofHx83jhIlLfM/3rfUpJz0NfXR0BAAAICAqBUKjFq1CisXLkSU6dOhZubG5ycnAp87wCv3/Nv8vmWt94XLlxAVlaW2gjRvHlK8po3atQIjRo1wpw5c7Blyxb06dMH27ZtU5li92/n6uqK69evo3nz5oV+vjs5OUGpVOLx48cqo1c1XXel7ftzX++7d++qjaa/e/eumA7kXBOaRrEXdU28jf6SiKikuOYU0Ss6Ojro2LEj9u/fj8uXL6ul5/4lqnv37jh37hwOHTqklic+Pr7M1jpq3bo15HI55s6dq3HthuLeYj2v3DvBFOdHsIGBAVq0aKHyKOzHYNeuXVGzZk3MmTMH586dU0tPSkrClClTxOeurq44f/68yt3E/vjjD0RERJTgjIoml8thbW2ttmbJsmXLitw394dK3r9CZmZmatzX2Ni4RNP8unTpAqlUiq1bt2Lnzp1o3769yg9MLy8vuLq64vvvvxenoOVVmtf/Tb3ptS+VStGiRQvs3bsXUVFR4vYHDx7g4MGDGvfp168f4uLiEBgYiOTkZJXgRGkoFAqMGTMGd+7cwZgxY8RplJ07d4ZUKsWMGTPU/uosCILKdI83JZVK1Y6xZMmSYo3m06RFixbQ09PDkiVLVMrNf4ezgvj4+Ki8z8siOCWVStGqVSvs27dP5Tbpz58/x5YtW9CkSRO1qclFqV69uko9vby8iqxDly5dsHv3bo1/dCjNe6ik70tfX19cuHABQUFBYnDK2toa1apVE0dK5l2PqSR9DgBkZ2dj5cqVKnlXrlwJGxubAtvH1tYWzZo1w8qVK/H06dMizyG/7t27Q6FQYNasWRrrU5og6/vQtxT3HPL3JTo6OuKIlIyMDABAu3btcPHiRZXP0pSUFKxatQrOzs7i2mq5wdK8n28KhaLAaVmadOnSBS9evMDSpUvV0vJ+7ynOax4XF6fWt+WOMMw9t/+K7t27IzIyEqtXr1ZLS0tLE9eSyx19mP89umTJErX9Stv316tXD7a2tlixYoVKOx48eBB37txRuTOgq6srQkJCVN7H169fx5kzZwo9xtvoL4mISoojp4jymDt3Lg4fPgw/Pz/x1sFPnz7Fzp07cfr0aZibm+Pzzz/H77//jvbt24u3w05JScHNmzexa9cuhIaGqq1lUBpyuRzLly9Hv379ULduXfTs2RM2NjYIDw/Hn3/+CR8fH41fJgtjaGiI6tWrY/v27ahcuTIsLS3h4eFRqrUr8tPT08OePXvQokULNG3aFN27d4ePjw/09PQQHByMLVu2wMLCAnPmzAGQs0jprl270KZNG3Tv3h0PHz7Epk2bVBZZLitDhw7F/PnzMXToUNSrVw8nT54URxcUpnHjxrCwsMCAAQMwZswYSCQSbNy4UeOQeS8vL2zfvh3jx49H/fr1YWJiojISKj9bW1t89NFHWLRoEZKSktCjRw+VdB0dHfzyyy9o27YtatSogUGDBqFChQqIjIxEUFAQ5HI59u/fX+Q5XL16FZs2bVLb7urqCm9v7yL3z6ssrv1vvvkGhw8fho+PD0aOHAmFQoGlS5fCw8MD//zzj1r+OnXqwMPDQ1yctm7dusWub0JCgnjuqampePDgAfbs2YOHDx+iZ8+eKj+0XF1dMXv2bEyePBmhoaHo2LEjTE1N8fjxY/z2228YPnw4Jk6cWOxjF6Z9+/bYuHEjzMzMUL16dZw7dw5Hjx4t9RppNjY2mDhxIubNm4f27dujXbt2uHbtGg4ePFgmfVFpzZ49G0eOHEGTJk0watQo6OrqYuXKlcjIyMC33377Tuowf/58BAUFoWHDhhg2bBiqV6+O2NhYXL16FUePHkVsbGyJyivp+9LX1xdz5sxBRESEShCqadOmWLlyJZydnVGxYkVxe0n6HCBnivCCBQsQGhqKypUrY/v27fjnn3+watWqAkfBAMDPP/+MJk2aoGbNmhg2bBgqVaqE58+f49y5c3jy5AmuX79e4L5+fn4IDAzEvHnz8M8//6BVq1bQ09PD/fv3sXPnTixevBhdu3YtSbP+5/qWNzmHoUOHIjY2Fh9//DEqVqyIsLAwLFmyBJ6enuKaUpMmTcLWrVvRtm1bjBkzBpaWlli/fj0eP36M3bt3Q0cn52/LNWrUQKNGjTB58mTExsbC0tIS27ZtK9Efyfr3748NGzZg/PjxuHjxInx9fZGSkoKjR49i1KhR6NChQ7Ff8/Xr12PZsmXo1KkTXF1dkZSUhNWrV0Mul6Ndu3Zv1L7vWr9+/bBjxw6MGDECQUFB8PHxgUKhQEhICHbs2IFDhw6hXr168PLyQpcuXfDjjz/i5cuXaNSoEU6cOCF+x8g76qq0fb+enh4WLFiAQYMGwc/PD7169cLz58+xePFiODs7Y9y4cWLewYMHY9GiRWjdujWGDBmC6OhorFixAjVq1FBbwy6/su4viYhK7G3eCpDovygsLEzo37+/YGNjI8hkMqFSpUrC6NGjVW5lnJSUJEyePFlwc3MT9PX1BWtra6Fx48bC999/r3b77u+++06l/NxbBO/cuVNle+4tofPfgjkoKEho3bq1YGZmJhgYGAiurq7CwIEDhcuXL4t5BgwYIBgbG6udS+6tlPM6e/as4OXlJejr66vdRrgsxMXFCdOmTRNq1qwpGBkZCQYGBoKHh4cwefJk4enTpyp5Fy5cKFSoUEGQyWSCj4+PcPny5QJvJ13c9so955iYGHFbamqqMGTIEMHMzEwwNTUVunfvLkRHR6udv6bbcp85c0Zo1KiRYGhoKJQvX1744osvhEOHDqndpjs5OVno3bu3YG5uLgAQb9ms6TbuuVavXi0AEExNTVVuD53XtWvXhM6dOwtWVlaCTCYTnJychO7duwvHjh3TmD9X7nELeuS9ZbaTk5Pg7++vVoamW1K/ybWf69ixY0KdOnUEfX19wdXVVfjll1+ECRMmCAYGBhrzf/vttwIAYe7cuYWec/665z1fExMTwd3dXejbt69w+PDhAvfbvXu30KRJE8HY2FgwNjYWqlatKowePVq4e/euStk1atRQ27egdgQgjB49WnweFxcnDBo0SLC2thZMTEyE1q1bCyEhIYKTk5PK61JYn5D/+lMoFMKMGTMEe3t7wdDQUGjWrJlw69YttTLLQv7zyaXpWFevXhVat24tmJiYCEZGRsJHH30knD17ViVPSc6zpHUSBEF4/vy5MHr0aMHBwUHQ09MT7OzshObNmwurVq1SO1b+fqag929x35eJiYmCVCoVTE1NhezsbHH7pk2bBABCv3791Opb3D4n9zq8fPmy4O3tLRgYGAhOTk7C0qVLi3UODx8+FPr37y/Y2dkJenp6QoUKFYT27dsLu3bt0tiO+a1atUrw8vISDA0NBVNTU6FmzZrCF198IURFRYl53se+paBzKu457Nq1S2jVqpVga2sr6OvrC46OjkJgYKDa5+PDhw+Frl27Cubm5oKBgYHQoEED4Y8//lA75sOHD4UWLVoIMplMKFeunPDVV18JR44cKfB60SQ1NVWYMmWK4OLiIr5HunbtKjx8+FAlX1Gv+dWrV4VevXoJjo6OgkwmE2xtbYX27durfF8pSHE/+wv7TM1L03cBQSj4+5Km9snMzBQWLFgg1KhRQ5DJZIKFhYXg5eUlzJgxQ0hISBDzpaSkCKNHjxYsLS0FExMToWPHjsLdu3cFAML8+fPFfMXt+wvq+7Zv3y7UqVNHkMlkgqWlpdCnTx/hyZMnaueyadMmoVKlSoK+vr7g6ekpHDp0SBgwYID4vSSXpu+AxekviYjeFokglNGKqkRERKXUsWNHBAcHi3dDy2vx4sUYN24cQkNDNd75i4ioIOxbSBv++ecf1KlTB5s2bUKfPn1KtO+xY8fQokULnDp1SlwXkYjoQ8A1p4iI6J3Ku/g2kLOQ94EDBzTeCVIQBPz666/w8/Pjj0ciKhT7FtKG/NcdkLPmn46OjsqNDYordy04bU7LJiLSBq45RURE71SlSpUwcOBAVKpUCWFhYVi+fDn09fVVbsGekpKC33//HUFBQbh58yb27dunxRoT0X8B+xbShm+//RZXrlzBRx99BF1dXRw8eBAHDx7E8OHDS3RX0pSUFGzevBmLFy9GxYoV3/qdY4mI/m04rY+IiN6pQYMGISgoCM+ePYNMJoO3tzfmzp2rsiBxaGgoXFxcYG5ujlGjRokL6RMRFYR9C2nDkSNHMGPGDNy+fRvJyclwdHREv379MGXKFOjqFn8cQGhoKKpUqYKaNWti2bJlaNCgwVusNRHRvw+DU0REREREREREpDVcc4qIiIiIiIiIiLSGwSkiIiIiIiIiItKaD25BdKVSiaioKJiamkIikWi7OkRERERERET/OYIgICkpCeXLl4eODse90Jv54IJTUVFRJbpzBhERERERERFpFhERgYoVK2q7GvQf98EFp0xNTQHkvIHkcrmWa0NERERERET035OYmAgHBwfxNzbRm/jgglO5U/nkcjmDU0RERERERERvgMvlUFngxFAiIiIiIiIiItIaBqeIiIiIiIiIiEhrGJwiIiIiIiIiIiKt+eDWnCIiIiIiIiothUKBrKwsbVeD6K3T09ODVCrVdjXoA8HgFBERERERUREEQcCzZ88QHx+v7aoQvTPm5uaws7Pjouf01jE4RUREREREVITcwJStrS2MjIz4Y53ea4IgIDU1FdHR0QAAe3t7LdeI3ncMThERERERERVCoVCIgSkrKyttV4fonTA0NAQAREdHw9bWllP86K3iguhERERERESFyF1jysjISMs1IXq3cq95rrNGbxuDU0RERERERMXAqXz0oeE1T+8Kg1NERERERERERKQ1DE4REREREREREZHWMDhFRERERET0nho4cCAkEglGjBihljZ69GhIJBIMHDjw3VeMiCgPBqeIiIiIiIjeYw4ODti2bRvS0tLEbenp6diyZQscHR21WDMiohwMThEREREREb3H6tatCwcHB+zZs0fctmfPHjg6OqJOnTriNqVSiXnz5sHFxQWGhoaoXbs2du3aJaYrFAoMGTJETK9SpQoWL16scqyBAweiY8eO+P7772Fvbw8rKyuMHj2ad3sjokIxOEVERERERPSeGzx4MNauXSs+X7NmDQYNGqSSZ968ediwYQNWrFiB4OBgjBs3Dn379sWJEycA5ASvKlasiJ07d+L27duYNm0avvrqK+zYsUOlnKCgIDx8+BBBQUFYv3491q1bh3Xr1r31cySi/y5dbVeAiIiIiIjovyopKQnJyckq2wwMDGBhYYHs7GzExMSo7WNvbw8AePHihdqIInNzcxgaGiIlJQWJiYkqafr6+rCysipVPfv27YvJkycjLCwMAHDmzBls27YNx48fBwBkZGRg7ty5OHr0KLy9vQEAlSpVwunTp7Fy5Ur4+flBT08PM2bMEMt0cXHBuXPnsGPHDnTv3l3cbmFhgaVLl0IqlaJq1arw9/fHsWPHMGzYsFLVnYjefwxOERERERERldKVK1fEkUW5atasic6dOyMxMRGrVq1S22f69OkAgH379uHJkycqaZ06dUKtWrUQHByMgwcPqqS5urqib9++paqnjY0N/P39sW7dOgiCAH9/f1hbW4vpDx48QGpqKlq2bKmyX2ZmpsrUv59//hlr1qxBeHg40tLSkJmZCU9PT5V9atSoAalUKj63t7fHzZs3S1VvIvowMDhFRERERERUSl5eXqhSpYrKNgMDAwCAXC7H8OHDC9y3Q4cOGkdOATkBHgcHB5U0fX39N6rr4MGD8emnnwLICTLllTv6688//0SFChVU0mQyGQBg27ZtmDhxIhYuXAhvb2+Ympriu+++w4ULF1Ty6+npqTyXSCRQKpVvVHcier8xOEVERERERFRKpqamMDU11Zimq6srTuHTJO/IpfyMjY1hbGz8xvXLq02bNsjMzIREIkHr1q1V0qpXrw6ZTIbw8HD4+flp3P/MmTNo3LgxRo0aJW57+PBhmdaRiD5MH2xwKisri3eMICIiIiKiImVlZUEQBCiVyv/cCCBBEMS6SyQSBAcHA3g9mik33djYGBMmTMC4ceOQnZ2NJk2aICEhAWfPnoWpqSkGDBgANzc3bNiwAQcPHoSLiws2bdqES5cuwcXFRWyXvMfLWwcA/7m2I4jXSFZWlspUTQD8PU1l6oMNToWHhxf4Fw4iIiIiIqJcCoUC2dnZyMrKgo7Of+uG57kBtczMTACvpxzmPs+b/vXXX8PCwgLz58/H48ePYW5uDk9PT3zxxRfIzMzEwIEDceXKFfTq1QsSiQTdu3fH8OHDcfjwYY3l5VIoFGrb6L8hKysL2dnZiIqKUgtOJSUlaalW9D6SCLlh7A9EYmIizMzM8M8//8DCwkLb1SEiIiIion+57OxspKSkwMnJSVx/iehDkJGRgbCwMBgbG0NXV3VsS1xcHDw9PZGQkAC5XK6lGtL74oMdOaWrq6v25iIiIiIiItJEIpGo/Ev0oZBIJBp/P/P3NJWl/9aYVCIiIiIiIiIieq8wOEVERERERERERFrD4BQREREREREREWkNg1NERERERERERKQ1DE4REREREREREZHWMDhFRERERERERERaw+AUERERERERERFpDYNTRERERERERESkNQxOERERERERUam9fPkSFStWRGho6Fs/1okTJyCTyRAfH//Wj/VvV7lyZfz000/ic5lMhn379hV7/ylTpmDs2LFvoWZEJcfgFBERERER0XssIiICw4cPh7Oz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wMKFC4vcx8jICMeOHYODgwN69OiB2rVrIzAwEOnp6ZDL5WK+HTt2YMiQIcWuC9HbIhE03Tf0PZaYmAgzMzPcunULFhYW2q4OERERERH9y2VnZyMxMRGOjo6F3g3uv2LmzJlYvHgxDhw4oLJIeGkdOHAAkydPxrVr1woN5GhLaGgoqlSpgosXL6J27drars6/xl9//YUvv/wSV65cga6u5uWo09PTER4eDrlcrpYnLi4OHh4eSEhIUAl4EZUGF0QnIiIiIiL6gEybNg1OTk64cOEC6tev/8YBpXbt2uHBgweIjIyEg4NDGdWS3rbU1FSsXr26wMAU0bvEq5CIiIiIiOgDM2DAgDItb8yYMWVaHr19nTt31nYViEQMThEREREREdF7y9nZudA7DhKR9v37JgQTEREREREREdEHg8EpIiIiIiIiIiLSGganiIiIiIiIiIhIaxicIiIiIiIiIiIirWFwioiIiIiIiIiItIbBKSIiIiIiIiIi0hoGp4iIiIiIiKjUMjMzUa1aNZw7d+6tHys0NBQymQzXr19/68f6t2vZsiUmTJggPq9cuTJ++umnYu+/atUqdOrU6W1UjajEGJwiIiIiIiJ6j0VERGD48OFwdnaGiYkJ3N3dMX78eLx8+VIl3969e9GuXTvY29uXKAC0atUqODs7w9vbG0BOACkwMBCVK1eGmZkZqlatipkzZyIzM1PcJzfIlP9x4cIFMc/QoUPRtWvXMmiB/7YTJ05AJpMhPj5eZfv27dvxzTfflLrcgQMH4p9//sHp06ffrIJEZYDBKSIiIiIiovfUo0eP0LhxYzx48AAbNmzA7du3sWTJEgQFBaFp06aIjY0V86akpMDHxwdz5swpdvmCIGD58uUYNGiQuO3u3btQKpX4+eefce3aNXz33XdYvXo1pk6dqrb/wYMHERYWJj7q1q37Zif8DuUNtmmDpaUlTE1NS72/vr4+evTogZ9//rkMa0VUOgxOERERERERvac+++wz6Ovr488//0TTpk3h6OiINm3a4ODBg4iKisK0adPEvH369MGUKVPw8ccfF7v8q1ev4tGjR2jbtq24rXXr1li9ejVatmyJSpUqISAgAGPHjsXevXvV9reysoKdnZ340NPTAwDMmjULGzduxP79+8VRVSdOnBD3e/z4MVq1agVzc3PUq1cP58+fL7SeMpkMK1euREBA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Ng2LFi3ChQsX3mjR7Vw1a9bEnDlzEBoa+uaVo3fm6dOn+PXXXwtdU4voXdHa3fqaN2+OmzdvqmwbNGgQqlatii+//FIcBpmXt7c3jh07pjKM8ciRI/D29i7wODKZDDKZrMzqTURERERE9F+Xd/pcWejfv3+ZlkdvX/PmzbVdBSKR1oJTpqam8PDwUNlmbGwMKysrcXv//v1RoUIFcU2qzz77DH5+fli4cCH8/f2xbds2XL58GatWrXrn9SciIiIiIqL/hoyMDG1XgYgKofW79RUmPDwcT58+FZ83btwYW7ZswapVq1C7dm3s2rULe/fuVQtyERERERERERHRf4PWFkTXlsTERJiZmXFBdCIiIiIiKpb3bUF0ouLiguj0rvyrR04REREREREREdH7jcEpIiIiIiIiIiLSGganiIiIiIiIiIhIaxicIiIiIiIiIiIirWFwioiIiIiIqJQUCgWysrLe2UOhUGj7lN+KDRs2wNbWtsD00NBQyGQyXL9+/Y2O07JlS0yYMOGNyiCisqdbdBYiIiIiIiLKT6FQICoqCpmZme/smPr6+ihfvjykUmmZlx0aGop58+YhKCgIz58/h729PXr37o1JkyZBX1+/VGVWrlwZn376KcaMGVPGtSWi9wmDU0RERERERKWgVCqRmZkJqVT6VoJF+SkUCmRmZkKpVBb7eFFRUbC1tYWubtE//e7evQulUomff/4Zrq6uCA4OxqhRo5CSkoIFCxa8afWJiArEaX1ERERERERvQCqVQldX960/ShMAW7NmDSpVqoQvv/wSt27dKjRv69atsXr1arRs2RKVKlVCQEAAxo4di7179xa4jyAImDVrFtzc3GBqagpnZ2eMGzcOQM4UurCwMHz++eeQyWSQyWTifhs2bICbmxvMzc3RrVs3vHz5sljnc/fuXfj5+UEul6NOnTo4efKkSnpwcDACAgJgaWkJBwcHDBo0CC9evCiwvLi4OAwePBjlypWDubk5AgICcP/+ffHcKlSogD179oj569evDycnJ/H5mTNnYGpqitTUVI3lDx06FF27dsWCBQvg4OAAW1tbzJkzB9nZ2Zg0aRLs7OxQqVIlrF+/XmW/iIgI9O7dG7a2trCzs0OXLl0QGhoqpl++fBlt27ZF+fLlYWNjgxYtWuDatWsqZchkMqxZswbdunWDubk5qlevjv379xfewERa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MS6ITkREREREREREWsPgFBERERERERERaQ2DU0REREREREREpDUMThERERERERERkdYwOEVERERERERERFrD4BQREREREREREWkNg1NERERERERERKQ1DE4REREREREREZHWMDhFRERERERERERaw+AUERERERERERFpDYNTRERERERERESkNQxOERERERERERGR1jA4RUREREREREREWsPgFBERERERERERaQ2DU0REREREREREpDUMThERERERERERkdYwOEVERERERERERFrD4BQREREREREREWkNg1NERERERERERKQ1DE4REREREREREZHWMDhFRERERERERERaw+AUERERERERERFpja62K0D0vjoU/AzLgh7g3vNkVC5nglEfuaF1DTttV4uIiIiIiIjoX4Ujp4jegkPBzxC48QquP0lAWpYC158kYMSmKzgU/EzbVSMiIiIiIiL6V2FwiugtWBb0QG2bIADLjj/UQm2IiIiIiIiI/r0YnCJ6C+49T9a4/f7zpHdcEyIiIiIiIqJ/NwaniN6CyuVMNG53L2f6jmtCRERERERE9O/G4BTRWzDqIzdIJKrbJBJgdDNX7VSIiIiIiIiI6F+KwSmit6B1DTus6OuF2g7mMNKXoraDOVb29UIr3q2PiIiIiIiISIWutitA9L5qXcMOrRmMIiIiIiIiIioUR04REREREREREZHWMDhFRERERERERERaw+AUERERERERERFpDYNTRERERERERESkNQxOERERERERERGR1jA4RUREREREREREWqPV4NTy5ctRq1YtyOVyyOVyeHt74+DBgwXmX7duHSQSicrDwMDgHdaYiIiIiIiIiIjKkq42D16xYkXMnz8f7u7uEAQB69evR4cOHXDt2jXUqFFD4z5yuRx3794Vn0skkndVXSIiIiIiIiIiKmNaDU4FBASoPJ8zZw6WL1+O8+fPFxickkgksLOzexfVIyIiIiIiIiKit+xfs+aUQqHAtm3bkJKSAm9v7wLzJScnw8nJCQ4ODujQoQOCg4MLLTcjIwOJiYkqDyIiIiIiIiIi+nfQenDq5s2bMDExgUwmw4gRI/Dbb7+hevXqGvNWqVIFa9aswb59+7Bp0yYolUo0btwYT548KbD8efPmwczMTHw4ODi8rVMhIiIiIiIiIqISkgiCIGizApmZmQgPD0dCQgJ2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PFyKCDdt2qR3331XHTt2lJubmxo3bqzhw4dr5syZjlvwAAAAAAAAyqOkW+3atWtX4q2KrioKpIoe9paQkKAhQ4bIbDbrlltuUf/+/YvNBRYaGqrx48dr5syZaty4sXx9fTVhwgRNnTpVOTk5MplMMplMioyMLPGYOTk5Gj9+vFq0aKEaNWooNDRUo0ePLnbLc9Fx/vWvf6lx48Yym82KiooqdkvwkSNH1KNHD/n4+Khp06bF5ni7Xry8vPTiiy/qs88+KzbPYEW4NHIqJyfHcZ9rrVq1dO7cOTVv3lx33HGH9u7dW2nFAQAAAACA6m3btm1q0KCB07zRRbeYuTKNdlEoVb9+fWVlZSkyMlJubm6aM2eOfHx8NH36dHXv3l3ff/+9QkJCHNt99dVXCgsL0/vvvy93d3e1bdtWubm5WrRokWOi+NJucbxw4YIKCgo0ffp0BQYGKjExUdOnT1dUVJQ2b97s1HblypX68ccf9a9//UspKSmaOHGinn32WccDIHJzc9WvXz/dcsst+uyzzyRJr732mjIzMxUWFlbu/iivp556StOnT9eMGTP00UcfVco+XQqnWrRoofj4eIWGhioiIkIfffSRQkNDNWfOHMdEdAAAAAAAABWxbds2LVmypNgUQu7u7nJ3dy/TPux2u6xWqywWi3bu3Knp06erSZMmat++vebOnauEhAQdPnxYrVq1klT4xMRGjRrpvffeczquxWLRmjVrdMsttziWNWzYUG5ubo7bBksTGBioDz/80PHearXqtttuU7du3XTs2DE1b97cqd6VK1fK29tbUuH8TzNmzJDNZpObm5sWLFigM2fO6OjRo44wql27dmrRosUNCad8fHz0/PPP6+WXX9arr76qhg0bVnifLt3W9+c//9nxxIHXX39da9asUaNGjfTBBx9oxowZFS4KAAAAAABUb6dOnVJ0dLR69uypCRMmOK2bN29esacKlmb27Nny9PRUjRo11LNnTzVo0EBfffWVfH199e233yo8PNwRTEmFT47s27evtm3b5rSfyMhIp2CqvD777DO1a9dOfn5+8vT0VLdu3SRJx44dc2rXo0cPRzAlSa1bt5bFYnE8UXLnzp0KDw93CqKaNWumiIiIqx6/KKQrepX1YXYlGT16tMxms958802X93E5l8Kp4cOHa8SIEZKkDh06KCEhQbt371ZiYqKi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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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UadOHcybNw9yubzQWLOzs5GWlqbyIiIiIiIiIiKiktPqGlOJiYlQKBQoV66cSnm5cuUQERGhcZvY2FiN7V++fS/funXrYGpqiq5du6qUjx49GnXr1oWVlRXOnDmDiRMn4unTp1iwYIHGfoKDgzF16tSiHhoREREREREREb3Gf2Lx87K0evVq9OvXT23K7dixY8Wfa9WqBT09PQwbNgzBwcEa7xufOHGiyjZpaWlwcHAou8CJiIiIiIiIiN5zWk1M2djYQCaTIS4uTqU8Li4O9vb2Grext7cvcvuTJ08iMjIS27Zte20sPj4+kMvlePjwIapXr65Wr6+vz4UOiYiIiIiIiIhKkVbXmNLT04OXl5fKouRKpRJHjhxBw4YNNW7TsGFDlfYAcOjQIY3tV61aBS8vL9SuXfu1sfz999+QSqUanwRIRERERERERESlT+u38o0dOxb+/v6oV68e6tevj59++gkZGRkYNGgQAGDgwIGoWLEigoODAQBffvklmjVrhvnz56NDhw7YunUrLl68iBUrVqj0m5aWhpCQEMyfP19tn2FhYTh37hxatGgBU1NThIWFISgoCP379+cT9oiIiIiIiIiI3hKtJ6Z69eqFhIQETJ48GbGxsfD09MT+/fvFBc6jo6Mhlf47satRo0bYvHkzvvvuO3zzzTdwdXXFzp074eHhodLv1q1bIQgC+vTpo7ZPfX19bN26Fd9//z2ys7Ph7OyMoKAglTWkiIiIiIiIiIiobEkEQRC0HcS7KC0tDebm5rhx4wZnWRERERERvcfkcjnS0tJQuXJltYcqEb3PsrKyEB0dDTMzM+joqM5rSU5OhoeHB1JTU2FmZqalCOl9oNU1poiIiIiIiOjd9uzZM1SqVAkPHz4s830dP34c+vr6SElJKfN9/ddVq1YNv/zyi/heX18fu3btKvL23377LcaMGVMGkREVDxNTRERERERE77FHjx5h6NChcHJygomJCVxdXTF27Fg8e/ZMpd306dNRs2ZNWFpaoly5cmjbti3Onz//2v5nz54NPz8/ODk5AQDWr18vPtX85Vd8fDyAfxNML79iY2PFflu1aoVx48aV3kC8o9avX6/xIV2nT5/GkCFDStxvUFAQNm7ciPv3779JeERvjIkpIiIiIiKi99T9+/fRqFEj3L17F+vXr8fNmzexcOFChIaGwtfXF0lJSWJb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MzO1NsnJyfDw8EBqaqpKsououLj4ORERERER0Qdk8uTJcHR0xLlz5+Dt7f3GyaT27dvj7t27iImJgYODQylFSWUtMzMTK1euLDQpRfS28AwkIiIiIiL6wPj7+5dqf6NHjy7V/qjsde3aVdshEAFgYoqIiIiIiIjeY05OTq98siARadd/7wZgIiIiIiIiIiL6IDAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQRERERERGVWE5ODtzd3REWFlbm+3r48CH09fVx9erVMt/Xf12rVq0wbtw48X21atXwyy+/FHn7FStWoEuXLmURGlGxMDFFRERERET0Hnv06BGGDh0KJycnmJiYwNXVFWPHjsWzZ89U2u3cuRPt27dH+fLli5X8WbFiBZycnNCwYUMAecmjYcOGoVq1ajA3N4ebmxumTZuGnJwccZv8BNPLr3PnzolthgwZgu7du5fCCLzbjh8/Dn19faSkpKiUb9u2Dd9//32J+w0ICMDff/+NU6dOvVmARG+IiSkiIiIiIqL31P3799GoUSPcvXsX69evx82bN7Fw4UKEhobC19cXSUlJYtuMjAw0btwYM2fOLHL/giBg6dKlGDRokFgWGRkJpVKJxYsX48qVK5g3bx5WrlyJSZMmqW2/b98+REVFia+6deu+2QG/RQUTbdpgZWUFU1PTEm+vp6eHXr16YfHixaUYFVHxMTFFRERERET0nvryyy+hp6eHv/76C76+vqhcuTLatm2Lffv24cmTJ5g8ebLYtl+/fvj222/x8ccfF7n/y5cv4/79+2jXrp1Y1qZNG6xcuRKtWrVClSpV4OfnhzFjxmDnzp1q21tbW8Pe3l586erqAgCmT5+ODRs2YPfu3eJsquPHj4vbPXjwAK1bt4aFhQXq1auHs2fPvjJOfX19LF++HH5+fjA3N0f16tWxY8cOlTaPHj1C3759YWdnB3t7e3Tr1g0PHz4U6/NncM2ePRtOTk7w8PAAADx+/BgDBgyAvb09LC0t0bBhQ5w/f17c7s8//4SPjw/MzMxQvXp1zJgxA3K5XCW21atXo0ePHrCwsECNGjWwe/duAHkzy1q3bg0AKFeuHPT19TFkyBAA6rfyvSwlJQXDhw9HxYoVYWNjgzZt2uDatWsqbTp06IA9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IiIiohKSyWRMFBERvQGuMUVERERERERERFrBxBQREREREREREWkFE1NERERERERFwOdG0YeG5zy9DUxMERERERERvYKuri4AIDMzU8uREL1d+ed8/u8AUVng4udERERERESvIJPJYGFhgfj4eACAkZERJBKJlqMiKjuCICAzMxPx8fGwsLDgAv9UppiYIiIiIiIieg17e3sAEJNTRB8CCwsL8dwnKitMTBEREREREb2GRCJB+fLlYWdnh9zcXG2HQ1TmdHV1OVOK3gompoiIiIiIiIpIJpPxyzoRUSni4udERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQREREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQREREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVmg9MbV48WI4OTnBwMAAPj4+OH/+/Cvbh4SEwM3NDQYGBqhZsyb27t2r1ubWrVv49NNPYW5uDmNjY3h7eyM6Olqsb968OSQSicpr+PDhpX5sRERERERERERUOK0mprZt24axY8diypQpuHz5MmrXro02bdogPj5eY/szZ86gT58+CAwMxJUrV9C5c2d07twZN27cENvcu3cPTZo0gZubG44dO4Zr165h0qRJMDAwUOnrs88+w9OnT8XX3Llzy/RYiYiIiIiIiIhIlUQQBEFbO/fx8YG3tzcWLVoEAFAqlXBwcMAXX3yBCRMmqLXv1asXMjIysGfPHrGsQYMG8PT0xLJlywAAvXv3hq6uLjZs2FDofps3bw5PT0/89NNPJY49LS0N5ubmSE1NhZmZWYn7ISIiIiIiInrX8DsxlRatzZjKycnBpUuX0LJly3+DkUrRsmVLhIWFadwmLCxMpT0AtGnTRmyvVCrx119/oVq1amjTpg3s7Ozg4+ODnTt3qvW1adMm2NjYwMPDAxMnTkRmZmbpHRwREREREREREb2W1hJTiYmJUCgUKFeunEp5uXLlEBsbq3Gb2NjYV7aPj49Heno6Zs+ejbZt2+LgwYPo0qULunbtiuPHj4vb9O3bFxs3bkRoaCgmTpyIDRs2oH///q+MNzs7G2lpaSovIiIiIiIiIiIqOR1tB1CalEolAKBTp04ICgoCAHh6euLMmTNYtmwZmjVrBgAYOnSouE3NmjVRvnx5fPLJJ7h37x5cXFw09h0cHIypU6eW8REQEREREREREX04tDZjysbGBjKZDHFxcSrlcXFxsLe317iNvb39K9vb2NhAR0cHNWrUUGnj7u6u8lS+l/n4+AAA7t69W2ibiRMnIjU1VXw9evSo8IMjIiIiIiIiIqLX0lpiSk9PD15eXjhy5IhYplQqceTIETRs2FDjNg0bNlRpDwCHDh0S2+vp6cHb2xuRkZEqbW7fvg1HR8dCY/n7778BAOXLly+0jb6+PszMzFReRERERERERERUclq9lW/s2LHw9/dHvXr1UL9+ffz000/IyMjAoEGDAAADBw5ExYoVERwcDAD48ssv0axZM8yfPx8dOnTA1q1bcfHiRaxYsULs86uvvkKvXr3g6+uLFi1aYP/+/di9ezeOHTsGALh37x42b96M9u3bw9raGteuXUNQUBB8fX1Rq1attz4GREREREREREQfKq0mpnr16oWEhARMnjwZsbGx8PT0xP79+8UFzqOjoyGV/jupq1GjRti8eTO+++47fPPNN3B1dcXOnTvh4eEhtunSpQuWLVuG4OBgjB49GtWrV8fvv/+OJk2aAMibVXX48GExCebg4IBu3brhu+++e7sHT/QKB8JjsST0Lm7HpaNaOROMaFEVbT7SfIsrERERERER0btKIgiCoO0g3kVpaWkwNzdHamoqb+ujUnUgPBbDNlxSKZNIgGX9vZicIiIiIiKi/wR+J6bSorU1pohIsyWh6ovwCwKw5Ng9LURDREREREREVHaYmCL6j7kdl66x/E7c87ccCREREREREVHZYmKK6D+mWjkTjeWu5UzfciREREREREREZYuJKaL/mBEtqkIiUS2TSICRzV20ExARERERERFRGWFiiug/ps1H9ljW3wu1HSxgpCdDbQcLLO/vhdZc+JyIiIiIiIjeMzraDoCI1LX5yJ5P4CMiIiIiIqL3HmdMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQREREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQREREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVhQrMSWXy7F+/XrExcWVVTxERERERERERPSBKFZiSkdHB8OHD0dWVlZZxUNERERERERERB+IYt/KV79+ffz9999lEAoREREREREREX1IdIq7wYgRIzB27Fg8evQIXl5eMDY2VqmvVatWqQVHRERERERERETvL4kgCEJxNpBK1SdZSSQSCIIAiUQChUJRasH9l6WlpcHc3BypqakwMzPTdjhEREREREREbw2/E1NpKfaMqQcPHpRFHERERERERERE9IEpdmLK0dGxLOIgIiIiIiIiIqIPTLETU/lu3ryJ6Oho5OTkqJR/+umnbxwUERERERERERG9/4qdmLp//z66dOmC69evi2tLAXnrTAH4YNaYIiIiIiIiIiKiN6O+kvlrfPnll3B2dkZ8fDyMjIwQHh6OEydOoF69ejh27FgZhEhERERERERERO+jYs+YCgsLw9GjR2FjYwOpVAqpVIomTZogODgYo0ePxpUrV8oiTiIiIiIiIiIies8Ue8aUQqGAqakpAMDGxgZPnjwBkLcoemRkZOlGR0RERERERERE761iz5jy8PDA1atX4ezsDB8fH8ydOxd6enpYsWIFqlSpUhYxEhERERERERHRe6jYianvvvsOGRkZAIBp06ahY8eOaNq0KaytrbFt27ZSD5CIiIiIiIiIiN5PEiH/sXpvICkpCZaWluKT+T4EaWlp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Rx/JZrPJbDZrzpw5+uuvv3Tw4EFHEFWvXj1Vr179rgRTnp6eGjJkiIYOHap//vOfevjhh++4zzzfyvfSSy+pXr16ioqK0p9//qmjR486/RcAAAAAAOBOnDx5UuHh4WrVqpUGDhzotG/mzJlZvjUxJ9OmTZObm5uKFi2qVq1aqXz58vr+++9VpEgRbd68WYGBgY5QSsr8VscnnnhCP//8s1M/LVu2dAql8urrr79WvXr1VKxYMbm5ual58+aSpMOHDzu1a9GihSOUkqRatWopPT3d8W2P27ZtU2BgoFMIVbVqVdWtW/eW578W0F173Mmkon79+slisWjcuHH57uNGeQ6mjh07po8//ljBwcEKCAhQxYoVnR4AAAAAAAD5lZCQoKeeekqlSpXS999/f0ffnte5c2ft2LFDe/bs0blz57R9+3YFBQVJki5cuCBfX98sx/j6+ur8+fNZtuXXkiVL1LNnTzVu3FiLFi3S1q1btWTJEkmZt+bdqHjx4k7P3d3dndrFxsaqTJky2dZ8Kxs3bpSbm5vj0aZNm/y+HBUtWlQRERGaOXOmYmNj893PNXm+la9169bau3evqlatescnBwAAAAAAuObKlSt6+umnlZiYqKioKFksljvqz8fHJ8dv3ytZsqQOHTqUZfvp06dVsmRJp20mkynfNSxevFhBQUFOazJt3LgxX32VLVtWu3btyrL99OnTOa5xJUkNGjTQjh07HM9vXLMrP15//XV9+umn+uSTT+6oHykfwVT79u01aNAg/frrr6pdu3aWxc+feeaZOy4KAAAAAAA8WKxWqzp37qwDBw5o8+bNKl++/N96vubNm+u7777ToUOHVL16dUmZs6h++ukn9e3b97bHu7u7KzU19bbtrly54pj5dM28efPyVXPjxo01d+5cHTlyxDFh6MiRI9q7d68ee+yxHI/z8vLKMaDLDy8vL7311lsaO3asgoKCsry+vMhzMNWvXz9J0qhRo7LsY/FzAAAAAACQH6+99pqWL1+u8ePHKykpSVu3bnXsq1evnmPtpZdffllfffVVrteZyknv3r31+eefq127dvrwww8d38rn6uqqt95667bH16xZU1arVZMmTVKzZs3k7e3tCLhu9MQTT+j111/X6NGj1bRpU61YsUKRkZH5qrlXr1768MMP9fTTT2v06NGSMr+Vz8/PL1/93YmBAwdq/PjxioqKUosWLfLdT55v1LTZbDk+CKUAAAAAAEB+rFmzRpI0ePBgNW3a1Olx41pGGRkZBZI/eHl5acOGDapbt6769u2rbt26qUSJEtq0aZP8/f1ve3z79u312muvaezYsQoODtarr76abbtXX31VgwcP1hdffKFnn31WJ06c0Pz58/NVc5EiRbRmzRqVKVNG3bt317vvvqt33nlHjRo1yld/d8JiseiNN964435MdrvdXgD1PHCSkpJksViUmJh4y/s4AQAAAAAobPL7mTg9PV1nz56Vj49PlqWBUPhl9+ef/6XtAQAAAAAAgDtAMAUAAAAAAABDEEwBAAAAAADAEARTAAAAAAAAMES+gqk//vhD77//vrp27aozZ85IklauXKn9+/cXaHEAAAAAAAAovPIcTG3cuFG1a9fWtm3b9MMPPyg5OVmStHfvXo0YMaLACwQAAAAAAIXfihUr1KJFC/n4+MjDw0OVK1dWRESEEhMT89XfxIkTtWLFigKusmD06tVLgYGBWbbHxMSob9++qlixojw8PFSyZEmFhobqu+++u6v1BQQEyGQyyWQyydXVVZUrV1b//v0VHx/vaNOrVy9Hm5sfCxcuzPW58hxMvffee/rwww+1du1aubu7O7a3bt1aW7duzWt3kqSpU6cqICBAnp6eCg4O1vbt22/ZfvHixapRo4Y8PT1Vu3btLG+07AYnNDTUqc2Ng3ztMW7cuHzVDwAAAAAA7sz58+cVHBys6dOna/Xq1YqIiNDcuXP1/PPP56u/ezmYys7WrVsVFBSk9evX67333tOaNWv01VdfqVKlSurWrZv27t17V+vp1KmToqKitH79evXv319z585VWFiYbDabo03lypUVFRWV5fHEE0/k+jyueS3s119/1fz587NsL1OmjFNyllvffvutIiIiNH36dAUHB2vixIkKCQnRoUOHVKZMmSztt2zZoq5du2rs2LF6+umnNX/+fIWFhWnXrl1OaWNoaKhmz57teO7h4ZGlr1GjRqlPnz6O515eXnmuHwAAAAAA3Lnu3bs7PW/ZsqU8PDzUt29f/fXXXypXrpxBlf39UlJS1LlzZz388MPasmWLvL29Hfvat2+v/v37q3jx4ne1Jl9fXzVp0kSS9NhjjyklJUXDhw/Xrl271LBhQ0lSkSJFHG3yK88zpooXL67Y2Ngs23fv3q3y5cvnuYAJEyaoT58+6t27t2rVqqXp06eraNGimjVrVrbtJ02apNDQUA0ZMkQ1a9bU6NGjVb9+fU2ZMsWpnYeHh/z8/ByPEiVKZOnLy8vLqc1DDz2U5/oBAAAAAMDfo1SpUpKktLS0PB0XEBCgY8eOaerUqY67pObMmaPBgwerQoUKTrN+pMx1s00mk3777TfH8QMGDNCnn36q8uXLq2jRourQoUOWPCQ1NVXDhg1z3HpXs2bNbCfz3M7ixYt14sQJjR071imUuqZOnTqqUKGC4/kPP/ygoKAgeXp6qly5coqIiFBKSkqez5sX18Koo0ePFmi/eQ6munTponfffVdxcXEymUyy2Wz673//q7fffls9e/bMU19paWmKjo5W27ZtrxdkNqtt27aKiorK9pioqCin9pIUEhKSpf2GDRtUpkwZVa9eXf3799e5c+ey9DVu3DiVKlVK9erV06effiqr1Zqn+gEAAAAAQMHKyMhQSkqKdu3apVGjRumZZ55RQECAY//IkSNlMpkUExOTYx9LliyRn5+f43a0qKgotWvXTq+88opOnDihtWvXOrWfNWuWmjRpolq1ajn1sWTJEn355Zf68ssvtW3bNj377LNOx3Xu3Fn/+te/NHjwYC1fvlyhoaHq3r27Vq5cmafXvHHjRrm4uGTJO7KzbNkyderUSbVq1dLSpUv1zjvvaPr06VlmnBW0a4HUzTPXrFZrlkde5PlWvo8++kivv/66/P39lZGRoVq1aikjI0MvvPCC3n///Tz1FR8fr4yMDPn6+jpt9/X11cGDB7M9Ji4uLtv2cXFxjuehoaF69tlnValSJf3xxx8aNmyYnnrqKUVFRcnFxUWSNHDgQNWvX18lS5bUli1bNHToUMXGxmrChAnZnjc1NVWpqamO50lJSXl6rQAAAAAA4PYqVqyoU6dOScr8fH/zDCSz2SwXFxeZTKYc+6hXr548PDycbkeTJB8fHzVv3lyzZs1SSEiIJOncuXNatmxZljuxLl68qJUrV8pisUiS/P391aZNG61evVohISFav369li1bptWrV+vJJ5+UJD3xxBOKjY3ViBEj9NRTT+X6NZ86dUo+Pj4qUqTIbduOHDlSTZo0cYxLaGioihYtqldffVW//vqrateunevz3ordbpfValV6erq2bdumMWPGqHLlyqpfv76jzf79++Xm5pbl2BMnTujh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AAAAuFft3LlTmzdv1ubNm7V27Vqjy3ng5TmYunTpkt59910tWrRI586dy7I/IyOjQAoDAAAAAAAoaI0aNZLFYtE///lPtW3b1uhyHnh5DqbeeecdrV+/Xl9++aV69OihqVOn6tSpU/rXv/6lcePG/R01AgAAAAAAFIjcrGgUExPz9xcCSfkIpn788UfNnTtXLVu2VO/evfXYY4+patWqqlixoubNm6du3br9HXUCAAAAAACgkDHn9YDz58+rcuXKkjLXkzp//rwkqXnz5tq0aVPBVgcAAAAAAIBCK8/BVOXKlXX06FFJUo0aNbRo0SJJmTOpihcvXqDFAQAAAAAAoPDK8618vXv31t69e9WiRQu99957at++vaZMmaL09HRNmDDh76gRAAAAAAAUIlar1egSYIDs/txN9tys+nULx44dU3R0tKpWrao6dercSVf3laSkJFksFiUmJsrb29vocgAAAAAAuGvy+5k4IyNDZ86cydUC5CicTCaTypQpIxcXF0n5mDF1s4oVK6pixYp3XBgAAAAAACjcXFxcVKZMGdlsNqNLgUHMZrMjlJLyEUyNGjXqlvuHDx+e96oAAAAAAMADwcXFxSmYwIMtz8HUkiVLnJ6np6fr6NGjcnV1VZUqVQimAAAAAAAAkCt5DqZ2796dZVtSUpJ69eqljh07FkhRAAAAKFxW74/TtPVHdPh0sh7xLabXWlVVyKN+RpcFAAAMdseLn1/z66+/qn379oqJiSmI7u55LH4OAACQO6v3x+nVr6OdtplM0vTuDQinAOA+xWdiFBRzQXWUmJioxMTEguoOAAAAhcS09UeybLPbpWkb/jCgGgAAcC/J8618kydPdnput9sVGxurr7/+Wk899VSBFQYAAIDC4fDp5Gy3/3764l2uBAAA3GvyHEx9/vnnTs/NZrN8fHz04osvaujQoQVWGAAAAAqHR3yLae/JrDPrq/l6GVANAAC4l+Q5mDp69OjfUQcAAAAKqddaVVW/b6J148qmJpP0essqxhUFAADuCQW2xhQAAACQnZBH/TS9ewPV9S+uou4uqutfXP/q3kBPsvA5AAAPvDzPmOrYsaNMJlOu2v7www95LggAAACFT8ijfnwDHwAAyCLPM6YsFosiIyO1c+dOx7bo6GitW7dO3t7eslgsjgcAAAAAAACQkzzPmPL19VXnzp01ffp0ubi4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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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DExMTCCRSLQdDhEREREREdFbEQQBycnJcHBwgFTKMS9UfExMvQcxMTFwdHTUdhhEREREREREJSoqKgplypTRdhj0AWNi6j0wMTEBkP2BNTU11XI0RERERERERG8nKSkJjo6O4vddouJiYuo9yJm+Z2pqysQUERERERERfTS4XA29LU4EJSIiIiIiIiIirWBiioiIiIiIiIiItIKJKSIiIiIiIiIi0gquMUVERERERFRISqUSWVlZ2g6D6J3T1dWFTCbTdhj0CWBiioiIiIiI6A0EQUBsbCwSEhK0HQrRe2Nubg47OzsucE7vFBNTREREREREb5CTlLKxsYGhoSG/qNNHTRAEpKWl4dmzZwAAe3t7LUdEHzMmpoiIiIiIiAqgVCrFpJSlpaW2wyF6LwwMDAAAz549g42NDaf10TvDxc+JiIiIiIgKkLOmlKGhoZYjIXq/cq55rqtG7xITU0RERERERIXA6Xv0qeE1T+8DE1NERERERERERKQVTEwREREREREREZFWMDFFRERERET0kQoICIBEIsGgQYPylA0dOhQSiQQBAQHvPzAion8wMUVERERERPQRc3R0xLZt2/Dq1StxW3p6OrZs2QInJyctRkZExMQUERERERHRR61GjRpwdHTE7t27xW27d++Gk5MTqlevLm5TqVQIDAyEi4sLDAwMUK1aNezatUssVyqV6Nevn1hesWJF/Prrr2rHCggIQNu2bTF37lzY29vD0tISQ4cO5VPdiChfTEwRERERERF95Pr27Yu1a9eK79esWYOvvvpKrU5gYCA2bNiA5cuX49atWxg5ciR69uyJkydPAshOXJUpUwY7d+7E7du3MXnyZPzwww/YsWOHWjtBQUF4+PAhgoKCsH79eqxbtw7r1q175+dIRB8mHW0HQERERERE9KFKTk5GSkqK2jZ9fX1YWFhAoVAgLi4uzz729vYAgOfPn+cZSWRubg4DAwOkpqYiKSlJrUxPTw+WlpbFirNnz54YP348IiIiAABnz57Ftm3bcOLECQBARkYGZs2ahWPHjqFu3boAgHLlyuHMmTNYsWIFGjduDF1dXUydOlVs08XFBcHBwdixYwc6d+4sbrewsMDixYshk8ng7u6OVq1a4fjx4+jfv3+xYieijxsTU0RERERERMV0+fJlcURRjipVqqB9+/ZISkrCypUr8+wzZcoUAMDe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zJkzB+vWrcOQIUPEOs7Ozrh58ybu3r2L58+fIysr6636Yvfu3Vi3bh3u3buHadOm4eLFi+LxunXrBktLS3Ts2BFnzpxBWFgYTp48iZEjR+Lx48f5ttmlSxfY2tqiU6dOOHfuHB49eoTff/9dfErgDz/8gE2bNmHGjBm4ffs27ty5gx07dmDKlCmFjtvJyQkSiQQHDhxAXFwcUlJS3rjPZ599hjp16qBTp044evQowsPDERwcjMmTJ+Py5ctivbNnz8LFxQWurq6FjoeopDExRURERERE9JFyc3MTkw89evSAm5sbvvjiC7i5ueHEiRMwNjYW6+7fvx+1a9cWp5317NkTtWvXxqpVq/Jt39LSEl9++SW2bt0qbjt+/DgePnyIoKAglCtXDmXLlhVfuc2aNQt169ZFw4YNsW/fPmzevBl9+vQRy/v27Qs3NzfUq1cPpUuXxrlz596qLyZNmoQdO3agZs2a2LRpEzZu3AgPDw8A2YuAHz9+HI6OjujSpQuqVauGgQMHIj09vcARVHp6evjzzz9hbW2NL7/8Et7e3vj5558hk2WPcPPz88Pvv/+OY8eOoV69emjUqBEWLlwIJyenQsddunRpTJ48GRMnToSjo6Pa2lz5kUgk2Lt3Lxo0aIABAwbA09MTvXr1QmRkJGxsbMR627dvV1v7i0gbJMLbPBuUCiUpKQlmZma4efOm+EQFIiIiIiL6MCgUCiQlJcHJyanAhb4/FNOmTcOvv/6KAwcOwMfH563bu3HjBlq2bIk7d+6oJbr+S+RyOXbs2KFxra1P1e3bt+Hv74+bN2/m+6S/9PR0REZGwtTUNM86WPHx8fD09ERiYmKRpj8SvY4jpoiIiIiIiD4hkydPxvz58xESEvJWC2znqFKlCmbOnInw8PC3D47emydPnmD16tX5JqWI3hcufk5ERERERPSJyT1lriT07t27RNujd++zzz7TdghEAJiYIiIiIiIioo9cRkaGtkMgonxwKh8REREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERFZNSqURWVtZ7eymVSm2f8juxYcMG2NjY5FseHh4OuVyOa9euvdVxmjdvjtGjR79VG0RUsnS0HQAREREREdGHSKlUIiYmBpmZ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UglbW1u17ba2toiNjdW4T2xsbIH1c/4sqI4gCAgICMCgQYNQs2bNQsUaGBgIMzMz8eXo6Fio/YiIiIiIiIiIPiUfTGJKWxYtWoTk5GSMHz++0PuMHz8eiYmJ4isqKuodRkhERERERERE9GH6YBJTVlZWkMlkePr0qdr2p0+f5vuUADs7uwLr5/xZUJ2//voLwcHBkMvl0NHRQfny5QEANWvWRJ8+fTQeVy6Xw9TUVO1FRERERERERETqPpjElJ6eHry9vXH8+HFxm0qlwvHjx1G3bl2N+9StW1etPgAcPXpUrO/i4gI7Ozu1OklJSQgJCRHrLFy4ENeuXcPff/+Nv//+GwcOHACQ/YTAmTNnlug5EhERERERERF9SnS0HUBRjBo1Cn369EHNmjVRu3ZtLFiwAKmpqfjqq68AAL1790bp0qURGBgIABg+fDgaN26MefPmoVWrVti2bRsuXbqElStXAsh+5OuIESMwY8YMuLm5wcXFBZMmTYKDgwPatm0LAHByclKLwdjYGADg6uqKMmXKvKczJyIiIiIiIiL6+HxQiakuXbogLi4OkydPRmxsLLy8vHDo0CFx8fLIyEhIpf8OAqtXrx62bNmCiRMn4ocffoCbmxv27NkDT09Psc53332H1NRUDBgwAAkJCWjQoAEOHToEfX39935+RERERERERESfEokgCIK2g/jYJSUlwczMDImJiVxvioiIiIiIiD54/J5LJeWDWWOKiIiIiIiIiIg+LkxMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQREREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQREREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQREREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrBxBQREREREREREWkFE1NERERERERERKQVTEwREREREREREZFWMDFFRERERERERERawcQUERERERERERFpBRNTRERERERERESkFUxMERERERERERGRVjAxRUREREREREREWsHEFBERERERERERaQUTU0REREREREREpBVMTBERERERERERkVYwMUVERERERERERFrxwSWmlixZAmdnZ+jr68PHxwcXLlwosP7OnTvh7u4OfX19VKlSBQcOHFArFwQBkydPhr29PQwMDODr64v79++r1fniiy/g5OQEfX192Nvbo1evXoiJiSnxcyMiIiIiIiIi+pR8UImp7du3Y9SoUZgyZQquXLmCatWqwd/fH8+ePdNY/9y5c+jWrRv69euHq1evom3btmjbti1u3rwp1vnpp5+wcOFCLF++HCEhITAyMoK/vz/S09PFOk2bNsWOHTtw9+5d/Pbbb3j48CE6duz4zs+XiIiIiIiIiOhjJhEEQdB2EIXl4+ODWrVqYfHixQAAlUoFR0dHfPvttxg3blye+l26dEFqair2798vbqtTpw68vLywfPlyCIIABwcHjB49GmPGjAEAJCYmwtbWFuvWrUPXrl01xvHHH3+gbdu2yMjIgK6u7hvjTkpKgpmZGRITE2FqalqcUyciIiIiIiL6z+D3XCopH8yIqczMTFy+fBm+vr7iNqlUCl9fXwQHB2vcJzg4WK0+APj7+4v1w8LCEBsbq1bHzMwMPj4++bb58uVLbN68GfXq1StUUoqIiIiIiIiIiDT7YBJTz58/h1KphK2trdp2W1tbxMbGatwnNja2wPo5fxamze+//x5GRkawtLREZGQk9u7dm2+sGRkZSEpKUnsREREREREREZG6DyYxpW1jx47F1atXceTIEchkMvTu3Rv5zYIMDAyEmZmZ+HJ0dHzP0RIRERERERER/fd9MIkpKysryGQyPH36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6uOPP5YkTZkyRWlpaQoLCyvxeJTUk08+qRkzZuj111/XBx98UCb7JJgCAAAAAAB/ON9++62WL1+ut99+22W5m5tbsW9K5nA4ZLPZZLVatW3bNs2YMUMNGzZUy5Yt9dFHH+n48ePat2+fmjRpIinvDoX16tXT7NmzXV7XarVq7dq1qlq1qnPZLbfcIrPZ7LxUsCgBAQF6//33nc9tNpsaNGigTp066dChQy5XbTkcDq1atUpeXl6S8uZ7ev3112W322U2m7V48WKdOnVKBw4ccAZRLVq00O23335Tgilvb28999xzmjx5sl5++eUCUx6VRokv5Rs7dqzmzJlTYPncuXM1bty4624IAAAAAABUbidPnlR0dLS6deumsWPHuqxbsGBBgTshFmXevHny8PBQlSpV1K1bN9WtW1eff/65fHx89M033yg8PNwZSkl5d2q8++679e2337rsp2vXri6hVEl9/PHHatGihXx9feXh4aFOnTpJkg4dOuRS16VLF2coJUlNmzaV1Wp13sFx27ZtCg8PdwmhGjVqpObNm1/19fMDuvzHlXf5LImnnnpKFotFb7zxRqn3cbkSB1Off/65/vSnPxVY3rFjR3322Wdl0hQAAAAAAKicUlJSdO+996pmzZr6/PPPr+vueQMGDNCOHTu0e/dunTt3Ttu3b1dERIQk6fz5886bqV0uMDBQycnJBZaV1sqVK/XYY4+pbdu2+vTTT/X9999r5cqVkvIuzbucv7+/y3NPT0+XuoSEBNWuXbvQnq9my5Yt8vDwcD569OhR2rejKlWqaMKECVqwYIESEhJKvZ98Jb6U79y5c7JYLAWW+/n5KSkp6bobAgAAAAAAldPFixd1//33KzU1VbGxsYXmDyUREBBQ5N33atSooYMHDxZYfvr0adWoUcNlmclkKnUPK1asUEREhMucTFu2bCnVvurUqaMffvihwPLTp08XOceVJLVq1Uo7duxwPr98zq7SePrppzVr1iy9+eab17UfqRRnTDVq1Ejr1q0rsHzt2rVq2LDhdTcEAAAAAAAqH5vNpgEDBmj//v1at26d6tate0Nfr1OnTvrpp59cwqnz58/r66+/dl5qdzWenp7Kzs6+Zt3FixedZz7lW7JkSckbltS2bVvt3btXhw8fdi47fPiw9uzZc9XtqlWrptatWzsft99+e6le//L9jRs3Th988IHzMsPSKnEwNWHCBE2aNElTp07Vli1btGXLFk2ZMkUvvPCCxo8ff13NAAAAAACAymnUqFFavXq1/vrXvyotLU3ff/+983F5ADRs2DC5u1//vdyGDh2q+vXrq1evXlq+fLm++OIL3XPPPXJ3dy/WHNpNmjSRzWbTO++8ox07dhR69pUk3X333dq+fbteffVVff3115owYYJiYmJK1fOQIUMUFBSk+++/XytWrNCKFSvUu3dvBQUFlWp/12Ps2LHy9PRUbGzsde2nxH+TTzzxhLKzszVjxgy9+uqrkqTQ0FC9//77euyxx66rGQAAAFQeX+1L1LxNh3XodIZuC/TVqG6NFHXHzf/FGgDwx7B+/XpJ0sSJEwusO3r0qEJDQyVJubm51zV5d75q1app8+bNmjBhgkaMGKHc3Fz96U9/0tatWxUSEnLN7Xv37q1Ro0Zp5syZOnPmjDp37qzNmzcXqPvLX/6iI0eO6N1339WsWbMUFRWlpUuXXvNufoXx8fHR+vXrNXLkSA0ePFh169bVyy+/rC+//FIpKSkl3t/1sFgsGjNmjF577bXr2o/J4XA4Srvx2bNn5ePjI19f3+tqoqJLS0uTxWJRamrqVa/5BAAAqCy+2peov3wc57LMZJLmD25FOAUA5UBpvudarVadPXtWAQEB8vDwuMEd4o+osM9A6ae2V94kYoRSAAAAKKl5mw4XWOZwSPM2/2pANwAAwCjFupSvZcuWiomJUfXq1dWiRYurzkZf2OzwAAAAwOUOnc4odPkvp9NvcicAAMBIxQqmHnzwQXl5eUmS+vTpcyP7AQAAQCVwW6Cv9pxMLbA8LPD6bl8NAADKl2IFU1OnTi30zwAAAEBpjOrWSE/9O06Xz3ZqMklPd73VuKYAAMBNV+r7K+7cuVP79++XJDVt2lStWrUqs6YAAABQsUXdEaT5g1tp3uZf9cvpdIUFVtPTXW/VPUx8DgBApVLiyc9Pnjypu+66S23bttUzzzyjZ555Rm3atFGnTp108uTJG9EjAAAAKqCoO4L05dN/0s/Te+rLp/9EKAUAldyaNWvUpUsXBQQEyMvLSw0bNtSECROUmlrw0u/imD17ttasWVPGXZaNIUOGKDw8vMDyY8eOacSIEapfv768vLxUo0YN9ezZU5999tlN7S80NFQmk0kmk0nu7u5q2LChRo4cqaSkJGfNkCFDnDVXPpYvX17s1yrxGVNPPvmkrFar9u/fr9tvv12SdPDgQQ0dOlRPPvmk1q1bV9JdAgAAAACASi45OVnt2rXT2LFjVbNmTe3du1fTpk3T3r17tX79+hLvb/bs2br//vt133333YBuy97333+vnj17KiAgQC+88IKaNm2qtLQ0rVmzRoMGDVJYWJiaN29+0/rp37+/Jk6cKKvVqu+//17Tpk3TTz/9pK1bt8pszjvPqWHDhlqyZEmBbcPCwor9OiUOprZs2aLvvvvOGUpJ0u233653331Xd911V0l3BwAAAAAAoMGDB7s879q1q7y8vDRixAidOnVKwcHBBnV242VlZWnAgAG65ZZb9N1338nPz8+5rnfv3ho5cqT8/f1vak+BgYFq3769JOmuu+5SVlaWpkyZoh9++EGtW7eWJPn4+DhrSqvEl/KFhITIarUWWJ6bm1uhPyQAAAAAAODmqlmzpiQpJyenRNuFhobq+PHjeu+995yXly1evFgTJ05UvXr1ZLfbXerXrl0rk8mkn3/+2bn96NGjNWvWLNWtW1dVqlTRgw8+qISEBJftsrOz9eKLLzovvWvSpImWLl1a4ve5YsUKnThxQjNnznQJpfI1a9ZM9erVcz7/z3/+o4iICHl7eys4OFgTJkxQVlZWiV+3JPLDqKNHj5bpfkscTM2aNUtjxozRzp07nct27typZ555Rm+99VaZNgcAAAAAACqX3NxcZWVl6YcfftD06dP1wAMPKDQ01Ll+2rRpMplMOnbsWJH7WLlypYKCgtS/f3/FxsYqNjZWvXr10pNPPqkTJ05ow4YNLvULFy5U+/bt1bRpU5d9rFy5Uu+//77ef/99bdu2TQ899JDLdgMGDNAHH3ygiRMnavXq1erZs6cGDx6stWvXlug9b9myRW5uboqMjLxm7apVq9S/f381bdpUX3zxhSZNmqT58+cXOOOsrOUHUleelGSz2Qo8SqJYl/JVr15dJpPJ+TwzM1Pt2rWTu7u7swl3d3c98cQT6tOnT4kaAAAAAAAAyFe/fn399ttvkqSePXsWOAPJbDbLzc3NJae4UosWLeTl5eVyOZokBQQEqFOnTlq4cKGioqIkSefOndOqVas0d+5cl32kp6dr7dq1slgskvKuIOvRo4e++uorRUVFadOmTVq1apW++uor3XPPPZKku+++WwkJCZo6daruvffe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IHXv3l1Lly5V+/bttXTpUo0cObLE++ndu7e8vLy0cuVKeXp6ymq1qn///s71a9euVdOmTRUSElKqPvfv368GDRpIyrscLyoqSlFRUVqyZIkCAgIUHx+vqKgo5eTkXLPP+vXr66OPPlJwcLDsdrvCw8Od27Vs2VJHjx7V2rVr9fXXX2vAgAGKjIzUZ599poyMDNWpU0ebN28usN/ruVMhAABAeUAwBQBAJWGz2fSvf/1Lb7/9tu655x6XdX369NGyZcv01FNPqVmzZoqJiXGZx+lynp6eys3NvebrDRo0SJMmTdIjjzyiI0eOaODAgUXWFrVPd3d3Pf7441q0aJE8PT01cOBAl+Dsei7jO3DggNatW6fJkyc7n587d05vvPGGM+jauXNngT4lufR67tw5HTx4UB999JHuuusuSXmX513Jz89P0dHRio6OVv/+/dWzZ08lJyerZcuWSkxMlLu7u8u8U1e+bnHGHAAAoLzhUj4AACqJ1atX6/z58xo2bJjCw8NdHv369XNezjd16lQtW7ZMU6dO1f79+/XTTz+53LkuNDRUW7du1W+//aakpKQiX++hhx5Senq6Ro4cqW7durmcpXWl0NBQZWRkKCYmRklJSbpw4YJz3ZNPPqmNGzdq3bp1Lpfx2Ww2rV27tliX8dlsNiUmJurUqVP66aef9O6776pLly6KiIjQc889J0mqV6+ePD099e677+rIkSNatWqVc46sfPXr15fJZNLq1at19uxZZWRkqHr16qpZs6Y+/PBDHT58WBs3btSECRNctvv73/+uZcuW6cCBAzp06JBWrFihoKAg+fv7KzIyUh06dFCfPn20fv16HTt2TN99953++te/OoOx0NBQHT16VLt371ZSUpKys7Ov+Z4BAADKA4IpAAAqiQULFigyMlIWi6XAun79+mnnzp368ccf1bVrV61YsUKrVq1SRESEunfvru3btztrp0+frmPHjunWW29VQEBAka9XrVo19e7dW3v27NGgQYOu2lvHjh311FNPKTo6WgEBAXrzzTed68LCwtSxY0c1btxY7dq1cy7fsmWLfH191bJly2u+93379qlOnTqqV6+eunbtqk8//VSTJ0/WN998I19fX0lSQECAFi9erBUrVqhp06Z644039NZbb7nsp27dunrllVf0wgsvKDAwUKNHj5bZbNby5csVFxen8PBwjR8/XrNmzSowFm+++aZat26tNm3a6NixY1qzZo3MZrNMJpPWrFmjzp07a+jQobrttts0cOBAHT9+XIGBgZLy/n569uypbt26KSAgQMuWLbvmewYAACgPTI7L7w8NAADwB+NwOBQWFqZRo0a5nIk0duxY2Ww2zZs3z8DuAAAAcD2YYwoAAPxhnT17VsuXL1diYmKBOa/Cw8PVoUMHgzoDAABAWeCMKQAA8IdlMplUq1YtvfPOO3r00UeNbgcAAABljDOmAADAHxb//wwAAKBiY/JzAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGIJgCgAAAAAAAIYgmAIAAAAAAIAhCKYAAAAAAABgCIIpAAAAAAAAGOL/Ayz+cHJYRCMjAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "lvl1_plot(cement_sector_compare, 'cement')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3.2. Level 2.1 stacked absolute bar plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*TBD: Color palette is not so nice (too alike colors are misleading), Y-axis units not showing*" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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Y23dutXaw3Hbtm3atGmTXnrpJRUtWlTHjh1TdHS06tatq3379t1XT97g4GDly5dP69atU4sWLSRJ69evl4ODg37//XfFxcXJy8tLaWlp2rRpk00QNnPmTOXNm1cDBgxQ3rx59fPPP2v48OGKi4vT+PHjbY5z6dIlPf/883rppZfUqVMnFSpUyLru79xHWfnPf/4jBwcHDRo0SLGxsRo3bpw6duyoLVu2WNtER0fr9ddfV3h4uPr3769jx46pVatWyp8/v4oWLZqtzy8712vv3r0KDw+Xl5eX3n77beXJk0dTpkxR3bp19csvvygsLEy1a9dW37599dFHH2no0KEqX768JFn/tPf3JTo6WhUrVlSLFi3k5OSk77//Xn369FFaWppee+21bH1Wt9u0aVOGX0xITEzUzz//rLp162b785du9Tr+9ttvlZSUJBcXFyUnJ2vbtm169dVXlZiYqLfffluGYchisejKlSvat2+fevfufc/9HjlyRNKtUPF+7dq1S2XKlLEJgyVZA8/ffvtNgYGB2rNnj27evKmqVavatHN2dlaVKlW0a9euDPt++umnM527N7u++uorxcfHq1evXrJYLBo3bpxeeOEFHT169L56KV+8eFHPPfecLl++rF9++cUa3P74449q3769KlWqpKioKF25ckXdunVTQEDAPfe5YcMGXb58Wf369cswhHlmvv/+e7m6umbouZ6uRIkSqlWrln7++Wddv35dbm5uWe7r7Nmz8vHxuecx06WmpurixYsZlru5ucnDw0OStGfPHjVs2FC+vr4aOXKkbt68qREjRtg8/wAAAAAAyBYDAAAgB3Xp0sVwcHAwtm3blmFdWlqaYRiGMXr0aMPDw8M4dOiQzfp33nnHcHR0NE6cOGEYhmH89ddfhiTD19fXuHr1qrXdkCFDDEnGk08+aaSkpFiXd+jQwXB2djZu3LhhGIZhxMfHG/ny5TN69Ohhc5yzZ88a3t7eNssjIiIMScZ7771n0/app54yQkJCrO8vXLhgSDJGjBhxPx9LtnzwwQeGJGPRokXWZdevXzfKlStnSDLWrFljU2+xYsWs7xctWmRIMv7973/b7LNNmzaGxWIxDh8+bF0myZBkbN++3brs+PHjhqurq9G6dWvrssTExAw1bt682ZBk/O9//7MuW7NmTYb6MtO0aVMjNDTU+v6FF14wXnjh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AAAAgMeTxfJwX9lUpEgRvfvuu2rcuHGGdQ4ODmrcuLGmTp2a6bbdu3dXoUKFdP78eY0ZM0ZdunTR+fPnJUnOzs5q27atoqKiMt32pZdeUp06dXT58mV17dpVbdq0UUpKSrbrzin2OCYAPG7uKziWpHbt2mnRokXau3ev9u3bp0WLFqldu3YPozYAAAAA+L/27jtKq+puH/c9M8DQBxEEUXQsKChRVMSGigYVX2NERbFFIcaIBhtqbIn1J5hoiLEnvoiJUVFsMfliJWo0IiD2hjFKCaGIShNByvz+yHJeJ4AUBwZ4rmutsxbPPvvs/TmPZLMy9+xzAACAanDCCSfkuOOOS1lZ2RLnWrVqlZ/+9Kfp1KnTEudmzpyZp556KgMGDEijRo1y3HHHZZtttsmQIUOSJO3bt89ZZ52Vdu3aLXHtG2+8kQ8++CD9+/dP/fr189Of/jQVFRV54oknqu2+DjzwwDRt2jRlZWU5+OCDKwPtsWPHplatWrn22muz0UYb5aijjsqsWbNy2GGHpVGjRtluu+3yj3/84xvHvvrqq7P55punQYMG2WGHHTJ16tQkyRNPPJF27dqlUaNG2XXXXfPqq69WXnPRRRelVatWadiwYTp06JCRI0dW270CrG4rHRwDAAAAAACF4e233079+vWz5ZZbVrZtt912efvtt5d77euvv57y8vLUq1evsm3bbbfNm2++mST57W9/m2222eZb1Xf44Ydn3Lhx+fDDDzNnzpxcdNFFlecWLVqU1157LePGjcvdd9+dCy64IB9//HEmTJiQe+65J/fff/8yx73tttty22235cEHH8ysWbNy6623prS0NFOnTs1RRx2Viy66KNOnT8/BBx+c7t27V+5obteuXV5++eV88skn6dKlS0466aRvdX8Aa5LgGAAAAAAAWKrZs2enYcOGVdoaN26cOXPmLPfaOXPmLHFto0aNMnv27CTJqaeemvfff/8bxzj88MPTqFGjyuOmm26qcv60005L48aNs+GGG+acc85ZYofvV7udGzRokEcffTQ/+9nPssEGG6RDhw7f+K7ku+66K+ecc046duyYkpKS7LXXXmnSpEkeeuihbLvttjnxxBNTWlqayy67LF988UX+9re/JUlOPPHEtGrVKqWlpenfv3/ef//9zJw5c7nfFcDaQHAMAAAAAAAsVaNGjZYIiWfNmrVEILw0DRs2XOLa2bNnp1GjRis8/8MPP5zZs2dXHn379q08t2DBgpx88smVj4b+wQ9+kM8++6zyfHFxcTbffPPKz9OnT095eXnl59atWy9z3smTJ2errbZaov1f//pXNt1008rPJSUl2XjjjfOvf/0rSTJw4MBsvfXWadSoUVq0aJGKiorKR1wDrO0ExwAAAAAAwFJtv/32mTt3bj766KPKtnfffTfbb7/9cq/dcccdM378+HzxxReVbWPHjs13vvOdaqntt7/9bf7+97/n73//e+bMmZO77rqryvmioqIqn5s1a5Zx48ZVfp44ceIyx27VqlU+/PDDJdo33XTTypA4SRYvXpzJkydn0003zdixY3PJJZdk8ODBmTFjRqZMmZKioqJUVFSs4h0CrFmCYwAAAAAAWM8tWLAgc+fOzaJFi7Jw4cLMnTs3CxcurDw/d+7cyoD3638uKytL165dc+GFF+bzzz/PkCFDMnbs2BxzzDFJ/hOczp07N19++WUqKioyd+7czJs3L0myww47ZKuttsrPf/7zfPHFF/nVr36VoqKiHHTQQdVyT7Nnz05paWmaNWuWyZMn51e/+tU39j/00EPTv3//fPbZZ3njjTe+8R3HP/jBD3L99dfnlVdeyeLFi/P3v/89M2bMSPfu3fPee+/lnnvuyYIFC3LllVembt266dy5c2bPnp3i4uK0aNEiCxYsyHnnnVct9wmwptRa2QsOP/zwJX5LJ/nPb+7UrVs3W2+9dY477rhsu+221VIgAAAAAADw7Vx44YUZOHBg5ecbbrghN9xwQ84444wkSYMGDSrPNWjQIK1atcqkSZOSJIMGDcqxxx6bDTfcMC1btszvf//7bLTRRkmSf/zjH2nbtm2Va3fdddeMGjUqSXLvvffmBz/4QW666aZsscUWGTp0aGrXrp0kue2223Ldddflgw8+WKV76tOnTx577LG0bNkyLVq0yIknnpjbb799mf1/8Ytf5IQTTshmm22W1q1b56ijjsrLL7+81L6nnnpqpk2blu9///v57LPPsvXWW+epp57KxhtvnPvuuy/9+vXLqaeemm233TYPPfRQSktL07Fjx5xwwgnZZZddUq9evZx33nmV9wqwLiiqWMlnJPTq1SuPPPJImjRpkl122SVJ8sorr2TGjBk58MAD8/rrr2fcuHEZPnx49tprr9VS9Lcxa9aslJWVZebMmWncuHFNl7NeO37J3y+AddLdniTDesK6zPrE2sz6wtrM+sK6zPrCusz6wrq8+i3r58wzZ87M+PHjs/XWW6d+/fo1WCEA/MfcuXPzwQcfZPPNN09ZWdk39l3pHcctW7bMcccdl5tuuinFxf950vXixYtz1llnpVGjRhkyZEj69OmTCy64IC+88MKq3QEAAAAAAAAAa8xKv+N40KBBOfvssytD4yQpLi7OGWeckd/97ncpKipK375989Zbb1VroQAAAAAAAACsHisdHC9cuDDvvffeEu3vvfdeFi1alCSpW7fuUt+DDAAAAAAAAMDaZ6UfVf2DH/wgJ598ci6++OLsuuuuSZLRo0enf//+OfHEE5Mkzz33XLbffvvqrRQAAAAAAACA1WKlg+Nf//rXadGiRX75y19m6tSpSZIWLVrknHPOyQUXXJAkOfDAA9OtW7fqrRQAAAAAAACA1WKlg+OSkpJccsklueSSSzJr1qwkSePGjav02WyzzaqnOgAAAAAAAABWu5V+x/G9995b+efGjRtXCY3PP//86qkKAAAAAAAAgDVmpYPj0047LY899tgS7eecc07++Mc/VktRAAAAAAAAAKw5Kx0c33333Tn22GPzwgsvVLadccYZuf/++/PMM89Ua3EAAAAAAMCaM2zYMK+jBChQKx0cH3LIIbnlllvy/e9/P2PGjMnpp5+ehx56KM8880zatm27OmoEAAAAAABWg06dOuXWW2+t6TIAWAvUWpWLjjvuuMyYMSN77bVXmjdvnueeey5bb711ddcGAAAAAADrtBdTtFrH3zMVq3X8VbVgwYLUrl27pssAYCWsUHDcr1+/pbY3b948O++8c2655ZbKtoEDB1ZPZQAAAAAAQLUYM2ZMTj311IwdOzabbbZZrr/++jz55JMZM2ZMXn/99Zx77rk566yzsvfeeydJzj///Pzud79Lw4YNc+ONN+aII45IkkybNi0/+tGP8sILL6R+/fq58MIL07dv3yT/2b2855575umnn87777+f2bNnp7S0tMbuGYCVs0LB8auvvrrU9q233jqzZs2qPF9UtHp/cwoAAAAAAFg58+bNy2GHHZbTTjst5513Xv74xz+mR48e+eCDD/Lcc8+ld+/eOe2005L85x3H//73v1OnTp1Mnz49N9xwQ/r27VsZHB999NHZdtttM2nSpIwd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PHhwzj///PTp06fKztqTTz55ue/2TZJbbrkl5eXl2WuvvXLllVdm+PDhGT58ePr375927dpl1KhRq/N2luuLL77ISy+9tMQxadKkaptjxowZleM+9dRTOeecczJs2LD06tUr9erV+8ZrTzrppGyxxRb5xS9+UW31ANQUj6oGAAAAAIB1xAYbbJDhw4fnjDPOSPfu3dOoUaP86Ec/ytVXX12l36JFi7Jo0aLljtesWbOMGDEiAwcOzH333ZcBAwakuLg422+/fS644IKceuqpq+tWVsiHH36YPfbYY4n2q666Kj/72c+qZY6///3vlXPUq1cvW265Za699tqceeaZy722du3aufjii3PKKafk2WefTZcuXaqlJoCaUFRRUVFR00WsSbNmzUpZWVlmzpz5jY+Y4Ns73uscWE/cXVCrJOsz6zLrE2sz6wtrM+sL6zLrC+sy6wvr8uq3On/OvGDBgnz88cdp3rx5ateuXa1js27wdwCoKR5VDQAAAAAAAFDgBMcAAAAAAAAABU5wDAAAAAAAAFDgBMcAAAAAAAAABU5wDAAAAAAA64gPPvggffr0SYcOHVKrVq20b9/+W485Z86cXHHFFWnfvn3q16+fBg0apFOnThk4cGDmzZuXJHn22WdTVFRUeTRq1Cg77bRT7rjjjlRUVCx13AcffDBFRUV54YUXlnr+008/TZ06dXLppZcus7by8vLKOWvVqpXy8vKcdNJJmThx4hJ9X3rppRx88MFp2bJl6tWrl/Ly8vTo0SMjR45chW9lSf/9HdSqVSubb755TjvttHzyySdV+nbp0qWyX3FxcTbddNMcccQReeedd6qlFoDVoVZNFwAAAAAAAKyYt99+O//v//2/7Lbbblm8eHEWL178rcabPn169ttvv0ycODFnn312OnfunCQZMWJErrnmmpSUlOSss86q7D948OC0bds2M2bMyKBBg3LyySdnwYIFOfXUU5cY+5BDDknjxo1z7733Vo77dQ888EAWLFiQ448//htr7NGjR84999wsWLAgo0ePzmWXXZZXX301Y8aMSe3atZMkf//739OlS5d069Ytt912Wxo3bpx//OMfeeSRRzJq1Kjstttu3+ZrquKr72DhwoV5++23c8kll+Sjjz7K448/XqXfXnvtleuuuy6LFi3KO++8k5/97Gfp2rVr3n777WywwQbVVg9AdREcAwAAAADAOuLQQw/NYYcdliTp1atXXn755W813umnn54PP/wwI0eOrLJ7uWvXrvnJT36S9957r0r/9u3bp2PHjkmSAw44IO3atcuNN9641OC4bt26OfLIIzN06ND85je/Sa1aVSOJe+65JzvvvHO23Xbbb6yxRYsW2X333ZMke++9d+bNm5dLLrkkL7/8cvbYY48kya233pry8vI88sgjKSkpSZLsv//+OfXUU791uP7fvv4ddO7cOfPmzcs555yTOXPmpGHDhpX9mjRpUln3XnvtlQYNGuT444/P448/nmOPPbZaawKoDh5VDQAAAAAA64ji4ur7sf748ePzwAMPpE+fPkt95HXTpk2z5557LvP6kpKS7LTTTvnoo4+W2ee4447Lxx9/nKeffrpK+6RJk/L8888vd7fx0uy0005JkgkTJlS2ffbZZ9loo40qQ+Ovq87vbGkaNWqUioqKLFq06Bv7La1ugLWJ4BgAAAAAANYzvXr1SlFR0Tf2ef7551NRUZFu3bqt8jwfffRRWrVqtczz+++/f1q2bJl77rmnSvuQIUOSJMccc8xKzzl+/PgkyRZbbFHZtssuu+TFF1/Mz3/+8yV2SVe3RYsWZeHChZk3b17GjBmT6667Ll27dk1ZWdlK1w2wNhEcAwAAAADAeqakpGSpu2+/btKkSUmSzTbbbIXH/So0/eSTT9K/f/+MHj06Rx111DL7FxcX55hjjskjjzySefPmVbbfe++96dKlyzeGzl+pqKjIwoUL88UXX+T5559P//798z//8z/p1KlTZZ/zzz8/BxxwQP6//+//S7t27bLhhhvm+OOPz/PPP7/C97aidt9999SuXTv16tVLx44dU7t27fzhD39YZt1ffvllXn311VxwwQXZaaedKh81DrC2ERwDAAAAAMB6ZtCgQVm4cOEK9V3ezuSv+yo0bdasWS677LL06dMnl1566Tdec9xxx2X27Nn5y1/+kiT5xz/+kTFjxqzwY6pvueWW1K5dO/Xr188+++yTevXq5d57763Sp1GjRnnyySczcuTIXHrppenQoUOGDh2afffdN//7v/+7zLG/Cne/Olbkfch/+MMfMnr06IwcOTL33ntvvvzyy3Tr1i1z5syp0m/YsGGpXbt2SktLs/POO2fKlCl55JFHUlpaukL3DbCmCY4BAAAAAKAAbbLJJklW7p27X4WmY8eOzeeff55bb701devW/cZrdt1117Rp06bycdX33HNPSktLc+SRR67QnEcffXRGjx6d559/PhdddFHef//9nHrqqUvt26lTp1xxxRUZPnx4xo4dm0033TQXXHDBMsf+/e9/n9q1a1ceP/zhD5dbT7t27dKxY8d06tQpxxxzTO6+++688cYbufPOO6v069y5c0aPHp0XX3wx1157bWbMmJFjjz12hcJpgJpQq6YLAAAAAAAA1rx99tknRUVFeeKJJ9K1a9cVuuar0HRlHXfccbnmmmsyc+bM3HvvvTnkkEOW+07grzRv3rxyzs6dO2fOnDm58cYbc/bZZ2e33XZb5nVbbLFFjjrqqAwcODBTp05NixYtluhz6KGHZvTo0ZWfmzVrtpJ39p/vJEnefvvtKu1lZWWVde+xxx4pLi7Oueeem6FDh6Znz54rPQ/A6mbHMQAAAAAAFKDNNtssPXr0yK233pp33nlnifMzZszIiBEjqmWu4447LvPnz8/PfvazjB07doUfU700l19+eRo3bpz+/ftXtk2dOnWpfd9///2UlpamSZMmSz2/4YYbpmPHjpVHeXn5Stfz1ltvJVl+6HzGGWdkiy22yIABA1Z6DoA1wY5jAAAAAABYR8ydOzfDhg1LkowfPz6zZs3KAw88kCTZd99907x58yTJySefnN///vfLfc/xLbfcki5dumSvvfbKOeeck7322itJMnLkyNx444258MILs8cee3zrurfZZpvssssuufnmm1NWVpZDDjlklcdq2rRpzjjjjPTv3z/vvvtu2rVrl1NOOSULFy7MkUcemTZt2lR+L3/5y19y9tlnV+t7hd96663K9yF/+OGHueqqq1K/fv2ceOKJ33hd7dq1c/HFF+eUU07J448/nm7dulVbTQDVQXAMAAAAAADriGnTpuWoo46q0vbV52eeeSZdunRJkixatCiLFi1a7njNmjXLiBEjMnDgwNx3330ZMGBAiouLs/322+eCCy5Y5ruEV8Xxxx+fMWPG5Mgjj/zWQW6/fv1y44035he/+EXuvPPO/OQnP8kf/vCH9O/fP5MnT079+vWz1VZbZdCgQTnppJOq6Q7+o3fv3kmSoqKitGjRIp06dcrQoUPTpk2b5V570kknpX///rnmmmsEx8Bap6iioqKipotYk2bNmpWysrLMnDkzjRs3ruly1mvHF9V0BVA97i6oVZL1mXWZ9Ym1mfWFtZn1hXWZ9YV1mfWFdXn1W50/Z16wYEE+/vjjNG/ePLVr167WsVk3+DsA1BTvOAYAAAAAAAAocIJjAAAAAAAAgAInOAYAAAAAAAAocIJjAAAAAAAAgAInOAYAAAAAgHXE0KFDc9hhh2XTTTdNgwYN0qFDh9xxxx2pqKhYpfHKy8tTVFSUoqKi1KpVK1tuuWVOO+20TJ8+vVrqffbZZ9O/f/8l2i+//PI0bNiwWuZYUd27d0+XLl2qZaxx48alqKgoDzzwQGVbr169UlRUlBNPPHG1zg2wugiOAQAAAABgHTFw4MDUr18/v/rVr/LnP/85Bx98cE455ZRceeWVqzxmjx49MmLEiDzzzDM57bTT8oc//CHdu3fP4sWLv3W9ywqO12f33HNP/vnPf9Z0GQArrVZNFwAAAAAAAKyYP//5z2nWrFnl5/333z+ffPJJBg4cmJ///OcpLl75/WItWrTI7rvvniTZe++9M2/evFx66aV55ZVX0rFjx1Wqc/78+aldu/YqXbsua9OmTb744ov0798/gwYNqulyAFaKHccAAAAAALCO+Hpo/JWddtops2bNyueff14tc3wVFn/00UdJkvHjx6dHjx4pKytLgwYNctBBB+XNN9+sck15eXn69u2bX/7yl9l8881Tr169nHnmmbniiivy+eefVz4Oe1mPa/7888/Tt2/fbLvttqlfv37Ky8vTp0+fzJw5c6nz3Hzzzdl8881TVlaW7t275+OPP67S7913382+++6bunXrZquttsrvf//7avlulqdOnTq54IILctddd2X8+PFrZE6A6mLHMQAAAAAArMNeeOGFbLLJJmnUqFFlW69evfL73/9+ld59/FVg3KpVq8yePTtdunRJcXFxbrvtttStWzdXX3119tlnn7zxxhtp3bp15XUPPvhg2rRpk9/85jcpKSlJhw4dMm/evNxzzz3561//miRp3LjxUuecO3duFi1alKuvvjrNmzfPxIkTc/XVV6d79+555plnqvR99NFH849//CM333xzpk+fnnPOOSdnnHFGhgwZkiSZN29eDjzwwDRo0CB33XVXkuTSSy/NrFmz0qZNm5X+PlbWj370o1x99dXp379/fvvb3672+QCqi+AYAAAAAADWUS+88EKGDBmSX/3qV1XaS0pKUlJSskJjVFRUZOHChVmwYEFGjhyZq6++OltuuWV23nnn3H777Rk/fnzefvvttGvXLkmy7777ZrPNNsv1119fZd4FCxbkscceS4MGDSrbNt100xQXF1c+CntZmjdvnltvvbXy88KFC7PFFlukc+fOef/997PNNttUqffRRx9NaWlpkmTcuHHp379/Fi9enOLi4tx5553597//nffee68yKN5pp52y7bbbrpHguG7dujn//PNz0UUX5ec//3k23XTT1T4nQHXwqGoAAAAAAFgH/etf/0rPnj2z33775cwzz6xybtCgQVm4cOEKjXPLLbekdu3aqV+/fvbbb79ssskmefDBB1OvXr08//zzad++fWVonCRNmzbNAQcckBdeeKHKOF26dKkSGq+su+66KzvttFMaNmyY2rVrp3PnzkmS999/v0q/fffdtzI0TpLtttsuCxYsyLRp05IkI0eOTPv27auExFtvvXV23HHHb5z/qwD9q2PRokWrfC99+vRJWVlZrrnmmlUeA2BNExwDAAAAAMA6ZsaMGTn44IOz4YYb5sEHH0xx8ar/uP/oo4/O6NGj89prr+WTTz7JqFGj0qFDhyTJZ599lhYtWixxTYsWLfLpp58u0baqHn744Zx44onp1KlT7r///rz00kt5+OGHk/zn0dNf16RJkyqf69SpU6Xf5MmTs9FGGy215m/y3HPPpXbt2pXHd7/73VW9ndSvXz/9+vXLoEGDMnny5FUeB2BN8qhqAAAAAABYh3zxxRf53ve+l5kzZ2bEiBEpKyv7VuM1b948HTt2XOq5pk2bZuzYsUu0T506NU2bNq3SVlRUtMo1DB06NB06dKjyTuDnnntulcbaeOON88orryzRPnXq1GW+YzlJdtlll4wePbry89ffGb0qfvKTn+Taa6/NL3/5y281DsCaYscxAAAAAACsIxYuXJijjz467777bh5//PFssskmq3W+zp07580336wSHn/22Wd5+umnKx8l/U3q1KmT+fPnL7ffF198Ublz+Ct33333yhecpFOnTnnrrbfywQcfVLZ98MEHef3117/xukaNGqVjx46Vx7bbbrtK8399vLPPPju//e1vKx+jDbA2ExwDAAAAAMA64vTTT89f/vKXXHLJJZk1a1ZeeumlyuPrAe3JJ5+cWrW+/UNHe/func033zyHHHJIhgwZkkceeSQHHnhgatWqlbPPPnu517dr1y4LFy7Mb37zm4wePXqpu5eT5IADDsioUaNy1VVX5emnn06/fv0yfPjwVaq5V69eadmyZb73ve9l6NChGTp0aA499NC0bNlylcb7Ns4888zUqVMnI0aMWONzA6ysGg+Ob7755pSXl6du3brZbbfdMmrUqGX2ffvtt3PkkUemvLw8RUVFuf7669dcoQAAAAAAUMOefPLJJMm5556bPfbYo8rx9XfpLlq0KIsWLfrW8zVq1CjPPvtsdtxxx/z4xz/O8ccfnw022CB/+9vf0rp16+Vef+ihh+b000/PgAEDsttuu+XUU09dar9TTz015557bm688cYcccQRmThxYu65555VqrlevXp58skns9FGG+WEE07IBRdckJ/+9KfZddddV2m8b6OsrCxnnHHGGp8XYFUUVVRUVNTU5Pfdd19OPPHE3Hbbbdltt91y/fXXZ+jQoRk7duxSX1w/evTo3H///dlll11yzjnn5IILLlih32j6ulmzZqWsrCwzZ878xncZ8O0dv+qvs4C1yt01tkpC9bIusz6xNrO+sDazvrAus76wLrO+sC6vfqvz58wLFizIxx9/nObNm6d27drVOjbrBn8HgJpSozuOBw4cmFNOOSW9e/fOdtttl9tuuy3169fPHXfcsdT+u+66a6699tocc8wxKS0tXcPVAgAAAAAAAKyfaiw4/vLLLzNmzJh07dr1/4opLk7Xrl2r9Vn/8+fPz6xZs6ocAAAAAAAAAPyfGguOp0+fnkWLFqVFixZV2lu0aJEpU6ZU2zwDBgxIWVlZ5bEi71wAAAAAAAAAKCQ1+qjqNeGiiy7KzJkzK4+JEyfWdEkAAAAAAAAAa5VaNTVxs2bNUlJSkqlTp1Zpnzp1alq2bFlt85SWlnofMgAAAAAAAMA3qLEdx3Xq1Mkuu+yS4cOHV7YtXrw4w4cPzx577FFTZQEAAAAAwFpr2LBh2XfffdO8efOUlpZmyy23TL9+/TJz5sxVGu/666/PsGHDqrnK6tGrV6+0b99+ifZx48blxz/+cTbffPOUlpamadOm6datWx544IE1Wl95eXmKiopSVFSUWrVqZcstt8xpp52W6dOnV/bp1atXZZ//PoYMGbJG6wVYnhrbcZwk/fr1y0knnZSOHTumU6dOuf766/P555+nd+/eSZITTzwxm2yySQYMGJAk+fLLL/POO+9U/nnSpEl57bXX0rBhw2y99dY1dh8AAAAAALAmfPrpp9ltt91y5plnZsMNN8xbb72Vyy+/PG+99VaefPLJlR7v+uuvz/e+9738z//8z2qotvq99NJL6datW5o3b54LL7ww2223XWbNmpVhw4bl+OOPT5s2bbLjjjuusXp69OiRc889NwsWLMhLL72Uyy+/PG+++Wb+9re/pbj4P3v3ttxyy9x9991LXNumTZs1VifAiqjR4Lhnz575+OOPc+mll2bKlCnp0KFDHn/88bRo0SJJMmHChMqFNUn+/e9/Z6eddqr8fN111+W6667Lvvvum2effXZNlw8AAAAAAGvUCSecUOVzly5dUlpamh//+Mf597//nVatWtVQZavfvHnzcvTRR2fTTTfNiy++mMaNG1eeO/TQQ3PaaaelSZMma7SmFi1aZPfdd0+S7L333pk3b14uvfTSvPLKK+nYsWOSpF69epV9ANZmNfao6q/07ds348ePz/z58zNy5MjstttuleeeffbZ3HnnnZWfy8vLU1FRscQhNAYAAAAAoFBtuOGGSf7zpM6VUV5envHjx+fmm2+ufHzynXfemXPPPTebbbZZFi9eXKX/Y489lqKiosong5aXl6dv37659tprs8kmm6R+/fo57LDDMnny5CrXzZ8/PxdffHHlo6XbtWuXe+65Z6Xvc+jQoZk4cWIGDBhQJTT+yg477JDNNtus8vNDDz2UDh06pG7dumnVqlX69euXefPmrfS8K+OrsPijjz5arfMArA41HhwDAAAAAAArZ9GiRZk3b15eeeWVXHnllfn+97+f8vLyyvOXX355ioqKMm7cuGWO8fDDD6dly5bp0aNHRowYkREjRuSQQw7Jj370o0ycODFPPfVUlf533HFHdt9992y33XZVxnj44Ydz66235tZbb83IkSNzxBFHVLnu6KOPzm9/+9uce+65+ctf/pJu3brlhBNOyGOPPbZS9/zcc8+lpKQkXbt2XW7fRx99ND169Mh2222XRx55JD/96U9z2223LbFju7p9FRj/987vhQsXLnEArG1q9FHVAAAAAADAytt8880zadKkJEm3bt2W2MFbXFyckpKSFBUVLXOMnXbaKaWlpVUet5wkzZs3T+fOnXPHHXfkoIMOSpJ88sknefTRR3PTTTdVGWP27Nl57LHHUlZWliRp3bp1vvvd7+aJJ57IQQcdlGeeeSaPPvponnjiiRx44IFJkgMOOCCTJ0/OZZddloMPPniF73nSpElp3rx56tWrt9y+l19+eXbffffK76Vbt26pX79+Tj311Lz55pv5zne+s8LzfpOKioosXLgwCxYsyMiRI3P11Vdnyy23zM4771zZ5+23307t2rWXuHbixInZdNNNq6UOgOpgxzEAAAAAAKxjhg0blhdffDG333573n333Rx66KFZtGhR5flLL700CxcuzOabb75K459yyin505/+lE8//TRJcvfdd6d27do55phjqvTbb7/9KkPjJNl///3TtGnTjBw5Mkny5JNPpmnTptl///2r7LY94IAD8uqrr1apeUV8UxD+lTlz5uS1115Ljx49qrT37NkzSfLCCy8s89qV3RV8yy23pHbt2qlfv37222+/bLLJJnnwwQerhNtbbbVVRo8evcTRokWL5Y4PsCbZcQwAAAAAAOuYHXbYIUmyxx57ZNddd02HDh3y8MMPLxGWrqqjjjoqZ511Vv74xz/mzDPPzODBg9OjR480atSoSr+NNtpoiWs32mijyvccT58+PZ9++ulSd9wmyeTJk1d41+0mm2ySp59+OvPmzUvdunWX2W/GjBmpqKhYIpgtKytLaWlpZRi+NP9dZ0VFxTfWdPTRR+f8889P7dq107p16zRt2nSJPnXr1q189zHA2kxwDAAAAAAA67AddtghtWvXzgcffFBtY9arVy/HH398Bg8enM6dO+e1117LDTfcsES/adOmLbVt4403TpI0bdo0zZs3z7Bhw5Y6z9KC52Xp0qVLBg0alOHDh+eQQw5ZZr8mTZqkqKhoidpmzpyZ+fPnLzXc/cro0aNXuJ7kP4/1FgoD6wuPqgYAAAAAgHXYyJEjs2DBgmy55ZYrfW2dOnUyb968pZ475ZRT8tprr+Wcc85JmzZtsvfeey/R55lnnsnMmTMrP//1r3/Np59+mt122y1J0rVr13z88cepU6dOOnbsuMRRp06dFa61R48ead26dS6++OLMnj17ifNvvvlmJk6cmIYNG6ZDhw554IEHqpy///77kySdO3de5hz/XR9AIbHjGAAAAAAA1hFHHHFEOnbsmB122CH16tXL66+/nmuvvTY77LBDunfvXtnvyiuvzJVXXpl//vOf3/ie43bt2uWvf/1rnnrqqWywwQbZYostsuGGGyZJdtxxx+y6667529/+lgEDBiz1+kaNGuXggw/OhRdemBkzZuSCCy5Ip06dctBBByVJDjjggBx66KHp1q1bfvrTn2aHHXbI559/nrfffjsffPBB/vd//3eF771u3bq5//77061bt3Ts2DHnnHNOtttuu8yaNStPPPFEbr/99owcOTKtW7fO5Zdfnu7du+eEE07ICSeckLFjx+biiy/OkUceme985zsrPGd1+OKLL/LSSy8t0d66detssskma7QWgG8iOAYAAAAAgHVEp06dct999+Waa67J4sWLU15enlNOOSXnnXdeld27ixcvzqJFi5b7jt7+/fvntNNOy5FHHpnZs2dn8ODB6dWrV+X5ww8/PK+88kpOOumkpV5/+OGHZ9NNN02fPn3y2Wef5YADDshtt91Wpc8DDzyQa665JrfcckvGjx+fsrKytG/fPr17917p+999993z6quvZsCAAenfv3+mTJmShg0bplOnTrn33nuz4447Jkm+//3vZ+jQobnyyitz2GGHpWnTpvnxj3+8zAB8dfrwww+zxx57LNF+1VVX5Wc/+9karwdgWYoqlvevxnpm1qxZKSsry8yZM9O4ceOaLme9dnxRTVcA1ePuglolWZ9Zl1mfWJtZX1ibWV9Yl1lfWJdZX1iXV7/V+XPmBQsW5OOPP07z5s1Tu3btah17Veyzzz4pKyvLn//85yXOlZeX53vf+15uuummGqhs/bW2/R0ACocdxwAAAAAAQBUvv/xynn/++Tz//PN56qmnarocANYAwTEAAAAAAFDFrrvumrKysvz85z9P165da7ocANYAwTEAAAAAAFDFirzlcty4cau/EADWmOKaLgAAAAAAAACAmiU4BgAAAAAAAChwgmMAAAAAAACAAucdxwAAAAAAsJZZuHBhTZdADfHfHqgpgmMAAAAAAFhLFBcXp6ioKJ999llNl0INKioqSnGxh8YCa5bgGAAAAAAA1hIlJSXZaKONsnjx4pouhRpUXFyckpKSmi4DKDCCYwAAAAAAWIuUlJQIDQFY4zznAAAAAAAAAKDACY4BAAAAAAAACpzgGAAAAAAAAKDACY4BAAAAAAAACpzgGAAAAAAAAKDACY4BAAAAAAAACpzgGAAAAAAAAKDACY4BAAAAAAAACpzgGAAAAAAAAKDACY4BAAAAAAAACpzgGAAAAAAAAKDACY4BAAAAAAAA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stdee2XChAk1XRoAy/Dpp5/m97//fU2XAVAwrrzyypx//vn55JNPMnjw4Bx33HE55ZRT8tRTT2X48OE5//zzc80119R0mQAF5fXXX88555yzRGicJEVFRTnnnHPy2muvrfnCAABYad5xDGuJF198MU8//XSaNWuWZs2a5c9//nNOP/307L333nnmmWfSoEGDmi4RoOA8+uij33j+ww8/XEOVAJAkb7/9duXrW44++uj84Ac/SI8ePSrPH3/88Rk8eHBNlQdQkFq2bJlRo0albdu2Sz0/atSotGjRYg1XBQDAqhAcw1riiy++SK1a//c/yaKiotx6663p27dv9t1339xzzz01WB1AYerevXuKioryTW/2WNrOCgBWn6/W3eLi4tStWzdlZWWV5xo1apSZM2fWVGkABem8887Lj3/844wZMybf/e53K0PiqVOnZvjw4bn99ttz3XXX1XCVAACsCMExrCXatm2bl19+Oe3atavSftNNNyVJvv/979dEWQAFbeONN84tt9ySww47bKnnX3vtteyyyy5ruCqAwlVeXp5//OMf2WqrrZIkI0aMyGabbVZ5fsKECdl4441rqjyAgvSTn/wkzZo1y69//evccsstWbRoUZKkpKQku+yyS+68884cffTRNVwlAAArwjuOYS1x+OGH5957713quZtuuinHHnvsN+54A6D67bLLLhkzZswyzy9vNzIA1eu0006rDCSSpH379lWe2vPYY49l//33r4nSAApaz54989JLL2Xu3LmZNGlSJk2alLlz5+all14SGgMArEOKKvy0EwBgqZ5//vl8/vnn6dat21LPf/7553n55Zez7777ruHKAAAAAACql+AYAAAAAAAAoMB5VDUAAAAAAABAgRMcAwAAAAAAABQ4wTEAAAAAAABAgRMcAwDAWuLOO+9MkyZNVrj/s88+m6KiosyYMWO11QQAAABAYRAcAwDAKhoxYkRKSkpyyCGHrPS15eXluf7666u09ezZM++///4Kj7Hnnntm8uTJKSsrS7LywfN/u+KKK3LCCScs9dzll1+eoqKiFBUVpVatWmnWrFn22WefXH/99Zk/f/5KzVNTgffll1+eDh06rNE5AQAAANYVgmMAAFhFgwYNyhlnnJG//e1v+fe///2tx6tXr1422mijFe5fp06dtGzZMkVFRd967iT505/+lO9///vLPL/99ttn8uTJmTBhQp555pkcddRRGTBgQPbcc8/Mnj27WmoAAAAAoGYIjgEAYBXMmTMn9913X0477bQccsghufPOO5fo8+c//zm77rpr6tatm2bNmuXwww9PknTp0iXjx4/POeecU7mLN6m6Y/j9999PUVFR3nvvvSpj/vrXv85WW22VpOrO3WeffTa9e/fOzJkzK8e8/PLLc+WVV6Z9+/ZL1NahQ4f8/Oc/r/w8ceLEvP322+nWrdsy77lWrVpp2bJlWrVqle985zs544wz8txzz+Wtt97KL37xi8p+d911Vzp27JhGjRqlZcuWOe644zJt2rQkybhx47LffvslSTbYYIMUFRWlV69eSZLHH388nTt3TpMmTbLhhhvme9/7Xv75z39Wjvvll1+mb9++2XjjjVO3bt1svvnmGTBgQOX5GTNm5Ec/+lGaN2+exo0bZ//998/rr79e+d1eccUVef311yu/n6X9NwMAAAAoVIJjAABYBffff3/atm2bbbfdNieccELuuOOOVFRUVJ7/f//v/+Xwww/P//zP/+TVV1/N8OHD06lTpyTJQw89lE033TRXXnllJk+enMmTJy8x/jbbbJOOHTvm7rvvrtJ+991357jjjlui/5577pnrr78+jRs3rhzzvPPOyw9/+MO8++67GT16dGXfV199NW+88UZ69+5d2fboo4+mS5cuady48Up9D23bts3BBx+chx56qLJtwYIFueqqq/L666/nkUceybhx4yrD4datW+fBBx9MkowdOzaTJ0/Ob37zmyTJ559/nn79+uXll1/O8OHDU1xcnMMPPzyLFy9Oktxwww159NFHc//992fs2LG5++67U15eXjnvUUcdlWnTpuWxxx7LmDFjsvPOO+e73/1uPv300/Ts2TPnnntu5a7pyZMnp2fPnit1rwAAAADrs1o1XQAAAKyLBg0aVPk+4G7dumXmzJl57rnn0qVLlyTJ1VdfnWOOOSZXXHFF5TU77rhjkqRp06YpKSmp3JG7LMcff3xuuummXHXVVUn+swt5zJgx+eMf/7hE3zp16qSsrCxFRUVVxmzYsGEOOuigDB48OLvuumuSZPDgwdl3332z5ZZbVvb705/+lMMOO2yVvou2bdvmySefrPz8wx/+sPLPW265ZW644YbsuuuumTNnTho2bJimTZsmSTbaaKMq72Q+8sgjq4x7xx13pHnz5nnnnXfSvn37TJgwIW3atEnnzp1TVFSUzTffvLLvCy+8kFGjRmXatGkpLS1Nklx33XV55JFH8sADD+THP/5xGjZsWLlrGgAAAICq7DgGAICVNHbs2IwaNSrHHntskv88wrlnz54ZNGhQZZ/XXnst3/3ud7/VPMccc0zGjRuXl156Kcl/dhvvvPPOadu27UqNc8opp+Tee+/NvHnz8uWXX+aee+6pEu7OmjUrzz333De+3/ibVFRUVHnP8pgxY3LooYdms802S6NGjbLvvvsmSSZMmPCN4/zjH//Isccemy233DKNGzeu3E381XW9evXKa6+9lm233TZnnnlmlbD69ddfz5w5c7LhhhumYcOGlcdHH31U5XHXAAAAACydHccAALCSBg0alIULF6ZVq1aVbRUVFSktLc1NN92UsrKy1KtX71vP07Jly+y///655557svvuu+eee+7JaaedttLjHHrooSktLc3DDz+cOnXqZMGCBenRo0fl+cceeyzbbbddWrduvUp1vvvuu9liiy2S/Odx0wcddFAOOuig3H333WnevHkmTJiQgw46KF9++eVy69x8881z++23p1WrVlm8eHHat29fed3OO++cjz76KI899liefvrpHH300enatWseeOCBzJkzJxtvvHGeffbZJcb9+q5mAAAAAJZOcAwAACth4cKF+cMf/pBf/epXOfDAA6uc6969e+6999706dMnO+ywQ4YPH17lPcJfV6dOnSxatGi58x1//PH56U9/mmOPPTYffvhhjjnmmGX2XdaYtWrVykknnZTBgwenTp06OeaYY6oE29/mMdXvvfdeHn/88Vx00UWVnz/55JNcc801lUH0yy+/vESdSarU+sknn2Ts2LG5/fbbs/feeyf5z+On/1vjxo3Ts2fP9OzZMz169Ei3bt3y6aefZuedd86UKVNSq1atKu89/u95V+Q7BwAAAChEHlUNAAAr4S9/+Us+++yznHzyyWnfvn2V48gjj6x8XPVll12We++9N5dddlnefffdvPnmm/nFL35ROU55eXn+9re/ZdKkSZk+ffoy5zviiCMye/bsnHbaadlvv/2q7HL+b+Xl5ZkzZ06GDx+e6dOnZ+7cuZXnfvSjH+Wvf/1rHn/88SqPqV64cGEee+yxFXpM9cKFCzNlypT8+9//zptvvpkbb7wx++67bzp06JDzzz8/SbLZZpulTp06ufHGG/Phhx/m0UcfrXxH81c233zzFBUV5S9/+Us+/vjjzJkzJxtssEE23HDD/O53v8sHH3yQv/71r+nXr1+V6wYOHJh777037733Xt5///0MHTo0LVu2TJMmTdK1a9fsscce6d69e5588smMGzcuL774Yi655JLK4Lq8vDwfffRRXnvttUyfPj3z589f7j0DAAAAFArBMQAArIRBgwala9euKSsrW+LckUcemZdffjlvvPFGunTpkqFDh+bRRx9Nhw4dsv/++2fUqFGVfa+88sqMGzcuW221VZo3b77M+Ro1apRDDz00r7/+eo4//vhvrG3PPfdMnz590rNnzzRv3jy//OUvK8+1adMme+65Z9q2bZvddtutsv25555Lw4YNs/POOy/33t9+++1svPHG2WyzzdKlS5fcf//9ueiii/L888+nYcOGSZLmzZvnzjvvzNChQ7PddtvlmmuuyXXXXVdlnE022SRXXHFFLrzwwrRo0SJ9+/ZNcXFxhgwZkjFjxqR9+/Y555xzcu211y7xXfzyl79Mx44ds+uuu2bcuHEZNmxYiouLU1RUlGHDhmWfffZJ7969s8022+SYY47J+PHj06JFiyT/+e/TrVu37LfffmnevHnuvffe5d4zAAAAQKEoqqioqKjpIgAAgNWroqIibdq0yemnn15lJ++ZZ56ZhQsX5pZbbqnB6gAAAACoad5xDAAA67mPP/44Q4YMyZQpU5Z453L79u2zxx571FBlAAAAAKwt7DgGAID1XFFRUZo1a5bf/OY3Oe6442q6HAAAAADWQnYcAwDAes7vigIAAACwPMU1XQAAAAAAAAAANUtwDAAAAAAAAFDgBMcAAAAAAAAABU5wDAAAAAAAAFDgBMcAAAAAAAAABU5wDAAAAAAAAFDgBMcAAAAAAAAABU5wDAAAAAAAAFDgBMcAAAAAAAAABe7/B11Y2JebrjynAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACOIAAANLCAYAAADmKKApAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdebhd4/0/7tfJPJ1zkkhCZBIJaQaKRIxJlJjHFDEUoWZVQylFa2gbMbZUv43QFh+k5qJKg5ZS81jzkJCQIDFEEgmRYf3+8MtujpORzTHc93Wd67LXetaz3mvY62xnv/I8FUVRFAEAAAAAAAAAAD6XenVdAAAAAAAAAAAAfBMI4gAAAAAAAAAAQBkI4gAAAAAAAAAAQBkI4gAAAAAAAAAAQBkI4gAAAAAAAAAAQBkI4gAAAAAAAAAAQBkI4gAAAAAAAAAAQBkI4gAAAAAAAAAAQBkI4gAAAAAAAAAAQBkI4gAAXxmXXnppKioqMn78+LL1OX78+FRUVOTSSy8tW5+wrFZZZZXsu+++dV0GX4BNNtkkffr0WWo7zyC+DjbZZJNssskmdV3GV8Ldd9+dioqK3H333V/ofioqKnLqqad+ofsAAAAAoG4I4gDAl2jWrFk59dRTv9Avd6ZPn57TTjst3/3ud9OiRYs0bdo0ffr0yfHHH5833njjC9tvXRs9enTOO++8ui6jZMGX74v7OeOMM+q6xC/UJptsUjrWevXqpaqqKj169Mjee++dO+64o67LAwAAAAAA+EI0qOsCAODbZNasWTnttNOS5Av5l+evvPJKBg8enNdeey277rprDjrooDRq1ChPPfVU/vSnP+Wvf/1rXnrppbLv96tg9OjReeaZZ3LUUUfVWN6lS5d8+OGHadiwYZ3Utccee2SbbbaptXzttdeug2q+XB07dsyIESOSJDNnzszYsWNzww035IorrsjQoUNzxRVX1Nl1AeB/br/99rou4Stj4MCB+fDDD9OoUaO6LgUAAACArylBHAD4hpg7d26+//3vZ/Lkybn77ruz8cYb11g/fPjwnHnmmXVUXd2pqKhIkyZN6mz/66yzTvbaa6862/8Cc+fOzfz587/ULxarq6trHfsZZ5yRI444In/4wx+yyiqrfCvvyW+D+fPn5+OPP67T9x5fjrp4tiysKIp89NFHadq0aZ3s//OYNWtWmjVrVtdlJInQyULq1avn2QUAAADA52JqKgC+ciZNmpT9998/K6+8cho3bpyuXbvm0EMPzccff1xq8/777+eoo45Kp06d0rhx43Tv3j1nnnlm5s+fX2qzYGqgc845J//v//2/rLrqqmnWrFm22GKLvP766ymKIr/61a/SsWPHNG3aNDvuuGPee++9WvXcdtttGTBgQJo3b57Kyspsu+22efbZZ2u02XfffdOiRYtMmjQpO+20U1q0aJG2bdvm2GOPzbx580r1tG3bNkly2mmnlabtOfXUU8ty3q6//vr897//zUknnVQrhJMkVVVVGT58eOn1Kquskn333bdWu0022aTGaD133313Kioqcs011+S0005Lhw4dUllZmV122SXTpk3L7Nmzc9RRR6Vdu3Zp0aJF9ttvv8yePbu0/YLrcOmll9ba17Ic/0033ZRtt922dD9069Ytv/rVr0rndUHNf//73zNhwoTSeV1llVUWuf9zzjknFRUVmTBhQq19nXDCCWnUqFGmTp1aWvbQQw9lq622SnV1dZo1a5ZBgwblvvvuW2LNy2uVVVbJdtttl//85z/p379/mjRpklVXXTX/93//V6vt8t775513Xrp165bGjRvnueeeS/LJNe3Xr1+aNGmSbt26ZdSoUTn11FNTUVFR6mPQoEH57ne/u8h6e/TokS233PIzHWv9+vXzu9/9Lr169crvf//7TJs2rcb6K664In379k3Tpk3TunXr7L777nn99ddrtNlkk03Sp0+fPPXUUxk0aFCaNWuW7t2757rrrkuS/Pvf/856662Xpk2bpkePHrnzzjtrbD9hwoQcdthh6dGjR5o2bZoVVlghu+66a8aPH1+j3aWXXpqKiorcd999+clPfpK2bdumefPmGTJkSN5+++0abYuiyK9//et07NgxzZo1y/e+971az4lyqaioyOGHH54bb7wxffr0SePGjdO7d+/84x//qNX2iSeeyNZbb52qqqq0aNEim222WR588MHPfJxLq+nKK69M796907hx41I9kyZNyg9/+MOsuOKKpVr//Oc/19h+4efM8OHD07FjxzRp0iSbbbZZxo4dW2t/S3tfPvXUU6moqMjNN99cWvbYY4+loqIi66yzTo2+tt5666y33nql18vyzFnYY489lg033DBNmzZN165dc+GFFy7TOXvhhReyyy67pHXr1mnSpEn69etXo94lmT9/fs4777z07t07TZo0yYorrpiDDz64xrMr+WY+WxYc05gxY9KvX780bdo0o0aNWuZjSJKrrroqffv2TWVlZaqqqrLGGmvk/PPPr9HmlVdeya677prWrVunWbNmWX/99fP3v/+9RpsF751PPzsW3M8LT0O54Ln12GOPZeDAgWnWrFlOPPHEJMlHH32UU089NauvvnqaNGmS9u3b5/vf/37GjRtX2n5Zr/mjjz6aLbfcMm3atCndkz/84Q+XeE4X1Le43/3L8p78tAXX/aWXXspee+2V6urqtG3bNr/4xS9SFEVef/317LjjjqmqqspKK62Uc889t1Yfs2fPzimnnJLu3buncePG6dSpU4477rganzGS5MMPP8wRRxyRNm3apLKyMjvssEMmTZpU6zPGsj77F3X9kuTaa68t/X5q06ZN9tprr0yaNGmJ53GBfffdt/S5ZEmW5XkJAAAAwFefEXEA+Ep544030r9//7z//vs56KCD8p3vfCeTJk3Kddddl1mzZqVRo0aZNWtWBg0alEmTJuXggw9O586dc//99+eEE07Im2++mfPOO69Gn1deeWU+/vjj/PjHP857772Xs846K0OHDs2mm26au+++O8cff3zGjh2bCy64IMcee2yNLzwuv/zyDBs2LFtuuWXOPPPMzJo1KyNHjszGG2+cJ554osaXKvPmzcuWW26Z9dZbL+ecc07uvPPOnHvuuenWrVsOPfTQtG3bNiNHjsyhhx6aIUOG5Pvf/36SZM011yzLuVvwBe7ee+9dlv4+bcSIEWnatGl+9rOflc5Xw4YNU69evUydOjWnnnpqHnzwwVx66aXp2rVrTj755LLs99JLL02LFi3yk5/8JC1atMi//vWvnHzyyZk+fXrOPvvsJMlJJ52UadOmZeLEifntb3+bJGnRosUi+xs6dGiOO+64XHPNNfnpT39aY90111yTLbbYIq1atUqS/Otf/8rWW2+dvn375pRTTkm9evVyySWXZNNNN829996b/v37L7X+WbNm5Z133qm1vGXLlmnQ4H8fxcaOHZtddtkl+++/f4YNG5Y///nP2XfffdO3b9/07t271Nfy3PuXXHJJPvrooxx00EFp3LhxWrdunSeeeCJbbbVV2rdvn9NOOy3z5s3LL3/5y1JIbIG99947Bx54YJ555pn06dOntPyRRx7JSy+9lJ///OdLPfbFqV+/fvbYY4/84he/yH/+859su+22ST4ZtekXv/hFhg4dmgMOOCBvv/12LrjgggwcODBPPPFEWrZsWepj6tSp2W677bL77rtn1113zciRI7P77rvnyiuvzFFHHZVDDjkke+65Z84+++zssssuef3111NZWVk6hvvvvz+77757OnbsmPHjx2fkyJHZZJNN8txzz9UaoeLHP/5xWrVqlVNOOSXjx4/Peeedl8MPPzxXX311qc3JJ5+cX//619lmm22yzTbb5PHHH88WW2xRI0BYTv/5z39yww035LDDDktlZWV+97vfZeedd85rr72WFVZYIUny7LPPZsCAAamqqspxxx2Xhg0bZtSoUdlkk01KYaXlPc4l+de//pVrrrkmhx9+eNq0aZNVVlklkydPzvrrr18K6rRt2za33XZb9t9//0yfPr3WVHJnnHFG6tWrl2OPPTbTpk3LWWedlR/84Ad56KGHauxnae/LPn36pGXLlrnnnnuyww47JEnuvffe1KtXL//9738zffr0VFVVZf78+bn//vtz0EEHlfpflmfOAlOnTs0222yToUOHZo899sg111yTQw89NI0aNVpi+OHZZ5/NRhttlA4dOuRnP/tZmjdvnmuuuSY77bRTrr/++gwZMmSJ5/rggw/OpZdemv322y9HHHFEXn311fz+97/PE088kfvuu6/GlG/fxGfLiy++mD322CMHH3xwDjzwwPTo0WOZj+GOO+7IHnvskc0226w0Itfzzz+f++67L0ceeWSSZPLkydlwww0za9asHHHEEVlhhRVy2WWXZYcddsh111231OuzOO+++2623nrr7L777tlrr72y4oorZt68edluu+3yz3/+M7vvvnuOPPLIzJgxI3fccUeeeeaZdOvWLcmyXfMpU6Zkiy22SNu2bfOzn/0sLVu2zPjx43PDDTd8pnqTZXtPLsluu+2Wnj175owzzsjf//73/PrXv07r1q0zatSobLrppjnzzDNz5ZVX5thjj826666bgQMHJvkkeLTDDjvkP//5Tw466KD07NkzTz/9dH7729/mpZdeyo033ljax7777ptrrrkme++9d9Zff/38+9//Lv1eWdjyPvsXtuDcr7vuuhkxYkQmT56c888/P/fdd1+t30+f1fI+LwEAAAD4CisA4Ctkn332KerVq1c88sgjtdbNnz+/KIqi+NWvflU0b968eOmll2qs/9nPflbUr1+/eO2114qiKIpXX321SFK0bdu2eP/990vtTjjhhCJJ8d3vfreYM2dOafkee+xRNGrUqPjoo4+KoiiKGTNmFC1btiwOPPDAGvt56623iurq6hrLhw0bViQpfvnLX9Zou/baaxd9+/YtvX777beLJMUpp5yyPKdlmay99tpFdXX1Mrfv0qVLMWzYsFrLBw0aVAwaNKj0+q677iqSFH369Ck+/vjj0vI99tijqKioKLbeeusa22+wwQZFly5dSq8XXIdLLrmk1r4+fS4uueSSIknx6quvlpbNmjWr1nYHH3xw0axZs9K1Koqi2HbbbWvsd0n732CDDWpcl6IoiocffrhIUvzf//1fURSf3G+rrbZaseWWW5buvQX1dO3atdh8881r7WtR+13czwMPPFBq26VLlyJJcc8995SWTZkypWjcuHFxzDHHlJYt771fVVVVTJkypUbb7bffvmjWrFkxadKk0rKXX365aNCgQbHwR8P333+/aNKkSXH88cfX2P6II44omjdvXnzwwQdLPP5BgwYVvXv3Xuz6v/71r0WS4vzzzy+KoijGjx9f1K9fvxg+fHiNdk8//XTRoEGDGssHDRpUJClGjx5dWvbCCy8USYp69eoVDz74YGn5mDFjal3/Rd1TDzzwQI3rXxT/ux8HDx5c4x44+uiji/r165eeK1OmTCkaNWpUbLvttjXanXjiiUWSRb7PPo8kRaNGjYqxY8eWlv33v/8tkhQXXHBBadlOO+1UNGrUqBg3blxp2RtvvFFUVlYWAwcOXO7jXFpN9erVK5599tkay/fff/+iffv2xTvvvFNj+e67715UV1eXrsWC50zPnj2L2bNnl9qdf/75RZLi6aefLopi+d6X2267bdG/f//S6+9///vF97///aJ+/frFbbfdVhRFUTz++ONFkuKmm26q0denLeqZs+A+PPfcc0vLZs+eXay11lpFu3btSs/LRT2DNttss2KNNdao0d/8+fOLDTfcsFhttdVq7X9h9957b5GkuPLKK2ss/8c//lFr+Tfx2bLgmP7xj3/UWL6sx3DkkUcWVVVVxdy5cxe7j6OOOqpIUtx7772lZTNmzCi6du1arLLKKsW8efOKolj076yi+N/9fNddd5WWLbhfLrzwwhpt//znPxdJit/85je16lhwjy/rNV/wXF3UZ6ilWdzv/qW9JxfnlFNOKZIUBx10UGnZ3Llzi44dOxYVFRXFGWecUVo+derUomnTpjWelZdffnlRr169GtegKIriwgsvLJIU9913X1EURfHYY48VSYqjjjqqRrt999231meMZX32f/r6ffzxx0W7du2KPn36FB9++GGp3S233FIkKU4++eTSsk+fxwWGDRtW6zPKp+tb1uclAAAAAF99pqYC4Ctj/vz5ufHGG7P99tunX79+tdYvmNri2muvzYABA9KqVau88847pZ/Bgwdn3rx5ueeee2pst+uuu6a6urr0esEoEHvttVeNEUnWW2+9fPzxx6VpBu644468//772WOPPWrsp379+llvvfVy11131arxkEMOqfF6wIABeeWVVz7jGVk+06dPL4348UXYZ599aoyysN5666UoilqjPqy33np5/fXXM3fu3LLst2nTpqX/njFjRt55550MGDAgs2bNygsvvPCZ+txtt93y2GOP1Zj24+qrr07jxo2z4447JkmefPLJvPzyy9lzzz3z7rvvlq7/zJkzs9lmm+Wee+6pNd3Johx00EG54447av306tWrRrtevXplwIABpddt27ZNjx49atw/y3vv77zzzjVGo5g3b17uvPPO7LTTTll55ZVLy7t3756tt966xrbV1dXZcccd85e//CVFUZS2v/rqq7PTTjulefPmSz32JVkwYtGMGTOSJDfccEPmz5+foUOH1ji2lVZaKauttlqt91uLFi2y++67l1736NEjLVu2TM+ePWuM9LLgvxc+jwvfU3PmzMm7776b7t27p2XLlnn88cdr1XrQQQfVmFpnwIABmTdvXml6szvvvLM06tbC7b7I0QsGDx5cGikj+WRkraqqqtJxzps3L7fffnt22mmnrLrqqqV27du3z5577pn//Oc/mT59eo0+l3acSzNo0KAa93VRFLn++uuz/fbbpyiKGtd1yy23zLRp02qd7/322y+NGjWqUUPyv+u3PO/LAQMG5PHHH8/MmTOTfDKK0DbbbJO11lor9957b5JPRsmpqKioMZ3f8jxzGjRokIMPPrj0ulGjRjn44IMzZcqUPPbYY4s8T++9917+9a9/ZejQoaX+33nnnbz77rvZcsst8/LLL9ea7mZh1157baqrq7P55pvXOKd9+/ZNixYtar1XvonPlq5du9aawmpZj6Fly5aZOXNm7rjjjsX2f+utt6Z///417osWLVrkoIMOyvjx40tTcS2vxo0bZ7/99qux7Prrr0+bNm3y4x//uFb7hT/3LMs1XzAqyy233JI5c+Z8pho/bWnvyaU54IADSv9dv3799OvXL0VRZP/99y8tb9my5SLvyZ49e+Y73/lOjWPedNNNk6R0zAumwDvssMNq7HdR53N5n/0LPProo5kyZUoOO+ywNGnSpLR82223zXe+851aU5Z9Fp/leQkAAADAV5epqQD4ynj77bczffr0GlNVLMrLL7+cp556qtZ0FwtMmTKlxuvOnTvXeL0glNOpU6dFLp86dWppP0lKX/p8WlVVVY3XTZo0qVVTq1atSv0tr3nz5uXtt9+usax169Y1vhD7dD1fZOhnec7j/PnzM23atNIUOZ/Hs88+m5///Of517/+VSs4MG3atM/U56677pqf/OQnufrqq3PiiSemKIpce+212XrrrUvXdcH1HzZs2GL7mTZtWmkaq8VZbbXVMnjw4KXW9Onzm9S+f5b33u/atWut9R9++GG6d+9ea9tFLdtnn31y9dVX5957783AgQNz5513ZvLkyWWZ/uyDDz5IklJ47OWXX05RFFlttdUW2X7hEFiSdOzYsUZoJPnk3lva+zpJPvzww4wYMSKXXHJJJk2aVAoDJIu+pz59bRZc8wV9LgiqfLr2tm3bLvX+SD559s2bN6/0ukWLFoudWm1xNS2oa0FNb7/9dmbNmpUePXrUatezZ8/Mnz8/r7/+emlqokX1+enjnDZtWj788MPS+kaNGqV169al15++395+++28//77ueiii3LRRRct8jiW9rz+dA3L874cMGBA5s6dmwceeCCdOnXKlClTMmDAgDz77LM1gji9evWqcRzL88xZeeWVawVHVl999STJ+PHjs/7669eqb+zYsSmKIr/4xS/yi1/8YpHHMGXKlHTo0GGR615++eVMmzYt7dq1W+y2C/smPls+vf/lOYbDDjss11xzTbbeeut06NAhW2yxRYYOHZqtttqq1HbChAm1pm5LPnnvLFi/tM8qi9KhQ4dav8PHjRuXHj161AgGL+rYluWaDxo0KDvvvHNOO+20/Pa3v80mm2ySnXbaKXvuuWcaN2683PUmS39PLu/21dXVadKkSdq0aVNr+bvvvlt6/fLLL+f5559f6vWcMGFC6tWrV+ueWNR9t7zP/gUWPOMX9Tz9zne+k//85z+L3XZZfZbnJQAAAABfXYI4AHztzJ8/P5tvvnmOO+64Ra5f8CXoAvXr119ku8UtX/DFzIJRFS6//PKstNJKtdp9+kuzxfX3Wb3++uu1vli66667sskmmyyy/Xe+85088cQTef3112uFERbl0yGGBebNm7fIY/ms53FJ+1ma999/P4MGDUpVVVV++ctfplu3bmnSpEkef/zxHH/88cs0Is2irLzyyhkwYECuueaanHjiiXnwwQfz2muv5cwzzyy1WdD32WefnbXWWmuR/SwtLLE8lnYeF9S0PPf+wv/6/7PYcssts+KKK+aKK67IwIEDc8UVV2SllVZapmDR0jzzzDNJ/vdl6fz581NRUZHbbrttkefi0+f6s96PyScjJVxyySU56qijssEGG6S6ujoVFRXZfffdF3lPLUufn8e6665bY9SZU045JaeeeuoSt/kialpan0ceeWQuu+yy0vJBgwbl7rvvLr3+9P224Fzutddeiw3OrLnmmstVw/K8L/v165cmTZrknnvuSefOndOuXbusvvrqGTBgQP7whz9k9uzZuffeezNkyJDStl/UM2dhC/o49thja43qssCiQgQLb9+uXbtceeWVi1z/6eDCN/HZsqj9L+sxtGvXLk8++WTGjBmT2267LbfddlsuueSS7LPPPjXu72WxvL/fPut5W9ZrXlFRkeuuuy4PPvhg/va3v2XMmDH54Q9/mHPPPTcPPvjgZ/qd9XmfNcvzeeLT9+Qaa6yR3/zmN4tsuyyfcz5teZ/9n0VFRcUiz83SPvN8luclAAAAAF9dgjgAfGW0bds2VVVVpS/oF6dbt2754IMPyhIGWNp+kk++tCvXvhb3pd2irLTSSrWmzvjud7+72Pbbb799/vKXv+SKK67ICSecsNT+W7Vqlffff7/W8gkTJtSYyubzWvCv5z+9r2WZ7ubuu+/Ou+++mxtuuCEDBw4sLX/11VdrtV2ec5t8Mj3VYYcdlhdffDFXX311mjVrlu233760fsH1r6qq+sLvtWX1ee/9du3apUmTJhk7dmytdYtaVr9+/ey555659NJLc+aZZ+bGG2/MgQce+LlDZ/Pmzcvo0aPTrFmz0tQv3bp1S1EU6dq1a60v/cvtuuuuy7Bhw3LuueeWln300UeLfD8siy5duiT5ZASHhd87b7/99jKNGnHllVfWGGmmHO+/tm3bplmzZnnxxRdrrXvhhRdSr1695f4i+7jjjstee+1Ver200X7atm2bysrKzJs3r2zvoeV5XzZq1Cj9+/fPvffem86dO5em1BkwYEBmz56dK6+8MpMnT67xbFmeZ06SvPHGG5k5c2aNUXFeeumlJMkqq6yyyG0WXN+GDRt+pvPSrVu33Hnnndloo40+dyBm4T6/7s+W5TmGRo0aZfvtt8/222+f+fPn57DDDsuoUaPyi1/8It27d0+XLl0W+95J/vee/zy/3xau+6GHHsqcOXNqjfy1cJvluebrr79+1l9//QwfPjyjR4/OD37wg1x11VU1pon6quvWrVv++9//ZrPNNlvi7/cuXbpk/vz5efXVV2uMSrao++6zPvsXXO8XX3yx1iiJL774Yml98sk9sajRCZd2T3wRz0sAAAAA6k69ui4AABaoV69edtppp/ztb3/Lo48+Wmv9gn9hPHTo0DzwwAMZM2ZMrTbvv/9+5s6dW5Z6ttxyy1RVVeX000/PnDlzaq3/9LRRy6JZs2ZJan9ptyhNmjTJ4MGDa/ws6YvvXXbZJWussUaGDx+eBx54oNb6GTNm5KSTTiq97tatWx588MF8/PHHpWW33HJLXn/99eU4oqWrqqpKmzZtcs8999RY/oc//GGp2y74Unbhf13+8ccfL3Lb5s2bL9dUVTvvvHPq16+fv/zlL7n22muz3Xbb1fgyvW/fvunWrVvOOeec0jRKC/ss1//z+rz3fv369TN48ODceOONeeONN0rLx44dm9tuu22R2+y9996ZOnVqDj744HzwwQc1ghifxbx583LEEUfk+eefzxFHHFGaCuz73/9+6tevn9NOO63WaAJFUdSYsuTzql+/fq19XHDBBcs0StOiDB48OA0bNswFF1xQo9/zzjtvmbbfaKONarzPyxHEqV+/frbYYovcdNNNGT9+fGn55MmTM3r06Gy88ca1ptdbml69etWos2/fvkutYeedd87111+/yIDlZ3kPLe/7csCAAXnooYdy1113lYI4bdq0Sc+ePUsjYC1YvqDmZNmeOUkyd+7cjBo1qkbbUaNGpW3btos9P+3atcsmm2ySUaNG5c0331zqMXza0KFDM2/evPzqV79aZD2fJVD2TXi2LOsxfPpZUq9evdJII7Nnz06SbLPNNnn44Ydr/C6dOXNmLrrooqyyyirp1atXkv8Fwxb+/TZv3rzFTi20KDvvvHPeeeed/P73v6+1buHPPctyzadOnVrr2bZg5KgFx/Z1MXTo0EyaNCkXX3xxrXUffvhhZs6cmSSlUaU+/R694IILam33WZ/9/fr1S7t27XLhhRfWOI+33XZbnn/++Wy77balZd26dcsLL7xQ43383//+N/fdd98S9/FFPC8BAAAAqDtGxAHgK+X000/P7bffnkGDBuWggw5Kz5498+abb+baa6/Nf/7zn7Rs2TI//elPc/PNN2e77bbLvvvum759+2bmzJl5+umnc91112X8+PFp06bN566lqqoqI0eOzN5775111lknu+++e9q2bZvXXnstf//737PRRhst8ouzJWnatGl69eqVq6++Oquvvnpat26dPn36pE+fPp+73oYNG+aGG27I4MGDM3DgwAwdOjQbbbRRGjZsmGeffTajR49Oq1atMnz48CTJAQcckOuuuy5bbbVVhg4dmnHjxuWKK64ofbFYTgcccEDOOOOMHHDAAenXr1/uueee0qgRS7LhhhumVatWGTZsWI444ohUVFTk8ssvX+S0D3379s3VV1+dn/zkJ1l33XXTokWLGiPcfFq7du3yve99L7/5zW8yY8aM7LbbbjXW16tXL3/84x+z9dZbp3fv3tlvv/3SoUOHTJo0KXfddVeqqqryt7/9banH8Pjjj+eKK66otbxbt27ZYIMNlrr9wspx75966qm5/fbbs9FGG+XQQw/NvHnz8vvf/z59+vTJk08+Wav92muvnT59+uTaa69Nz549s8466yxzvdOmTSsd+6xZszJ27NjccMMNGTduXHbfffcaXyp369Ytv/71r3PCCSdk/Pjx2WmnnVJZWZlXX301f/3rX3PQQQfl2GOPXeZ9L8l2222Xyy+/PNXV1enVq1ceeOCB3HnnnVlhhRU+U39t27bNsccemxEjRmS77bbLNttskyeeeCK33XZbWZ5Fn9Wvf/3r3HHHHdl4441z2GGHpUGDBhk1alRmz56ds84660up4Ywzzshdd92V9dZbLwceeGB69eqV9957L48//njuvPPOvPfee8vV3/K+LwcMGJDhw4fn9ddfrxG4GThwYEaNGpVVVlklHTt2LC1fnmdO8sk0d2eeeWbGjx+f1VdfPVdffXWefPLJXHTRRYsd3SRJ/t//+3/ZeOONs8Yaa+TAAw/MqquumsmTJ+eBBx7IxIkT89///nex2w4aNCgHH3xwRowYkSeffDJbbLFFGjZsmJdffjnXXnttzj///Oyyyy7Lc1q/ds+Wz3MMBxxwQN57771suumm6dixYyZMmJALLrgga621Vnr27Jkk+dnPfpa//OUv2XrrrXPEEUekdevWueyyy/Lqq6/m+uuvT716n/x7lt69e2f99dfPCSeckPfeey+tW7fOVVddtVyB4H322Sf/93//l5/85Cd5+OGHM2DAgMycOTN33nlnDjvssOy4447LfM0vu+yy/OEPf8iQIUPSrVu3zJgxIxdffHGqqqqyzTbbfK7z+2Xbe++9c8011+SQQw7JXXfdlY022ijz5s3LCy+8kGuuuSZjxoxJv3790rdv3+y8884577zz8u6772b99dfPv//979JnjIVH0/msz/6GDRvmzDPPzH777ZdBgwZljz32yOTJk3P++ednlVVWydFHH11q+8Mf/jC/+c1vsuWWW2b//ffPlClTcuGFF6Z3796ZPn36EvdT7uclAAAAAHWoAICvmAkTJhT77LNP0bZt26Jx48bFqquuWvzoRz8qZs+eXWozY8aM4oQTTii6d+9eNGrUqGjTpk2x4YYbFuecc07x8ccfF0VRFK+++mqRpDj77LNr9H/XXXcVSYprr722xvJLLrmkSFI88sgjtdpvueWWRXV1ddGkSZOiW7duxb777ls8+uijpTbDhg0rmjdvXutYTjnllOLTv27vv//+om/fvkWjRo2KJMUpp5zymc7T4kydOrU4+eSTizXWWKNo1qxZ0aRJk6JPnz7FCSecULz55ps12p577rlFhw4disaNGxcbbbRR8eijjxaDBg0qBg0aVOP4l+d8LTjmt99+u7Rs1qxZxf77719UV1cXlZWVxdChQ4spU6bUOv4Ffb766qulZffdd1+x/vrrF02bNi1WXnnl4rjjjivGjBlTJCnuuuuuUrsPPvig2HPPPYuWLVsWSYouXboURfG/++CSSy6pda4uvvjiIklRWVlZfPjhh4s8n0888UTx/e9/v1hhhRWKxo0bF126dCmGDh1a/POf/1xk+wUW7HdxP8OGDSu17dKlS7HtttvW6uPT16IoPt+9v8A///nPYu211y4aNWpUdOvWrfjjH/9YHHPMMUWTJk0W2f6ss84qkhSnn376Eo/507UvfLwt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8cczbNiwrLHGGunbt29OPfXUPPLII0mSU089NauvvnqaNm2alVZaKXvvvXemTZuW5JMpoI444oh88MEHqaioSEVFRY455pgkyYcffpiDDz447dq1S9OmTbPmmmvm1ltvrbH/3/zmN1lppZXSpEmTbLHFFjn11FNrja5z1llnpVOnTmnYsGG6du2akSNH1lhfUVGRs846K5tttlmaNm2aE088cZFTU91+++3p169fmjRpkpVWWin77bdfpk+fXlp/5plnpkuXLmncuHFWWGGFbLXVVuU70QB8ZoI4AAAAAAAAwFfelClTcu+992b//fdPVVVVrfVt2rRJktSvXz+/+c1v8uSTT+biiy/Of/7znxx++OFJPpkC6le/+lVatGiR1157La+99lpOPvnkJMl+++2XRx55JJdffnkee+yxDBkyJEOGDMkzzzyTJLnjjjvy05/+NAcffHAeeeSRbLbZZjnvvPNq1HD55ZfnpJNOyuGHH14KC/34xz/OLbfcUqPdmWeemR133DGPP/54DjnkkFrH8txzz2WnnXbKjjvumEcffTRXXHFFHnroofzwhz9Mktx777056aSTctJJJ+Xpp5/O3/72twwYMODznWAAysLUVAAAAAAAAMBX3vPPP5+iKNKzZ88ltvvFL35R+u8ePXrk3XffzdFHH50kadKkSaqrq5OkxlRQL7/8cq677rqMHTs2q6yySpLktNNOyx133JELL7wwv//973P++edn4MCBOe2005Ika6yxRh544IH885//LPXz29/+NrvsskuOP/74UpuHH34455xzTrbbbrtSuyFDhuSII46osf+FnXbaadlpp51Kx9KnT5+cd9552XrrrTNr1qy8+uqradq0aYYOHZqWLVtm9dVXz4YbbrhsJxKAL5QRcQAAAAAAAICvvPnz5y9Tu5tuuikbbLBB2rVrl+bNm+eQQw7J+++/nxkzZix2m8cffzzz5s1Lr1690qxZs9LPww8/nFdffTVJMm7cuPTr16/Gduuuu26N1+PGjctGG21UY9mGG26YsWPH1lj26X4+7dlnn811111Xo5Ydd9wx8+fPz4svvpgddtgh7du3T9euXTNkyJBceOGFSzw+AL48RsQBAAAAAAAAvvJ69+6dioqKPP/884tt8+KLL2bo0KHZe++9M3z48LRt2zb/+te/ctRRR2X27NmprKxc5HYffPBB6tevnwcffDD169evsW5R02B9Xi1atFji+lmzZuUHP/hBjj322FrrunXrliZNmuTZZ5/Nrbfemn/84x8ZPnx4RowYkccee6w0RRcAdcOIOAAAAAAAAMBXXrt27bLxxhvnT3/6U6ZPn15r/TvvvJMHH3ww8+fPz6hRo7LppptmjTXWyKRJk2q0a9SoUa3Rdfr375958+blzTffTO/evWv8LJjCqlu3bnnsscdqbPfoo4/WeN2tW7fcd999NZbdf//9WW211ZbrWNdYY428+OKLtWrp3bt3mjRpkiRp2LBhdtxxx4wcOTLPPvtsJk2alFtvvXW59gNA+RkRBwAAAAAAAPhaGDVqVAYOHJh11lknv/jFL9K3b9/MmTMnt956a/70pz9l9OjRmTt3bkaMGJGdd945d999dy677LIafXTr1i2zZs3KzTffnHXXXTctWrTIGmuskR133DE//OEPM2LEiPTv3z+TJ0/OmDFj8t3vfje77bZbjjzyyGy11VY59dRTs8suu+Qf//hH7r777lRUVJT6/slPfpL99tsva6+9drbZZptcd911uf3223PzzTcv13GeeOKJGTRoUIYNG5ZDDjkklZWVeeqppzJmzJhcdtllueqqqzJu3LhsuummWWGFFXLjjTemKIr07t27LOcZgM/OiDgAAAAAAADA10LPnj3z6KOPZqONNsqJJ56YddZZJ1tttVXuuuuu/P73v8/666+f0047Lb/73e+y9tprZ/To0Tn11FNr9DF48OD84Ac/yLBhw7LyyiuX1l999dUZOnRoTjjhhKyxxhrZdddd8+ijj6Zr165Jks033zxnn312Ro4cmX79+uX222/PwQcfnMaNG5f63muvvTJ8+PBccMEFWXvttXPZZZflggsuyDbbbLNcx7neeuvl9ttvz7hx4zJ48OD0798/p512WlZeeeUkSevWrXPTTTdlq622ypprrpk//elPufjii9O3b9/PfnIBKIuKoiiKui7iyzR9+vRUV1dn2rRpX8h8jvxPdcXS28DXwbRv1VOSb7KKLeq6Aiif4va6rgDKoyJr1nUJUBZFnqrrEqA8Kg6q6wqgPIqL6rqCb7zF/Z152rRpmTBhQrp3755mzZrVYYUAfFl23333jB07ttYUVQB8s8yaNStjx45Nly5dUl1dvcS2pqYCAAAAAAAAWAannHJKtt5661RWVubGG2/M9ddfn7POOquuywLgK0QQBwAAAACSrF5cXNclQFm8FCPiAMAX5ZFHHskFF1yQWbNmpWPHjjn99NNz9NFH13VZAHyFCOIAAAAAAAAALINbb721rksA4CuuXl0XAAAAAAAAAAAA3wSCOAAAAAAAAAAAUAaCOAAAAAAAAAAAUAaCOAAAAAAAAAAAUAaCOAAAAAAAAAAAUAaCOAAAAAAAwJfu1ltvTefOneu6jK+0Y445Jrvttltdl/GZzJ8/P0OGDEllZWW22GKLXHjhhdl0003Lvp8LLrggG264Ydn7/bx22WWXHHfccXVdxhfm63xvLquKioq88sorX/h+nnjiiay++upp3rx5Lrvsss/cj2cqwFeHIA4AAAAAAHzD7bHHHmnbtm1atGiR1VdfPX/5y19K60aPHp2uXbumsrIybdu2zYEHHpi5c+cuc98vvfRStt9++7Rq1SqVlZXp3bt3zj///C/iMPgM6iowcfvtt+eRRx7J5MmTc/vtt+eQQw7Jv/71ry+9js+qQ4cOuf322+u6jG+0b0OYZ1mMGDEiW2yxRWbOnJlhw4bVdTkAlEGDui4AAAAAAAC+qSq2+GL7L5YxJ3D88cfnz3/+c5o2bZp77rkn2267bTbddNOsuOKK2WCDDXLfffdl5ZVXzttvv50ddtgh55xzTn72s58ttd9JkyZl4403zve+9708/vjj6dq1ax599NGcdtppOfLIIz/n0X3zzJkzJw0bNqzrMspiacfy6quvpnPnzmnWrNmXWNWX55t0LZNv3vF8Vc2dOzcNGtT8enbixIn53ve+V0cVAfBFMCIOAAAAAAB8w6211lpp2rRpkk+mW5kzZ07Gjx+fJOnatWtWXnnlUtt69epl3Lhxy9TviBEjssIKK+Qvf/lLunbtmiTp169f/va3v5XanHnmmenYsWNatWqVnXbaKe++++4i+zrkkEOywQYbZMaMGZkyZUp22GGHtG7dOh07dszvf//7xdbw2GOPpV+/fqXReO64444kyciRI7PeeuvVaLvwdEEvv/xyNtlkk7Rs2TKrrrpqrr/++lK7Dh065NRTT82qq66aysrKJY5S0b9//xx11FHp2bNnqqqqsvPOO2fmzJlJPpk2ab311suee+6ZysrKXHDBBRk3blwGDRqUqqqqdOvWLaNHjy719cYbb2TgwIFp0aJF1ltvvUyZMqW07tNTML344os1vtB/4YUXSsfTtm3bDB8+PLfeemt+97vf5frrr0+zZs0ycODAzJs3L/vtt19pBKM+ffrkzTffTJLsvffe2XvvvRd5nAumvTn66KPTqlWrHHPMMaURPNq1a5cVV1wxJ554YpLkwgsvzFFHHZWHH344zZo1y/Dhw2vUv6D23/zmN2nbtm3atGlT4xovrt8kmT59enbcccdUVlamV69eefnllxd7bY455phsv/322XzzzdO8efP069cvL774Ymn9ww8/nH79+qWqqiq9e/fOvffemyTZbbfd8uabb2aHHXZIs2bNcuGFFy73tfy0Sy+9NN27d091dXU222yzTJo0qcZ5XdjCUyJ16NAhJ598clZdddU0b948Rx11VJ566qn06dMnlZWV+cEPfrDYfX7b7s2f/vSnqa6uTocOHXLDDTeU1n96dKNPTxs2fPjwdOnSJc2bN8+aa66ZyZMn19rHku7Ju+66K3369EmLFi2y8sorZ/jw4aV1C+7BLbfcMs2aNcstt9xSo9+BAwfmoYceylFHHZVmzZpl8uTJS633jDPOSJcuXdKqVavsvPPOmT59+iLPCwB1RxAHAAAAAAC+Bfbee+80adIkAwcOzPrrr5911123tO72229PZWVl2rVrl+effz4HH3xwad3qq6+eUaNGLbLPe+65J9tss03q1Vv01w033nhjzjnnnNx8882ZMGFCPvzwwxp9J8n8+fOz33775dlnn82dd96ZysrKDB06NO3bt8+kSZNyyy235Je//GUeeuihWv1/9NFH2XHHHTNkyJC88847+clPfpJddtklb7/9dvbYY488/fTTmThxYqnt7bffnn322Sfz5s3Ldtttl8033zxvv/12Lr744hxwwAGltklyyy235L777st///vf/O1vf6v1BfrCrrnmmlxzzTV55ZVXMnHixJx00kmldY899lg22GCDvP/++zn44IMzdOjQ9OzZM5MnT84FF1yQAw88MM8++2yS5IADDkibNm0yZcqUDB8+PH/9618Xu8+FzZkzJ9tuu2369u2bN954Iy+99FIGDRqUbbbZJkcccUR23nnnzJo1K/fcc09uvPHGPPLII3nllVcyderUjBo1qjRqzeWXX57LL798sft544030qBBg7z11lsZMWJEDj300EydOjUvv/xyHnrooVxzzTW56qqrcsghh+Scc85J//79M2vWrBrnY4F58+blmWeeyeuvv56LL744xx13XN5///0kWWy/ySejO7399tt57bXXMnr06FxzzTVLPDf/+Mc/sv/+++fdd9/NuuuuWwquTJs2Ldttt11+/OMf57333ssJJ5yQoUOHZtasWbn66qvTvn373HzzzZk1a1YOOeSQ5b6WC/v3v/+d448/PqNHj86UKVOy+uqrZ//991/6hV3oGB588MHcd999GTlyZA477LDcdNNNee655zJmzBj3Zj65Nxs1alR6Dhx++OHLVN+FF16YCy+8MNdff32mT5+ekSNHpnHjxrXaLemebNSoUUaNGpVp06bl6quvzhlnnJH777+/tO2CqdlmzJiRLbaoOUzaPffck759++a8887LrFmzsuKKKy6x3ksuuSR//vOfc8cdd2TixImZM2dOfvrTny7TsQLw5RHEAQAAAACAb4HLL788H3zwQW666aYMHjy4Rnhmiy22yIwZM/L8889n//33T/v27UvrXnrppVrhmQXef//9rLTSSovd51/+8pfstddeWWeddVJVVZWzzz47t9xyS+bPn58kKYoiP/jBDzJ+/Pjcfvvtad68eV5//fU89NBD+d3vfpemTZtmrbXWypAhQxYZuPj3v/+doihy0kknpXHjxtl///3TtWvX/PWvf03Lli2z8cYb54orrkjySSioY8eO6dOnT/79739n9uzZOemkk9KwYcNsttlmWW+99WqEC3784x+nffv2WXXVVbP++uvniSeeWOxx7rHHHlljjTXSpk2bnHjiibnxxhtL6zp16pQf//jHqV+/ft56660888wzOffcc9O0adNss8022XTTTXPllVdm7ty5uf322zNixIg0a9YsgwcPzuDBgxe7z4XdfffdmTlzZs4666w0a9YsrVq1ysYbb7zItg0bNszMmTPz1FNPpV69etloo41SXV29TPtp2LBhTj/99DRu3DhNmzbNNddck9/97neprq7OKquskv333z/XXXfdMvWVfDKiUpMmTTJkyJA0adIkzz//fObPn7/Efm+++eb8/Oc/T6tWrbLWWmtlt912W+I+1l577ey+++5p0qRJzjrrrPz3v//N+PHjc+2112b11VfPsGHD0qBBg+y1115ZYYUVcvfddy+2r2W9lp920UUX5Yc//GH69++fxo0bZ8SIEbnzzjszZ86cZTpPhx9+eNq1a5e11lorPXr0yODBg9OtW7d06tQp6623nnszSdOmTfPLX/4yDRs2zEEHHZQ333wz77zzzlK3u/zyy3P00UenX79+qV+/fjbaaKO0bNmyRpul3ZMbbbRRNtpoo9SvXz8DBgzIJptskn//+9+l7fv3758hQ4akfv36n3uqtj//+c855phjsvrqq6d58+Y5+eSTlxjEAqBuNFh6EwAAAAAA4JugQYMG2WGHHXLeeeelR48e2XXXXWus/853vpM+ffrkwAMPzK233rrU/lq2bJm33nprsevffPPNbLDBBqXX3bt3z+zZs/P2228nSd5777389a9/zd///vfS1FmvvPJKPv7447Rp06a03fz587PTTjvV6n/ixIk1QkNJ0rFjx7zxxhtJkt133z1/+MMf8rOf/SxXX311hgwZkiQZP358Jk6cmMrKytJ28+bNyzrrrFN6vXC/zZo1y4wZMxZ7nJ06dSr9d9euXUvHl6RGUOm1115Lq1at0rx589Kyzp0754033sibb76ZefPmpVu3bjWOZeG+Fue1115Lhw4dUr9+/aW23WGHHfLkk0/m4IMPzjvvvJOdd945v/vd7xY5CsintWnTJg0bNkzyybWdPXt21lhjjdL6oihqnMMlqV+/fo3RP5o2bZoZM2Ystd933nknq6yySmldp06d8sgjjyx2Px06dCj9d2VlZVq2bJmJEydmwoQJefjhh2vcA3Pnzs3rr7++2L6W9Vp+2sSJE3PDDTfUmH6rQYMGS9zX4vbbpEmTRZ63xfm23JutWrUq7WPBNZ0+fXqN58iivPnmmzWOa3FtlnRPPvbYYzniiCPy3HPPZe7cuZk9e3Z69OhRarvw1H+f1xtvvJGf/OQnOfbYY0vL5s6dW7b+ASgPQRwAAAAASPLyFkVdlwDlcXtdF8DXwdy5c/PSSy8tdt348eOXqZ+BAwfmtttuy9lnn73I6anat2+fCRMmlF6PGzcujRs3Ttu2bZMkK6ywQs4+++zsscceGTNmTNZee+107tw5zZo1y7Rp0xY75dUCHTt2zJtvvllj2aRJk7LDDjskSXbdddccccQRef7553PnnXdmxIgRST4JJ6y66qqLPQfLa+FAxauvvlo6viSpqKgo/Xfnzp0zderUzJo1qzQyxuuvv54+ffqkffv2qV+/fsaNG1f6En/ixImlEEKLFi3y0UcflfpaOPDRpUuXTJo0KfPnz691zhbe/wInn3xyTj755IwbNy5bb711Lrroovz4xz9e6nEu3NdKK62URo0aZdy4cWnXrt1St11WS+u3TZs2GT9+fHr16pUkSw2zTJo0qfTfM2fOzPvvv5+OHTumQ4cOGTBgQP75z38uc23Lei0/rX379jn++ONz6qmn1lo3ceLEGtd14enRyuHbcm8uSdOmTTNr1qzS6ylTpmTVVVdN8klI5pVXXlni9ku7Jw877LBssMEGpVG9tt9++xTFZ/9cuaR6V1pppZxyyinZZ599PnP/AHzxTE0FAAAAAADfYO+++25GjRqVadOmZc6cObnkkkvy0EMPZdNNN03yyVQnL7/8cpLkmWeeydlnn50BAwYsU98nnHBC3nnnndL0UknyxBNPZMcdd0zyyYg0V155ZZ544olMnz49xx13XLbddtsaX8jvtttuOf3007PNNtvkhRdeSNeuXbPWWmvlqKOOyowZMzJnzpzcd999efzxx2vtf9CgQUk+meJowbGNGzeuNPJNZWVlvve97+WHP/xhunbtmu985ztJkk022SRFUeSss87KRx99lI8++ihjxowpnYflddVVV+WZZ57Ju+++mxEjRpSO/9O6deuWXr165dhjj81HH32Uf/zjH/nnP/+ZPffcMw0aNMjmm2+ek046KbNmzcq//vWvGiGRvn375rnnnstTTz2V999/vxQqWnAemjdvnuOPPz6zZs3K1KlT85///CdJ0q5du0ycOLE0Hdi9996be+65J3PmzEl1dXUaNGiQBg0++Xfbu+yyS3bZZZdlOub69etn5513zmGHHZZ33nkn8+bNyxNPPFFjSp7PYmn9br/99jn99NMzderUPPXUU4ucsmxhTzzxRK699tp89NFHOe6447LmmmtmlVVWya677ppnn302V1xxRebMmZOZM2fm+uuvz7vvvpvkk5DYuHHjFtvvkq7lpx1wwAH54x//mAcffDDJJ8GK0aNHJ0l69+6d6dOn57bbbsuHH36Yk0466TOdt8X5Nt6bn9arV69cddVVmTt3bm666aY8/PDDpXV77713zjvvvDz++OOZP39+7rvvvrz//vs1tl/aPTlz5sy0bNkyTZs2zZgxY3LXXXd9pjqXpd5hw4blrLPOynPPPZckmTBhQq6//vrPtT8Ayk8QBwAAAAAAvsHq1auXP//5z+nYsWNat26dc845JxdffHFpyqjnn38+G2+8cZo2bZrNN988AwcOzG9/+9vS9t27d8+FF164yL47dOiQe++9Nx988EHWWmutVFZWZq+99spmm22WJBkyZEiOPPLIbLfddunSpUsaNmy4yL4OOOCA/PSnP80WW2yRCRMm5LrrrsukSZPStWvXtGnTJkceeWSNESIWaNKkSW644YZce+21ad26dc4+++xce+21NUb92G233fLggw/m+9//fmlZw4YN8/e//z133HFH2rdvn/bt2+fXv/51KRCwvHbZZZfsuuuuWWWVVUp9Lc4111yTp59+Om3bts1hhx2WkSNHlkZRufjiizN58uS0bds2J5xwQo3puNZcc80cfvjhGTBgQPr06ZPNN9+8xvHccsstefDBB7PSSitl9dVXz7333psk2WuvvTJz5sxUV1fne9/7XqZOnZoDDjgg1dXV6dGjR/r3758DDzwwyScjmWy44YbLfNyjRo1KdXV1+vTpk5YtW2bvvfcuBVk+jyX1e+aZZ6ZVq1bp3Llzdt9991rTq33aVlttlYsuuiitW7fOgw8+mCuvvDLJJ0Gbm266Kf/v//2/tGnTJp07d86oUaNK2x177LE59dRTU1lZWWP5wpZ0LRc2ePDgnH766Rk2bFhatGiRtddeu3R9VlhhhZx++unZa6+90qVLl6y77rqf6Zwtzrf13lzY6aefnmeeeSbV1dX54x//mMGDB5fWHXzwwTnggAOyww47pLKyMocddlg+/vjjWn0s6Z48/fTT86c//SmVlZX5zW9+U6P/ctd70EEHZZ999sm2226bFi1aZNCgQXn66ac/1/4AKL+K4vOMjfY1NH369FRXV2fatGmpqqqq63K+0aprjygIX0vTvlVPSb7JKrao6wqgfApD7fMNUZE167oEKIsiT9V1CVAWPjPzTeHz8hdvcX9nnjZtWiZMmJDu3buXpnbhm69///7Zb7/9cuihh9Z1KZ/LnDlz8p3vfCfPPfdcacqhr7tjjjkmEydOzNVXX13XpdQJ9yYAlM+sWbMyduzYdOnSJdXV1Uts2+BLqgkAAAAAAICvqIYNGy5xKiaoK+5NAL5uTE0FAAAAAAAAAABlYEQcAAAAAACAz+jhhx+u6xJYjHPPPbeuS6hT7k0AqBtGxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAAAAgDIQxAEAAAAAAL51Lrjggmy44YZf2v769++fkSNHfmn7AwCgbgjiAAAAAADAF6Wi4ov9WUZnnXVWevXqlQYNGuSYY46psW7ixInZdNNN07p161Qsos833ngjm2yySZo2bZquXbvm5ptvLq17/PHHs/HGG6eqqiodOnSote1zzz2XddZZJ02aNEmvXr3y4IMPLnPNHTp0yO23315j2THHHJPddtttmfsAAIAvmyAOAAAAAAB8w6288sr5+c9/nq222qrWunr16mWrrbbKxRdfvMhtDzjggKy44oqZMmVKhg8fnn322SdTpkxJkjRq1Ci77rprRowYschtd9999wwaNCjvvfde9t133+yyyy6ZM2dO+Q5sGdXFPgEA+HYSxAEAAAAAgG+4vfbaK3vuuWeqq6trrVt55ZVz3HHHpX///rXWTZs2LXfccUdGjBiRysrK7Lnnnll99dVz1VVXJUn69OmTI488Mj179qy17VNPPZWxY8fm9NNPT7NmzXLcccelKIqMGTOmbMe1xRZbpHXr1qmurs7WW29dCgi9+OKLadCgQc4+++y0a9cuu+66a6ZPn54dd9wxlZWV6dWrV15++eUl9j18+PB06dIlzZs3z5prrpnJkycnScaMGZOePXumsrIy6667bp544onSNieccEJWXnnltGjRImuttVYeeuihsh0rAABfD4I4AAAAAADAIj377LNp1qxZVl111dKyXr165dlnn13qtv/973+zyiqrpGnTpqVlPXr0yNNPP50kGTVqVFZfffXPVd+QIUMyfvz4vPLKK/nggw9ywgknlNbNmzcvTz75ZMaPH58rr7wyxx9/fN5+++289tprGT16dK655prF9nvhhRfmwgsvzPXXX5/p06dn5MiRady4cSZPnpxdd901J5xwQt55551svfXW2WmnnUoj7vTs2TOPPvpo3n333WyyySYZNmzY5zo+AAC+fgRxAAAAAACARZoxY0ZatGhRY1lVVVU++OCDpW77wQcf1Nq2srIyM2bMSJIcfPDBeemll5bYx5AhQ1JZWVn6+f3vf19j/aGHHpqqqqqssMIKOfroo2uNQLNgNJ7mzZvn5ptvzs9//vO0atUqa621VnbbbbfF7vfyyy/P0UcfnX79+qV+/frZaKON0rJly9xwww3p0aNH9tlnnzRu3DinnHJKPvzww9xzzz1Jkn322Scrr7xyGjdunNNPPz0vvfRSpk2bttRzBQDAN4cgDgAAAAAAsEiVlZW1QjfTp0+vFbBZlBYtWtTadsaMGamsrFzm/f/1r3/NjBkzSj+HH354ad2cOXOy//77l6aC2nvvvTN16tTS+nr16qVLly6l1++8805WWWWV0utOnTotdr9vvvlmunXrVmv5xIkT07Fjx9Lr+vXrp3379pk4cWKS5De/+U26d++eysrKrLjiiimKojSlFQAA3w6COAAAAAAAwCL17t07s2bNyquvvlpa9vzzz6d3795L3fa73/1uJkyYkA8//LC07MUXX8waa6xRltpGjRqV++67L/fdd18++OCDXH755TXWV1RU1Hjdpk2bjB8/vvT69ddfX2zfK6+8cl555ZVayzt27FgK3STJ/Pnz8+abb6Zjx4558cUXc9JJJ+WSSy7J+++/n7feeisVFRUpiuIzHiEAAF9HgjgAAAAAAPANN2fOnMyaNSvz5s3L3LlzM2vWrMydO7e0ftasWaXAzML/XV1dncGDB+dnP/tZZs6cmauuuiovvvhidt999ySfBFFmzZqVjz/+OEVRZNasWfnoo4+SJGuuuWa6deuWX/ziF/nwww9z7rnnpqKiIltuuWVZjmnGjBlp3Lhx2rRpkzfffDPnnnvuEttvv/32Of300zN16tQ89dRTueaaaxbbdu+99855552Xxx9/PPPnz899992X999/PzvttFNeeOGFjB49OnPmzMkvf/nLNGnSJBtvvHFmzJiRevXqZcUVV8ycOXNy7LHHluU4AQD4ehHEAQAAAACAb7if/exnad68ea6++ur87ne/S/PmzTNy5MjS+ubNm6dHjx6l/+7evXtp3Z/+9Ke89dZbWWGFFfKzn/0sl112Wdq1a5ckefnll9O8efNsvfXWefPNN9O8efMMHDiwtO1f/vKX/Otf/0qrVq3yxz/+Mddee20aNmyYJLnwwgtr7Gd5HXLIIamurs5KK62UjTbaKJtvvvkS25955plp1apVOnfunN133z277rrrYtsefPDBOeCAA7LDDjuksrIyhx12WD7++OO0b98+V199dX75y1+mdevWueWWW3LDDTekcePG6devX/baa6/07ds3nTt3TteuXUvHCgDAt0dF8S0bE3H69Omprq7OtGnTUlVVVdfl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CxQooPDwcKsEBgAAAAAAAAAA/nk7d+5UsWLFJEl//vmnChQoYPGfcosUKWIkxGTm0KFDKlq0qPHabDYrMDBQBw4ckCQNHTpU1atXz1JMW7du1YkTJ1S2bFnNmTNHs2fP1ubNmxUWFqbk5GQNHDhQ9vb2WrFihQICApSQkKCEhARj+xUrVmjx4sWKjo7WkSNH1KtXL02fPl2RkZEqUKCAWrZsme5+33nnHUVFRenkyZPavXu3lixZokWLFmUp5kuXLslsNuvatWtq1aqV2rZtq+PHj+vChQsaMWKE+vTpk+52kZGRat68uYYMGaJr166pTp06atSo0UOrYowZM0ZBQUH6+++/denSpQzHl6TRo0fr77//1tatW7V8+XJ9++23RtvevXtVtWpVRUdHq169eurbt68kKTExUS1atFCXLl10/fp1FS9e3DiX6WnRooWKFSumyMhITZ06VV27dtXhw4czPYZVq1bp999/15kzZxQVFaUZM2YYSR73OnDgQKbnMDU1VXv27NHFixc1f/58DRw4UH/99Zd69+6tRo0aqW/fvkpISNB3330nSXrllVd09OhRXb58WX5+furZs2eGMX7//feaPHmyrl69qtTUVI0bN07SncSj1q1b69NPP1VUVJQaNmyoFi1aSLpzLXTo0EETJkxQZGSk4uPjFRkZme74O3bsULly5TR58mQlJCTIx8dHkrRmzRrt2LFDJ06c0KpVqzRx4kStWbNG58+f182bN9W9e3djjOxee5nN3b0yu9cys3fvXtWoUUNRUVEqW7asatWqJTc3N129elXNmzfXe++998jz/rBrISOxsbEaNmyYNm3apPj4eG3cuFEhISEZ9v/555917NgxLVy4UMOHD9cnn3yiX3/9VTt27NDUqVN19OjRdLe7dOmScuXKpWvXrum9996zSHxr0aKFfH19FR4errVr12rUqFEWyTX3PrccHBxUrFgx7d27V9evX1e1atUyXLasX79+6tOnj27cuKHDhw+rRo0aD52P5ORk1a1bV+XKldOlS5d04sQJvfrqq0b7mjVrNHHiRMXFxalw4cKZjjVp0iT9/PPP+uuvv7Rt2zYtX77caIuJiVG9evX07rvv6u+//9aQIUPUokWLLF9DAPCsyFYiTkZlx8LCwmQ2m7M8zrhx4/TSSy8ZWdeNGjXS8ePHH7rd0qVLVbRoUTk6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i0SKe61fv16zZ8/WDz/8oNjYWO3ateuhMabH399frVq1srguExMTVbNmTfn5+Sk8PNzoGx8fn2myT3ruvbZ9fX0tKr6cPn1auXPnlpeXV7Ziv19W5i69e+3+ZJqMlt+ypsyuBbPZrNTUVOM+TUlJUVRUlNG3efPm+u233xQWFqbcuXNrwIABTzzeuwIDA2UymRQTE2NcL/Hx8RlWjTp+/LiGDRumOXPmKDo6WpcvX5aNjY1u3779QN/SpUtr3bp1unbtmpo1a6b27ds/NJ6goCCFh4cbVZXud//5dnJysri/701Q9Pb2trg+7/3d399fVapUeeD5fe/SagDwPMhWIk5AQID+/PNPDR06VP369dOLL76o8ePHa//+/RYZqY/qbvm0PHnyZNjn119/faCcYu3atfXrr7+m2z8pKUmxsbEWPwAAAAAAAAAA/JskJycrISFBqampSklJUUJCglJSUiRJe/bsUdOmTfX5558/UPW+dOnSKliwoEaMGKGbN29q0qRJsrGxUe3atSVJqampSkhIUHJystLS0pSQkGBUMKlTp44SExP12Wef6ebNmxo6dKhKliyZ6fIvWdGhQwdNmDBBR44ckXTnS97ly5dLupM8ExUVlel3Aa1bt9amTZv0448/KjExUe+9955efPFFi6oN0p1KNE2bNlXPnj117do1paamav/+/dq+fbukO0lKmzZtUlRUlI4ePfrQZZeyqlGjRjp27JgWLFig5ORkjRo1So6OjhbLxKRn8eLFOnr0qNLS0uTh4SEbG5t0q1vcrUrk6uqqvXv3ZnmprerVqyslJUWTJk1SUlKSxo8fn+HyRgULFlTx4sU1YMAAJSYmasOGDdqyZYtat26d6T527typHTt2KDk5WW5ubrK3t5e9vf0D/bJyDkeOHKmEhARt3bpVP/74o1q1aiXpwSSBmJgYOTg4yMfHR3Fxcfrggw+yNB/369ixo9auXauNGzcqNTVV0dHRmjt3riSpSZMmOnz4sJYuXarExEQNGjQo3QSKrGrZsqW+++477d+/X7GxsRo0aJDq1q1rVJd5XBnN3b3Su9dKliypVatW6ebNm/r111/1ww8/WCWezGR2Lfj5+cnLy0tff/21kpOTNXz4cN26dUvSnQSjRYsWKT4+Xo6OjnJycsqwGsyTEBwcrDJlyqhv376Ki4tTcnKydu3apT/++CPd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dpQklStXTufPn9fvv/+uixcv6q233rJmfAAAAAAAAAAAwApq1qwpX19fff755xbvr1q1ShMnTtSaNWt0/vx53bx5U927dzfaL126pFy5cunatWt677331Lt3b6OtRYsW8vX1VXh4uNauXatRo0Zp9+7d/9gxAQAAAE+bbCXi3M9kMqls2bLy9PS0xnAAAAAAAAAAAOAJGDlypCZNmmRRFWfhwoVq27atypYtK1dXV33yySdau3at0tLSJElOTk4aNWqUHBwc1K1bN0VEROjatWu6ePGidu/erSlTpsjJyUllypRR48aNtWTJkpw6PAAAACDH2Wdno/feey/d921sbOTo6KhChQqpYcOGypMnz2MFBwAAAAAAAAAArKdBgwb68MMP9cUXXxjvRUREqFKlSsbrQoUKKSkpSVevXpUkeXh4yM7OTpJkNpslSbGxsbp48aJu3bpl8Z9009LS1KhRo3/gSAAAAICnU7YScfbv368//vhDqampKlKkiCTpxIkTsrOzU9GiRfXFF1+of//++vnnn1W8eHGrBgwAAAAAAAAAALJvxIgR6t27typXrixJ8vX11fnz543206dPK3fu3PLy8sp0nMDAQJlMJsXExMjW1ioF+AEAAIBnXrYSce5Wu5kzZ45cXV0lSTExMerSpYteeeUVde3aVa1bt1a/fv20ceNGqwaMZ0eMbHI6BMBKbud0AAAAAAAAAIDVNGrUSB9++KE2btyozp07q2XLlurevbvat2+vggULatCgQapbt+5Dk2uCg4NVpkwZ9e3bV2PGjJGjo6P27NkjJycnlS1b9h86GgAAAODpkq0U9U8++USjR482knAkyc3NTf/97381YcIEmUwmjRw5Uvv27bNaoAAAAAAAAAAAwDpGjBihmJgYSVLjxo3Vp08f1atXT0FBQXJwcND06dOzNM6yZcsUHh6u4OBgeXp6qk+fPkpISHiSoQMAAABPtWxVxImJidGVK1ceWHbq6tWrio2NlSS5u7vr1q1bjx8hAAAAAAAAAADPqBNPSbXl8PBwi9dNmjTR7dv/f2zDhg3TsGHDHtjuzTff1IULFyzeu3c7Hx8fLV++3MrRAgAAAM+ubFXEadiwod5++22tXLlSYWFhCgsL08qVK9W5c2c1atRIkrRnzx6FhoZaM1YAAAAAAAAAAAAAAADgqZWtijgzZsxQv3791LJlS6WkpNwZyN5eHTp00P/+9z9JUtGiRTVr1izrRQoAAAAAAAAAAAAAAAA8xbKViOPi4qKZM2fqf//7n86cOSNJCgkJkYuLi9GnTJkyVgkQAAAAAAAAAAAAAAAAeBZka2mquy5fvqyIiAgVLlxYLi4uFuvCAgAAAAAAAAAAAAAAAP8m2UrEuX79ul5//XWFhobqzTffVEREhCSpc+fO6t+/v1UDBAAAAAAAAAAAAAAAAJ4F2UrE6devnxwcHHThwgWZTCbj/bfeeksbNmywWnAAAAAAAAAAAAAAAADAs8I+Oxtt2rRJGzduVEBAgMX7hQsX1vnz560SGAAAAAAAAAAAAAAAAPAsyVZFnPj4eItKOHf9/fffyp0792MHBQAAAAAAAAAAAAAAADxrspWIU6VKFX3zzTfGaxsbG6WlpWnChAmqXr261YIDAAAAAAAAAADICRs3blSRIkWM1/7+/tq0aVMORgQAAIBnQbYScSZMmKCvvvpKderU0a1btzRo0CCVLFlSO3bs0Mcff2ztGAEAAAAAAAAAwGNo1aqVvLy85OLiotDQUC1cuNBoW7BggYKDg2U2m+Xl5aWuXbsqJSVFkhQTE6Ny5crJ3d1dZrNZlSpV0oEDByzGnjp1qoKCgmQymRQSEqIjR45YtPn4+MjFxUXNmjVTYmJilmOOjIxUu3bt5O3tLZPJpPz586tdu3Y6c+bM401GFtWuXVvHjx//R/YFAACA54d9djYqWbKkjh8/rs8//1xms1k3btxQkyZN1KtXL/n6+lo7RgAAAAAAAAAAnk023Z7s+Le/ylK3999/X7Nnz5aTk5N27NihunXr6rXXXpOPj48qVaqkXbt2yc/PT1evXlWDBg00ceJEDR48WI6Ojpo1a5ZKly4t6c5/1G3btq0OHTokSVq8eLGmTZumlStXqkyZMjp69Ki8vLwkSXv27NGwYcO0du1alShRQvXr19fgwYM1efLkh8YbHx+vKlWqyN/fX1u2bFGJEiV09epVzZ49W9u2bVNISEj25gsAAAB4wrJVEUeSHB0dVbNmTbVv3149evRQhQoV9Pvvv2vNmjXWjA8AAAAAAAAAADymMmXKyMnJSZJkY2Oj5ORknTt3TpIUHBwsPz8/o6+tra1Onz4tScqdO7defPFF2dnZ6fbt27Kzs9PFixeNvmPGjNEnn3yismXLytbWViVKlDAScb755hvVqVNHVatWVd68eTV8+HAtWbIkS/F+8cUXio6O1tq1a1WqVCnZ2trKx8dHQ4YMUefOnSVJV69eVZUqVeTh4SEPDw+1atVKN2/elCRdunRJVatWldlsloeHh+rXr5/uflJTU9WvXz/ly5dPXl5e6tSpkzHGunXrFBgYmNUpBgAAACRlMxFnw4YNyp8/vypVqqQGDRqoUaNGxk/jxo2tHSMAAAAAAAAAAHhM7dq1k6Ojo6pWrar/+7//00svvWS0bdq0SWazWd7e3jp69Ki6d+9usW1oaKgcHR01ePBg9erVS5KUkpKiI0eO6ODBg8qXL58CAgI0aNAgpaWlSZKOHTtmVNKRpHLlyikiIkIxMTGSpOrVq2vo0KHpxvrTTz+patWqcnZ2zvB40tLS1LNnT126dEkHDhzQn3/+qYkTJ0q6kyAUFBSkv//+W5cuXVKfPn3SHeOzzz7T999/r19++UWHDh3Sn3/+qeHDhz9sKgEAAIAMZSsR591331WLFi106dIlpaWlWfykpqZaO0YAAAAAAAAAAPCY5s+frxs3bmj16tWqUaOGbG3//68IatWqpbi4OB09elSdO3eWr6+vxbYnTpxQTEyMPv30U5UtW1aSFBYWptTUVP344486dOiQtmzZoiVLlmjGjBmS7iwv5erqaozh7u4uSYqNjZUkbdu2TWPHjk031qioKOXLl894/c0338hsNsvZ2VktW7aUJPn4+KhVq1ZycnJSUFCQ3n77be3atUuS5ODgoMjISJ0+fVpOTk6qUaNGuvtZunSp/vOf/ygkJEQ+Pj4aPny4VqxYkeU5BQAAAO6XrUScyMhIvffee/Lx8bF2PAAAAAAAAAAA4Amxt7dXgwYNtHXrVi1duvSB9qJFi6pkyZLq2rXrA23Ozs76z3/+ox49eigyMtKoVvP+++/L09NTRYoUUceOHbVu3Tqj/92kG0mKjo6WJIvknIy4u7vr8uXLxuv27dsrLi5Offr0UUpKijFekyZN5OPjIxcXF40YMUJRUVGSpA8++EABAQGqXr26goODNXny5HT3ExkZqQIFChivQ0JCdOXKlYfGBwAAAGQkW4k4zZo1008//WTlUAAAAAAAAAAAwD8hJSVFJ06cyLDt3Llz6bbdvn1b8fHxOnfunLy8vOTl5SUbG5t0+xYtWlR//fWX8fqPP/6Qr6+v3NzcHhpftWrVtHPnTiUkJGTY56OPPtK1a9d04MAB3bhxQ6NHj9bt27clSR4eHpo9e7YiIiL09ddfa/DgwTp69OgDY/j4+Fgc69mzZ+Xt7f3Q+AAAAICMZCsRZ9q0aVqxYoU6duyoSZMmacqUKRY/AAAAAAAAAADg6XD9+nXNmDFDMTExSk5O1pw5c7R792699tprkqTZs2fr5MmTkqRDhw7pk08+UZUqVSRJu3bt0oYNG5SYmKjY2Fj16tVLZrNZL7zwgiSpZcuW+vjjjxUdHa0zZ85o3rx5evPNNyXdqWKzfv16/fzzz7p+/brGjBmjFi1aZCnmd955R2azWQ0aNNChQ4eUlpama9euWSTTxMXFycnJSXny5NGJEyc0c+ZMo23x4sU6evSo0tLS5OHhIRsbG9nZ2T2wn2bNmmnq1Kk6e/asrly5ojFjxqhRo0aPPskAAADA/2OfnY0WLlyoTZs2ydHRUT/99JNFtruNjY3+85//WC1AAAAAAAAAAACQfba2tpo9e7YGDBggSQoMDNTMmTNVqVIlSdLRo0c1ZMgQxcbGyt3dXfXr19f//vc/SdKtW7fUr18/XbhwQQ4ODipVqpS+//57OTo6SpImTJigjh07Kn/+/DKZTGrfvr3eeecdSVKFChX00UcfqUmTJoqPj1edOnU0btw4I66qVauqcuXKFu/dZTabtXPnTvXv31+vvfaabty4IU9PT1WpUkX//e9/JUmDBg1Ss2bN5OHhoZCQENWrV087d+6UJB0/flz9+vVTdHS08uTJozFjxig0NPSB/fTp00cXL15UxYoVlZaWprp162rMmDFWmnkAAAD8G9ncvlun8RHky5dP//nPfzR48GDZ2marqE6OiY2NlZubm2JiYrK0Di0eQwblSIFnzqM/JoGnkk2tnI4AsJ7bm3I6AsA6bFQ6p0MArOK2DuZ0CIBV8JkZzws+Lz95Gf07c0xMjM6fP69ChQrJZDLlYIQAAAAArCkhIUGnTp1SUFDQQ5dazVYWza1bt/TWW289c0k4AAAAAAAAAAAAAAAAwJOSrUyaDh06aPHixdaOBQAAAAAAAAAAAAAAAHhm2Wdno9TUVE2YMEEbN25U6dKl5eDgYNH+6aefWiU4AAAAAAAAAAAAAAAA4FmRrUScv/76Sy+++KIk6dChQxZtNjY2jx8VAAAAAAAAAAAAAAAA8IzJViLOtm3brB0HAAAAAAAAAAAAAAAA8EyzzekAAAAAAAAAAAAAAAAAgOcBiTgAAAAAAAAAAAAAAACAFZCIAwAAAAAAAAAAAAAAAFiBfU4HAAAAAAD/Vrdt/srpEADruJ3TAQAAAGRs6tSpWrhwoX755ZecDuW5dfLkSZUtW1ZxcXE5HYp69uyp7777TgEBATp8+LBFW1pampo2baoff/xRlSpV0qZNmx5p7KpVq6pDhw7q3Llzpv2OHz+uEiVKKCUl5ZHjBwAAzz4q4gAAAAAAAAAA8IQk2aQ90Z9HMWLECOXLl0/Ozs4qVqyYoqOjJd1JVLG3t5fJZDJ+Tp48aWzXpk0bBQYGysbGRuvWrbMYc8OGDXrppZdkMplUoUKFR4rn3v26uLiodOnS2rx58yON8bimTp2ql19++R/dp7WtW7dOgYGBORpD4cKFn4oknJMnT2revHk6efLkA0k4krRp0yb9/vvvioyMfOQkHEnasWPHQ5NwsqJZs2YaNGjQY48DAACeTiTiAAAAAAAAAADwnBs/frw2b96snTt3Ki4uTnPnzlXu3LmN9goVKighIcH4KVy4sNFWpkwZTZ8+XQEBAQ+M6+zsrM6dO6t///7ZiuvufqOiolStWjW1adMmW+M8KcnJyTkdQqb+qfie9nm46+zZs8qbN6+8vb0zbA8MDJTJZEq3nQo2AADAGkjEAQAAAAAAAADgOZaSkqJPP/1Us2fPVuHChWVra6uKFSvKyckpS9sPHDhQb775puzt7R9oq1Klinr06KGgoKDHitHBwUEdO3bU1atXFR4eLkk6ffq0Xn31Vbm6uqpgwYJasGCB0X/RokUKDQ2Vs7OzgoKCNGfOHKMtNjZWDRs2lNlsVvHixS2q+9zr6NGjGjBggPbs2SOTyaRChQpJkvz9/TVixAiFhISoQIECkqSOHTvK29tbZrNZr7zyisWYNjY2mjBhgvz9/eXh4aGhQ4daxBkcHCxnZ2f5+/tr1qxZku5UROnYsaNeeuklubi46LXXXtOVK1eM7b755huFhITI1dVV1atX19mzZyXdWfLI3t5en3zyiby9vdWkSRM1adJEYWFhRjWj+6WmpqpTp07y8PCQ2WxWyZIlFRERIelOBZlq1arJ3d1dISEhWr58ubHd/fPw1ltvacCAARZjBwQEaNOmTUZcd126dEkNGjRQnjx55OHhoV69ehlt48ePV1BQkDw8PNS0aVPFxsZKkv766y+VK1dOLi4uyps3r3r06JHueUtISFD79u3l6ekpX19fDRw4UKmpqdq4caMaNGhgzEW3bt0stps+fbr69u1rnO8xY8aof//+ql+/vmrXri2TyaS1a9dmOicVKlTQl19+KelOclKHDh3k7u6u4OBgDRs27IHKRJ9++qm8vLzk6empadOmSZKmTZumVatWafLkyTKZTE9d8hkAAHh8JOIAAAAAAAAAAPAcO3PmjG7evKnvvvtOefPmVXBwsD799FOLPgcOHJC7u7sKFiyoTz75xGr7Dg0N1YwZMx7aLzExUV9//bVcXV3l6ekpSWrRooWKFSumyMhITZ06VV27djWWG3Jzc9OyZcsUGxuriRMnqlevXrp48aIk6f3339fVq1d14cIFLViwQEuWLEl3n8WKFdPEiRONqjynTp0y2tasWaMdO3boxIkTkqRXXnlFR48e1eXLl+Xn56eePXtajLVt2zYdOXJEmzdv1qRJk3TkyBFJUu/evfXVV18pPj5ev/32m8qWLWtss3z5ck2YMEGRkZFycXFR9+7dJd05F7169dL06dMVGRmpAgUKqGXLlsZ2qampOnDggM6dO6dFixZpxYoVCggIMKoZ3W/VqlX6/fffdebMGUVFRWnGjBkymUxKTU1VvXr1VLNmTV29elUzZ85Uly5dFBYWlu48tGrVSqtWrTLatm/frpSUFNWoUeOBfbZo0UJOTk46c+aMwsLC1KRJE0nSnDlzNHv2bG3evFlhYWFKTk7WwIEDJUlDhgxR7dq1FRsbq7Nnz6pVq1bpnrfBgwfr2LFjOnr0qHbs2KGlS5fqiy++UO3atS3m4quvvrLYrkePHhbne9iwYZLuLFfVo0cPxcXF6fXXX3/onNw1YcIE7dmzR4cPH9ZPP/2kFStWWLSnpqbq0KFDunjxombOnKlBgwYpOjpavXv3VqNGjdS3b18lJCTou+++S/c4AQDAs4tEHAAAAAAAAAAAnmMXLlzQjRs3dOrUKV24cEGLFi3S6NGjtXHjRklSzZo1tX//fl2/fl2zZs3SJ598onnz5lll3ydOnDASTNKzZ88emc1mubi46JtvvtE333yj3Llz6/Tp0zp06JAmTZokJycnvfnmm3rttdeMpIU6deqodOnSsrOzU/PmzRUaGqpdu3ZJupM8Mnz4cHl4eKhMmTJ66623HjnuXr16KSAgQM7OzpKkLl26KG/evHJ2dtbw4cO1d+9ei/7Dhg2Tm5ubypcvryJFiuiPP/6QJNnb2+vQoUOKiYlR/vz5LRJxateurerVq8vZ2Vnjxo3TunXrlJaWpu+++061atVSrVq15OTkpMmTJ2vfvn06f/68se3YsWNlMpmM+DLj4OCg+Ph4HTx4ULa2tqpcubLc3Ny0fft2JSUladiwYXJwcNDrr7+uihUrauXKlenOQ7169fT3339r3759kqQFCxaofv36srW1/Krp7Nmz2r17t2bOnCl3d3c5Ozvr9ddflyTNnj1b/fv3N6oZjRw5UmvXrjXiPH/+vC5evChXV1e9+uqr6R7PypUrNXLkSHl5ealw4cLq3bt3hslWWVGhQgU1btxYdnZ2+v333x86J3etXr1avXv3lr+/v4KCgtK9zseNGydHR0c1btxYjo6OOnr0aLbjBAAAzw4ScQAAAAAAAAAAeI7dXa5o9OjRcnZ2VsWKFdWwYUN9//33kqSiRYuqSJEisrOzU/Xq1dWlS5cHqns8KRUqVFBcXJwiIiJUunRp7d69W9Kd5CEPDw+LRJPAwEBdunRJ0p0qJmXLlpWbm5vMZrMOHTqka9euSZKuXbtmLCklSfnz53/kuO5famvw4MEKDAyUi4uLKleurOjoaIt2Pz8/43dHR0fFxcVJkhYuXKjVq1crICBAVapU0f79+41+AQEBxu8hISG6deuWrl69qoiICIuY3dzc5O7ublT8sbW1faSlwBo0aKBOnTqpe/fu8vb2Vvfu3ZWUlKRz584pLCxMZrPZ+NmxY4exbNX982Bvb6+6detq/vz5SktL0/fff6/WrVs/sL9z584pT548cnV1faDt0qVLeu+994z9Va9eXX///bckafLkyUpOTlbZsmVVrFgxLVy4MN3juXr1qkJCQozXwcHBioyMzPJ83O/ec5eVObk3jnuXorp/WSo7Ozv5+PgYr52cnIzrAgAAPN9IxAEAAAAAAAAA4DlWsmRJOTg4yMbGxnjv3t/vZ2dnp9u3b/8ToRm8vLz09ddfa8qUKTp//rwCAwMVFRVlsdTSxYsXjaSJTp06qU2bNoqMjFRcXJxKlixpxOzp6alz585ZbJeRjObh3vfXr1+v2bNn64cfflBsbKxReScrqlevrp9++klXrlxRqVKlLKqm3Lvc0ZkzZ5QrVy55eXnJ19fXIubY2FhFR0cbyTn3x5zZubxr5MiROnbsmHbv3q1t27bpq6++Uv78+RUSEqK4uDjjJyEhQWPHjs1w7NatW2v16tXatm2bbGxsVL169Qf2FRwcrKioqHSTTvLly6cvv/zSYp83b96UdCfpZ8mSJbp69apGjBihTp06pbvUlpeXl86cOWO8PnfunEXCy+PIypzcG8e95/DChQtWiQEAADz7SMQBAAAAAAAAAOA55urqqjp16uiDDz7QzZs3tX//fq1Zs0b169eXJC1fvtyoNLNr1y599dVXatCggbF9YmKikRCRlJSkhIQEpaWlSZJSU1OVkJCg5ORkpaWlKSEhQUlJSdmKs2jRoqpWrZrGjx+vggULqnjx4howYIASExO1YcMGbdmyxajAkpCQIE9PT+XKlUvz5s3T4cOHjXHq16+vsWPHKioqSgcPHsx02aJ8+fIpIiJCycnJGfaJiYmRg4ODfHx8FBcXpw8++CBLx5OYmKgZM2YoKipKuXLlkrOzs+zs7Iz2TZs2aceOHYqPj9ewYcNUp04d2draqnXr1tq0aZN+/PFHJSYm6r333tOLL76YYRWcfPnyKSoqSrGxsem279y5Uzt27FBycrLc3Nxkb28ve3t7VatWTbdv39aECROUmJioxMREbdy4USdPnszwmGrVqqX4+HgNHz5cDRs2TLdPgQIFVKFCBXXv3l0xMTGKj4/X1q1bJUkdOnTQhAkTdOTIEUnS+fPntXz5cknS3Llzde7cOdna2srDw0NS+klGDRs21EcffaSrV6/q9OnTmjZtmpo3b55hzI/iUeakYcOGmjZtmsLDw3Xx4kV99dVXWd6Pt7e3xVJjAADg+UIiDgAAAAAAAAAAT0ju27ZP9Cervv76a12/fl2enp6qV6+ehg4dqtq1a0uSNm7cqJIlS8rJyUlt2rTRf/7zH3Xp0sXYtmrVqnJ2dta5c+fUpEkTOTs7G4kJGzdulLOzs3r27Kl9+/bJ2dlZbdq0MbYtVKiQpk+fnuU4Bw0apPnz5+vatWtasmSJ/vrrL3l5ealnz5768ssvVbJkSUnSxx9/rIEDB8rNzU0bNmxQhQoVjDE+/vhjeXh4KDAwUC1btsw0SaNu3boKCAhQ3rx5FRoamm6fpk2bqnz58goODlbx4sVVqVKlLB/Pt99+q6CgILm7u2vbtm364osvjLbGjRurf//+8vHxUXR0tL788ktJ0osvvqgpU6aoa9eu8vb21smTJ7Vo0aIM9/Hiiy+qZs2ayp8/v8xm8wPtUVFR6tKli9zc3FSkSBFVqFBBXbt2lYODg3744Qdt3rxZvr6+8vX11UcffWQkWaXHzs5O9evX12+//ZbuslR3LVmyRDExMSpQoIACAgKMpc66deum9u3bq27dunJxcdGrr76qv/76S5K0e/duvfTSSzKZTOrdu7dmz54tJyenB8b++OOPVahQIRUtWlQvv/yymjRpol69emUYy6N4lDkZMGCAypYtq+LFi6tq1aqqV6+ecuXKlaX99OjRQ/v375fZbFa7du2sEjsAAHh62Nz+p+tL5rDY2Fi5ubkpJiYm3fVJYUVZKIcJPBP+XY9JPMdsauV0BID13N6U0xEAVsJnZjwv+MyM5wSfmfG84PPyk5fRvzPHxMTo/PnzKlSokEwmUw5GiKdds2bNFBISogkTJuR0KLCSiRMnatWqVfr5559zOhQAAPAEJCQk6NSpUwoKCpKbm1umfamIAwAAAAAAAAAAADyC6OhorV69WikpKTp8+LA+//xz1atXL6fDAgAATwEScQAAAAAAAAAAAIBHkJqaqiFDhsjV1VXVq1dXjRo11K9fv5wOCwAAPAXsczoAAAAAAAAAAACAf5Nly5bldAh4THnz5tWRI0dyOgwAAPAUoiIOAAAAAAAAAAAAAAAAYAUk4gAAAAAAAAAAAAAAAABWQCIOAAAAAAAAAAAAAAAAYAUk4gAAAAAAAAAAAAAAAABWQCIOAAAAAAAAAADAM8LGxkZnzpx57HH69++vt956K8P2IUOGqEOHDo+9n/Q0a9ZMgwYNkiRt3LhRRYoUeSL7edr07NlTbm5uKlGihNatW6fAwMAnvk9/f39t2rRJ0pM9p88ra91vU6dO1csvv2yFiKynQoUK+vLLL3M6DPw/c+fOlbe3t0wmk8LDw7M9TmbP9jZt2mjEiBHZGjcnr5fjx4/L3t4+w3ZrzV1G7n2OPg/GjBmjPHnyyMPDI6dDsYp7z//27dtlY2Mjk8mkefPmZWu8Dh06yNHR8bH/RpOIAwAAAAAAAADAc27ChAkqXry47O3t1b9/f4u2devWydbWViaTyfjZuHGjJCk8PFz16tWTl5eXzGazXn75Ze3fv9/YNjU1VZ07d5bZbFbevHk1atQoi7GXLVumwMBAOTk5qUaNGrp69WqWY46Pj1evXr3k7+8vJycn+fv7q3Hjxhb7x5Mzbtw440ush30J+jhq166t48ePP5Gx05NTCREnT57UvHnzdPLkSR0+fPgf379keU7/CfcmXP3bPG9f3D/rrJVQ9SQNHz5cM2bMUEJCgvz9/Z/IPr777juNHj36iYydk6w5d09j0pw1JSYmavTo0dq+fbuioqKyPc7T9Hy/9/zny5dPdnZ2SkhIyHbi6bx587RixYrHjotEHAAAAAAAAAAAnhCbS0/2J6v8/Pw0fPhwvfHGG+m2BwQEKCEhwfipXbu2JCk2NlYVK1bU/v37FRUVpRo1aqhx48bGdhMnTtSuXbt07Ngxbd++XdOmTdOaNWsk3Uni6dSpkyZNmqQrV67Izc1N3bp1y1K8aWlpqlWrlnbt2qWlS5cqNjZWhw8fVq1atbRhw4asHziyJTk5OadDeO6cPXtWefPmlbe3d06HgmfY03xvPs2xPQsuX76sF154IafDeCZld+7+jdfspUuXlJKSolKlSuVYDNae96f13iERBwAAAAAAAACA51zbtm3VunVrubm5PdJ2xYoV04gRIxQQECB7e3sNGTJEFy5cUGRkpCRp4cKF6tOnj/z9/VWyZEm1a9fOqLixcOFClSpVSs2bN5fZbNaYMWO0bt06xcfHP3S/K1eu1L59+/T999/r5ZdfloODg9zd3fXOO+9oyJAhkqRXXnlFU6dONbaJjY2Vs7Ozzpw5o6lTp+r//u//1LJlS7m4uKho0aL69ddfJd2p4tOpUyd5eHjIbDarZMmSioiIkPRg1YR7l+Jo1qyZOnXqpIoVK8pkMum1117TpUuX9MYbb8jFxUUVK1Y05kWSQkNDNWPGjHSP78iRIypfvrzMZrO8vb3Vu3dvo+1u7G3btpWLi4sKFiyoXbt2WWy/bNky+fv7y8PDQ0OHDpUknTlzRi4uLoqNjTX6TZkyRa+88oqkO1++Va1a1Yj1ypUrFvusWLGiWrduLbPZrKlTp1osb1K7dm2lpqYaFZNOnjyplJQU9evXT35+fsqbN6+6detmfLl28uRJmc1mnTx58qHn+v4lmmxsbDR+/Hj5+/vLbDZr4sSJ+vHHH1WwYEG5urpq4MCBRt/MYti6dauKFSsmFxcXeXt7a9SoUTp69KgGDBigPXv2yGQyqVChQpKk06dP69VXX5Wrq6sKFiyoBQsWGPuoUKGC+vXrp5IlS8rFxUV169bVzZs3jfa5c+eqUKFCcnNz0+uvv57usigbN25UgwYNFBYWJpPJlG5CWkbXXlpaml5++WXjuFNSUlS6dGlNmDBBkjRjxgyFhoY+dJ4lyyVr7s57//795ebmJn9/f23ZskUTJ06Ut7e3vL29tXTpUmPbK1euqEGDBsqTJ48CAgI0bdo0o+2zzz6Tn5+fnJ2dFRwcrHXr1mnatGlatWqVJk+eLJPJpDZt2hhzUaxYMZnNZr300ksWFa5sbGw0YcKEB67tu8ed0bm+36JFixQaGipnZ2cFBQVpzpw5Rtvd+7hSpUpydnbWK6+8YnEvfPbZZ8qXL588PT01adKkTOczo2N56623FBERoQYNGshkMmn69OmS7iQYZnRfnzx5UtWqVZO7u7tCQkK0fPlyo83f318jRoxQSEiIChQokG4sX3/9tQoXLixnZ2eFhobq4MGDku4sR+bn5ycXFxeVKVNGu3fvzvB4xowZo6CgIDk7O6t06dLG86xjx47y9vaW2WzWK6+8YnFf29jYaNy4cfL391elSpUkSePHj1dQUJA8PDzUtGlTi2fSxx9/rICAAHl4eKhRo0a6fv26pAefA3fHvntPDB48WF5eXnJxcVFoaKj++OOPB+KPj49X/fr15ebmJjc3N5UvX16SjGdgiRIljIpvqamp6tevn/LlyycvLy916tTJuK8f9gzO7Fw9TEbHbzKZlJqaqhIlSqh06dIPbHf16lVVqVJFHh4e8vDwUKtWrSyeQxmJiYlRxYoV1atXL0mWVUwedpw7duxQaGioXFxc1KZNG6WlpWW4n/srQN27n/SexXdldq0MGTJEefPmlb+/v5YtW5bhvtObu4c9Z+6/Zu/K6G+EJP3yyy8KCQmR2Wx+oNJKZsdxr0f9HFGrVi3lyZNHbm5uqlOnjvGsulul7tNPP5WXl5c8PT0tnsn3LyN299l/8uRJlShRwvh7XqdOnUz3I0m//vqrXnrpJZnNZvn6+mrOnDnpPt/Tq5x373VRoUIF9e3bVyVLlpSzs7OSkpK0fv16lShRQmazWRUqVNCRI0cyOs3ZvndyEok4AAAAAAAAAAD8y12+fFl58uRRUFCQBg4cqJSUlHT7bdq0SXnz5pWPj4+kOwkMZcuWNdpLly5tLDN05MgRlShRwmgrWrSo7O3tdfToUUlSu3bt1K5du3T3s2XLFr3wwgvKnz9/hjG3atVKS5YsMV4vXLhQJUqUUEhIiCRp7969Klu2rK5fv6527dqpefPmSk5O1qpVq/T777/rzJkzioqK0owZM2QymbIyTVq7dq2++OILXbp0SWFhYapcubL69euna9euycHBQePHjzf6njhxQt27d89wrNGjR+vvv//W1q1btXz5cn377bdG2969e1W1alVFR0erXr166tu3r8W227Zt05EjR7R582ZNmjRJR44cUUhIiEqWLKlFixYZ/ZYsWWIkXnTp0kWenp66cuWKxowZo5UrV1qMuW/fPlWqVEnR0dEPxL1x40ZjqYeEhAQVLlxYo0aN0q+//qq9e/fq+PHj+vPPPzVx4kRJUuHChRUXF6fChQtnaV7v9/PPP+vYsWNauHChhg8frk8++US//vqrduzYoalTpxrXUGYx9OvXT3369NGNGzd0+PBh1ahRQ8WKFdPEiRNVoUIFJSQk6NSpU5KkFi1aqFixYoqMjNTUqVPVtWtXi+WjVq9erRUrVujcuXM6fvy4Zs6cKUnavn273n//fS1YsEBXrlxRaGioOnfu/MDx1K5dWytWrDAqT3311VdZngtbW1vNmzdPs2bN0m+//abhw4fLbDZrwIABkqTu3bvrxIkT2ZrnS5cuyWw269q1a2rVqpXatm2r48eP68KFCxoxYoT69Olj9G3RooV8fX0VHh6utWvXatSoUdq9e7diY2M1bNgwbdq0SfHx8dq4caNCQkLUu3dvNWrUSH379lVCQoK+++47RUZGqnnz5hoyZIiuXbumOnXqqFGjRhYJNeld21Lm5/p+bm5uWrZsmWJjYzVx4kT16tVLFy9eNNq///57TZ48WVevXlVqaqrGjRsn6c59N2zYMC1cuFDnz59/IAHuXpkdy+LFi+Xr66s1a9YoISFBPXr0MMZP775OTU1VvXr1VLNmTV29elUzZ85Uly5dFBYWZuxvzZo12rFjR7rnevPmzRowYIC++OILxcbGasmSJUbSZbFixbR3715dv35d1apVy3CplunTp2v69Olavny5YmNj9eWXXyp37tyS7iSyHD16VJcvX5afn5969uxpse2WLVt06NAhbd++XXPmzNHs2bO1efNmhYWFKTk52UgiW7VqlSZOnKg1a9bo/PnzunnzZqbPyLsOHDiguXPn6o8//jCOz8vL64F+X3zxhRISEnTp0iVdu3ZNY8aMkXTneSJJhw8fNiq+ffbZZ/r+++/1yy+/6NChQ/rzzz81fPhwY6zHOVcZyez4ExISjBjvJlHdKy0tTT179tSlS5d04MCBTK//u6KiolS9enVVqlRJn3/+ebp9MjrOxMREtWjRQl26dNH169dVvHhxHThw4KHHmJ70nsWSMr1Wli5dqq+//lo//fST/vzzT/3www8Zjn//3GXlOXPvNXuvjP5GSHf+/u/atUt//vmnvv/+e61du/ahx5GeR/kc0bhxY507d05nzpzRjRs3jERk6c61eOjQIV28eFEzZ87UoEGDFB0dnem5KFy4sA4cOGD8PV+/fn2m+7l+/brq1q2r1q1b69q1a9q3b59KlSqV7vM9K1asWKHFixcrOjpaYWFhat26tT799FNFRUWpYcOGatGiRbrbPc69k5NIxAEAAAAAAAAA4F+sVKlS2rNnj65evaqVK1dq1apV+uijjx7oFxERod69e+uDDz4w3ktISJC7u7vx2s3Nzah4Ex8fL1dXV4sxnJ2djf8pPn/+fM2fPz/dmK5fv26xhM/OnTtlNpvl4uJiVDdo27atDhw4YFQgWbx4sZF0Ikk+Pj4aNGiQcufOrSFDhiglJUXbt2+Xg4OD4uPjdfDgQdna2qpy5cpZrhRUr149lStXTu7u7qpRo4ZCQkJUu3ZtOTo6qkGDBjp06FCWxilevLjq1KkjBwcHlSxZUk2bNtXOnTuN9pCQEHXr1k329vbq0KGDjh07ZrH9sGHDjIoPRYoUMapDtGrVSosXL5YkhYWF6Y8//lDbtm2VkpKiTZs2ady4cTKZTKpRo4bxZehd+fPn17vvvis7Ozs5Ozs/9Bjmz5+vjz76SH5+fvL09FS/fv0eSO7JriFDhshsNqtevXpydnZWmzZt5O3trTJlyig0NFT79u17aAwODg46deqUrly5Ii8vL7388svp7uv06dM6dOiQJk2aJCcnJ7355pt67bXXLL5YbN++vUJDQ+Xp6amaNWvqzz//lCR99dVXevvtt1WhQgXlzp1b48aN048//mj1ZTcKFy6sDz74QC1bttSMGTM0d+5c2do+/ld8Tk5OGjlypBwcHNSmTRtdvnxZY8aMkaOjo95++21FRETo2rVrunjxonbv3q0pU6bIyclJZcqUUePGjY1EOBsbGx04cEA3b95UaGioihYtmu7+VqxYoSJFiqh9+/bKnTu3PvjgA928eVM7duww+mR0bT/K9VanTh2VLl1adnZ2at68uUJDQy2SaurVq2dUpGjUqJFx3y5atEhvvPGGqlevLmdnZ40ePTrDucvKsdwvo/t6+/btSkpK0rBhw+Tg4KDXX39dFStWtDi+Xr16KSAgIN178+uvv1a7du1Us2ZN2dnZqUyZMgoKCpJ059r18/NT7ty5NXbsWJ04cUIxMTEPjDF//nz169dP5cuXl52dnSpXrmw827t06aK8efPK2dlZw4cP1969ey22HTJkiDw8POTs7KzZs2erf//+RkWikSNHGgkLCxcuVNu2bVW2bFm5urrqk08+0dq1azOttCLduZdv3bqlP//8U6mpqSpTpky6SZoODg6KiorSsWPH5ODgYCyxmJ6lS5fqP//5j0JCQuTj46Phw4drxYoVRvvjnKuMZPf4pTt/z1q1aiUnJycFBQXp7bffzjRRLDo6Wq+++qpq1KihyZMnZ9gvo+Pctm2b7OzsLP6Genp6PjTO9GT0LM7sWlm8eLHatWunUqVKydPTU++//36W95eVe/Peazar3n33Xfn6+iokJET/93//Z1TZyew40vMonyPeeecdubq6Km/evOrXr98DFa3GjRsnR0dHNW7cWI6OjkaS6qPKaD9Lly5VgQIF1K9fP+XOnVt+fn5GpansaNu2rVGZ6uuvv9Ybb7yh2rVry97eXsOGDVN4eLiRzH2vx7l3chKJOAAAAAAAAAAA/Ivlz59fZcqUkZ2dncqWLav3339fa9assegTHR2tmjVrqmHDhhbLKJlMJov/gR0TE2N8sXVv0s1d6SXnpCdPnjwWSyNUqVJFcXFxmjx5sm7duiXpTtJP9erVNX/+fF25ckW//fabRYUdX19f43dbW1vly5dP4eHhatCggTp16qTu3bvL29tb3bt3V1JSUhZmShZVGJycnCy+mHRycsrSsluSdPbsWdWqVUuenp4ym82aNWuWscyCJItxnZ2dH1iCxM/Pz/jd0dFRcXFxku586X43qWr+/PmqWrWqPDw8FBERodTUVBUsWNDYLiAgwGLMfPnyZSn2uyIiItS4cWOZzWaZzWZ17drV4hgex73nztHR0SK2e483sxhmz56tI0eOqHDhwipXrpy2bNmS7r4uXLjwwBeygYGBunTp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fv36y6M8AAAAAAAAAAB+xFaqHXG6d++eMWPG1Gh7+OGH071791qqCAAAAAAAAAAAvlarQZw5c+ZkwoQJmTBhQpJk8uTJmTBhQqZOnZrk68dKHXTQQdX9Bw0alLfffjsnn3xyJk6cmKuuuiq33357TjjhhNooHwAAAAAAAAAAqtVqEOf5559P586d07lz5yTJ4MGD07lz55xxxhlJkunTp1eHcpJkgw02yN///vc8/PDD2XzzzXPRRRflz3/+c/r06VMr9QMAAAAAAAAAwDcKVVVVVbVdxPI0e/bslJWVZdasWWnSpEltl7NqKxRquwIojh/XxySrsMLOtV0BFE/V6NquAIrEPTOrCvfMrCLcM7OqcL+87PmeGQAAWJRa3REHAAAAAAAAAABWFYI4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBHVruwAAAAAAAOD/qayszPz582u7DGpRSUlJ6tSpU9tlAACwFARxAAAAAABgBVFZWZn3338/VVVVtV0KtahQKGSttdYSxgEAWAkJ4gAAAAAAwApi/vz5qaqqyhprrJG6dX2F/2NUUVGRjz/+OPPnzxfEAQBYCbmLBwAAAACAFUzdunVTWlpa22UAAABLqKS2CwAAAAAAAAAAgFWBIA4AAAAAAAAAABSBIA4AAAAAAAAAABSBIA4AAAAAAKxEJk6cmJ122imrr756WrVqlZNPPjlfffXVUs83Z86cnH322enYsWNWW221rL766unatWsuvvjizJ07N0ny+OOPp1AoVB+NGzdO586dc/3116eqqmqRc7/zzjspFAq54447qtsGDhyYjh07fm9dAwcOrLHmt49bb711qa/323r16lVj3rKysnTr1i333HNPjX7/ef2rr756Nt1001x66aWprKwsSi0AAKwa6tZ2AQAAAAAAwOL5+OOPs+OOO6Zdu3b529/+lnfffTeDBw/O559/niuuuGKJ55s5c2Z22GGHTJs2Lccff3x69OiRJBk7dmzOP//81KlTJ7/+9a+r+w8fPjzt27fPJ598kmHDhuXQQw/NvHnzcuSRRxbtGr+tbdu2ufnmmxdob9euXdHW2HbbbXPhhRcmSfV17bnnnnnyySez7bbb1uj7zfXPmjUrN954Y44//vh88cUXOfXUU4tWDwAAKzdBHAAAAAAAWElcc801mT17du666640a9YsSVJRUZGjjz46p59+etZZZ50lmu/oo4/O22+/nXHjxtXYpaZ379751a9+lYkTJ9bo37Fjx3Tp0iVJstNOO6VDhw65/PLLl1kQp2HDhunWrdsymfsbTZs2rbFG7969s/baa+eee+5ZIIjzn9f/0ksvZfjw4YI4AABU82gqAAAAAABYSTzwwAPp3bt3dQgnSfbZZ5/Mnz8/o0ePXqK5pkyZkjvuuCODBg1a6KOimjVrlm222WaR4+vUqZPOnTtn8uTJS7Tuiq5u3bpp2LBh5s2b9539SkpKstlmm2Xq1KnLqTIAAFYGgjgAAAAAALCSmDhxYtq3b1+jrWnTpll77bVr7F4zcODAFAqF75zrqaeeSlVVVfr27bvU9UyePHmJd+FZUhUVFQscxVRVVVU978yZM3Peeefl3XffzZ577vm9Y6dMmZINNtigqPUAALBy82gqAAAAAABYSXz88cdp2rTpAu1rrLFGPvroo+rXderUSZ06db5zrnfffTdJsv766y/2+pWVlamoqMisWbNy7bXXZvz48TnttNMWe/ySeu2111JaWrpA+7Rp07LeeusVZY1Ro0bVWKNOnTq5+OKLs9122y3Q99vXP3z48Dz33HMZMWJEUeoAAGDVIIgDAAAAAACrmGHDhmXYsGGL1ff7ds75tm7dulX/d926dTNo0KCcccYZS1zft1VWVqaqqqrGvN/YcMMNc+utty4wpmXLlks138L06NEjf/rTn5Ikn376aUaNGpXBgwenadOmOfjgg2v0/fb1J8mpp56aAQMGfOf8AAD8uAjiAAAAAADASmKNNdbIrFmzFmj/+OOP06xZsyWaa911102STJ06NRtttNFijbnpppvSoUOHNGnSJOXl5alXr94SrbkwG264YaZMmVL9evLkySkvL0+SNGjQIF26dCnafAtTVlZWY40ddtghkyZNym9+85scdNBBNYJK31z/+++/n6FDh+YPf/hDevbs+YMe7wUAwKpFEAcAAAAAAFYS7du3z8SJE2u0zZo1K9OnT0/79u2XaK7tt98+hUIhDz30UHr37r1YYzp06LDEwZjvc9999+XLL7+sfr3OOuvU+nwdOnTIfffdl/fff7/G7jvfvv7tt98+G2+8cU488cT06dNniXYWAgBg1VVS2wUAAAAAAACLZ5dddskjjzySTz75pLpt5MiRKSkpyc4777xEc62//vrp379/rr766rz++usLnP/kk08yduzYH1ry99p0003TpUuX6uOH7rJTjPleffXVlJaWpkmTJovs06hRo5x99tl5/fXXc/fdd/+AigEAWJUI4gAAAAAAwEpi0KBBady4cfr165fRo0dn+PDhOemkkzJo0KAaO78ceuihqVv3+zfFv+qqq1JeXp5tt90255xzTsaMGZMxY8ZkyJAh6dChQ5577rlleTnf64svvsizzz67wPHuu+8WbY1PPvmket6HH344J5xwQkaNGpWBAwemYcOG3zn24IMPzgYbbJA//OEPRasHAICVm0dTAQAAAADASmKNNdbImDFjcuyxx6Zfv35p3LhxDjvssJx33nk1+lVWVqaysvJ752vevHnGjh2biy++OLfddluGDh2akpKS/OQnP8kpp5ySI488clldymJ5++2307179wXazz333Pzud78ryhr/+7//W71Gw4YN07Zt21xwwQU57rjjvndsaWlpTj/99Bx++OF5/PHH06tXr6LUBADAyqtQVVVVVdtFLE+zZ89OWVlZZs2a9Z1bSlIEnofLquLH9THJKqywZLtTwwqtanRtVwBF4p6ZVYV7ZlYR7plZVbhfXvaW5ffM8+bNywcffJAWLVqktLS0qHOzcvAzAACwcvNoKgAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAWEm89dZbGTRoUDp16pS6deumY8eOP3jOOXPm5Oyzz07Hjh2z2mqrZfXVV0/Xrl1z8cUXZ+7cuUmSxx9/PIVCofpo3LhxOnfunOuvvz5VVVULnffOO+9MoVDI008/vdDzH330UerVq5czzjhjkbWVl5dXr1m3bt2Ul5fn4IMPzrRp0xbo++yzz2aXXXZJq1at0rBhw5SXl6d///4ZN27cUrwrC/rP96Bu3bpp06ZNjjrqqHz44Yc1+vbq1au6X0lJSdZbb73sueeeef3114tSCwAAK666tV0AAAAAAACweF577bX8/e9/z9Zbb5358+dn/vz5P2i+mTNnZocddsi0adNy/PHHp0ePHkmSsWPH5vzzz0+dOnXy61//urr/8OHD0759+3zyyScZNmxYDj300MybNy9HHnnkAnPvuuuuadKkSUaMGFE977fdcccdmTdvXg444IDvrLF///458cQTM2/evIwfPz5nnnlmXnrppbzwwgspLS1Nkvzv//5vevXqlb59++aaa65JkyZN8s9//jN33313nnvuuWy99dY/5G2q4Zv3oKKiIq+99lp++9vfZvLkyXnwwQdr9Nt2221z4YUXprKyMq+//np+97vfpXfv3nnttdeyxhprFK0eAABWLII4AAAAAACwkthtt92y++67J0kGDhyY559//gfNd/TRR+ftt9/OuHHjauyu07t37/zqV7/KxIkTa/Tv2LFjunTpkiTZaaed0qFDh1x++eULDeI0aNAge+21V0aOHJlLL700devW/JXELbfcki222CIbb7zxd9bYsmXLdOvWLUmy3XbbZe7cufntb3+b559/Pt27d0+SXH311SkvL8/dd9+dOnXqJEl23HHHHHnkkT84rPSfvv0e9OjRI3Pnzs0JJ5yQOXPmpFGjRtX9mjZtWl33tttum9VXXz0HHHBAHnzwwey3335FrQkAgBWHR1MBAAAAAMBKoqSkeF/rT5kyJXfccUcGDRq00EdcNWvWLNtss80ix9epUyedO3fO5MmTF9ln//33zwcffJBHHnmkRvu7776bp5566nt3w1mYzp07J0mmTp1a3fbxxx9nrbXWqg7hfFsx37OFady4caqqqlJZWfmd/RZWNwAAqx5BHAAAAAAAWMUMHDgwhULhO/s89dRTqaqqSt++fZd6ncmTJ2edddZZ5Pkdd9wxrVq1yi233FKj/dZbb02S7Lvvvku85pQpU5IkG2ywQXXblltumWeeeSa///3vF9jFp9gqKytTUVGRuXPn5oUXXsiFF16Y3r17p6ysbInrBgBg1SOIAwAAAAAAq5g6deosdHeYb3v33XeTJOuvv/5iz/tNCOXDDz/MkCFDMn78+Oy9996L7F9SUpJ99903d999d+bOnVvdPmLEiPTq1es7QzzfqKqqSkVFRb744os89dRTGTJkSH72s5+la9eu1X1OOumk7LTTTvnv//7vdOjQIWuuuWYOOOCAPPXUU4t9bYurW7duKS0tTcOGDdOlS5eUlpbmpptuWmTdX331VV566aWccsop6dy5c/WjxQAAWDUJ4gAAAAAAwCpm2LBhqaioWKy+37dzzrd9E0Jp3rx5zjzzzAwaNChnnHHGd47Zf//98+mnn+b+++9Pkvzzn//MCy+8sNiPpbrqqqtSWlqa1VZbLdtvv30aNmyYESNG1OjTuHHjjB49OuPGjcsZZ5yRTp06ZeTIkenZs2f+/Oc/L3Lub8Iy3xzz58//3npuuummjB8/PuPGjcuIESPy1VdfpW/fvpkzZ06NfqNGjUppaWnq16+fLbbYIjNmzMjdd9+d+vXrL9Z1AwCwchLEAQAAAACAH6F11103STJ16tTFHvNNCGXSpEn57LPPcvXVV6dBgwbfOWarrbZKu3btqh9Pdcstt6R+/frZa6+9FmvNffbZJ+PHj89TTz2V0047LW+++WaOPPLIhfbt2rVrzj777IwZMyaTJk3Keuutl1NOOWWRc994440pLS2tPn75y19+bz0dOnRIly5d0rVr1+y77765+eab849//CM33HBDjX49evTI+PHj88wzz+SCCy7IJ598kv3222+xwj4AAKy86tZ2AQAAAAAAwPK3/fbbp1Ao5KGHHkrv3r0Xa8w3IZQltf/+++f888/PrFmzMmLEiOy6664pKytbrLEtWrSoXrNHjx6ZM2dOLr/88hx//PHZeuutFzlugw02yN57752LL7447733Xlq2bLlAn9122y3jx4+vft28efMlvLKv35Mkee2112q0l5WVVdfdvXv3lJSU5MQTT8zIkSMzYMCAJV4HAICVgx1xAAAAAADgR2j99ddP//79c/XVV+f1119f4Pwnn3ySsWPHFmWt/fffP19++WV+97vfZdKkSYv9WKqFOeuss9KkSZMMGTKkuu29995baN8333wz9evXT9OmTRd6fs0110yXLl2qj/Ly8iWu59VXX03y/SGeY489NhtssEGGDh26xGsAALDysCMOAAAAAACsJD7//POMGjUqSTJlypTMnj07d9xxR5KkZ8+eadGiRZLk0EMPzY033piKiorvnO+qq65Kr169su222+aEE07ItttumyQZN25cLr/88px66qnp3r37D657o402ypZbbpkrr7wyZWVl2XXXXZd6rmbNmuXYY4/NkCFD8sYbb6RDhw45/PDDU1FRkb322ivt2rWrfl/uv//+HH/88alfv/4PvoZvvPrqq6moqMj8+fPz9ttv59xzz81qq62Wgw466DvHlZaW5vTTT8/hhx+eBx98MH379i1aTQAArDgEcQAAAAAAYCXx/vvvZ++9967R9s3rxx57LL169UqSVFZWprKy8nvna968ecaOHZuLL744t912W4YOHZqSkpL85Cc/ySmnnJIjjzyyaLUfcMABeeGFF7LXXnv94GDM4MGDc/nll+cPf/hDbrjhhvzqV7/KTTfdlCFDhmT69OlZbbXVsuGGG2bYsGE5+OCDi3QFXzvkkEOSJIVCIS1btkzXrl0zcuTItGvX7nvHHnzwwRkyZEjOP/98QRwAgFVUoaqqqqq2i1ieZs+enbKyssyaNStNmjSp7XJWbYVCbVcAxfHj+phkFVbYubYrgOKpGl3bFUCRuGdmVeGemVWEe2ZWFe6Xl71l+T3zvHnz8sEHH6RFixYpLS0t6tysHPwMAACs3EpquwAAAAAAAAAAAFgVCOIAAAAAAAAAAEARCOIAAAAAAAAAAEARCOIAAAAAAAAAAEARCOIAAAAAAMBKYuTIkdl9992z3nrrZfXVV0+nTp1y/fXXp6qqaqnmKy8vT6FQSKFQSN26ddO2bdscddRRmTlzZlHqffzxxzNkyJAF2s8666w0atSoKGssrn79+qVXr15Fmeudd95JoVDIHXfcUd02cODAFAqFHHTQQct0bQAAVmyCOAAAAAAAsJK4+OKLs9pqq+Wiiy7Kfffdl1122SWHH354zjnnnKWes3///hk7dmwee+yxHHXUUbnpppvSr1+/zJ8//wfXu6ggzqrslltuyb/+9a/aLgMAgFpSt7YLAAAAAAAAFs99992X5s2bV7/ecccd8+GHH+biiy/O73//+5SULPnf37Zs2TLdunVLkmy33XaZO3duzjjjjLz44ovp0qXLUtX55ZdfprS0dKnGrszatWuXL774IkOGDMmwYcNquxwAAGrBCrEjzpVXXpny8vI0aNAgW2+9dZ577rlF9r3hhhuqt8n85mjQoMFyrBYAAAAAAGrHt0M43+jcuXNmz56dzz77rChrfBO+mTx5cpJkypQp6d+/f8rKyrL66qunT58+eeWVV2qMKS8vzzHHHJM//vGPadOmTRo2bJjjjjsuZ599dj777LPq7/MX9Ximzz77LMccc0w23njjrLbaaikvL8+gQYMya9asha5z5ZVXpk2bNikrK0u/fv3ywQcf1Oj3xhtvpGfPnmnQoEE23HDD3HjjjUV5b75PvXr1csopp+Qvf/lLpkyZslzWBABgxVLrO+LcdtttGTx4cK655ppsvfXWueSSS9KnT59MmjQpa6211kLHNGnSJJMmTap+XSgUlle5AAAAAACwQnn66aez7rrrpnHjxtVtAwcOzI033piqqqolnu+bAM4666yTTz/9NL169UpJSUmuueaaNGjQIOedd1623377/OMf/0jr1q2rx915551p165dLr300tSpUyedOnXK3Llzc8stt+TRRx9N8vX3+wvz+eefp7KyMuedd15atGiRadOm5bzzzku/fv3y2GOP1eh777335p///GeuvPLKzJw5MyeccEKOPfbY3HrrrUmSuXPnZuedd87qq6+ev/zlL0mSM844I7Nnz067du2W+P1YUocddljOO++8DBkyJNdee+0yXw8AgBVLrQdxLr744hx++OE55JBDkiTXXHNN/v73v+f666/PqaeeutAxhUIhrVq1Wp5lAgAAAADACufpp5/OrbfemosuuqhGe506dVKnTp3FmqOqqioVFRWZN29exo0bl/POOy9t27bNFltskeuuuy5TpkzJa6+9lg4dOiRJevbsmfXXXz+XXHJJjXXnzZuXBx54IKuvvnp123rrrZeSkpLqR18tSosWLXL11VdXv66oqMgGG2yQHj165M0338xGG21Uo95777039evXT5K88847GTJkSObPn5+SkpLccMMN+fe//52JEydWB286d+6cjTfeeLkEcRo0aJCTTjopp512Wn7/+99nvfXWW+ZrAgCw4qjVR1N99dVXeeGFF9K7d+/qtpKSkvTu3Ttjx45d5Lg5c+akTZs2ad26dXbfffe89tpri+z75ZdfZvbs2TUOAAAAAABY2f3f//1fBgwYkB122CHHHXdcjXPDhg1LRUXFYs1z1VVXpbS0NKuttlp22GGHrLvuurnzzjvTsGHDPPXUU+nYsWN1CCdJmjVrlp122ilPP/10jXl69epVI4SzpP7yl7+kc+fOadSoUUpLS9OjR48kyZtvvlmjX8+ePatDOEmyySabZN68eXn//feTJOPGjUvHjh1rhG7+67/+K5tvvvl3rv9NIOmbo7KycqmvZdCgQSkrK8v555+/1HMAALByqtUgzsyZM1NZWZmWLVvWaG/ZsmVmzJix0DEbb7xxrr/++txzzz3561//mvnz52ebbbbJ//3f/y20/9ChQ1NWVlZ9fHubTAAAAAAAWBl98skn2WWXXbLmmmvmzjvvTEnJ0n/dv88++2T8+PGZMGFCPvzwwzz33HPp1KlTkuTjjz9e4Dv85Ovv8T/66KMF2pbWXXfdlYMOOihdu3bN7bffnmeffTZ33XVXkq8fNfVtTZs2rfG6Xr16NfpNnz49a6211kJr/i5PPPFESktLq4+f/vSnS3s5WW211TJ48OAMGzYs06dPX+p5AABY+dT6o6mWVPfu3dO9e/fq19tss006dOiQa6+9Nueee+4C/U877bQMHjy4+vXs2bOFcQAAAAAAWGl98cUX+fnPf55Zs2Zl7NixKSsr+0HztWjRIl26dFnouWbNmmXSpEkLtL/33ntp1qxZjbZCobDUNYwcOTKdOnXKtddeW932xBNPLNVca6+9dl588cUF2t977700adJkkeO23HLLjB8/vvp148aNl2r9b/zqV7/KBRdckD/+8Y8/aB4AAFYutbojTvPmzVOnTp289957Ndrfe++9tGrVarHmKC0tTefOnfPWW28t9Hz9+vXTpEmTGgcAAAAAAKyMKioqss8+++SNN97Igw8+mHXXPMjzPQAAI1ZJREFUXXeZrtejR4+88sorNcI4H3/8cR555JHqR0d9l3r16uXLL7/83n5ffPFF9c4237j55puXvOAkXbt2zauvvlrj9wZvvfVWXn755e8c17hx43Tp0qX62HjjjZdq/W/Pd/zxx+faa6+tfmwWAACrvloN4tSrVy9bbrllxowZU902f/78jBkzpsauN9+lsrIyr7zyStZee+1lVSYAAAAAAKwQjj766Nx///357W9/m9mzZ+fZZ5+tPr4deDn00ENTt+4P3xT/kEMOSZs2bbLrrrvm1ltvzd13352dd945devWzfHHH/+94zt06JCKiopceumlGT9+/EJ310mSnXbaKc8991zOPffcPPLIIxk8eHCN3x0siYEDB6ZVq1b5+c9/npEjR2bkyJHZbbfdFvsPgIvpuOOOS7169TJ27NjlvjYAALWjVoM4STJ48OBcd911ufHGG/PGG2/kqKOOymeffZZDDjkkSXLQQQfltNNOq+5/zjnnZPTo0Xn77bfz4osv5sADD8yUKVNy2GGH1dYlAAAAAADAcjF69OgkyYknnpju3bvXOKZPn17dr7KyMpWVlT94vcaNG+fxxx/P5ptvniOOOCIHHHBA1lhjjTz55JNp3br1947fbbfdcvTRR2fo0KHZeuutc+SRRy6035FHHpkTTzwxl19+efbcc89MmzYtt9xyy1LV3LBhw4wePTprrbVWDjzwwJxyyik5+eSTs9VWWy3VfD9EWVlZjj322OW+LgAAtadQVVVVVdtFXHHFFbngggsyY8aMdOrUKZdddlm23nrrJEmvXr1SXl6eG264IUlywgkn5G9/+1tmzJiRNdZYI1tuuWX++7//O507d16stWbPnp2ysrLMmjXLY6qWtR/wPGBYodT+xyQURWHn2q4AiqdqdG1XAEXinplVhXtmVhHumVlVuF9e9pbl98zz5s3LBx98kBYtWqS0tLSoc7Ny8DMAALByWyGCOMuTIM5y5JcKrCp+XB+TrML8UoFViV8ssMpwz8yqwj0zqwj3zKwq3C8ve4I4LEt+BgAAVm61/mgqAAAAAAAAAABYFQjiAAAAAAAAAABAEQjiAAAAAAAAAABAEQjiAAAAAAAAAABAEQjiAAAAAADASmLUqFHp2bNnWrRokfr166dt27YZPHhwZs2atVTzXXLJJRk1alSRqyyOgQMHpmPHjgu0v/POOzniiCPSpk2b1K9fP82aNUvfvn1zxx13LNf6ysvLUygUUigUUrdu3bRt2zZHHXVUZs6cWd1n4MCB1X3+87j11luXa70AACwfdWu7AAAAAAAAYPF89NFH2XrrrXPcccdlzTXXzKuvvpqzzjorr776akaPHr3E811yySX5+c9/np/97GfLoNrie/bZZ9O3b9+0aNEip556ajbZZJPMnj07o0aNygEHHJB27dpl8803X2719O/fPyeeeGLmzZuXZ599NmeddVZeeeWVPPnkkykp+fpvodu2bZubb755gbHt2rVbbnUCALD8COIAAAAAAMBK4sADD6zxulevXqlfv36OOOKI/Pvf/84666xTS5Ute3Pnzs0+++yT9dZbL88880yaNGlSfW633XbLUUcdlaZNmy7Xmlq2bJlu3bolSbbbbrvMnTs3Z5xxRl588cV06dIlSdKwYcPqPgAArPo8mgoAAAAAAFZia665ZpLkq6++WqJx5eXlmTJlSq688srqxyXdcMMNOfHEE7P++utn/vz5Nfo/8MADKRQKef3116vHH3PMMbnggguy7rrrZrXVVsvuu++e6dOn1xj35Zdf5vTTT69+lFSHDh1yyy23LPF1jhw5MtOmTcvQoUNrhHC+sdlmm2X99devfv23v/0tnTp1SoMGDbLOOutk8ODBmTt37hKvuyS+Cd9Mnjx5ma4DAMCKSxAHAAAAAABWMpWVlZk7d25efPHFnHPOOfnFL36R8vLy6vNnnXVWCoVC3nnnnUXOcdddd6VVq1bp379/xo4dm7Fjx2bXXXfNYYcdlmnTpuXhhx+u0f/6669Pt27dsskmm9SY46677srVV1+dq6++OuPGjcuee+5ZY9w+++yTa6+9NieeeGLuv//+9O3bNwceeGAeeOCBJbrmJ554InXq1Env3r2/t++9996b/v37Z5NNNsndd9+dk08+Oddcc80COwoV2zcBnP/cmaiiomKBAwCAVZNHUwEAAAAAwEqmTZs2effdd5Mkffv2XWCHmZKSktSpUyeFQmGRc3Tu3Dn169ev8XilJGnRokV69OiR66+/Pn369EmSfPjhh7n33ntzxRVX1Jjj008/zQMPPJCysrIkSevWrfPTn/40Dz30UPr06ZPHHnss9957bx566KHsvPPOSZKddtop06dPz5lnnplddtllsa/53XffTYsWLdKwYcPv7XvWWWelW7du1e9L3759s9pqq+XII4/MK6+8kk033XSx1/0uVVVVqaioyLx58zJu3Licd955adu2bbbYYovqPq+99lpKS0sXGDtt2rSst956RakDAIAVhx1xAAAAAABgJTNq1Kg888wzue666/LGG29kt912S2VlZfX5M844IxUVFWnTps1SzX/44YfnnnvuyUcffZQkufnmm1NaWpp99923Rr8ddtihOoSTJDvuuGOaNWuWcePGJUlGjx6dZs2aZccdd6yxG8xOO+2Ul156qUbNi+O7gkXfmDNnTiZMmJD+/fvXaB8wYECS5Omnn17k2CXdteaqq65KaWlpVlttteywww5Zd911c+edd9YIC2244YYZP378AkfLli2/d34AAFY+dsQBAAAAAICVzGabbZYk6d69e7baaqt06tQpd9111wLhk6W1995759e//nX++te/5rjjjsvw4cPTv3//NG7cuEa/tdZaa4Gxa621VqZPn54kmTlzZj766KOF7giTJNOnT1/sXWHWXXfdPPLII5k7d24aNGiwyH6ffPJJqqqqFgi6lJWVpX79+tXhooX5zzqrqqq+s6Z99tknJ510UkpLS9O6des0a9ZsgT4NGjRIly5dvnMeAABWHYI4AAAAAACwEttss81SWlqat956q2hzNmzYMAcccECGDx+eHj16ZMKECbnssssW6Pf+++8vtG3ttddOkjRr1iwtWrTIqFGjFrrOwoI8i9KrV68MGzYsY8aMya677rrIfk2bNk2hUFigtlmzZuXLL79caFjmG+PHj1/sepKvH+MlZAMAwLd5NBUAAAAAAKzExo0bl3nz5qVt27ZLPLZevXqZO3fuQs8dfvjhmTBhQk444YS0a9cu22233QJ9HnvsscyaNav69aOPPpqPPvooW2+9dZKkd+/e+eCDD1KvXr106dJlgaNevXqLXWv//v3TunXrnH766fn0008XOP/KK69k2rRpadSoUTp16pQ77rijxvnbb789SdKjR49FrvGf9QEAwJKyIw4AAAAAAKwk9txzz3Tp0iWbbbZZGjZsmJdffjkXXHBBNttss/Tr16+63znnnJNzzjkn//rXv9KmTZtFztehQ4c8+uijefjhh7PGGmtkgw02yJprrpkk2XzzzbPVVlvlySefzNChQxc6vnHjxtlll11y6qmn5pNPPskpp5ySrl27pk+fPkmSnXbaKbvttlv69u2bk08+OZtttlk+++yzvPbaa3nrrbfy5z//ebGvvUGDBrn99tvTt2/fdOnSJSeccEI22WSTzJ49Ow899FCuu+66jBs3Lq1bt85ZZ52Vfv365cADD8yBBx6YSZMm5fTTT89ee+2VTTfddLHXLIYvvvgizz777ALtrVu3zrrrrrtcawEAYNkTxAEAAAAAgJVE165dc9ttt+X888/P/PnzU15ensMPPzy/+c1vauwuM3/+/FRWVqaqquo75xsyZEiOOuqo7LXXXvn0008zfPjwDBw4sPr8HnvskRdffDEHH3zwQsfvscceWW+99TJo0KB8/PHH2WmnnXLNNdfU6HPHHXfk/PPPz1VXXZUpU6akrKwsHTt2zCGHHLLE19+tW7e89NJLGTp0aIYMGZIZM2akUaNG6dq1a0aMGJHNN988SfKLX/wiI0eOzDnnnJPdd989zZo1yxFHHLHIQNGy9Pbbb6d79+4LtJ977rn53e9+t9zrAQBg2SpUfd9d+Cpm9uzZKSsry6xZs9KkSZPaLmfVVijUdgVQHD+uj0lWYYWda7sCKJ6q0bVdARSJe2ZWFe6ZWUW4Z2ZV4X552VuW3zPPmzcvH3zwQVq0aJHS0tKizr00tt9++5SVleW+++5b4Fx5eXl+/vOf54orrqiFylZdK9rPAAAAS8aOOAAAAAAAQA3PP/98nnrqqTz11FN5+OGHa7scAABYaQjiAAAAAAAANWy11VYpKyvL73//+/Tu3bu2ywEAgJWGIA4AAAAAAFBD1WI8evKdd95Z9oUAAMBKpqS2CwAAAAAAAAAAgFWBIA4AAAAAAAAAABSBIA4AAAAAAAAAABRB3douAAAAAAAAqKmioqK2S6CW+LcHAFi5CeIAAAAAAMAKoqSkJIVCIR9//HFtl0ItKhQKKSnxUAMAgJWRIA4AAAAAAKwg6tSpk7XWWivz58+v7VKoRSUlJalTp05tlwEAwFIQxAEAAAAAgBVInTp1hDAAAGAlZV9DAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoAkEcAAAAAAAAAAAoghUiiHPllVemvLw8DRo0yNZbb53nnnvuO/uPHDky7du3T4MGDbLppptm1KhRy6lSAAAAAAAAAABYuFoP4tx2220ZPHhwzjzzzLz44ovZfPPN06dPn7z//vsL7f/MM89kv/32y6GHHpqXXnop/fr1S79+/fLqq68u58oBAAAAAAAAAOD/KVRVVVXVZgFbb711ttpqq1xxxRVJkvnz56d169Y59thjc+qppy7Qf8CAAfnss89y//33V7d169YtnTp1yjXXXPO9682ePTtlZWWZNWtWmjRpUrwLYUGFQm1XAMVRux+TUDSFnWu7AiieqtG1XQEUiXtmVhXumVlFuGdmVeF+ednzPTMAALAotbojzldffZUXXnghvXv3rm4rKSlJ7969M3bs2IWOGTt2bI3+SdKnT59F9gcAAAAAAAAAgOWhbm0uPnPmzFRWVqZly5Y12lu2bJmJEycudMyMGTMW2n/GjBkL7f/ll1/myy+/rH49a9asJF//xQLAYvF5waqiorYLgOLx0QywgvHBzKrCPTOrCB/Ly9433y/X8obzAADACqhWgzjLw9ChQ3P22Wcv0N66detaqAZYKZWV1XYFAPwHH80AKxgfzAArFB/Ly8+nn36aMm84AADwLbUaxGnevHnq1KmT9957r0b7e++9l1atWi10TKtWrZao/2mnnZbBgwdXv54/f34++uijrLnmmikUCj/wCqD2zJ49O61bt860adM8hxpgBeGzGWDF4nMZYMXjs5lVRVVVVT799NOss846tV0KAACwgqnVIE69evWy5ZZbZsyYMenXr1+Sr4MyY8aMyTHHHLPQMd27d8+YMWNy/PHHV7c9/PDD6d69+0L7169fP/Xr16/R1rRp02KUDyuEJk2a+OIKYAXjsxlgxeJzGWDF47OZVYGdcAAAgIWp9UdTDR48OAcffHC6dOmSrl275pJLLslnn32WQw45JEly0EEHZd11183QoUOTJL/+9a/Ts2fPXHTRRdl1111z66235vnnn8///M//1OZlAAAAAAAAAADwI1frQZwBAwbkgw8+yBlnnJEZM2akU6dOefDBB9OyZcskydSpU1NSUlLdf5tttsktt9yS3/3udzn99NPTrl273H333enYsWNtXQIAAAAAAAAAANR+ECdJjjnmmEU+iurxxx9foG3vvffO3nvvvYyrghVb/fr1c+aZZy7w6DUAao/PZoAVi89lgBWPz2YAAABWdYWqqqqq2i4CAAAAAAAAAABWdiXf3wUAAAAAAAAAAPg+gjgAAAAAAAAAAFAEgjgAAAAAAAAAAFAEgjgAAAAAAAAAAFAEdWu7AAAAAABg5TVz5sxcf/31GTt2bGbMmJEkadWqVbbZZpsMHDgwLVq0qOUKAQAAYPmxIw6sQL744os8/fTTef311xc4N3fu3Nx00021UBUAAKw43njjjQwfPjwTJ05MkkycODFHHXVUfvnLX+bRRx+t5eoAfnzGjx+fjTbaKJdddlnKysqy/fbbZ/vtt09ZWVkuu+yytG/fPs8//3xtlwkAAADLTaGqqqqqtosAkjfffDM777xzpk6dmkKhkB49euTWW2/N2muvnSR57733ss4666SysrKWKwXgG9OmTcuZZ56Z66+/vrZLAfhRePDBB7P77runUaNG+fzzz3PXXXfloIMOyuabb5758+fniSeeyOjRo7PjjjvWdqkAPxrdunXL5ptvnmuuuSaFQqHGuaqqqgwaNCj/+Mc/Mnbs2FqqEAAAAJYvO+LACuKUU05Jx44d8/7772fSpElp3Lhxtt1220ydOrW2SwNgET766KPceOONtV0GwI/GOeeck5NOOikffvhhhg8fnv333z+HH354Hn744YwZMyYnnXRSzj///NouE+BH5eWXX84JJ5ywQAgnSQqFQk444YRMmDBh+RcGAAAAtaRubRcAfO2ZZ57JI488kubNm6d58+a57777cvTRR2e77bbLY489ltVXX722SwT40bn33nu/8/zbb7+9nCoBIElee+216se17rPPPvn//r//L/37968+f8ABB2T48OG1VR7Aj1KrVq3y3HPPpX379gs9/9xzz6Vly5bLuSoAAACoPYI4sIL44osvUrfu//tfslAo5Oqrr84xxxyTnj175pZbbqnF6gB+nPr165dCoZDvepLnwv7yF4Bl55vP3ZKSkjRo0CBlZWXV5xo3bpxZs2bVVmkAP0q/+c1vcsQRR+SFF17IT3/60+rQzXvvvZcxY8bkuuuuy4UXXljLVQIAAMDyI4gDK4j27dvn+eefT4cOHWq0X3HFFUmSX/ziF7VRFsCP2tprr52rrroqu++++0LPT5gwIVtuueVyrgrgx6u8vDz//Oc/s+GGGyZJxo4dm/XXX7/6/NSpU7P22mvXVnkAP0q/+tWv0rx58/zpT3/KVVddlcrKyiRJnTp1suWWW+aGG27IPvvsU8tVAgAAwPJTUtsFAF/bY489MmLEiIWeu+KKK7Lffvt9544MABTflltumRdeeGGR579vtxwAiuuoo46q/gVvknTs2LHGrpIPPPBAdtxxx9ooDeBHbcCAAXn22Wfz+eef59133827776bzz//PM8++6wQDgAAAD86hSq/PQIAWKinnnoqn332Wfr27bvQ85999lmef/759OzZczlXBgAAAAAAwIpIEAcAAAAAAAAAAIrAo6kAAAAAAAAAAKAIBHEAAAAAAAAAAKAIBHEAAAAAAAAAAKAIBHEAAGAFccMNN6Rp06aL3f/xxx9PoVDIJ598ssxqAgAAAAAAFp8gDgAALKWxY8emTp062XXXXZd4bHl5eS655JIabQMGDMibb7652HNss802mT59esrKypIseZDnP5199tk58MADF3rurLPOSqFQSKFQSN26ddO8efNsv/32ueSSS/Lll18u0Tq1FSA666yz0qlTp+W6JgAAAAAAPy6COAAAsJSGDRuWY489Nk8++WT+/e9//+D5GjZsmLXWWmux+9erVy+tWrVKoVD4wWsnyT333JNf/OIXizz/k5/8JNOnT8/UqVPz2GOPZe+9987QoUOzzTbb5NNPPy1KDQAAAAAAsDITxAEAgKUwZ86c3HbbbTnqqKOy66675oYbbligz3333ZetttoqDRo0SPPmzbPHHnskSXr16pUpU6bkhBNOqN5lJqm5o82bb76ZQqGQiRMn1pjzT3/6UzbccMMkNXeWefzxx3PIIYdk1qxZ1XOeddZZOeecc9KxY8cFauvUqVN+//vfV7+eNm1aXnvttfTt23eR11y3bt20atUq66yzTjbddNMce+yxeeKJJ/Lqq6/mD3/4Q3W/v/zlL+nSpUsaN26cVq1aZf/998/777+fJHnnnXeyww47JEnWWGONFAqFDBw4MEny4IMPpkePHmnatGnWXHPN/PznP8+//vWv6nm/+uqrHHPMMVl77bXToEGDtGnTJkOHDq0+/8knn+Swww5LixYt0qRJk+y44455+eWXq9/bs88+Oy+//HL1+7OwfzMAAAAAAPghBHEAAGAp3H777Wnfvn023njjHHjggbn++utTVVVVff7vf/979thjj/zsZz/LSy+9lDFjxqRr165Jkr/97W9Zb731cs4552T69OmZPn36AvNvtNFG6dKlS26++eYa7TfffHP233//Bfpvs802ueSSS9KkSZPqOX/zm9/kl7/8Zd54442MHz++uu9LL72Uf/zjHznkkEOq2+6999706tUrTZo0WaL3oX379tlll13yt7/9rbpt3rx5Offcc/Pyyy/n7rvvzjvvvFMdtmndunXuvPPOJMmkSZMyffr0XHrppUmSzz77LIMHD87zzz+fMWPGpKSkJHvssUfmz5+fJLnsssty77335vbbb8+kSZNy8803p7y8vHrdvffeO++//34eeOCBvPDCC9liiy3y05/+NB999FEGDBiQE088sXpXn+nTp2fAgAFLdK0AAAAAAPB96tZ2AQAAsDIaNmxYDjzwwCRJ3759M2vWrDzxxBPp1atXkuS8887Lvvvum7PPPrt6zOabb54kadasWerUqVO9Y8yiHHDAAbniiity7rnnJvl6l5wXXnghf/3rXxfoW69evZSVlaVQKNSYs1GjRunTp0+GDx+erbbaKkkyfPjw9OzZM23btq3ud88992T33Xdfqveiffv2GT16dPXrX/7yl9X/3bZt21x22WXZaqutMmfOnDRq1CjNmjVLkqy11lrVOwAlyV577VVj3uuvvz4tWrTI66+/no4dO2bq1Klp165devTokUKhkDZt2lT3ffrpp/Pcc8/l/fffT/369ZMkF154Ye6+++7ccccdOeKII9KoUaPqXX0AAAAAAGBZsCMOAAAsoUmTJuW5557Lfvvtl+TrRzYNGDAgw4YNq+4zYcKE/PSnP/1B6+y7775555138uyzzyb5ejecLbbYIu3bt1+ieQ4//PCMGDEic+fOzVdffZVbbrmlRlhm9uzZeeKJJ/KLX/xiqeqsqqqqfrxWkrzwwgvZbbfdsv7666dx48bp2bNnkmTq1KnfOc8///nP7Lfffmnbtm2aNGlSvdvNN+MGDhyYCRMmZOONN85xxx1XI/zz8ssvZ86cOVlzzTXTqFGj6mPy5Mk1Hm8FAAAAAADLkh1xAABgCQ0bNiwVFRVZZ511qtuqqqpSv379XHHFFSkrK0vDhg1/8DqtWrXKjjvumFtuuSXdunXLLbfckqOOOmqJ59ltt91Sv3793HXXXalXr17mzZuX/v37V59/4IEHsskmm6R169ZLVecbb7yRDTbYIMnXj5fq06dP+vTpk5tvvjktWrTI1KlT06dPn3z11VffW2ebNm1y3XXXZZ111sn8+fPTsWPH6nFbbLFFJk+enAceeCCPPPJI9tlnn/Tu3Tt33HFH5syZk7XXXjuPP/74AvN+e9cdAAAAAABYlgRxAABgCVRUVOSmm27KRRddlJ133rnGuX79+mXEiBEZNGhQNttss4wZMyaHHHLIQuepV69eKisrv3e9Aw44ICeffHL222+/vP3229l3330X2XdRc9atWzcHH3xwhg8fnnr16mXfffetERT6IY+lmjhxYh588MGcdtpp1a8//PDDnH/++dXBnueff36BOpPUqPXDDz/MpEmTct1112W77bZL8vXjpv5TkyZNMmDAgAwYMCD9+/dP375989FHH2WLLbbIjBkzUrdu3eqddP7T4r7nAAAAAACwtDyaCgAAlsD999+fjz/+OIceemg6duxY49hrr72qH0915plnZsSIETnzzDPzxhtv5JVXXskf/vCH6nnKy8vz5JNP5t13383MmTMXud6ee+6ZTz/9NEcddVR22GGHGrvw/Kfy8vLMmTMnY8aMycyZM/P5559XnzvssMPy6KOP5sEHH6zxWKqKioo88MADi/VYqoqKisyYMSP//ve/88orr+Tyyy9Pz54906lTp5x00klJkvXXXz/16tXL5Zdfnrfffjv33ntvzj333BrztGnTJoVCIffff38++OCDzJkzJ2ussUbWXHPN/M///E/eeuutPProoxk8eHCNcRdffHFGjBiRiRMn5s0338zIkSPTqlWrNG3aNL1790737t3Tr1+/jB49Ou+8806eeeaZ/Pa3v60OApWXl2fy5MmZMGFCZs6cmS+//PJ7rxkAAAAAAJaEIA4AACyBYcOGpXfv3ikrK1vg3F577ZXnn38+//jHP9KrV6+MHDky9957bzp16pQdd9wxzz33XHXfc845J++880423HDDtGjRYpHrNW7cOLvttltefvnlHHDAAd9Z2zbbbJNBgwZlwIABadGiRf74xz9Wn2vXrl222WabtG/fPltvvXV1+xNPPJFGjRpliy22+N5rf+2117L22mtn/fXXT69evXL77bfntNNOy1NPPZVGjRolSVq0aJEbbrghI0eOzCabbJLzzz8/F154YY151l133Zx99tk59dRT07JlyxxzzDEpKSnJrbfemhdeeCEdO3bMCSeckAsuuGCB9+KPf/xjunTpkq222irvvPNORo0alZKSkhQKhYwaNSrbb799DjnkkGy00UbZd999M2XKlLRs2TLJ1/8+ffv2zQ477JAWLVpkxIgR33vNAAAAAACwJApVVVVVtV0EAACwbFVVVaVdu3Y5+uija+w0c9xxx6WioiJXXXVVLVYHAAAAAACrhrq1XQAAALBsffDBB7n11lszY8aMHHLIITXOdezYMd27d6+lygAAAAAAYNViRxwAAFjFFQqFNG/ePJdeemn233//2i4HAAAAAABWWXbEAQCAVZzsPQAAAAAALB8ltV0AAAAAAAAAAACsCgRxAAAAAAAAAACgCARxAAAAAAAAAACgCARxAAAAAAAAAACgCARxAAAAAAAAAACgCARxAAAAAAAAAACgCARxAAAAAAAAAACgCARxAAAAAAAAAACgCARxAAAAAAAAAACgCP5/yX3nO4brTi4AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACOIAAANLCAYAAADmKKApAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd5gV5f0/7tdSpC4rvYkICDZUYsNeUVAMYhcVATUaezfBXqLYo2I39th7Q8FY87ErUWPHrqAUlSIgdX9/+ON8XVmaHFyj931de8mZeWbm/czMmbNyXjxPSXl5eXkAAAAAAAAAAIDFUq2qCwAAAAAAAAAAgN8CQRwAAAAAAAAAACgCQRwAAAAAAAAAACgCQRwAAAAAAAAAACgCQRwAAAAAAAAAACgCQRwAAAAAAAAAACgCQRwAAAAAAAAAACgCQRwAAAAAAAAAACgCQRwAAAAAAAAAACgCQRwAAJaYTz75JCUlJbn++uur5PglJSU55ZRTquTY/2uq8lr1798/yy233C9+XAAAAAAAKDZBHACA37kpU6bklFNOyVNPPVXVpfALuOWWW3LhhRdWdRn8jzvzzDNz3333VXUZAAAAAAC/OoI4AAC/c1OmTMmpp54qiPM7Ma8gTtu2bTN16tT07dv3F6/p6quvznvvvfeLH5efTxAHAAAAAKBygjgAAEBKSkpSu3btVK9e/Rc/ds2aNVOrVq1f/Li/JpMnT67qEqrc999/n9mzZ1d1GQvkWgEAAAAA8yOIAwCwEEaOHJl99tknrVq1Sq1atdKuXbsccMABmT59eqHN+PHjc/jhh6dNmzapVatWll9++Zx99tkVvlj+5JNPUlJSkvPOOy+XXnpp2rdvn7p162arrbbK559/nvLy8px++ulZZpllUqdOnWy33Xb55ptv5qrnkUceyUYbbZR69eqltLQ0PXv2zFtvvVWhTf/+/VO/fv2MHDkyvXv3Tv369dO0adMcffTRmTVrVqGepk2bJklOPfXUlJSUpKSkJKeccsoSOIs/eOONN9K/f/+0b98+tWvXTosWLbL33nvn66+/rtDulFNOSUlJST744IP0798/Sy+9dMrKyjJgwIBMmTKlQttp06bliCOOSNOmTVNaWppevXrliy++WOiaxowZk3322SfNmzdP7dq1s/rqq+eGG26Yq93s2bNz0UUXZdVVV03t2rXTtGnT9OjRI6+88kqFdv/85z+zzjrrpG7dumnYsGE23njjDBs2rLB+Xud4ueWWS//+/Quvr7/++pSUlOSZZ57J/vvvn8aNG6dBgwbZa6+98u2331bY9v7770/Pnj0L92iHDh1y+umnF651kmy66aZ5+OGH8+mnnxau9XLLLZfk/92b119/fYX9PvHEE4V7bemll852222Xd955p0KbRblWlenfv3+hjh/Xct555+Wqq65Khw4dUqtWray99tp5+eWXF7i/GTNm5NRTT03Hjh1Tu3btNG7cOBtuuGEee+yxCu3uu+++dO7cObVr107nzp1z7733zlXLU089lZKSkrlGjKrsfC3qvf32229n9913T8OGDbPhhhsW1v/zn//MmmuumTp16qRRo0bZbbfd8vnnny+w33P2+/7772fPPfdMWVlZmjZtmhNPPDHl5eX5/PPPs91226VBgwZp0aJFzj///Ln2MW3atJx88slZfvnlU6tWrbRp0ybHHntspk2bVmhTUlKSyZMn54YbbijcRz++b0eOHJm99947zZs3T61atbLKKqvk2muvrXCcOef1tttuywknnJDWrVunbt26mThx4lw1nXzyyalZs2bGjh0717r99tsvSy+9dL7//vvCsoV5PhbrWgEAAAAA/FSNqi4AAODXbtSoUVlnnXUyfvz47LfffllxxRUzcuTI3HXXXZkyZUqWWmqpTJkyJZtssklGjhyZ/fffP8suu2yee+65DBw4MF9++eVcUwHdfPPNmT59eg455JB88803Oeecc7LLLrtk8803z1NPPZW//OUv+eCDDzJ48OAcffTRFb7Evummm9KvX7907949Z599dqZMmZLLL788G264Yf7zn/9UCBHMmjUr3bt3T9euXXPeeeflX//6V84///x06NAhBxxwQJo2bZrLL788BxxwQLbffvvssMMOSZLVVlttiZ3Pxx57LB999FEGDBiQFi1a5K233spVV12Vt956Ky+88EJKSkoqtN9ll13Srl27DBo0KMOHD88//vGPNGvWLGeffXahzb777pt//vOf2X333bP++uvniSeeSM+ePReqnqlTp2bTTTfNBx98kIMPPjjt2rXLnXfemf79+2f8+PE57LDDCm332WefXH/99dl6662z7777ZubMmfn3v/+dF154IWuttVaSHwJNp5xyStZff/2cdtppWWqppfLiiy/miSeeyFZbbfWzztnBBx+cpZdeOqecckree++9XH755fn0008LYYbkh9BO/fr1c+SRR6Z+/fp54oknctJJJ2XixIk599xzkyTHH398JkyYkC+++CJ///vfkyT169ef53H/9a9/Zeutt0779u1zyimnZOrUqRk8eHA22GCDDB8+vMK9lizctVoUt9xySyZNmpT9998/JSUlOeecc7LDDjvko48+Ss2aNee53SmnnJJBgwZl3333zTrrrJOJEyfmlVdeyfDhw7PlllsmSYYNG5Ydd9wxK6+8cgYNGpSvv/46AwYMyDLLLPOzak0W/d7eeeed07Fjx5x55pkpLy9Pkpxxxhk58cQTs8suu2TffffN2LFjM3jw4Gy88cb5z3/+k6WXXnqBdey6665ZaaWVctZZZ+Xhhx/O3/72tzRq1ChXXnllNt9885x99tm5+eabc/TRR2fttdfOxhtvnOSHoFmvXr3yf//3f9lvv/2y0kor5b///W/+/ve/5/333y9MRXXTTTcVzu1+++2XJOnQoUOSZPTo0Vl33XVTUlKSgw8+OE2bNs0jjzySffbZJxMnTszhhx9eodbTTz89Sy21VI4++uhMmzYtSy211Fz96du3b0477bTcfvvtOfjggwvLp0+fnrvuuis77rhjateuXahtYZ6PxbhWAAAAAACVKgcAYL722muv8mrVqpW//PLLc62bPXt2eXl5efnpp59eXq9evfL333+/wvq//vWv5dWrVy//7LPPysvLy8s//vjj8iTlTZs2LR8/fnyh3cCBA8uTlK+++urlM2bMKCzv06dP+VJLLVX+/fffl5eXl5dPmjSpfOmlly7/05/+VOE4X331VXlZWVmF5f369StPUn7aaadVaPuHP/yhfM011yy8Hjt2bHmS8pNPPnlRTstCmdPf6667rrBsypQpc7W79dZby5OUP/PMM4VlJ598cnmS8r333rtC2+233768cePGhdevvfZaeZLyAw88sEK73XfffaH6deGFF5YnKf/nP/9ZWDZ9+vTy9dZbr7x+/frlEydOLC8vLy9/4oknypOUH3rooXPtY859MGLEiPJq1aqVb7/99uWzZs2qtE15efk862rbtm15v379Cq+vu+668iTla665Zvn06dMLy88555zyJOX3339/YVll53X//fcvr1u3buH+KS8vL+/Zs2d527Zt52pb2bXq0qVLebNmzcq//vrrwrLXX3+9vFq1auV77bVXYdnCXqt56devX4Wa5tTSuHHj8m+++aaw/P777y9PUv7ggw/Od3+rr756ec+ePefbpkuXLuUtW7as8D4cNmxYeZIKtTz55JPlScqffPLJCtsX497u06dPhbaffPJJefXq1cvPOOOMCsv/+9//lteoUWOu5T81Z7/77bdfYdnMmTPLl1lmmfKSkpLys846q7D822+/La9Tp06F++2mm24qr1atWvm///3vCvu94oorypOUP/vss4Vl9erVq7DtHPvss095y5Yty8eNG1dh+W677VZeVlZWOEdzzmv79u0rPW8/td5665V37dq1wrJ77rmnwrVZlOfj4l4rAAAAAIB5MTUVAMB8zJ49O/fdd1/++Mc/FkY8+bE5oybceeed2WijjdKwYcOMGzeu8NOtW7fMmjUrzzzzTIXtdt5555SVlRVed+3aNUmy5557pkaNGhWWT58+PSNHjkzywygO48ePT58+fSocp3r16unatWuefPLJuWr885//XOH1RhttlI8++uhnnpHFV6dOncKfv//++4wbNy7rrrtukmT48OFzta+s/q+//rowhc2QIUOSJIceemiFdj8deWNehgwZkhYtWqRPnz6FZTVr1syhhx6a7777Lk8//XSS5O67705JSUlOPvnkufYx5z647777Mnv27Jx00kmpVq1apW1+jv3226/CCDAHHHBAatSoUeh7UvG8Tpo0KePGjctGG22UKVOm5N13313kY3755Zd57bXX0r9//zRq1KiwfLXVVsuWW25Z4dhzLOhaLapdd901DRs2rLC/JAu8f5deeum89dZbGTFiRKXr5/StX79+Fd6HW265ZVZeeeWfVWuy+Pf2Pffck9mzZ2eXXXap8P5u0aJFOnbsWOn7uzL77rtv4c/Vq1fPWmutlfLy8uyzzz6F5UsvvXRWWGGFCufyzjvvzEorrZQVV1yxwvE333zzJFng8cvLy3P33Xfnj3/8Y8rLyyvso3v37pkwYcJc56Ffv34Vztu87LXXXnnxxRfz4YcfFpbdfPPNadOmTTbZZJMki/Z8XNxrBQAAAAAwL6amAgCYj7Fjx2bixInp3LnzfNuNGDEib7zxRpo2bVrp+jFjxlR4veyyy1Z4PScM0KZNm0qXf/vtt4XjJCl8Mf5TDRo0qPC6du3ac9XUsGHDwv4W1axZszJ27NgKyxo1alTpdDLz8s033+TUU0/NbbfdNtd5mTBhwlztf3qu5gQzvv322zRo0CCffvppqlWrVpgaZ44VVlhhoer59NNP07Fjx7mCMyuttFJhfZJ8+OGHadWqVYVQyk99+OGHqVat2mKFOSrTsWPHCq/r16+fli1b5pNPPikse+utt3LCCSfkiSeemCv4Utl5XZA5/a7sPK600koZOnRoJk+enHr16hWWL+haLar57W9+TjvttGy33Xbp1KlTOnfunB49eqRv376FKdfm9O2n5zX5ob+VBTEWxqLe2+3atavwesSIESkvL6+0riTznY7rxyp7vtSuXTtNmjSZa/nXX39d4fjvvPPOQj/Hfmrs2LEZP358rrrqqlx11VULtY8fn4P5PV923XXXHH744bn55ptz0kknZcKECXnooYdyxBFHFEJui/J8XNxrBQAAAAAwL4I4AABFMHv27Gy55ZY59thjK13fqVOnCq+rV69eabt5LS8vLy8cJ0luuummtGjRYq52Px5NZ377+7k+//zzub6QfvLJJ7Ppppsu9D522WWXPPfccznmmGPSpUuX1K9fP7Nnz06PHj0K/fuxBZ2T35JZs2b9rO3Gjx+fTTbZJA0aNMhpp52WDh06pHbt2hk+fHj+8pe/VHpel4RiX6ufu7+NN944H374Ye6///4MGzYs//jHP/L3v/89V1xxRYXRYhbGvEYyquxaLeq9/dORYGbPnp2SkpI88sgjlfa9fv36C1VzZdsuzLmcPXt2Vl111VxwwQWVtv1pUPCn5vRxzz33TL9+/SptMycMNcePz8H8ni8NGzbMtttuWwji3HXXXZk2bVr23HPPuY6/MM/Hxb1WAAAAAADzIogDADAfTZs2TYMGDfLmm2/Ot12HDh3y3XffpVu3bku0njmjvjRr1qxox1qUKZNatGiRxx57rMKy1VdffaG3//bbb/P444/n1FNPzUknnVRYPq8phBZG27ZtM3v27Hz44YcVRm957733Fnr7N954I7Nnz64wKs6c6Zzatm2b5IdzP3To0HzzzTfzHBWnQ4cOmT17dt5+++106dJlnsds2LBhxo8fX2HZ9OnT8+WXX1bafsSIEdlss80Kr7/77rt8+eWX2WabbZIkTz31VL7++uvcc8892XjjjQvtPv7447n2tbDXe06/KzuP7777bpo0aVJhNJxfm0aNGmXAgAEZMGBAvvvuu2y88cY55ZRTsu+++xb6Vtl999P+zhmF56fXa86oOnMU497u0KFDysvL065du7nCe7+EDh065PXXX88WW2yxwPuksvVNmzZNaWlpZs2a9bOeTwt6vuy1117Zbrvt8vLLL+fmm2/OH/7wh6yyyioV6k8W/HxcEs8hAAAAAIA5qi24CQDA71e1atXSu3fvPPjgg3nllVfmWj9nNIlddtklzz//fIYOHTpXm/Hjx2fmzJlFqad79+5p0KBBzjzzzMyYMWOu9T+d1mVh1K1bN8ncQYPK1K5dO926davwMyeosDDmjMrx0xFNLrzwwoXex09tvfXWSZKLL774Z+1zm222yVdffZXbb7+9sGzmzJkZPHhw6tevn0022SRJsuOOO6a8vDynnnrqXPuY05/evXunWrVqOe200+YaVePHfe7QoUOeeeaZCuuvuuqqeY6Ic9VVV1W43pdffnlmzpxZ6Htl53X69Om57LLL5tpXvXr1FmqqqpYtW6ZLly654YYbKtwbb775ZoYNG1YIAf0a/Xi6peSHkWSWX375TJs2LUnFvv34XDz22GN5++23K2zbtm3bVK9efa7r9dNzW4x7e4cddkj16tVz6qmnzrWf8vLyufpVbLvssktGjhyZq6++eq51U6dOzeTJkwuv69WrN9czo3r16tlxxx1z9913VxpeXNDzaUHPl6233jpNmjTJ2WefnaeffrrCaDjJwj8fl8RzCAAAAABgDiPiAAAswJlnnplhw4Zlk002yX777ZeVVlopX375Ze6888783//9X5Zeeukcc8wxeeCBB7Ltttumf//+WXPNNTN58uT897//zV133ZVPPvkkTZo0WexaGjRokMsvvzx9+/bNGmuskd122y1NmzbNZ599locffjgbbLBBLrnkkkXaZ506dbLyyivn9ttvT6dOndKoUaN07tw5nTt3Xux6K6t/4403zjnnnJMZM2akdevWGTZsWKUjtyysLl26pE+fPrnssssyYcKErL/++nn88cfzwQcfLNT2++23X6688sr0798/r776apZbbrncddddefbZZ3PhhRemtLQ0SbLZZpulb9++ufjiizNixIjCFDb//ve/s9lmm+Xggw/O8ssvn+OPPz6nn356Ntpoo+ywww6pVatWXn755bRq1SqDBg1Kkuy7777585//nB133DFbbrllXn/99QwdOnSe98j06dOzxRZbZJdddsl7772Xyy67LBtuuGF69eqVJFl//fXTsGHD9OvXL4ceemhKSkpy0003VTqF05prrpnbb789Rx55ZNZee+3Ur18/f/zjHys97rnnnputt9466623XvbZZ59MnTo1gwcPTllZWU455ZSFOr9VYeWVV86mm26aNddcM40aNcorr7ySu+66KwcffHChzaBBg9KzZ89suOGG2XvvvfPNN99k8ODBWWWVVfLdd98V2pWVlWXnnXfO4MGDU1JSkg4dOuShhx7KmDFjKhyzGPd2hw4d8re//S0DBw7MJ598kt69e6e0tDQff/xx7r333uy33345+uijF/8EzUPfvn1zxx135M9//nOefPLJbLDBBpk1a1befffd3HHHHRk6dGjWWmutJD/cR//6179ywQUXpFWrVmnXrl26du2as846K08++WS6du2aP/3pT1l55ZXzzTffZPjw4fnXv/6Vb7755mfXV7Nmzey222655JJLUr169fTp06fC+oV9Pi6J5xAAAAAAwByCOAAAC9C6deu8+OKLOfHEE3PzzTdn4sSJad26dbbeeuvCaDJ169bN008/nTPPPDN33nlnbrzxxjRo0CCdOnXKqaeemrKysqLVs/vuu6dVq1Y566yzcu6552batGlp3bp1NtpoowwYMOBn7fMf//hHDjnkkBxxxBGZPn16Tj755CUSxEmSW265JYccckguvfTSlJeXZ6uttsojjzySVq1a/ex9XnvttWnatGluvvnm3Hfffdl8883z8MMPp02bNgvctk6dOnnqqafy17/+NTfccEMmTpyYFVZYIdddd1369+9foe11112X1VZbLddcc02OOeaYlJWVZa211sr6669faHPaaaelXbt2GTx4cI4//vjUrVs3q622Wvr27Vto86c//Skff/xxrrnmmjz66KPZaKON8thjj2WLLbaotMZLLrkkN998c0466aTMmDEjffr0ycUXX1yYHqhx48Z56KGHctRRR+WEE05Iw4YNs+eee2aLLbZI9+7dK+zrwAMPzGuvvZbrrrsuf//739O2bdt5BnG6deuWRx99NCeffHJOOumk1KxZM5tssknOPvvstGvXboHntqoceuiheeCBBzJs2LBMmzYtbdu2zd/+9rccc8wxhTY9evTInXfemRNOOCEDBw5Mhw4dct111+X+++/PU089VWF/gwcPzowZM3LFFVekVq1a2WWXXXLuuefO9R4pxr3917/+NZ06dcrf//73wuhLbdq0yVZbbVUIXi0p1apVy3333Ze///3vufHGG3Pvvfembt26ad++fQ477LAK02VdcMEF2W+//XLCCSdk6tSp6devX7p27ZrmzZvnpZdeymmnnZZ77rknl112WRo3bpxVVlklZ5999mLXuNdee+WSSy7JFltskZYtW861fmGfj0viOQQAAAAAkCQl5ZX9M1kAAKDKXX/99RkwYEBefvnlwkgkLFn9+/fPU089lU8++aSqS6ESr7/+erp06ZIbb7yxQrgNAAAAAODXolpVFwAAAAAL4+qrr079+vWzww47VHUpAAAAAACVMjUVAAAAv2oPPvhg3n777Vx11VU5+OCDU69evaouCQAAAACgUoI4AAAA/KodcsghGT16dLbZZpuceuqpVV0OAAAAAMA8lZSXl5dXdREAAAAAAAAAAPC/rlpVFwAAAAAAAAAAAL8FgjgAAAAAAAAAAFAENaq6gF+j2bNnZ9SoUSktLU1JSUlVlwMAAAAAwK9IeXl5Jk2alFatWqVaNf/eFQAA+H8EcSoxatSotGnTpqrLAAAAAADgV+zzzz/PMsssU9VlAAAAvyKCOJUoLS1N8sP/RDVo0KCKqwEAAAAA4Ndk4sSJadOmTeHvkgEAAOYQxKnEnOmoGjRoIIgDAAAAAECl5vxdMgAAwBwmrwUAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCIQxAEAAAAAAAAAgCKoUdUF8Pv1XEqqugRYbOunvKpLAAAAAAAAAOBXwog4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBDWqugB+vzbYqryqS4DFVj6sqisAAAAAAAAA4NeiykfEufTSS7Pccsuldu3a6dq1a1566aX5tr/zzjuz4oorpnbt2ll11VUzZMiQudq888476dWrV8rKylKvXr2svfba+eyzz5ZUFwAAAAAAAAAAoGqDOLfffnuOPPLInHzyyRk+fHhWX331dO/ePWPGjKm0/XPPPZc+ffpkn332yX/+85/07t07vXv3zptvvllo8+GHH2bDDTfMiiuumKeeeipvvPFGTjzxxNSuXfuX6hYAAAAAAAAAAL9DJeXl5VU2P1DXrl2z9tpr55JLLkmSzJ49O23atMkhhxySv/71r3O133XXXTN58uQ89NBDhWXrrrtuunTpkiuuuCJJsttuu6VmzZq56aabfnZdEydO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AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBII4AAAAAAAAAABQBDWqugAAAAAAAPgtmT59eqZOnVrVZQAAAEVSp06dLLXUUgvVVhAHAAAAAACKZOzYsRk1alRKSkqquhQAAKBIysvL06pVqzRt2nSBbQVxAAAAAACgCKZPn55Ro0alQYMGadasmTAOAAD8BpSXl2fMmDEZNWpUysrKFjgyjiAOAAAAAAAUwdSpU1NSUpJmzZqlXr16VV0OAABQJM2aNcukSZMyderUBQZxqv1CNQEAAAAAwO+CkXAAAOC3ZVF+xxfEAQAAAAAAAACAIhDEAQAAAAAAAKhCQ4YMSUlJScaNG1fVpQCwmARxAAAAAAAAgP8Zn3/+efr3759lllkmSy21VFq0aJHNN988DzzwwEJtP3jw4JSWli7hKhfN5ptvns8++yyNGjWq6lIAWEw1qroAAAAAAAAAgIXx3nvvZaONNkqDBg1yxhlnZI011sj06dPz4IMP5rDDDkuvXr2qusRFNm3atNSuXTtt2rSp6lIAKAIj4gAAAAAAAAD/E/bbb7+UlJRk+PDh6devX1ZdddWsueaaOeWUU/Lyyy8nSU455ZR06tQpderUSYsWLdK3b99MmDAhyQ9TQB166KH57rvvUlJSkpKSkhx11FFJkqlTp2b//fdPs2bNUqdOnay22moZMmRIheNfcMEFadGiRWrXrp2tttoqp5xyylyj65xzzjlp06ZNatasmXbt2uXyyy+vsL6kpCTnnHNOtthii9SpUyfHHXdcpVNTDRs2LGuttVZq166dFi1aZMCAAZk4cWJh/dlnn522bdumVq1aady4cXr06FG8Ew3Az2ZEHAAAAAD4kaPKq7oCWHznV3UBALAEjBkzJv/+97/z17/+NQ0aNJhrfZMmTZIk1atXzwUXXJCOHTvm/fffz6GHHpqDDz44N910UzbffPOcfvrpOfvss/P2228nSWFfAwYMyPvvv5+bbropbdq0ye23357tt98+r776ajp37pzHHnssxxxzTE444YTstNNOGTJkSAYNGlShhptuuinHH398/va3v2WbbbbJ3XffnUMOOSRt2rTJtttuW2h39tln5+STT84ll1ySGjVqZMSIERX28/bbb6d3794ZOHBgrr/++nz11Vc59NBDs/fee+euu+7Kv//97xx//PG57LLLsummm2bcuHF58skni3q+Afh5BHEAAAAAAACAX7133nkn5eXlWWmllebb7sQTTyz8eYUVVsjXX3+dI444IklSu3btlJWVJUmFqaBGjBiRu+66Kx988EGWW265JMmpp56axx57LFdccUUuueSSXHTRRdl4441z6qmnJklWXXXVPP/883n88ccL+/n73/+enXbaKX/5y18KbV566aWcd955FYI422+/fQ499NAKx/+xU089Nb179y70pXPnzrnwwguz9dZbZ8qUKfn4449Tp06d7LLLLll66aXTqVOnrL/++gt3IgFYokxNBQAAAAAAAPzqzZ49e6Ha3X///VlvvfXSrFmz1KtXL3/+858zfvz4TJo0aZ7bDB8+PLNmzcrKK6+cunXrFn5eeumlfPzxx0mSDz/8MGuttVaF7dZee+0Krz/88MNssMEGFZatv/76+eCDDyos++l+fuqtt97KXXfdVaGW7bbbLrNnz857772XXr16pWXLlmnXrl223377XHHFFfPtHwC/HCPiAAAAAAAAAL96q6yySkpKSvLOO+/Ms817772XXXbZJX379s0ZZ5yRpk2b5oknnsjhhx+eadOmpbS0tNLtvvvuu1SvXj0vvPBCqlevXmFdZdNgLa769evPd/2UKVOyxx575Oijj55rXYcOHVK7du289dZbGTJkSB599NGcccYZGTRoUF599dXCFF0AVA0j4gAAAAAAAAC/es2aNcuGG26Ya665JhMnTpxr/bhx4/LCCy9k9uzZufLKK7P55ptn1VVXzciRIyu0W2qppeYaXWedddbJrFmz8uWXX2aVVVap8DNnCqsOHTrk1VdfrbDdK6+8UuF1hw4d8uyzz1ZY9txzz6Vjx46L1NdVV10177333ly1rLLKKqldu3aSpGbNmtluu+1y+eWX56233srIkSMzZMiQRToOAMVnRBwAAAAAAADgf8KVV16ZjTfeOGussUZOPPHErLnmmpkxY0aGDBmSa665JrfccktmzpyZQYMGZccdd8xTTz2VG264ocI+OnTokClTpuSBBx7I2muvnfr162fVVVfNdtttl7333juDBg3KOuusk9GjR2fo0KFZffXVs+uuu+awww5Ljx49csopp2SnnXbKo48+mqeeeiolJSWFfR955JEZMGBA/vCHP2SbbbbJXXfdlWHDhuWBBx5YpH4ed9xx2WSTTdKvX7/8+c9/Tmlpad54440MHTo0N9xwQ2677bZ8+OGH2XzzzdO4cePcd999KS8vzyqrrFKU8wzAz2dEHAAAAAAAAOB/wkorrZRXXnklG2ywQY477risscYa6dGjR5588slccsklWXfddXPqqafm4osvzh/+8IfccsstOeWUUyrso1u3btljjz3Sr1+/tGrVqrD+9ttvzy677JKBAwdm1VVXzc4775xXXnkl7dq1S5JsueWWOffcc3P55ZdnrbXWyrBhw7L//vunVq1ahX3vueeeOeOMMzJ48OD84Q9/yA033JDBgwdnm222WaR+du3aNcOGDcuHH36Ybt26ZZ111smpp56aVq1aJUkaNWqU+++/Pz169Mhqq62Wa665JldffXXWXHPNn39yASiKkvLy8vKqLuLXZuLEiSkrK8uECROWyJyP/KAkw6u6BFhs5VmjqkuAxXZUShbcCH7lzo9fafmNKFm0fx0Hv0rlvaq6Alhsfkfmt8DvyEvWvP4OecKECfn000+z/PLLp27dulVYIQC/lN122y0ffPDBXFNUAfDbMmXKlHzwwQdp27ZtysrK5tvW1FQAAAAAAAAAC+Hkk0/O1ltvndLS0tx33325++67c84551R1WQD8igjiAAAAAAAAACyEl19+OYMHD86UKVOyzDLL5Mwzz8wRRxxR1WUB8CsiiAMAAAAAAACwEIYMGVLVJQDwK1etqgsAAAAAAAAAAIDfAiPiAAAAAMCPPFjVBUARnF/VBQAAAPxOGREHAAAAAAAAAACKQBAHAAAAAAAAAACKwNRUAAAA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ztdff51k7ufAnH3PeU/89a9/TdOmTVO/fv106tQpw4cPn6v+yZMn549//GPKyspSVlaWtdZaK0kKz8BVVlmlMOLbrFmzcsQRR6RFixZp2rRpBgwYUHhfL+gZPL9rtSDz6n/dunUza9asrLLKKllttdXm2m7s2LHZaKON0rBhwzRs2DB9+vSp8ByalwkTJqRr16456KCDklQcxWRB/XzmmWfSqVOn1K9fP3vssUdmz549z+P8dASoHx+nsmfxHPO7VwYOHJjGjRundevWueuuu+Z57MrO3YKeMz+9Z+eY12dEkjz33HNp3759SktL5xppZX79+LFF/T1iq622SqNGjVJWVpatt9668KyaM0rdBRdckKZNm6ZJkyYVnsk/nUZszrN/xIgRWWWVVQqf51tvvfV8j5Mkzz//fNZee+2UlpamZcuWue666yp9vlc2ct6P74t11lknhx9+eDp37px69epl2rRpeeSRR7LKKquktLQ066yzTt5+++15Xeaf/d6pSoI4AAAAAADwO/fVV1+lUaNGadu2bY455pjMnDmz0nbDhg1L48aN07x58yQ/BBjWWGONwvrVVlutMM3Q22+/nVVWWaWwbsUVV0yNGjXyzjvvJEn69u2bvn37Vnqcxx9/PKuvvnratGkzz5r79OmTO+64o/D61ltvzSqrrJL27dsnSV555ZWsscYa+frrr9O3b9/svPPOmTFjRu677768/PLL+eijj/Ltt9/myiuvTN26dRfmNOWhhx7KZZddllGjRuWLL77IBhtskCOOOCLjxo1LzZo1c9ZZZxXavv/++9l///3nua/TTz8933zzTZ544oncfffd+ec//1lY98orr2TjjTfO+PHjs+222+bwww+vsO2TTz6Zt99+O4899ljOP//8vP3222nfvn06d+6c2267rdDujjvuKAQv9t133zRp0iRjxozJGWeckXvvvbfCPl999dWst956GT9+/Fx1Dx06tDDVw5QpU9KxY8ecdtppef755/PKK6/kvffey+uvv57zzjsvSdKxY8dMmjQpHTt2XKjz+lP/93//l3fffTe33nprTjjhhJx77rl5/vnn88wzz2Tw4MGFe2h+NRxxxBE57LDD8t133+Wtt95Kt27dstJKK+W8887LOuuskylTpuSDDz5Ikuyyyy5ZaaWVMnr06AwePDh/+tOfKkwfdf/99+eee+7JJ598kvfeey9XX311kuTpp5/OX/7yl9xyyy0ZM2ZMOnXqlH322Weu/nTv3j333HNPYeSpq666aqHPRbVq1XLDDTfkH//4R1544YWccMIJKS0tzdFHH50k2X///fP+++//rPM8atSolJaWZty4cenTp0/23HPPvPfee/nss89y4okn5rDDDiu03WWXXdKyZcuMHDkyDz30UE477bS8+OKLmThxYo4//vgMGzYskydPztChQ9O+ffscfPDB6d27dw4//PBMmTIlN998c0aPHp2dd945AwcOzLhx47L11lund+/eFQI1ld3byfyv9U+VlZXlrrvuysSJE3PeeefloIMOyueff15Y/+CDD+bCCy/M2LFjM2vWrAwaNCjJD++7448/Prfeems+/fTTuQJwPza/vtx+++1p2bJlHnjggUyZMiV//vOfC/uv7H09a9asbLvtttlyyy0zduzYXH311dl3333zxRdfFI73wAMP5Jlnnqn0Wj/22GM5+uijc9lll2XixIm54447CqHLlVZaKa+88kq+/vrrbLrppvOcquWKK67IFVdckbvvvjsTJ07M5Zdfnlq1aiX5Icjyzjvv5KuvvkqrVq1y4IEHVtj28ccfz5tvvpmnn3461113Xa699to89thj+eKLLzJjxoxCiOy+++7LeeedlwceeCCffvpppk6dOt9n5ByvvfZarr/++gwfPrzQv6ZNm87V7rLLLsuUKVMyatSojBs3LmeccUaSH54nSfLWW28VRny76KKL8uCDD+a5557Lm2++mddffz0nnHBCYV+Lc63mZX79nzJlSqHGOSGqH5s9e3YOPPDAjBo1Kq+99tp87/85vv3222y22WZZb731cumll1baZl79/P7777PLLrtk3333zddff52VV145r7322gL7WJnKnsVJ5nuv3Hnnnbnmmmvy1FNP5fXXX8/DDz88z/3/9NwtzHPmx/fsj83rMyL54fP/2Wefzeuvv54HH3wwDz300AL7UZlF+T1i++23zyeffJKPPvoo3333XSGInPxwL7755pv5/PPPc/XVV+fYY4/N+PHj53stOnbsmNdee63wef7II4/M9zhff/11evbsmd133z3jxo3Lq6++mlVXXbXS5/vCuOeee3L77bdn/Pjx+eKLL7L77rvnggsuyLfffpvtttsuu+yyS6XbLc57pyoJ4gAAAAAAwO/Yqquumpdeeiljx47Nvffem/vuuy9/+9vf5mr35Zdf5uCDD87JJ59cWDZlypQsvfTShddlZWWFEW8mT56cBg0aVNhHvXr1Cv9S/KabbspNN91UaU1ff/11hSl8/v3vf6e0tDT169cvjG6w55575rXXXiuMQHL77bcXQidJ0rx58xx77LGpVatWBg4cmJkzZ+bpp59OzZo1M3ny5LzxxhupVq1aNthgg4UeKWjbbbfNmmuumaWXXjrdunVL+/bt071799SuXTu9evXKm2++uVD7WXnllbP11lunZs2a6dy5c3bcccf8+9//Lqxv37599ttvv9SoUSP9+vXLu+++W2H7448/vjDiwworrFAYHaJPnz65/fbbkyRffPFFhg8fnj333DMzZ87MsGHDMmjQoNStWzfdunUrfBk6R5s2bXLIIYekevXqqVev3gL7cNNNN+Vvf/tbWrVqlSZNmuSII46YK9zzcw0cODClpaXZdtttU69eveyxxx5p1qxZunTpkk6dOuXVV19dYA01a9bMBx98kDFjxqRp06ZZf/31Kz3Whx9+mDfffDPnn39+6tSpk2222Sabb755hS8W99prr3Tq1ClNmjTJlltumddffz1JctVVV2XvvffOOuusk1q1amXQoEH517/+VfRpNzp27JiTTz45u+22W6688spcf/31qVZt8b/iq1OnTk466aTUrFkze+yxR7766qucccYZqV27dvbee+98+eWXGTduXD7//PO8+OKLufjii1OnTp106dIl22+/fSEIV1JSktdeey1Tp05Np06dsuKKK1Z6vHvuuScrrLBC9tprr9SqVSsnn3xypk6dmmeeeabQZl739qLcb1tvvXVWW221VK9ePTvvvHM6depUIVSz7bbbFkak6N27d+F9e9ttt6VHjx7ZbLPNUq9evZx++unzPHcL05efmtf7+umnn860adNy/PHHp2bNmtliiy3StWvXCv076KCDsswyy1T63rzmmmvSt2/fbLnllqlevXq6dOmStm3bJvnh3m3VqlVq1aqVM888M++//34mTJgw1z5uuummHHHEEVlrrbVSvXr1bLDBBoVn+7777pvGjRunXr16OeGEE/LKK69U2HbgwIFp2LBh6tWrl2uvvTZHHXVUYUSik046qRBYuPXWW7PnnntmjTXWSIMGDXLuuefmoYcemu9IK8kP7+Xp06fn9ddfz6xZs9KlS5dKQ5o1a9bMt99+m3fffTc1a9YsTLFYmTvvvDOHHnpo2rdvn+bNm+eEE07IPffcU1i/ONdqXn5u/5MfPs/69OmTOnXqpG3bttl7773nGxQbP358Ntlkk3Tr1i0XXnjhPNvNq59PPvlkqlevXuEztEmTJgusszLzehbP7165/fbb07dv36y66qpp0qRJ/vKXvyz08Rbmvfnje3ZhHXLIIWnZsmXat2+fddddtzDKzvz6UZlF+T3igAMOSIMGDdK4ceMcccQRc41oNWjQoNSuXTvbb799ateuXQipLqp5HefOO+/McsstlyOOOCK1atVKq1atCiNN/Rx77rlnYWSqa665Jj169Ej37t1To0aNHH/88Rk5cmQhzP1ji/PeqUq/iiDOpZdemuWWWy61a9dO165d89JLL823/Z133pkVV1wxtWvXzqqrrpohQ4bMs+2f//znlJSUzPchAwAAAAAAv1dt2rRJly5dUr169ayxxhr5y1/+kgceeKBCm/Hjx2fLLbfMdtttV2Eapbp161b4F9gTJkwofLH149DNHJWFcyrTqFGjClMjbLTRRpk0aVIuvPDCTJ8+PckPoZ/NNtssN910U8aMGZMXXnihwgg7LVu2LPy5WrVqadGiRUaOHJlevXplwIAB2X///dOsWbPsv//+mTZt2kKcqVQYhaFOnToVvpisU6fOQk27lSQff/xxttpqqzRp0iSlpaX5xz/+UZhmIUmF/darV2+uKUhatWpV+HPt2rUzadKkJD986T4nVHXTTTdl4403TsOGDfPll19m1qxZ6dChQ2G7ZZZZpsI+W7RosVC1z/Hll19m++23T2lpaUpLS/OnP/2pQh8Wx4+vXe3atSvU9uP+zq+Ga6+9Nm+//XY6duyYNddcM48//nilx/rss8/m+kJ22WWXzahRowqv54wAlfxwz3/33XdJfgg7XXjhhYXjt2nTJjVq1Kgw+kqx9O/fP+PGjcsWW2zxs0ca+qmGDRsWAj1169ZN9erVCwG4Oedj4sSJ+eijjzJ9+vTC/VpaWpp//vOf+eqrr9KgQYNce+21ueSSS9KsWbNsvfXW+eSTTyo93hdffFHhvqtevXpatmxZYTSRed3bi3K/DRs2LGussUbKyspSWlqaN998M+PGjSus/3HIr27duoX37Zdfflmhvjmja/3cvvzUvN7Xn3zySb744otC30pLS/PMM88UpsxLUgjWVGbUqFFp165dpesuuOCCLL/88iktLU3z5s1TXl5eYeqbOb788ssKz4cf++tf/5pll1029evXzwYbbDDXqBs/ni5r1KhROfLIIwv92GyzzfLNN98UjvHjfiy//PKZNm1axo4dO8++JT9MKXXGGWfkhBNOSNOmTbPrrrvm22+/navdn//852y88cbZcccd06pVqwpTm/3U6NGjK9Tdvn37Cp85i3Ot5uXn9j/54TN4hx12SPPmzVO/fv2ceOKJlZ6DOV5++eV89dVX8x2ZJZl3P0eOHFnpZ+jPMa9n8fzuldGjR1cIW83r/q7Mwrw35zXF2/z8+HzUrVu38GyaXz8qs7C/R8yYMSP77LNPYWq5vn37Vrjm1atXr/DZVKdOnUJNi2J+x/n888/nmjJucfz4mn7++ee59957K7yXpk6dms8++2yu7RbnvVOVqjyIc/vtt+fII4/MySefnOHDh2f11VdP9+7dKzzsfuy5555Lnz59ss8+++Q///lPevfuXSGt+mP33ntvXnjhhQof2gAAAAAAwLxVq1Yt5eXlhdeTJ0/OlltumdVXXz2XXHJJhbYdOnQo/KvwJPnvf/+bFVZYIckPo77MmVYmSd57773MnDkzK6200gJr2GKLLfLGG28scLqPvn375s4778w///nPrL/++hW+YP/pF6NfffVVWrdunSQ56aST8u677+bFF1/Mk08+WZgqqHbt2oVpDpJU+PK+mI455pgsvfTSGTFiRCZNmpR99923KPtt2LBhNtpoo/zzn//MnXfemT322CPJD18gVq9ePR9++GGh7U/PbUlJyTz3W9m65s2b59FHH82kSZMKPz/e/y9hfjWsttpqGTJkSMaNG5eddtope+21V6V9WXbZZfPtt99WuO6ff/75Qn231LJly/zlL3+pcPzvv/9+vgGOeVnQvXfAAQdkvfXWyxNPPFFh9KRfwrLLLpu6detmwoQJhX5Onjy5MGrQzjvvnBdeeCFffPFFatWqVZg266eWWWaZCvfd7Nmz5wq/zMui3G8DBgzIHnvskdGjR2fSpEnp3LlzhWfavPz0y/qPPvponm0Xpy8/1aZNm7Rv375C36ZMmZIzzzyz0GZ+78/WrVtXGn567733cvzxx+e6667L+PHj89VXX6WkpKTSc9GqVatK+/vII4/k2muvzcMPP5yJEydWOgrLj2tr0aJFLr/88gp9mRPuaNmyZT799NNC2w8//DC1atVK06ZNU79+/Xz//feFdT99Ph1wwAF57bXX8s477+Tzzz+vdNS22rVr58ILL8wnn3ySIUOG5KqrrprnYA7NmzevcM4+/vjjCp8f87Iw12pe5tf/Bfnb3/6WcePG5bXXXst3332X008/fb739JZbbplddtkl3bp1q3QEpAVp3bp1pZ+h81KnTp0Kz68ff88/r2fx/O6V5s2bVwg0fvzxxwtd+8K8Nxf1825+5tePxXHllVfm2WefzbPPPpvvvvtuniMIVqZu3boVaqgsfLcwx1l22WUXOlhaWlqaWbNmFd7HM2fOnG9YrHXr1unTp89cn59bbrnlXG0X571Tlao8iHPBBRfkT3/6UwYMGJCVV145V1xxRerWrZtrr7220vYXXXRRevTokWOOOSYrrbRSTj/99Kyxxhpz/fI/cuTIHHLIIbn55ptTs2bNX6IrAAAAAADwqzRjxoxMmTIls2bNysyZMzNlypTMnDkzSTJkyJDCF9pvvvlmzjrrrGy99dZJkmnTpmWbbbZJixYtcuONN86139122y0XXXRRRo0albfeeis33XRT+vXrl+SHaZLeeOON3H333Zk0aVKOP/74bLPNNgs1FcQOO+yQ1VdfPb169coLL7yQmTNnZtKkSYVpaubo3bt3Pv3001x22WXp06dPhXWjR4/O+eefn2nTpuWss85K9erVs8kmm+Tf//53nnnmmcyYMSNlZWWpUaNGatSokSRZccUVc8MNN2TmzJm59NJLK/2X2QurdevWGTx4cKXrvvvuu9SvXz8NGjTIK6+8krvuuutnH+en9txzz1x66aX58MMPs9NOOyVJatSokS233DLHH398pkyZkieeeGKeI8RUpkWLFpk9e3aFL+r32GOPHHfccfn0008ze/bsvPfee3nkkUeS/BAAKCkpqXSKiWKaXw1XXHFFRo8enZo1a6a0tLQw8kuLFi3y5ZdfFqaP6tChQ1ZeeeUcffTR+f777/Poo4/m8ccfz+67777A4++77775xz/+kRdeeCHJD18+33LLLT+rL/O79+6+++48+eSTue2223L66adn7733LnzJOnjw4ELAbElp165dunTpksMPPzyTJk3KjBkz8uyzz2b48OH54osvctttt2Xy5MmpXbt26tSpk+rVqyf5YeSZH3952rt377z77ru55ZZbMmPGjJx22mmpXbt2Ybq5+Znftf6pKVOmpEmTJllqqaVyww035K233lqofu6222559NFH88wzz2Ty5MkVpuH7qQX1pXHjxgsdTNt0001TXl6ec845J99//32+//77DB06NCNGjFio7ffee+/ceOONefzxxzN79uy88cYb+fTTTzNp0qRUq1YtzZs3z4wZM+YZkEp+CDVeeOGFGT58eGbPnp1nn30248ePz4QJE1KzZs00b948kyZNmu85SZJ+/frlnHPOKYQwP/3009x9991Jfji/N998c/7zn/9k4sSJOfbYY9OzZ89Uq1Ytq6yySiZOnJhHHnkkU6dOzfHHH1/Y5xtvvJEhQ4bk+++/T/369bPUUktVOjXbQw89lFdffTWzZs3K0ksvnerVqxfuxUaNGuWDDz4otN1pp50yePDgfPzxxxkzZkzOOOOM9O7de4HnekHX6qijjso666xT6bbz6/+CTJo0KXXq1EmjRo3y/vvv5+qrr17gNpdccklWX3319OjRo0JIZmFsttlmmTlzZoXP0PkFU1deeeXcdtttmTlzZu6///4Ks9/M61k8v3tl5513zj//+c+8+eab+frrr3PuuecudO2L85xJ5v6MWJD59WNxTJo0KbVq1UqTJk3y5Zdf5vzzz1/obTt37pz77rsvU6dOzfPPP5+HH374Zx1np512yscff5yLL74406ZNy6hRowpT0/30+d6qVas0bdo011xzTWbMmJETTjihMIJhZfr375+HHnooQ4cOzaxZszJ+/Phcf/31lbZdnPdOVapRlQefPn16Xn311QwcOLCwrFq1aunWrVuef/75Srd5/vnnc+SRR1ZY1r1799x3332F17Nnz07fvn1zzDHHZJVVVllgHdOmTasw7ORPh8oEgN+yC/JqVZcAi23h/zcEAADgl1X+Kxmw/a9//WsuuOCCwuuLL744F198cQ455JC89NJL6d+/fyZNmpRGjRpl5513zqmnnpokeeKJJ/LMM8+kVq1aKS0tLWz/+uuvp2PHjjnmmGMyYsSIrLDCCqlZs2YOPfTQ9OrVK8kPQZRrr702hx9+eMaOHZsNNtggt912W2Efc0ZrmTOqxo9Vq1Ytjz32WI499tjsuOOO+eabb9KoUaOstdZaueKKKwrtatasmT/+8Y+54447sttuu1XYx1prrZWXX345jRo1yjLLLJPbb789NWvWzLfffpujjz46X3zxRerUqZM//vGP+dOf/pTkh388vPfee+eKK67IzjvvnD/84Q8/63xPmzYt48ePz0YbbVTp+lNPPTV9+/ZNaWlpVltttfTs2fNnjVpQmR133DEHHXRQevTokTp16hSWX3311enTp0+aNm2azp07p3fv3vP9kuzHGjRokAMPPDBrrrlmZs6cmeHDh+fUU0/NcccdV5iqplWrVjniiCOS/PBFZKtWrX7W9B+LYn41PPLIIxk4cGCmT5+e5ZZbrvAPwHv27JmLLroojRs3TosWLfL+++/njjvuyN57752mTZumadOmufzyy9O5c+cFHr9bt24588wz069fv4wcOTJlZWXp1avXQoV4fmpe9964ceNy4IEH5vLLL0/jxo1z0EEH5d57781RRx2Vyy67LJ9//nnWWmutRT7eorrrrrty4IEHpl27dpkxY0Y6duyYCy+8MLNmzcp5552XfffdN9WqVcsaa6yRG264IckPUwXttNNOKS0tTe/evXPTTTcVZsrYf//9s8IKK+See+5JrVq1Fnj8+V3rnzr77LNzzDHH5OCDD8622247z2DET6211lo5/fTTs/POO2fmzJk57rjj5vmFesuWLefbl6OPPjrHHHNMjj322Jx33nnzPW7NmjXz8MMP56CDDsqgQYOS/PBF+j/+8Y+FqnvLLbfMWWedlT/96U8ZPXp0WrdunbvuuitrrbVW9txzz6y55pqpU6dOjj766HkOXrD//vtnzJgx6dWrV7799tssv/zyeeyxx7Ljjjvm1ltvTbt27bL00kvnsMMOq/Cd7E/tt99+GT9+fHr27JmxY8emSZMm6d+/f3bcccdsv/32efvtt7PttttmypQp2WijjQrP88aNG+fMM8/MnnvumerVq+ekk04qhD+nTp2aY489Nh9//HGWWmqpbLTRRjnhhBPmOvbIkSNz0EEHZezYsalfv3769euX7t27J/lhFLI+ffpk+vTpufvuu3PYYYfl888/T9euXTN79uz07NkzZ5xxxgLP9YKu1RdffJF111230m3n1/8FOfbYY7PTTjulYcOGad++fbbddtuFGhnr+uuvz0477ZQ//vGPefTRRxfqWMkPowvddttt2X///XPyySenV69e6dKlyzzbn3nmmdltt91SVlaWzTffPN26dSusm9ezeH73yq677ppXXnklG2+8cWrXrp2DDjqoEHhckAW9Nxekss+I+ZlfPxbHn//85zzyyCNp0aJFmjdvnr322muhAlhJctxxx2WHHXZIkyZN8oc//CHbbbfdPEfpmd9xGjdunAcffDCHHnpojj/++JSWlmbQoEFZa621Kn2+X3zxxTniiCNy/PHH58ADD6wwddZPrbjiirnxxhtz7LHH5qOPPkqdOnWywQYbpH///nO1XZz3TpKMGDEiq6++euF316FDh2b77bcvBNSuuOKKnHfeeRXCesVQUr4wY7EtIaNGjUrr1q3z3HPPZb311issP/bYY/P000/nxRdfnGubOenVHyfbL7vsspx66qmFYZUGDRqUJ598MkOHDk1JSUmWW265HH744Tn88MMrreOUU04p/E/Fj02YMGGh5qrl5ynJ8AU3gl+58qxR1SXAYvM85rfA85jfiqOyaMPfwq/R+amyv2aAounkecxvwPuex0vUxIkTU1ZWNtffIU+YMCGffvppll9++dStW7cKK/x9Ofnkk/PGG2/k3nvvLSwbPHhwbr311jz33HNVUtPjjz+eCy+8MA8++GCVHL9jx445//zzC6GoX9pxxx2XRo0azXcEDopj4403zkUXXfSzQ2NA8ayyyip54okn5htAAJac999/P6uttlpq1qyZSy+9tDAV2qIYMGBA7rzzzrRo0WKucM6UKVPywQcfpG3btikrK5vvfqp0RJwl4dVXX81FF12U4cOHL/QcbgMHDqwwys7EiRPTpk2bJVUiAAAAAABQBOPHj89NN92USy65pKpLqWCLLbbIFltsUSXHnjMdRc+ePavk+MkPoyPwy3jmmWequgTg/7ew06ABS0anTp3y/fffL9Y+rrvuulx33XWLXUuVTpzVpEmTVK9evTCSzRyjR49OixYtKt2mRYsW823/73//O2PGjMmyyy5bmNf1008/zVFHHTXPIRBr1aqVBg0aVPgBAAAAAAB+vW655Za0bNkya621VrbZZpuqLudXoWfPnunfv3/OO++8VK9evarLAQD4XarSIM5SSy2VNddcM48//nhh2ezZs/P4449XmKrqx9Zbb70K7ZPkscceK7Tv27dv3njjjbz22muFn1atWuWYY47J0KFDl1xnAAAAAACAX8zuu++eqVOn5o477phr3SGHHFJl01JVpYcffjjjx4/PbrvtVtWlAAD8blX51FRHHnlk+vXrl7XWWivrrLNOLrzwwkyePDkDBgxIkuy1115p3bp1Bg0alCQ57LDDsskmm+T8889Pz549c9ttt+WVV17JVVddlSRp3LhxGjduXOEYNWvWTIsWLbLCCiv8sp0DAAAAAAAAAOB3o8qDOLvuumvGjh2bk046KV999VW6dOmSRx99NM2bN0+SfPbZZ6lW7f8N3LP++uvnlltuyQknnJDjjjsuHTt2zH333ZfOnTtXVRcAAAAAAAAAACAl5eXl5VVdxK/NxIkTU1ZWlgkTJqRBgwZVXc5vVkmGV3UJsNjKs0ZVlwCLzfOY3wLPY34rjkpJVZcAi+38+GsG/vd18jzmN+B9z+Mlal5/hzxhwoR8+umnWX755VO3bt0qrBAAACimKVOm5IMPPkjbtm1TVlY237bV5rv2J2bOnJkbb7wxo0ePXqwCAQAAAAAAAADgt2aRgjg1atTIn//853z//fdLqh4AAAAAAAAAAPiftEhBnCRZZ5118tprry2BUgAAAAAAgCWhdevWadWqVaZNm1ZYtscee+Soo46qwqoAAOC3p8aibnDggQfmyCOPzOeff54111wz9erVq7B+tdVWK1pxAAAAAADwv6xTSpbo/t9P+UK3nTx5ci655BLhGwAAWIIWeUSc3XbbLR9//HEOPfTQbLDBBunSpUv+8Ic/FP4LAAAAAAD8+uy333654IILKoyKM8fZZ5+dZZZZJg0bNkzv3r3z9ddfJ0mGDBmSZZddNsccc0zKysrSunXr3HPPPYXtxowZk169eqVRo0ZZZpllcskll/xi/QEAgF+jRQ7ifPzxx3P9fPTRR4X/AgAAAAAAvz5bbrllWrZsmUsvvbTC8vvuuy/nnXdeHnjggXz66aeZOnVq9t9//8L6UaNGZamllsq4ceNy5JFH5uCDDy6s22WXXdKyZcuMHDkyDz30UE477bS8+OKLv1ifAADg12aRp6Zq27btkqgDAAAAAABYwk466aQccMABOeiggwrLbr311uy5555ZY401kiTnnntu1llnncyePTtJUqdOnZx22mmpXr169ttvvxx99NEZN25cpk6dmhdffDFDhw5NrVq10qVLl2y//fa544470rVr1yrpHwAAVLVFDuLM8fbbb+ezzz7L9OnTKyzv1avXYhcFAAAAAAAUX69evXLqqafmsssuKyz78ssvs9566xVeL7/88pk2bVrGjh2bJGnYsGGqV6+eJCktLU2STJw4MZ9//nmmT5+eJk2aFLadPXt2evfu/Qv0BAAAfp0WOYjz0UcfZfvtt89///vflJSUpLy8PElSUlKSJJk1a1ZxKwQAAAAAAIrmxBNPzMEHH5wNNtggSdKyZct8+umnhfUffvhhatWqlaZNm853P8suu2zq1q2bCRMmpFq1aku0ZgAA+F+xyL8ZH3bYYWnXrl3GjBmTunXr5q233sozzzyTtdZaK0899dQSKBEAAAAAACiW3r17p2nTphk6dGiSZLfddsvNN9+c//znP5k4cWKOPfbY9OzZc4Hhmnbt2qVLly45/PDDM2nSpMyYMSPPPvtshg8f/kt0AwAAfpUWOYjz/PPP57TTTkuTJk1SrVq1VKtWLRtuuGEGDRqUQw89dEnUCAAAAAAAFNGJJ56YCRMmJEm23377HHbYYdl2223Ttm3b1KxZM1dcccVC7eeuu+7KyJEj065duzRp0iSHHXZYpkyZsiRLBwCAX7VFnppq1qxZhTlgmzRpklGjRmWFFVZI27Zt89577xW9QAAAAAAA+F/1fsqruoQkyciRIyu83mGHHVJe/v9qO/7443P88cfPtd0222yTzz77rMKyH2/XvHnz3H333UWuFgAA/nctchCnc+fOef3119OuXbt07do155xzTpZaaqlcddVVad++/ZKoEQAAAAAAAAAAfvUWOYhzwgknZPLkyUmS0047Ldtuu2022mijNG7cOLfffnvRCwQAAAAAAAAAgP8FixzE6d69e+HPyy+/fN5999188803adiwYUpKSopaHAAAAAAAAAAA/K+o9nM3/OCDDzJ06NBMnTo1jRo1KmZNAAAAAAAAAADwP2eRgzhff/11tthii3Tq1CnbbLNNvvzyyyTJPvvsk6OOOqroBQIAAAAAAAAAwP+CRZ6a6ogjjkjNmjXz2WefZaWVVios33XXXXPkkUfm/PPPL2qBAAAAAPBLGjGqvKpLgMXXqqoLAAAA+H1a5CDOsGHDMnTo0CyzzDIVlnfs2DGffvpp0QoDAAAAAAAAAID/JYs8NdXkyZNTt27duZZ/8803qVWrVlGKAgAAAAAAAACA/zWLHMTZaKONcuONNxZel5SUZPbs2TnnnHOy2WabFbU4AAAAAACAX0rr1q0zbNiwRdpmp512yrHHHruEKlp8P6dPAAD8fIscxDnnnHNy1VVXZeutt8706dNz7LHHpnPnznnmmWdy9tlnL4kaAQAAAACAxdCnT580bdo09evXT6dOnXLrrbfO1WbGjBnp1KlTll122QrLS0pKUqdOndStWzd169bNwIEDC+uuv/76rL766qlVq1Z22mmnufZ51113Zdlll02dOnXSrVu3jB07dqHqXXfddXPOOecUXj/44IMpKSnJQw89VFh29tlnZ7311luo/QEAwC+lxqJu0Llz57z//vu55JJLUlpamu+++y477LBDDjrooLRs2XJJ1AgAAAAAAP+TSjJ8ie6/PGssVLu//OUvufbaa1OnTp0888wz6dmzZzbffPM0b9680Oass85KaWlpvv/++7m2f+utt9K+ffu5ljdu3DhHHHFEnn322Xz77bcV1o0cOTIDBgzItddemx49eqR///7Zb7/9cu+99y6w3nXXXTfPPvts4fUzzzyT5ZZbLk8//XS23XbbJMmzzz6bddddd6H6/79gxowZqVmzZlWXAQDAYlrkEXGSpKysLMcff3zuuOOODBkyJH/729+EcAAAAAAA4FeqS5cuqVOnTpIfRriZMWNGPvnkk8L6L774Itdff/0iT7H0xz/+Mf3790/Tpk3nWnfrrbdm1VVXzc4775zS0tKcccYZGTJkSCZPnrzA/W666aZ5+eWXC6+ff/75HHzwwXnhhRcKy15++eVsuummSX4YHWeZZZZJw4YN07t373z99deFdjfeeGPat2+fBg0aZLPNNsvHH39cWDdnxJ6ysrIcffTR863p3Xffzaabbpqll146TZs2zRlnnFFYN3bs2Ky33nqpV69eNtxww4wZM6awbquttkqjRo1SVlaWrbfeurDuvffeS40aNXLuueemWbNm2XnnnTNjxowcfvjhadWqVUpLS7POOussVD/69++fZs2apbS0NBtuuGFGjBixwHMMAMCSschBnOWWWy6nnXZaPv/88yVRDwAAAAAAsAT07ds3tWvXzsYbb5x11103a6+9dmHd4YcfnqOPPjqlpaWVbrvuuuumWbNm2WmnnTJ69OiFOt7bb7+dVVZZpfB6xRVXTI0aNfLOO+8U6unbt2+l22622WYZM2ZMPvroo8ycOTPvv/9+DjzwwLz33nuZOXNmRowYkbFjx2bTTTfNfffdl/POOy8P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48ePG+179uxRjRo15OXlpQoVKui7776TJHXu3FkJCQlq166dPDw8NHv27AK/ln/0ySefKDw8XBaLRU2bNlVcXJzNfb3d7VsiBQcHa/z48QoLC5PJZNKQIUN08OBBVaxYUWazWd27d8/znH+39+aIESNksVgUHByslStXGu1/XN3oj9uGTZw4UaGhoTKZTKpcubIuXLiQ4xx3ek9+8803qlixojw9PRUUFKSJEycabbfegy1btpSHh4fWrVtnM29kZKR2796tIUOGyMPDQxcuXLhrvW+//bZCQ0Pl7e2tDh06sGMJADyAChzE+fLLL/V///d/6tChg5ydnfXkk09q3LhxmjRpkj7//PP7USMAAAAAAAAAALhHPXv2lJubmyIjI1WnTh3VrFnTaNu4caPMZrOKFy+uo0ePasCAAUZbRESE5syZk+uc27dv19NPPy1Hx9y/bli9erWmTZumtWvXKiYmRtevX7eZW5KysrLUp08fHT58WJs3b5bZbNZzzz2nwMBAxcXFad26dZowYYJ2796dY/60tDQ988wzioqK0uXLlzVs2DB17NhRly5dUteuXfXLL78oNjbW6Ltx40b16tVLmZmZatOmjZo3b65Lly7po48+Ur9+/Yy+krRu3Trt3LlTBw4c0JdffpnjC/TbLV26VEuXLtXp06cVGxursWPHGm179+5V3bp1lZiYqAEDBui5555TuXLldOHCBb333nvq37+/Dh8+LEnq16+ffH19dfHiRU2cOFGrVq3K85y3S09PV+vWrVW9enXFx8frxIkTatiwoZ5++mn985//VIcOHWS1WrV9+3atXr1aP/74o06fPq2rV69qzpw5xqo1Cxcu1MKFC/M8T3x8vJydnXX+/HlNnjxZL7/8sq5evaqTJ09q9+7dWrp0qZYsWaKXXnpJ06ZNU61atWS1Wm3uxy2ZmZk6dOiQzp07p48++kgjR45UYmKiJOU5r3RzdadLly7p119/1aJFi7R06dI73puvv/5affv21ZUrV1SzZk0juJKUlKQ2bdrolVde0W+//aYxY8boueeek9Vq1RdffKHAwECtXbtWVqtVL730UoFfy9tt27ZNo0aN0qJFi3Tx4kVFRESob9++d39hb7uGXbt2aefOnZo1a5YGDhyoNWvW6MiRI9qwYQPvTd18bxYpUsT4HBg0aFC+6ps9e7Zmz56tFStW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3njjDe3bt09PPPGEWrZsmWdi+vvvv1fXrl3Vt29f7d+/X+3bt1f79u116NAho09ERITef/99/fLLL9qxY4dKlSqlFi1a2KR8AQAAAAAAAAD4O7hy5YrmzJmjpKQkpaen6+OPP9bu3bvVpEkTSTe3Ojl58qQk6dChQ5o6daqefPLJfM09ZswYXb582dheSpL279+vZ555RtLNFWk+//xz7d+/X8nJyRo5cqRat25tsy1W586dNWnSJD399NM6duyYSpcurSpVqmjIkCFKSUlRenq6du7cqX379uU4f8OGDSXd3OLo1rVFR0cbK9/cWjHihRdeUOnSpVW2bFlJUqNGjZSdna0pU6YoLS1NaWlp2rBhg3EfCmrJkiU6dOiQrly5osmTJxvX/0ePPfaYypcvr1dffVVpaWn6+uuvtWXLFnXr1k3Ozs5q3ry5xo4dK6vVqq1bt2rLli3G2OrVq+vIkSM6ePCgEhMTNXnyZJv7YDKZNGrUKFmtVl29elU7duyQJBUvXlyxsbFGEOK7777T9u3blZ6eLovFImdnZzk7O0uSOnbsqI4dO+brmp2cnNShQwcNHDhQly9fVmZmpvbv32+zJc+fcbd527Ztq0mTJunq1as6ePBgrluW3W7//v1atmyZ0tLSNHLkSFWuXFmlSpVSp06ddPjwYX322WdKT09XamqqVqxYYaxk4uPjYxM8+aM7vZZ/1K9fP82dO1e7du2SdDNYsWjRIklShQoVlJycrK+++krXr1/X2LFj/9R9y8vf8b35R+XLl9eSJUuUkZGhNWvW2CwI0LNnT82YMUP79u1TVlaWdu7cqcTERJvxd3tPpqamqmjRonJ3d9eGDRv0zTff/Kk681Nv7969NWXKFB05ckSSFBMToxUrVtzT+QAA9lfgIM4fhYaG6tlnn1XlypX/1Ph3331X/fv3V58+fVS+fHnNnj1bHh4emj9/fq79//vf/+qpp57SiBEjVK5cOb355puqVq2a3n//faNPt27d1KxZM4WFhalChQp69913lZycrIMHD/6pGgEAAAAAAAAAeFg5Ojpq/vz5CgkJUbFixTRt2jR99NFHqlu3riTp6NGjatCggdzd3dW8eXNFRkbqP//5jzE+PDxcs2fPznXu4OBgfffdd7p27ZqqVKkis9msHj16qGnTppKkqKgoDR48WG3atFFoaKhcXFxynatfv34aMWKEWrRooZiYGC1fvlxxcXEqXbq0fH19NXjwYJsVIm5xc3PTypUrtWzZMhUrVkxTp07VsmXLbFb96Ny5s3bt2qVnn33WOObi4qL//e9/2rRpkwIDAxUYGKi33norz5V97qZjx47q1KmTSpUqZcyVl6VLl+qXX36Rn5+fBg4cqFmzZqlixYqSpI8++kgXLlyQn5+fxowZo/bt2xvjKleurEGDBunJJ59UxYoV1bx5c5vrWbdunXbt2qWAgABFRETou+++kyT16NFDqampslgsaty4sa5evap+/frJYrHo8ccfV61atYytyOLj41WvXr18X/ecOXNksVhUsWJFFS1aVD179rTZkufPutO877zzjry9vVWyZEl16dJFnTp1uuNcTz31lD788EMVK1ZMu3btMlZW8vHx0Zo1a/TBBx/I19dXJUuW1Jw5c4xxr776qv71r3/JbDbbHL/dnV7L2zVr1kyTJk1S79695enpqapVqxqvj4+PjyZNmqQePXooNDRUNWvW/FP3LC9/1/fm7SZNmqRDhw7JYrFo7ty5atasmdE2YMAA9evXT+3atZPZbNbAgQP1+++/55jjTu/JSZMmad68eTKbzXr33Xdt5rd3vS+++KJ69eql1q1by9PTUw0bNtQvv/xyT+cDANifQ3YB10abMGHCHdvHjx+f77l+//13eXh4aPny5Tb/w+7du7cSExO1Zs2aHGNKliypYcOGaciQIcaxN954Q6tXrza2zPrjOWbOnKm33npLp06dkq+vb44+N27csNljMjk5WSVKlFBSUpK8vLzyfT0oGAfl/OsF4GGTrWqFXQJwz/g8xqOAz2M8KoYr57LcwMNmuv78EuzAg8Ih/u59gAddds6dUWBHycnJslgsOX6HnJSUpJiYGIWHh8vDw6MQK8RfqVatWurTp49efvnlwi7lnqSnp6ts2bI6cuSIXF1dC7scuxg+fLhiY2P1xRdfFHYphYL3JgAA9mO1WnXq1CmFhobKYrHcsa9zQSdftWqVzfP09HSdOXNGzs7OeuyxxwoUxLm1fJu/v7/NcX9/fx07dizXMefPn8+1//nz522OrVu3Tl26dJHValVgYKA2bdqUawhHurlk5b///e981w0AAAAAAAAAAPAocXFxueNWTEBh4b0JAHjYFDiIs3///hzHkpOT9fzzzxt7rj4IGjdurJ9//lmXL1/WRx99pOeee067d+9W8eLFc/QdM2aMhg0bZjy/tSIOAAAAAAAAAAAAAAAAkF8FDuLkxsvLS//+97/Vtm1b9ezZM9/jfH195eTkpAsXLtgcv3DhggICAnIdExAQkK/+JpNJ4eHhCg8PV506dVSmTBnNmzdPY8aMyTGnq6srS9kBAAAAKHRfFnYBgB1ML+wCAAAA/mJ79uwp7BKQh+nT/97/OuW9CQBA4XC010RJSUlKSkoq0JgiRYqoevXq2rJli3EsKytLW7ZsUd26dXMdU7duXZv+krRp06Y8+98+740bNwpUHwAAAAAAAAAAAAAAAJBfBV4RZ+bMmTbPs7OzlZCQoIULF6pVq1YFLmDYsGHq3bu3atSooVq1amnGjBlKTU1Vnz59JEm9evVScHCwJk+eLEkaPHiwGjZsqOnTp6t169ZasmSJfvrpJ3344YeSpNTUVE2cOFHt2rVTYGCgLl++rA8++EBxcXHq1KlTgesDAAAAAAAAAAAAAAAA8qPAQZz//Oc/Ns8dHR3l5+en3r1757rt09107txZly5d0vjx43X+/HlVqVJFX3/9tfz9/SVJv/76qxwd/9/CPfXq1dOiRYs0btw4vfbaaypTpoxWr16tihUrSpKcnJx07NgxLViwQJcvX5aPj49q1qyp7777ThUqVChwfQAAAAAAAAAAAAAAAEB+OGRnZ2cXdhEPmuTkZFksFiUlJcnLy6uwy3lkOWhfYZcA3LNsVSvsEoB7xucxHgV8HuNRESGHwi4BuGcnxK8Z8PBziC/sCoB7lx1U2BU82vL6HXJSUpJiYmIUHh4uDw+PQqwQAAAAgD1ZrVadOnVKoaGhslgsd+zreMdWAAAAAAAAAAAAAAAAAPlS4K2poqKi5OCQv7/SXLlyZYELAgAAAAAAAAAAGDNmjOLj47VgwQIdP35cFSpUUEZGRq59O3bsqLCwME2ZMkWzZ8/W0qVLtXXr1r+4YgAAAOBPrIhjsVi0ZcsW/fTTT8axvXv3auvWrfLy8pLFYjEeAAAAAAAAAACg8NWqVUuurq7y8PCQh4eHIiMjjbZFixapdOnSMpvN8vPzU//+/W0CL927d1fJkiXl4OCg9evXF+i8wcHBcnNzk4eHh4oWLaqnn35aly5dytfYyZMna8GCBQU6nyS99NJLhHAAAABQaAq8Io6/v7+ee+45zZ49W05OTpKkzMxMDRw4UF5eXpo6dardiwQAAAAAAAAA4GHk8N79nT/7lfz3nTFjhl5++eUcx+vWraudO3cqKChIly5dUrt27TRt2jSNHj1aklSlShV1795dAwYM+FM1rl27Vi1atFBycrI6dOig1157TR999NGfmgsAAAB40BV4RZz58+fr1VdfNUI4kuTk5KRhw4Zp/vz5di0OAAAAAAAAAADcX6VLl1ZQUJDx3NHRUdHR0cbzESNG6Omnn5azc4H/tteGl5eX2rRpo+PHjxvHHBwcdPr0aeN5rVq1NGvWLEnS8OHD1blz51znOnLkiKpVqyaTyaSWLVvq+vXrRtt7772nevXqSZKOHz8uZ2dnvfvuu/Lz85Ovr6/ef/99o29sbKyefPJJeXp6qnbt2urVq5dxzl9++UXVq1eXp6enfHx89NJLL93T9QMAAODvocBBnIyMDB07dizH8WPHjikrK8suRQEAAAAAAAAAAPt67bXX5O3trfr162v37t02bRs3bpTZbFbx4sV19OjRfK9+M2fOHEVEROSr79WrV7V27VrVrFmzwLX/UZcuXVSvXj1duXJFPXv21IYNG/Lsm5mZqUOHDuncuXP66KOPNHLkSCUmJkqS+vbtq6CgIF28eFGTJ0/WqlWrjHFjxoxRy5YtlZycrDNnzqhr1673XDcAAAAefQWOr/fp00d9+/ZVdHS0atWqJUnavXu33n77bfXp08fuBQIAAAAAAAAAgHszdepUValSRc7Oznr77bfVtm1bnThxQkWLFpUktWjRQikpKTp27JjmzZunwMDAfM07YMCAu4Z2oqKi5OjoKKvVqpIlS2rBggX3dC0nTpzQ8ePHtWvXLrm5ualHjx76z3/+c8cxkydPlpubm6KiouTm5qajR4+qRo0a2rJli44ePSoPDw81adJEzZo1M8a4uLgoJiZG586dU2hoqBo2bHhPdQMAAODvocAr4kybNk0jR47U9OnTFRkZqcjISL377rsaMWKEpk6dej9qBAAAAAAAAAAA96Bhw4ayWCwymUx68803ZTKZ9O233+boV7ZsWVWsWFH9+/e327lXrVqllJQUXbt2TU8//bSeeuqpe5ovNjZW3t7e8vDwMI7dvrXWHzk5Ocnf39947u7urpSUFJ0/f16ZmZkqXbq00RYcHGz8PGPGDKWnp6tatWoqV66cFi9efE91AwAA4O+hwEEc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rZveffddXb16Vc8884yee+45STfDJKtXrzb6btu2TRkZGWrWrJkkKSoqSmfPntXp06d17do1jRkzJs/68rp3krRs2TLNmzdP3377rQ4cOKD//e9/ub4et8THx6tIkSK6fPmyhg0bZhPouN2UKVO0Z88eHT58WN9++61NYEeSMjMzdejQIZ07d04fffSRRo4cqcTERFWsWFFZWVk6cuSIMjIyFB0drTNnzujGjRs6cuSIsrKyVLFixTveg969e9ucb+vWrZJuBm0mTpyo0NBQ/fbbb4qPj9fgwYONfqGhoXJyctLRo0fveA8k5TnPhg0b5OTkZKy2VaZMGUnS2rVrNW3aNKWkpCgkJERt2rTRK6+8ot9++01jxozRc889J6vVqszMTLVp00bNmzfXpUuX9NFHH6lfv36KjY3V1KlTVb16dWM1r8mTJ9/xev7ozTff1G+//aatW7dqxYoV+uyzz4y2n376SZGRkUpMTFSbNm00ZMgQSVJaWpqee+459evXT1euXFH58uX1888/3/HerF27Vtu3b9eJEye0evVqTZs2TWvXrlVMTIyuX79u83ma12sYHx+v3r17a8qUKbpw4YJSU1N14cIFSSrQ5wgA4MFAEAcAAAAAAAAAgEfc1KlTdfbsWcXGxqpJkyZq27atEhMTjfYWLVooJSVFR48eVd++fRUYGJhjjsOHD+vNN9/UW2+9ZZeaJk2apG+++eaOfZ544gmZzWbjsWbNmlz7ffPNN3J1ddWQIUPk6uqqUaNG5Vilp02bNqpdu7Y8PDzUvn17Y5WRJk2aGMGk77//Xv/85z+N1TH27NljhIVatWqlypUry8nJSZ06dVJERITRr2vXrvriiy8kSbGxsdq3b5+xhZeDg4N+/vlnXb9+XRERESpbtmyu15CSkiKz2Ww8nz9/voYPH26swjN+/HitW7dOklSmTBm98cYb6tKli+bMmaNPPvlEjo6O+vbbb5WamqopU6bIw8ND3t7eRpBo4cKFeuuttxQUFCRfX18NHTpUq1atMs5XtWpVdenSRW5ubpoyZYoOHDigs2fP3vH1kW6uvrJ06VLNnDlTFotFpUqVUt++fXNdaWbevHl66qmn1LJlSzk7O2vs2LGKi4vT8ePH1aZNG/3222/au3evJGnRokVq27atHB1vfpX18ssvy8vLy9gO7Y9hstvd6d598cUX6tmz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+so43/79+7Vs2TKlpaVp5MiRqly5skqVKiVJKlasmE6dOpVr3U5OTurQoYMGDhyoy5cvKzMzU/v379e2bdty9H3++ee1bt06bdiwQZmZmUpMTNQnn3xitLdo0UKpqakaN26czepHKSkpcnV1la+vrxISEjR9+nSbef9Y353uXadOnfTZZ5/p0KFDunLliqZOnZrrdRXUM888o/fff19xcXE6d+6cPvzww3yPrV27tq5evaoff/xRTz75pBo0aKB9+/bp0qVLqlOnjqS734Nq1arJ29tbo0aNMt5/0s2tuI4ePaqsrCx5e3vLwcHBeA9u2rRJdevWlYuLiyTpvffes1mV5XZ5zRMQEKCsrCydPn06z+vr1KmTDh8+rM8++0zp6elKTU3VihUrdOXKFTVq1EjZ2dmaMmWK0tLSlJaWpg0bNhifSb6+vjZhqTtdz+2uXbsmT09PeXl56aeffsp1q7TcNG7cWBkZGZo+fbpu3Liht99+O9etyPLSpUsXff7559q/f7+Sk5M1cuRItW7dWo6Ojnd8DZ999lkdPnzY5r/BW0G/gnyOAAAeDARxAAAAAAAAAAB4hP3+++8aN26cfH195e/vr/Xr12vNmjXy8fGRJB09elQNGjSQu7u7mjdvrsjISP3nP/+RJH3++ec6cuSIFixYIA8PD+Nxy6xZs2QymTR16lStXr1aJpNJo0ePNtrDw8NlMpn0+++/64knnpDJZDLaxowZY4SB7pW7u7sWL16s9957T97e3vr5559VqVIlubm55Wt8o0aNlJqaatTTuHFjpaamqmHDhkafd955RyNGjJDFYtHXX3+tWrVq2czRoUMHXblyRU899ZTc3d0lSZmZmZo2bZr8/f3l5+enhIQETZkyJdca+vfvr6+++koZGRmSpBdffFG9evVS69at5enpqYYNG+qXX37R5cuXNXDgQP3f//2ffHx89I9//EOhoaEaPny4XFxctG7dOu3atUsBAQGKiIgwwj3//ve/VatWLdWvX19eXl5q27atzcpHTz31lD788EMVK1ZMu3bt0ueff260jRgxQl27dpXZbNbGjRtz1D5nzhxZLBZVrFhRRYsWVc+ePW22AbqlbNmy+vTTTzVy5EgVLVpUERERWrNmjdHu5OSktm3bateuXca2VJL00ksvyWKxKCAgQPXr1zdW0MmrvrzunSR17txZvXr1UmRkpCpVqqRWrVrl+noU1Kuvvqpq1aqpfPnyioyMVJs2bVSkSJF8jXVyclLVqlUVFhYmNzc3ubm5KTw8XFWqVJGzs3O+7oEkPffcc4qOjja2pZKk48ePq2nTpvL09FTbtm01ceJERURESJKWLFlis1LMuXPnjJV0/iiveby8vDRw4EBVr15dZrPZCNDczsfHR2vWrNEHH3wgX19flSxZUnPmzJEkubi46H//+582bdqkwMBABQYG6q233jJWdRo8eLCWLFkis9ms11577Y7Xc7t///vf2rFjh8xmswYNGqTWrVvn67Vwc3PTkiVLNGfOHPn4+OjgwYOqUqVKvsZKUlRUlAYPHqw2bdooNDRULi4umj17tqQ7v4ZBQUGaN2+ehg0bpuLFi8vd3d3YyqwgnyMAgAeDQ3Zea0/+jSUnJ8tisSgpKUleXl6FXc4jy0H7CrsE4J5lq1phlwDcMz6P8Sjg8xiPigjlvqQ38DA5IX7NgIefQ3xhVwDcu+ygwq7g0ZbX75CTkpIUExOj8PBwm7AK/npZWVkKCAjQokWL1KxZs7/svGXKlNH06dPVrl27PzW+d+/eqlevngYMGGDnyu5s+PDhio2N1RdffPGXnvdRNm3aNK1evdpYkeiv8Mknn+j999/XTz/9dNe+hw4dUvfu3bV//35j+7XIyEj997//VdWqVe93qQAAPHSsVqtOnTql0NBQWSyWO/Z1/otqAgAAAAAAAAAAuG/Wr1+vqlWrytvbWxMmTJCDg4MaNGjwl53/1vZf+V15IzcLFiywY0X4KyUmJmrbtm1q3bq1jh8/rg8++OAvDVRdv35dc+bMUe/evfPVv2LFijpw4IDNse3bt9+P0gAA+NthayoAAAAAAAAAAPDQ279/vypUqCAfHx+tW7dOS5cuzffWVPeqdevWev755zVt2jQ5OTn9JefEgyUzM1NjxoyRl5eXGjdurGbNmmno0KF/ybl/+OEHFStWTC4uLnrxxRf/knMCAIC8sTVVLtia6q/BVih4FLAVCh4FfB7jUcDnMR4VbE2FRwFbU+FRwNZUeBSwNdX9xdZUAAAAwN9LQbamYkUcAAAAAAAAAAAAAAAAwA4I4gAAAAAAAAAAAAAAAAB2QBAHAAAAAAAAAAAAAAAAsAOCOAAAAAAAAAAAAAAAAIAdEMQBAAAAAAAAAAAAAAAA7IAgDgAAAAAAAAAAkCStX79eJUuWLOwyAAAAgIeWc2EXAAAAAAAAAADAo+p7OdzX+esp+57G16pVS3369NHLL79sp4oAAACAvzdWxAEAAAAAAAAAAHaVnp5e2CUAAAAAhYIgDgAAAAAAAAAAj7i9e/eqRo0aMpvNqlChgjZt2qQRI0Zo7969GjJkiDw8PDRmzBij/4gRI2SxWBQcHKyVK1caxy9evKh27dqpWLFiCgkJ0fvvv2+01apVS0OGDFHFihVlMpl048aNv/QaAQAAgAcBQRwAAAAAAAAAAB5haWlpeuaZZxQVFaXLly9r2LBh6tixo0aOHKnq1atrxowZslqtmjx5siQpPj5eRYoUMfoOGjTImOu5555TYGCg4uLitG7dOk2YMEG7d+822leuXKkvvvhCiYmJcnFx+cuvFQAAAChsBHEAAAAAAAAAAHiEbdu2TdnZ2Ro7dqxcXV3Vt29flS5dWqtWrcq1v7u7uyZMmCAXFxe9+OKLSkhI0OXLl3Xu3Dnt3r1bM2fOlLu7u6pUqaKoqCgtXbrUGNujRw9VqFBBHh4ecnTkKwgAAAD8/TgXdgEAAAAAAAAAAOD+iY2NVWBgoM2xkJAQxcfH59rf29tbTk5OkiSz2SxJSk5O1rlz5/T777/L19fX6JuVlaX27dsbz0uUKGHn6gEAAICHC0EcAAAAAAAAAAAeYSEhIUpISLA5FhcXp3bt2snBwSHf85QsWVIeHh5KSkpitRsAAAAgD/xLGQAAAAAAAACAR1jDhg0lSZMnT1Z6ero+/vhjRUdHKyoqSr6+vjpz5ky+5ildurSqVKmiIUOGKCUlRenp6dq5c6f27dt3P8sHAAAAHiqsiAMAAAAAAAAAwH1ST9mFXYLc3Ny0cuVKvfzyy5o0aZJKlCihZcuWyc/PT4MHD1a/fv00a9YsvfLKK2rQoMEd51q+fLkGDhyo0qVLKz09XWXKlNGMGTP+mgsBAAAAHgIEcQAAAAAAAAAAeMTVrl0715VrWrRooV9//dXm2B+fZ2f/vzCRv7+/VqxYkes59uzZY4dKAQAAgIcbW1MBAAAAAAAAAAAAAAAAdkAQBwAAAAAAAAAAAAAAALADgjgAAAAAAAAAAAAAAACAHRDEAQAAAAAAAAAAAAAAAOyAIA4AAAAAAAAAAHaUnZ1d2CUAAAAAsKOC/Bvf+T7WAQAAAAAAAADA34a7u7uys7N18eJFFS9eXA4ODoVdEgAAAIB7dOvf+NnZ2XJ3d79rf4I4AAAAAAAAAADYQZEiRRQUFKT4+HilpKQUdjkAAAAA7CQ7O1tBQUEqUqTIXfsSxAEAAAAAAAAAwE78/PxksVh0/fr1wi4FAAAAgJ24u7vnK4QjEcQBAAAAAAAAAMCuihQpku9f0gMAAAB4tDgWdgEAAAAAAAAAAAAAAADAo4AgDgAAAAAAAAAAAAAAAGAHBHEAAAAAAAAAAAAAAAAAOyCIAwAAAAAAAAAAAAAAANgBQRwAAAAAAAAAAAAAAADADgjiAAAAAAAAAAAAAAAAAHZAEAcAAAAAAAAAAAAAAACwA4I4AAAAAAAAAAAAAAAAgB0QxAEAAAAAAAAAAAAAAADsgCAOAAAAAAAAAAAAAAAAYAcEcQAAAAAAAAAAAAAAAAA7IIgDAAAAAAAAAAAAAAAA2AFBHAAAAAAAAAAAAAAAAMAOCOIAAAAAAAAAAAAAAAAAdkAQBwAAAAAAAAAAAAAAALADgjgAAAAAAAAAAAAAAACAHRDEAQAAAAAAAAAAAAAAAOyAIA4AAAAAAAAAAAAAAABgBwRxAAAAAAAAAAAAAAAAADsgiAMAAAAAAAAAAAAAAADYAUEcAAAAAAAAAAAAAAAAwA4I4gAAAAAAAAAAAAAAAAB2QBAHAAAAAAAAAAAAAAAAsAOCOAAAAAAAAAAAAAAAAIAdEMQBAAAAAAAAAAAAAAAA7IAgDgAAAAAAAAAAAAAAAGAHBHEAAAAAAAAAAAAAAAAAOyCIAwAAAAAAAAAAAAAAANgBQRwAAAAAAAAAAAAAAADADgjiAAAAAAAAAAAAAAAAAHZAEAcAAAAAAAAAAAAAAACwA4I4AAAAAAAAAAAAAAAAgB0QxAEAAAAAAAAAAAAAAADsgCAOAAAAAAAAAAAAAAAAYAcEcQAAAAAAAAAAAAAAAAA7IIgDAAAAAAAAAAAAAAAA2AFBHAAAAAAAAAAAAAAAAMAOCOIAAAAAAAAAAAAAAAAAdkAQBwAAAAAAAAAAAAAAALADgjgAAAAAAAAAAAAAAACAHRDEAQAAAAAAAAAAAAAAAOyAIA4AAAAAAAAAAAAAAABgBwRxAAAAAAAAAAAAAAAAADt4III4H3zwgUqVKiU3NzfVrl1be/bsuWP/ZcuWqWzZsnJzc1OlSpW0fv16oy09PV2jRo1SpUqVZDKZFBQUpF69eik+Pv5+XwYAAAAAAAAAAAAAAAD+xgo9iPPFF19o2LBheuONN7Rv3z498cQTatmypS5evJhr/++//15du3ZV3759tX//frVv317t27fXoUOHJElWq1X79u3T66+/rn379mnlypU6fvy42rVr91deFgAAAAAAAAAAAAAAAP5mHLKzs7MLs4DatWurZs2aev/99yVJWVlZKlGihF555RWNHj06R//OnTsrNTVV69atM47VqVNHVapU0ezZs3M9x48//qhatWopJiZGJUuWvGtNycnJslgsSkpKkpeX15+8MtyNg/YVdgnAPctWtcIuAbhnfB7jUcDnMR4VEXIo7BKAe3ZChfprBsAuHFhYGY+A7KDCruDRxu+QAQAAAOSlUFfE+f3337V37141a9bMOObo6KhmzZrphx9+yHXMDz/8YNNfklq2bJlnf0lKSkqSg4ODihYtmmv7jRs3lJycbPMAAAAAAAAAAAAAAAAACqJQgziXL19WZmam/P39bY77+/vr/PnzuY45f/58gfqnpaVp1KhR6tq1a55/mTB58mRZLBbjUaJEiT9xNQAAAAAAAAAAAAAAAPg7K9Qgzv2Wnp6u5557TtnZ2Zo1a1ae/caMGaOkpCTjce7cub+wSgAAAAAAAAAAAAAAADwKnAvz5L6+vnJyctKFCxdsjl+4cEEBAQG5jgkICMhX/1shnJiYGG3duvWO+/S6urrK1dX1T14FAAAAAAAAAAAAAAAAUMgr4hQpUkTVq1fXli1bjGNZWVnasmWL6tatm+uYunXr2vSXpE2bNtn0vxXCOXnypDZv3iwfH5/7cwEAAAAAAAAAAAAAAADA/69QV8SRpGHDhql3796qUaOGatWqpRkzZig1NVV9+vSRJPXq1UvBwcGaPHmyJGnw4MFq2LChpk+frtatW2vJkiX66aef9OGHH0q6GcLp2LGj9u3bp3Xr1ikzM1Pnz5+XJBUrVkxFihQpnAsFAAAAAAAAAAAAAADAI63QgzidO3fWpUuXNH78eJ0/f15VqlTR119/LX9/f0nSr7/+KkfH/7dwT7169bRo0SKNGzdOr732msqUKaPVq1erYsWKkqS4uDitXbtWklSlShWbc33zzTdq1KjRX3JdAAAAAAAAAAAAAAAA+HtxyM7Ozi7sIh40ycnJslgsSkpKkpeXV2GX88hy0L7C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WYW2oUOHprS0NPvuu+9KzdWiRYv06tUrt9xyS956660lrs+aNSujRo1a3ZKXa7vttkv79u0Lr9XdZacY873xxhupUaNGGjRosMw+9erVyyWXXJK33norDzzwwGpUDADA+kYQBwAAAAAA1gF9+/ZN/fr107Nnzzz++OMZNGhQzj777PTt27fSzi8nnHBCqldf/ob4N998c8rLy7P77rvn0ksvzciRIzNy5MhcccUVadOmTcaOHft93s5yffXVVxk9evQSrw8//LBoa8yaNasw7xNPPJEzzzwzw4cPT58+fVKnTp3vHHvcccdliy22yO9+97ui1QMAwLrP0VQAAAAAALAO2HDDDTNy5Micdtpp6dmzZ+rXr5+f//znufzyyyv1W7RoURYtWrTc+TbeeOOMGjUq11xzTf72t79lwIABKS0tzY9+9KOce+65Ofnkk7+vW1khH3zwQXbdddcl2i+77LL85je/Kcoa//u//1tYo06dOtlyyy1z1VVX5fTTT1/u2Bo1auSCCy7IiSeemGeeeSZdu3YtSk0AAKzbSioqKiqquoi1zZw5c1JWVpbZs2d/59aTrJ6t48xc1n3vxiOUdZ/nMesDz2PWF57JrA88k1kflPyrqiuA1VfRbPl9WHXf53fICxYsyCeffJLGjRunRo0aRZ2btZ+fPwDAus/RVAAAAAAAAAAAUASCOAAAAAAAAAAAUASCOAAAAAAAAAAAUASCOAAAAAAAAAAAUASCOAAAAAAAsA54//3307dv37Rr1y7Vq1dP27ZtV3vOL774Ipdccknatm2bunXrZoMNNkiHDh1yzTXXZN68eUmSZ555JiUlJYVX/fr1s+OOO+b2229PRUXFUue97777UlJSkhdeeGGp12fOnJmaNWvmwgsvXGZt5eXlhTWrV6+e8vLyHHfccZk6deoSfUePHp399tsvTZs2TZ06dVJeXp5evXplzJgxq/CpLOk/P4Pq1aunZcuW6devXz799NNKfbt27VroV1pams033zyHHHJI3nrrraLUAgDA2q16VRcAAAAAAAAs35tvvpn/+Z//SceOHbN48eIsXrx4teabMWNG9tprr0ydOjVnnHFGOnfunCQZNWpUrrzyylSrVi2//OUvC/0HDRqU1q1bZ9asWRk4cGBOOOGELFiwICeffPISc++///5p0KBBhgwZUpj324YNG5YFCxbk6KOP/s4ae/XqlbPOOisLFizIuHHjctFFF+XVV1/Nyy+/nBo1aiRJ/vd//zddu3ZNjx49cuutt6ZBgwZ577338sADD2Ts2LHp2LHj6nxMlXzzGSxcuDBvvvlmfv3rX2fixIkZMWJEpX677757rr766ixatChvvfVWfvOb36Rbt2558803s+GGGxatHgAA1j6COAAAAAAAsA448MADc9BBByVJ+vTpk5deemm15jvllFPywQcfZMyYMZV21+nWrVt+8YtfZMKECZX6t23bNu3bt0+S7LPPPmnTpk1uuOGGpQZxateunUMPPTRDhw7Nddddl+rVK/86YvDgwdlpp52yzTbbfGeNTZo0SadOnZIke+yxR+bNm5df//rXeemll7LrrrsmSW655ZaUl5fngQceSLVq1ZIke++9d04++eTVDiv9p29/Bp07d868efNy5pln5osvvki9evUK/Ro2bFioe/fdd88GG2yQo48+OiNGjMiRRx5Z1JoAAFi7OJoKAAAAAADWAaWlxftKf/LkyRk2bFj69u271COuGjVqlN12222Z46tVq5Ydd9wxEydOXGafo446Kp988kmefPLJSu0ffvhhnn/++eXuhrM0O+64Y5JkypQphbbPPvssm2yySSGE823F/MyWpn79+qmoqMiiRYu+s9/S6gYAYP0kiAMAAAAAAOuRPn36pKSk5Dv7PP/886moqEiPHj1WeZ2JEyemWbNmy7y+9957p2nTphk8eHCl9nvuuSdJcsQRR6z0mpMnT06SbLHFFoW2nXfeOS+++GJ++9vfLrGLT7EtWrQoCxcuzLx58/Lyyy/n6quvTrdu3VJWVrbSdQMAsH4SxAEAAAAAgPVItWrVlro7zLd9+OGHSZIWLVqs8LzfhFA+/fTTXHHFFRk3blwOO+ywZfYvLS3NEUcckQceeCDz5s0rtA8ZMiRdu3b9zhDPNyoqKrJw4cJ89dVXef7553PFFVfkJz/5STp06FDoc/bZZ2efffbJf/3Xf6VNmzbZaKONcvTRR+f5559f4XtbUZ06dUqNGjVSp06dtG/fPjVq1Mhdd921zLq//vrrvPrqqzn33HOz4447Fo4WAwBg/SWIAwAAAAAA65GBAwdm4cKFK9R3eTvnfNs3IZSNN944F110Ufr27ZsLL7zwO8ccddRR+fzzz/PII48kSd577728/PLLK3ws1c0335waNWqkbt262XPPPVOnTp0MGTKkUp/69evn8ccfz5gxY3LhhRemXbt2GTp0aLp06ZL//u//Xubc34RlvnktXrx4ufXcddddGTduXMaMGZMhQ4bk66+/To8ePfLFF19U6jd8+PDUqFEjtWrVyk477ZTp06fngQceSK1atVbovgEAWHcJ4gAAAAAAwA/MZpttliSZMmXKCo/5JoTyzjvvZO7cubnllltSu3bt7xyzyy67pFWrVoXjqQYPHpxatWrl0EMPXaE1Dz/88IwbNy7PP/98zj///Lz77rs5+eSTl9q3Q4cOueSSSzJy5Mi888472XzzzXPuuecuc+4777wzNWrUKLx+9rOfLbeeNm3apH379unQoUOOOOKI3H333fnHP/6RO+64o1K/zp07Z9y4cXnxxRdz1VVXZdasWTnyyCNXKOwDAMC6rXpVFwAAAAAAAKxZe+65Z0pKSvLYY4+lW7duKzTmmxDKyjrqqKNy5ZVXZvbs2RkyZEj233//lJWVrdDYxo0bF9bs3Llzvvjii9xwww0544wz0rFjx2WO22KLLXLYYYflmmuuyUcffZQmTZos0efAAw/MuHHjCu833njjlbyzf38mSfLmm29Wai8rKyvUveuuu6a0tDRnnXVWhg4dmt69e6/0OgAArDuqfEecm266KeXl5aldu3Y6duyYsWPHfmf/oUOHpnXr1qldu3a22267DB8+vNL1v//979l3332z0UYbpaSkJOPHj/8eqwcAAAAAgHVPixYt0qtXr9xyyy156623lrg+a9asjBo1qihrHXXUUZk/f35+85vf5J133lnhY6mW5uKLL06DBg1yxRVXFNo++uijpfZ99913U6tWrTRs2HCp1zfaaKO0b9++8CovL1/pet54440kyw/xnHbaadliiy0yYMCAlV4DAIB1S5UGcf72t7+lf//+ueiii/LKK69khx12SPfu3fPxxx8vtf+LL76YI488MieccEJeffXV9OzZMz179iz8RTdJ5s6dm86dO+d3v/vdmroNAAAAAAD43n355ZcZNmxYhg0blsmTJ2fOnDmF95988kmh3wknnJDq1Ze/If7NN9+c8vLy7L777rn00kszcuTIjBw5MldccUXatGmz3H84u6K23nrr7LzzzrnppptSVlaW/ffff5XnatSoUU477bQ8/PDDefvtt5MkJ554Yn7yk59k4MCBee655/LII4+kT58+eeSRR9KvX7/UqlWrKPeR/Dt4M3r06Lz44ov561//mmOOOSZ169bNscce+53jatSokQsuuCCvvfZaRowYUbR6AABY+5RUVFRUVNXiHTt2zC677JIbb7wxSbJ48eI0b948p512Ws4777wl+vfu3Ttz587NI488Umjr1KlT2rVrl1tvvbVS30mTJmWLLbbIq6++mnbt2q1UXXPmzElZWVlmz56dBg0arPyNsUK2TklVlwCr7d1U2SMUisbzmPWB5zHrC89k1geeyawPSv5V1RXA6qtoVtUVrN++z++QFyxYkE8++SSNGzdOjRo1Kl375nvvpXn66afTtWvXJEmfPn1y5513ZkW+/v/8889zzTXX5N57780HH3yQ0tLS/OhHP8pRRx2Vvn37pnbt2nnmmWey1157Zdy4cat0NFWS/PGPf0z//v3zs5/9LAMHDlyhMeXl5TnggAMKv0P4xsyZM7PFFlvk4IMPzh133JHHHnssd911V0aPHp1p06albt262WqrrXLyySfnuOOOS7Vq1Vap5m/75jP4RklJSZo0aZIOHTrksssuy/bbb1+41rVr19SrV6/S7zKSf/9st9lmm7Ro0SLPPPPMUtf5rp8/AADrhioL4nz99depW7duhg0blp49exbajzvuuMyaNSsPPvjgEmNatGiR/v3754wzzii0XXTRRXnggQfy2muvVeq7MkGc+fPnZ/78+YX3c+bMSfPmzQVxvmd+ycD6wC8ZWB94HrM+8DxmfeGZzPrAM5n1gSAO6wNBnO9XVQVxWP/5+QMArPuq7GiqGTNmZNGiRWnSpEml9iZNmmT69OlLHTN9+vSV6r+iBgwYkLKyssKrefPmqzUfAAAAAAAAAAA/PFUWxFmbnH/++Zk9e3bhNXXq1KouCQAAAAAAAACAdUz1qlp44403TrVq1fLRRx9Vav/oo4/StGnTpY5p2rTpSvVfUbVq1UqtWrVWaw4AAAAAAAAAAH7YqmxHnJo1a2bnnXfOyJEjC22LFy/OyJEjs+uuuy51zK677lqpf5I88cQTy+wPAAAAAAAAAABrSpUeTdW/f//cdtttufPOO/P222+nX79+mTt3bo4//vgkybHHHpvzzz+/0P+Xv/xlRowYkT/84Q+ZMGFCLr744rz00ks59dRTC31mzpyZ8ePH56233kqSvPPOOxk/fnymT5++Zm8OAAAAAACKaOjQoTnooIOy+eabZ4MNNki7du1y++23p6KiYpXmKy8vT0lJSUpKSlK9evVsueWW6devX2bMmFGUep955plcccUVS7RffPHFqVevXlHWWFE9e/ZM165dizLXpEmTUlJSkmHDhhXa+vTpk5KSkhx77LHf69oAAKz9qjSI07t371x99dW58MIL065du4wfPz4jRoxIkyZNkiRTpkzJtGnTCv132223DB48OH/+85+zww47ZNiwYXnggQfStm3bQp+HHnooO+64Y/bff/8kyRFHHJEdd9wxt95665q9OQAAAAAAKKJrrrkmdevWzR/+8Ic8/PDD2W+//XLiiSfm0ksvXeU5e/XqlVGjRuXpp59Ov379ctddd6Vnz55ZvHjxate7rCDO+mzw4MH55z//WdVlAABQhapXdQGnnnpqpR1tvu2ZZ55Zou2www7LYYcdtsz5+vTpkz59+hSpOgAAAAAAWDs8/PDD2XjjjQvv995773z66ae55ppr8tvf/jalpSv/b2+bNGmSTp06JUn22GOPzJs3LxdeeGFeeeWVtG/ffpXqnD9/fmrUqLFKY9dlrVq1yldffZUrrrgiAwcOrOpyAACoIlW6Iw4AAAAAALBivh3C+caOO+6YOXPmZO7cuUVZ45vwzcSJE5MkkydPTq9evVJWVpYNNtgg3bt3z+uvv15pTHl5eU499dT8/ve/T8uWLVOnTp2cfvrpueSSSzJ37tzC8VfLOp5p7ty5OfXUU7PNNtukbt26KS8vT9++fTN79uylrnPTTTelZcuWKSsrS8+ePfPJJ59U6vf222+nS5cuqV27drbaaqvceeedRflslqdmzZo599xz85e//CWTJ09eI2sCALD2qfIdcQAAAAAAgFXzwgsvZLPNNkv9+vULbX369Mmdd96ZioqKlZ7vmwBOs2bN8vnnn6dr164pLS3Nrbfemtq1a+fyyy/PnnvumX/84x9p3rx5Ydx9992XVq1a5brrrku1atXSrl27zJs3L4MHD85TTz2VJGnQoMFS1/zyyy+zaNGiXH755WncuHGmTp2ayy+/PD179szTTz9dqe9DDz2U9957LzfddFNmzJiRM888M6eddlruueeeJMm8efOy7777ZoMNNshf/vKXJMmFF16YOXPmpFWrViv9eaysn//857n88stzxRVX5E9/+tP3vh4AAGsfQRwAAAAAAFgHvfDCC7nnnnvyhz/8oVJ7tWrVUq1atRWao6KiIgsXLsyCBQsyZsyYXH755dlyyy2z00475bbbbsvkyZPz5ptvpk2bNkmSLl26pEWLFrn22msrrbtgwYI8+uij2WCDDQptm2++eUpLSwtHXy1L48aNc8sttxTeL1y4MFtssUU6d+6cd999N1tvvXWleh966KHUqlUrSTJp0qRcccUVWbx4cUpLS3PHHXfkX//6VyZMmFAI3uy4447ZZptt1kgQp3bt2jn77LNz/vnn57e//W0233zz731NAADWLo6mAgAAAACAdcz/9//9f+ndu3f22muvnH766ZWuDRw4MAsXLlyheW6++ebUqFEjdevWzV577ZXNNtss9913X+rUqZPnn38+bdu2LYRwkqRRo0bZZ5998sILL1Sap2vXrpVCOCvrL3/5S3bcccfUq1cvNWrUSOfOnZMk7777bqV+Xbp0KYRwkmTbbbfNggUL8vHHHydJxowZk7Zt21YK3fyf//N/ssMOO3zn+t8Ekr55LVq0aJXvpW/fvikrK8uVV165ynMAALDuEsQBAAAAAIB1yKxZs7Lffvtlo402yn333ZfS0lX/qv/www/PuHHjMn78+Hz66acZO3Zs2rVrlyT57LPP0qRJkyXGNGnSJDNnzlyibVXdf//9OfbYY9OhQ4fce++9GT16dO6///4k/z5q6tsaNmxY6X3NmjUr9Zs2bVo22WSTpdb8XZ599tnUqFGj8Prxj3+8qreTunXrpn///hk4cGCmTZu2yvMAALBucjQVAAAAAACsI7766qsccMABmT17dkaNGpWysrLVmq9x48Zp3779Uq81atQo77zzzhLtH330URo1alSpraSkZJVrGDp0aNq1a5c//elPhbZnn312lebadNNN88orryzR/tFHH6VBgwbLHLfzzjtn3Lhxhff169dfpfW/8Ytf/CJXXXVVfv/736/WPAAArHvsiAMAAAAAAOuAhQsX5vDDD8/bb7+dESNGZLPNNvte1+vcuXNef/31SmGczz77LE8++WTh6KjvUrNmzcyfP3+5/b766qvCzjbfuPvuu1e+4CQdOnTIG2+8kffff7/Q9v777+e11177znH169dP+/btC69tttlmldb/9nxnnHFG/vSnPxWOzQIA4IdBEAcAAAAAANYBp5xySh555JH8+te/zpw5czJ69OjC69uBlxNOOCHVq6/+hvjHH398WrZsmf333z/33HNPHnjggey7776pXr16zjjjjOWOb9OmTRYuXJjrrrsu48aNW+ruOkmyzz77ZOzYsbnsssvy5JNPpn///hk5cuQq1dynT580bdo0BxxwQIYOHZqhQ4fmwAMPTNOmTVdpvtVx+umnp2bNmhk1atQaXxsAgKojiAMAAAAAAOuAxx9/PEly1llnZdddd630mjZtWqHfokWLsmjRotVer379+nnmmWeyww475KSTTsrRRx+dDTfcMM8991yaN2++3PEHHnhgTjnllAwYMCAdO3bMySefvNR+J598cs4666zccMMNOeSQQzJ16tQMHjx4lWquU6dOHn/88WyyySY55phjcu655+acc87JLrvsskrzrY6ysrKcdtppa3xdAACqVklFRUVFVRextpkzZ07Kysoye/bs7zwzltWzdVb9zGBYW7wbj1DWfZ7HrA88j1lfeCazPvBMZn1Q8q+qrgBWX0Wzqq5g/fZ9foe8YMGCfPLJJ2ncuHFq1KhR1LlZ+/n5AwCs++yIAwAAAAAAAAAARSCIAwAAAAAAAAAARSCIAwAAAAAAAAAARSCIAwAAAAAAAAAARSCIAwAAAAAAAAAARSCIAwAAAAAA64Dhw4enS5cuady4cWrVqpUtt9wy/fv3z+zZs1dpvmuvvTbDhw8vcpXF0adPn7Rt23aJ9kmTJuWkk05Ky5YtU6tWrTRq1Cg9evTIsGHD1mh95eXlKSkpSUlJSapXr54tt9wy/fr1y4wZMwp9+vTpU+jzn6977rlnjdYLAMCaU72qCwAAAAAAAJZv5syZ6dixY04//fRstNFGeeONN3LxxRfnjTfeyOOPP77S81177bU54IAD8pOf/OR7qLb4Ro8enR49eqRx48Y577zzsu2222bOnDkZPnx4jj766LRq1So77LDDGqunV69eOeuss7JgwYKMHj06F198cV5//fU899xzKS3997+D3nLLLXP33XcvMbZVq1ZrrE4AANYsQRwAAAAAAFgHHHPMMZXed+3aNbVq1cpJJ52Uf/3rX2nWrFkVVfb9mzdvXg4//PBsvvnmefHFF9OgQYPCtQMPPDD9+vVLw4YN12hNTZo0SadOnZIke+yxR+bNm5cLL7wwr7zyStq3b58kqVOnTqEPAAA/DI6mAgAAAACAddRGG22UJPn6669Xalx5eXkmT56cm266qXBc0h133JGzzjorLVq0yOLFiyv1f/TRR1NSUpK33nqrMP7UU0/NVVddlc022yx169bNQQcdlGnTplUaN3/+/FxwwQWFo6TatGmTwYMHr/R9Dh06NFOnTs2AAQMqhXC+sf3226dFixaF93//+9/Trl271K5dO82aNUv//v0zb968lV53ZXwTvpk4ceL3ug4AAGs3QRwAAAAAAFiHLFq0KPPmzcsrr7ySSy+9ND/96U9TXl5euH7xxRenpKQkkyZNWuYc999/f5o2bZpevXpl1KhRGTVqVPbff//8/Oc/z9SpU/PEE09U6n/77benU6dO2XbbbSvNcf/99+eWW27JLbfckjFjxuSQQw6pNO7www/Pn/70p5x11ll55JFH0qNHjxxzzDF59NFHV+qen3322VSrVi3dunVbbt+HHnoovXr1yrbbbpsHHngg55xzTm699dYldhQqtm8COP+5M9HChQuXeAEAsP5yNBUAAAAAAKxDWrZsmQ8//DBJ0qNHjyV2mCktLU21atVSUlKyzDl23HHH1KpVq9LxSknSuHHjdO7cObfffnu6d++eJPn000/z0EMP5cYbb6w0x+eff55HH300ZWVlSZLmzZvnxz/+cR577LF07949Tz/9dB566KE89thj2XfffZMk++yzT6ZNm5aLLroo++233wrf84cffpjGjRunTp06y+178cUXp1OnToXPpUePHqlbt25OPvnkvP7669luu+1WeN3vUlFRkYULF2bBggUZM2ZMLr/88my55ZbZaaedCn3efPPN1KhRY4mxU6dOzeabb16UOgAAWLvYEQcAAAAAANYhw4cPz4svvpjbbrstb7/9dg488MAsWrSocP3CCy/MwoUL07Jly1Wa/8QTT8yDDz6YmTNnJknuvvvu1KhRI0cccUSlfnvttVchhJMke++9dxo1apQxY8YkSR5//PE0atQoe++9d6XdYPbZZ5+8+uqrlWpeEd8VLPrGF198kfHjx6dXr16V2nv37p0keeGFF5Y5dmV3rbn55ptTo0aN1K1bN3vttVc222yz3HfffZXCQltttVXGjRu3xKtJkybLnR8AgHWTHXEAAAAAAGAdsv322ydJdt111+yyyy5p165d7r//4gr5hQAAG9dJREFU/iXCJ6vqsMMOyy9/+cv89a9/zemnn55BgwalV69eqV+/fqV+m2yyyRJjN9lkk0ybNi1JMmPGjMycOXOpO8IkybRp01Z4V5jNNtssTz75ZObNm5fatWsvs9+sWbNSUVGxRNClrKwstWrVKoSLluY/66yoqPjOmg4//PCcffbZqVGjRpo3b55GjRot0ad27dpp3779d84DAMD6RRAHAAAAAADWUdtvv31q1KiR999/v2hz1qlTJ0cffXQGDRqUzp07Z/z48bn++uuX6Pfxxx8vtW3TTTdNkjRq1CiNGzfO8OHDl7rO0oI8y9K1a9cMHDgwI0eOzP7777/Mfg0bNkxJSckStc2ePTvz589faljmG+PGjVvhepJ/H+MlZAMAwH9yNBUAAAAAAKyjxowZkwULFmTLLbdc6bE1a9bMvHnzlnrtxBNPzPjx43PmmWemVatW2WOPPZbo8/TTT2f27NmF90899VRmzpyZjh07Jkm6deuWTz75JDVr1kz79u2XeNWsWXOFa+3Vq1eaN2+eCy64IJ9//vkS119//fVMnTo19erVS7t27TJs2LBK1++9994kSefOnZe5xn/WBwAAq8KOOAAAAAAAsA445JBD0r59+2y//fapU6dOXnvttVx11VXZfvvt07Nnz0K/Sy+9NJdeemn++c9/pmXLlsucr02bNnnqqafyxBNPZMMNN8wWW2yRjTbaKEmyww47ZJdddslzzz2XAQMGLHV8/fr1s99+++W8887LrFmzcu6556ZDhw7p3r17kmSfffbJgQcemB49euScc87J9ttvn7lz5+bNN9/M+++/n//+7/9e4XuvXbt27r333vTo0SPt27fPmWeemW233TZz5szJY489lttuuy1jxoxJ8+bNc/HFF6dnz5455phjcswxx+Sdd97JBRdckEMPPTTbbbfdCq9ZDF999VVGjx69RHvz5s2z2WabrdFaAABYMwRxAAAAAABgHdChQ4f87W9/y5VXXpnFixenvLw8J554Yn71q19V2l1m8eLFWbRoUSoqKr5zviuuuCL9+vXLoYcems8//zyDBg1Knz59CtcPPvjgvPLKKznuuOOWOv7ggw/O5ptvnr59++azzz7LPvvsk1tvvbVSn2HDhuXKK6/MzTffnMmTJ6esrCxt27bN8ccfv9L336lTp7z66qsZMGBArrjiikyfPj316tVLhw4dMmTIkOywww5Jkp/+9KcZOnRoLr30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dUzTpk2/s/83//3oo4+y6aabVurTrl27pc55/vnnp3///oX3ixcvzsyZM7PRRhulpKRkpe8L1gZz5sxJ8+bNM3XqVOdUA1Qhz2OAtYdnMsDawfOY9UFFRUU+//zzNGvWrKpLAQAA1jJVGsSpWbNmdt5554wcOTI9e/ZM8u8QzMiRI3Pqqacudcyuu+6akSNH5owzzii0PfHEE9l1112TJFtssUWaNm2akSNHFoI3c+bMyZgxY9KvX7+lzlmrVq3UqlWrUlvDhg1X695gbdGgQQNfagGsBTyPAdYenskAawfPY9Z1dsIBAACWpsqPpurfv3+OO+64tG/fPh06dMi1116buXPn5vjjj0+SHHvssdlss80yYMCAJMkvf/nLdOnSJX/4wx+y//7755577slLL72UP//5z0mSkpKSnHHGGfmv//qvtGrVKltssUV++9vfplmzZoWwDwAAAAAAAAAAFFuVB3F69+6dTz75JBdeeGGmT5+edu3aZcSIEWnSpEmSZMqUKSktLS3032233TJ48OD85je/yQUXXJBWrVrlgQceSNu2bQt9zjnnnMydOzcnnXRSZs2alc6dO2fEiBGpXbv2Gr8/AAAAAAAAAAB+GEoqKioqqroIoPjmz5+fAQMG5Pzzz1/i6DUA1hzPY4C1h2cywNrB8xgAAID1mSAOAAAAAAAAAAAUQenyuwAAAAAAAAAAAMsjiAMAAAAAAAAAAEUgiAMAAAAAAAAAAEUgiAMAAAAAAAAAAEVQvaoLAABY18yYMSO33357Ro0alenTpydJmjZtmt122y19+vRJ48aNq7hCAAAAAAAAqoIdcQAAVsK4ceOy9dZb5/rrr09ZWVn23HPP7LnnnikrK8v111+f1q1b56WXXqrqMgF+MN5+++0MGjQoEyZMSJJMmDAh/fr1y89+9rM89dRTVVwdwA/HV199lRdeeCFvvfXWEtfmzZuXu+66qwqqAgAAgDWvpKKioqKqiwCKY+rUqbnoooty++23V3UpAOutTp06ZYcddsitt96akpKSStcqKirSt2/f/OMf/8ioUaOqqEKAH44RI0bkoIMOSr169fLll1/m/vvvz7HHHpsddtghixcvzrPPPpvHH388e++9d1WXCrBee/fdd7PvvvtmypQpKSkpSefOnXPPPfdk0003TZJ89NFHadasWRYtWlTFlQIAAMD3z444sB6ZOXNm7rzzzqouA2C99tprr+XMM89cIoSTJCUlJTnzzDMzfvz4NV8YwA/QpZdemrPPPjuffvppBg0alKOOOionnnhinnjiiYwcOTJnn312rrzyyqouE2C9d+6556Zt27b5+OOP884776R+/frZfffdM2XKlKouDQAAANa46lVdALDiHnrooe+8/sEHH6yhSgB+uJo2bZqxY8emdevWS70+duzYNGnSZA1XBfDD9OabbxaOOjn88MPzf//v/02vXr0K148++ugMGjSoqsoD+MF48cUX8+STT2bjjTfOxhtvnIcffjinnHJK9thjjzz99NPZYIMNqrpEAAAAWGMEcWAd0rNnz5SUlOS7TpRb2g4NABTPr371q5x00kl5+eWX8+Mf/7gQuvnoo48ycuTI3Hbbbbn66quruEqAH45v/v5bWlqa2rVrp6ysrHCtfv36mT17dlWVBvCD8dVXX6V69f/3NWNJSUluueWWnHrqqenSpUsGDx5chdUBAADAmiWIA+uQTTfdNDfffHMOOuigpV4fP358dt555zVcFcAPyy9+8YtsvPHG+eMf/5ibb745ixYtSpJUq1YtO++8c+64444cfvjhVVwlwA9DeXl53nvvvWy11VZJklGjRqVFixaF61OmTMmmm25aVeUB/GC0bt06L730Utq0aVOp/cYbb0yS/PSnP62KsgAAAKBKlFZ1AcCK23nnnfPyyy8v8/rydssBoDh69+6d0aNH58svv8yHH36YDz/8MF9++WVGjx4thAOwBvXr168QiEyStm3bVtqR4dFHH83ee+9dFaUB/KAcfPDBGTJkyFKv3XjjjTnyyCN9XwEAAMAPRkmF/wuGdcbzzz+fuXPnpkePHku9Pnfu3Lz00kvp0qXLGq4MAAAAAAAAABDEAQAAAAAAAACAInA0FQAAAAAAAAAAFIEgDgAAAAAAAAAAFIEgDgAAAAAAAAAAFIEgDgAArMXuuOOONGzYcIX7P/PMMykpKcmsWbO+t5oAAAAAAIClE8QBAIAiGjVqVKpVq5b9999/pceWl5fn2muvrdTWu3fvvPvuuys8x2677ZZp06alrKwsycoHef7TJZdckmOOOWap1y6++OKUlJSkpKQk1atXz8Ybb5w999wz1157bebPn79S61RVgOjiiy9Ou3bt1uiaAAAAAACsvwRxAACgiAYOHJjTTjstzz33XP71r3+t9nx16tTJJptsssL9a9asmaZNm6akpGS1106SBx98MD/96U+Xef1HP/pRpk2blilTpuTpp5/OYYcdlgEDBmS33XbL559/XpQaAAAAAABgXSGIAwAARfLFF1/kb3/7W/r165f9998/d9xxxxJ9Hn744eyyyy6pXbt2Nt544xx88MFJkq5du2by5Mk588wzC7vMJJV3tHn33XdTUlKSCRMmVJrzj3/8Y7baaqsklXeWeeaZZ3L88cdn9uzZhTkvvvjiXHrppWnbtu0StbVr1y6//e1vC++nTp2aN998Mz169FjmPVevXj1NmzZNs2bNst122+W0007Ls88+mzfeeCO/+93vCv3+8pe/pH379qlfv36aNm2ao446Kh9//HGSZNKkSdlrr72SJBtuuGFKSkrSp0+fJMmIESPSuXPnNGzYMBtttFEOOOCA/POf/yzM+/XXX+fUU0/Npptumtq1a6dly5YZMGBA4fqsWbPy85//PI0bN06DBg2y995757XXXit8tpdccklee+21wueztJ8ZAAAAAACsKEEcAAAoknvvvTetW7fONttsk2OOOSa33357KioqCtf/53/+JwcffHB+8pOf5NVXX83IkSPToUOHJMnf//73bL755rn00kszbdq0TJs2bYn5t95667Rv3z533313pfa77747Rx111BL9d9ttt1x77bVp0KBBYc5f/epX+dnPfpa3334748aNK/R99dVX849//CPHH398oe2hhx5K165d06BBg5X6HFq3bp399tsvf//73wttCxYsyGWXXZbXXnstDzzwQCZNmlQI2zRv3jz33XdfkuSdd97JtGnTct111yVJ5s6dm/79++ell17KyJEjU1pamoMPPjiLFy9Oklx//fV56KGHcu+99+add97J3XffnfLy8sK6hx12WD7++OM8+uijefnll7PTTjvlxz/+cWbOnJnevXvnrLPOKuzqM23atPTu3Xul7hUAAAAAAL6telUXAAAA64uBAwfmmGOOSZL06NEjs2fPzrPPPpuuXbsmSS6//PIcccQRueSSSwpjdthhhyRJo0aNUq1atcKOMcty9NFH58Ybb8xll12W5N+75Lz88sv561//ukTfmjVrpqysLCUlJZXmrFevXrp3755BgwZll112SZIMGjQoXbp0yZZbblno9+CDD+aggw5apc+idevWefzxxwvvf/aznxX+vOWWW+b666/PLrvski+++CL16tVLo0aNkiSbbLJJYQegJDn00EMrzXv77bencePGeeutt9K2bdtMmTIlrVq1SufOnVNSUpKWLVsW+r7wwgsZO3ZsPv7449SqVStJcvXVV+eBBx7IsGHDctJJJ6VevXqFXX0AAAAAAGB12REHAACK4J133snYsWNz5JFHJvn3kU29e/fOwIEDC33Gjx+fH//4x6u1zhFHHJFJkyZl9OjRSf69G85OO+2U1q1br9Q8J554YoYMGZJ58+bl66+/zuDBgyuFZebMmZNnn302P/3pT1epzoqKisLxWkny8ssv58ADD0yLFi1Sv379dOnSJUkyZcqU75znvffey5FHHpktt9wyDRo0KOx28824Pn36ZPz48dlmm21y+umnVwr/vPbaa/niiy+y0UYbpV69eoXXxIkTKx1vBQAAAAAAxWJHHAAAKIKBAwdm4cKFadasWaGtoqIitWrVyo033piysrLUqVNntddp2rRp9t577wwePDidOnXK4MGD069fv5We58ADD0ytWrVy//33p2bNmlmwYEF69epVuP7oo49m2223TfPmzVepzrfffjtbbLFFkn8fL9W9e/d07949d999dxo3bpwpU6ake/fu+frrr5dbZ8uWLXPbbbelWbNmWbx4cdq2bVsYt9NOO2XixIl59NFH8+STT+bwww9Pt27dMmzYsHzxxRfZdNNN88wzzywx77d33QEAAAAAgGIRxAEAgNW0cOHC3HXXXfnDH/6Qfffdt9K1nj17ZsiQIenbt2+23377jBw5Mscff/xS56lZs2YWLVq03PWOPvronHPOOTnyyCPzwQcf5Igjjlhm32XNWb169Rx33HEZNGhQatasmSOOOKJSUGh1jqWaMGFCRowYkfPPP7/w/tNPP82VV15ZCPa89NJLS9SZpFKtn376ad55553cdttt2WOPPZL8+7ip/9SgQYP07t07vXv3Tq9evdKjR4/MnDkzO+20U6ZPn57q1asXdtL5Tyv6mQMAAAAAwIpwNBUAAKymRx55JJ999llOOOGEtG3bttLr0EMPLRxPddFFF2XIkCG56KKL8vbbb+f111/P7373u8I85eXlee655/Lhhx9mxowZy1zvkEMOyeeff55+/fplr732qrQLz38qLy/PF198kZEjR2bGjBn58ssvC9d+/vOf56mnnsqIESMqHUu1cOHCPProoyt0LNXChQszffr0/Otf/8rrr7+eG264IV26dEm7du1y9tlnJ0latGiRmjVr5oYbbsgHH3yQhx56KJdddlmleVq2bJmSkpI88sgj+eSTT/LFF19kww03zEYbbZQ///nPef/99/PUU0+lf//+lcZdc801GTJkSCZMmJB33303Q4cOTdOmTdOwYcN069Ytu+66a3r27JnHH388kyZNyosvvphf//rXhSBQeXl5Jk6cmPHjx2fGjBmZP3/+cu8ZAAAAAACWRRAHAABW08CBA9OtW7eUlZUtce3QQw/NSy+9lH/84x/p2rVrhg4dmoceeijt2rXL3nvvnbFjxxb6XnrppZk0aVK22mqrNG7ceJnr1a9fPwceeGBee+21HH300d9Z22677Za+ffumd+/eady4cX7/+98XrrVq1Sq77bZbWrdunY4dOxban3322dSrVy877bTTcu/9zTffzKabbpoWLVqka9euuffee3P++efn+eefT7169ZIkjRs3zh133JGhQ4dm2223zZVXXpmrr7660jybbbZZLrnkkpx33nlp0qRJTj311JSWluaee+7Jyy+/nLZt2+bMM8/MVVddtcRn8fvf/z7t27fPLrvskkmTJmX48OEpLS1NSUlJhg8fnj333DPHH398tt566xxxxBGZPHlymjRpkuTfP58ePXpkr732SuPGjTNkyJDl3jMAAAAAACxLSUVFRUVVFwEAAKx5FRUVadWqVU455ZRKO82cfvrpWbhwYW6++eYqrA4AAAAAANY91au6AAAAYM375JNPcs8992T69Ok5/vjjK11r27Ztdt111yqqDAAAAAAA1l12xAEAgB+gkpKSbLzxxrnuuuty1FFHVXU5AAAAAACwXrAjDgAA/ADJ4wMAAAAAQPGVVnUBAAAAAAAAAACwPhDEAQAAAAAAAACAIhDEAQAAAAAAAACAIhDEAQAAAAAAAACAIhDEAQAAAAAAAACAIhDEAQAAAAAAAACAIhDEAQAAAAAAAACAIhDEAQAAAAAAAACAIhDEAQAAAAAAAACAIvj/Ab2EHfuemRZnAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACOIAAANLCAYAAADmKKApAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdebzWY/4/8NdpPZ06naK0aFWyZOkrZN9HDJPsssUwGYNB1uwMso/ByDJfxte+G0xkHRlLtqyjCCURWTqlQ+v9+8Oj+zdHRbjNoXk+H4/7Md3XdX2uz/vzuZfxOOd1rqusUCgUAgAAAAAAAAAA/CD16roAAAAAAAAAAABYEgjiAAAAAAAAAABACQjiAAAAAAAAAABACQjiAAAAAAAAAABACQjiAAAAAAAAAABACQjiAAAAAAAAAABACQjiAAAAAAAAAABACQjiAAAAAAAAAABACQjiAAAAAAAAAABACQjiAADAD/Dmm29myy23TFVVVcrKynLXXXfVdUnf6Nprr82KK66Yhg0bpkWLFv+x8/71r39NWVlZnnvuuf/YOX/qunTpkn322aeuy1iksrKyHHzwwd86bv5rO378+B+/KAAAAACAnzhBHAAAFltNTU1OOeWU/OMf/6jrUn4yBg4cmFdeeSVnnHFGrr322qy55pr/sXM/+eSTOeWUUzJ16tTFGj9mzJjss88+6datW6688spcccUVP26BPyOXXnpp/vrXv9Z1GfwHnXnmmT/54BwAAAAA8PPToK4LAADg56OmpiannnpqkmSTTTap22J+Ar744os89dRTOf744xdr5ZBSe/LJJ3Pqqadmn332WazVbf7xj39k3rx5+dOf/pTu3bv/+AX+jFx66aVp1arVf3SFmrFjx6ZevZ//30bstdde2W233dK4ceO6LuU7OfPMM7PTTjulf//+dV0KAAAAALAE+fn/1BcAAOrIlClTkuQ/usXTD/HRRx8l+fZ6C4VCvvjii/9ARUu2OXPmZNasWYvsb9y4cRo2bPgfrOjHUb9+/ZSXl6esrKyuS6lzX375ZebNm1fXZQAAAAAAdUgQBwCgxCZNmpT99tsv7du3T+PGjdO1a9cceOCBtX4hP3Xq1Bx22GHp2LFjGjdunO7du+fss8+u9Qvc8ePHp6ysLOedd17+/Oc/Z7nllktFRUW23HLLTJw4MYVCIX/4wx/SoUOHNGnSJNttt10+/fTTBeq57777suGGG6Zp06aprKzMNttsk9dee63WmH322SfNmjXLpEmT0r9//zRr1iytW7fOkUcemblz5xbrad26dZLk1FNPTVlZWcrKynLKKaeU5L799a9/TVlZWcaPH1+r/R//+EfKyspqbYf15ptvZscdd0zbtm1TXl6eDh06ZLfddkt1dXWtY6+77rr07t07TZo0yVJLLZXddtstEydOXKx6Ro8ena233jrNmzdPs2bNsvnmm+fpp58u9p9yyinp3LlzkuSoo45KWVlZunTpssj55l/HLbfckjPOOCMdOnRIeXl5Nt9884wbN26B8aNGjcpWW22VqqqqVFRUZOONN84TTzxR6/xHHXVUkqRr167F1+Pr92++Ll265OSTT06StG7dutZr16VLl2y77bYZMWJE1lxzzTRp0iSXX355ksV7rybJTTfdlN69e6eysjLNmzfPqquumj/96U8L1DFz5swMHjw4rVu3TtOmTbP99tsXA02Lcvfdd6esrCwvv/xyse32229PWVlZdthhh1pjV1pppey6667F51dffXU222yzLLPMMmncuHFWXnnlDBs2bIF789prr+Wxxx4r3sd/X/Hpu35eL7zwwnTr1i2NGzfOv/71r0VeV5cuXWqtwDP/M/DEE09853s035gxY7LLLrukdevWadKkSVZYYYUcf/zxxf599tlnoe/TU045ZZFBmuuvvz4rrLBCysvL07t374wcObJW/6I+u/fdd1823njj4ntirbXWyg033PCN9c+v44033siee+6ZqqqqtG7dOieeeGIKhUImTpyY7bbbLs2bN0/btm1z/vnnLzDHzJkzc/LJJ6d79+5p3LhxOnbsmKOPPjozZ84sjikrK8uMGTNyzTXXFF/zf38tJk2alF//+tdp06ZNGjdunJ49e+aqq66qdZ75n+mbbropJ5xwQpZddtlUVFRk2rRp33iNAAAAAMCSzdZUAAAl9P7772fttdfO1KlTM2jQoKy44oqZNGlSbrvtttTU1KRRo0apqanJxhtvnEmTJuWAAw5Ip06d8uSTT2bIkCH54IMPcuGFF9aa8/rrr8+sWbNyyCGH5NNPP80555yTXXbZJZtttln+8Y9/5Jhjjsm4ceNy8cUX58gjj6z1y+Jrr702AwcOTN++fXP22WenpqYmw4YNywYbbJDRo0fX+oX83Llz07dv3/Tp0yfnnXdeHnrooZx//vnp1q1bDjzwwLRu3TrDhg3LgQcemO23374YgFhttdX+E7e2aNasWenbt29mzpyZQw45JG3bts2kSZNy7733ZurUqamqqkqSnHHGGTnxxBOzyy67ZP/998+UKVNy8cUXZ6ONNsro0aO/cVWY1157LRtuuGGaN2+eo48+Og0bNszll1+eTTbZJI899lj69OmTHXbYIS1atMjhhx+eAQMG5Je//GWaNWv2rfWfddZZqVevXo488shUV1fnnHPOyR577JFRo0YVxzzyyCPZeuut07t375x88smpV69eMVDy+OOPZ+21184OO+yQN954IzfeeGP++Mc/plWrVklSDEt93YUXXpj/+7//y5133plhw4alWbNmtV67sWPHZsCAATnggAPym9/8JiussMJiv1cffPDBDBgwIJtvvnnOPvvsJMnrr7+eJ554IoceemitOg455JC0bNkyJ598csaPH58LL7wwBx98cG6++eZF3rMNNtggZWVlGTlyZLHmxx9/PPXq1cs///nP4rgpU6ZkzJgxtbYJGzZsWHr27Jl+/fqlQYMGueeee/K73/0u8+bNy0EHHVS8N4ccckiaNWtWDK20adMmSb7z5/Xqq6/Ol19+mUGDBqVx48ZZaqmlFnldi/J97lGSvPzyy9lwww3TsGHDDBo0KF26dMlbb72Ve+65J2ecccZ3riNJHnvssdx88835/e9/n8aNG+fSSy/NVlttlWeeeSarrLLKIo/761//ml//+tfp2bNnhgwZkhYtWmT06NG5//77s/vuu3/reXfdddestNJKOeuss/L3v/89p59+epZaaqlcfvnl2WyzzXL22Wfn+uuvz5FHHpm11lorG220UZJk3rx56devX/75z39m0KBBWWmllfLKK6/kj3/8Y954443cddddSb76btx///2z9tprZ9CgQUmSbt26JUk+/PDDrLPOOikrK8vBBx+c1q1b57777st+++2XadOm5bDDDqtV6x/+8Ic0atQoRx55ZGbOnJlGjRp9jzsNAAAAACwxCgAAlMzee+9dqFevXuHZZ59doG/evHmFQqFQ+MMf/lBo2rRp4Y033qjVf+yxxxbq169fePfddwuFQqHwzjvvFJIUWrduXZg6dWpx3JAhQwpJCquvvnph9uzZxfYBAwYUGjVqVPjyyy8LhUKhMH369EKLFi0Kv/nNb2qdZ/LkyYWqqqpa7QMHDiwkKZx22mm1xv7P//xPoXfv3sXnU6ZMKSQpnHzyyd/ltiyWq6++upCk8M4779Rqf/TRRwtJCo8++mihUCgURo8eXUhSuPXWWxc51/jx4wv169cvnHHGGbXaX3nllUKDBg0WaP+6/v37Fxo1alR46623im3vv/9+obKysrDRRhsV2+a/Rueee+63Xt/861hppZUKM2fOLLb/6U9/KiQpvPLKK4VC4av3yfLLL1/o27dv8T1TKBQKNTU1ha5duxZ+8YtfFNvOPffchd6zRTn55JMLSQpTpkyp1d65c+dCksL9999fq31x36uHHnpooXnz5oU5c+Ys8tzzX98tttii1nUdfvjhhfr169d6jy9Mz549C7vsskvx+RprrFHYeeedC0kKr7/+eqFQKBTuuOOOQpLCSy+9VBxXU1OzwFx9+/YtLLfccgvMv/HGGy8w9rt+Xps3b1746KOPvvFa5uvcuXNh4MCBxec/9B5ttNFGhcrKysKECRNqtf/7XAMHDix07tx5gWPnvzf+XZJCksJzzz1XbJswYUKhvLy8sP322y9Q9/z34dSpUwuVlZWFPn36FL744otF1rIw8+sYNGhQsW3OnDmFDh06FMrKygpnnXVWsf2zzz4rNGnSpNY9vPbaawv16tUrPP7447XmveyyywpJCk888USxrWnTprWOnW+//fYrtGvXrvDxxx/Xat9tt90KVVVVxffU/M/0csstt9D3GQAAAADw38nWVAAAJTJv3rzcdddd+dWvfpU111xzgf75277ceuut2XDDDdOyZct8/PHHxccWW2yRuXPnLrDty84771xc5SVJ+vTpkyTZc88906BBg1rts2bNyqRJk5J8tUrJ1KlTM2DAgFrnqV+/fvr06ZNHH310gRp/+9vf1nq+4YYb5u233/6ed+THMf9ejBgxIjU1NQsdc8cdd2TevHnZZZddal1727Zts/zyyy/02uebO3duHnjggfTv3z/LLbdcsb1du3bZfffd889//vMHbT2z77771loxY8MNN0yS4n1+8cUX8+abb2b33XfPJ598Uqx9xowZ2XzzzTNy5MgFtoUqha5du6Zv37612hb3vdqiRYvMmDEjDz744LeeZ9CgQbW2QNpwww0zd+7cTJgw4RuP23DDDfP4448nSaZPn56XXnopgwYNSqtWrYrtjz/+eFq0aFFrpZYmTZoU/11dXZ2PP/44G2+8cd5+++0FtjJbmO/6ed1xxx0XuSrR4vo+92jKlCkZOXJkfv3rX6dTp061+ha15dTiWHfdddO7d+/i806dOmW77bbLiBEjitvWfd2DDz6Y6dOn59hjj015efn3qmX//fcv/rt+/fpZc801UygUst9++xXbW7RokRVWWKHWd9Stt96alVZaKSuuuGKt12uzzTZLkm/87CdJoVDI7bffnl/96lcpFAq15ujbt2+qq6vzwgsv1Dpm4MCBtd5nAAAAAMB/N1tTAQCUyJQpUzJt2rRv3K4lSd588828/PLLi/xl/UcffVTr+dd/qT4/iNKxY8eFtn/22WfF8yQp/gL665o3b17reXl5+QI1tWzZsjjfdzV37txMmTKlVttSSy31g7dt6dq1awYPHpwLLrgg119/fTbccMP069cve+65Z/EevPnmmykUCll++eUXOkfDhg0XOf+UKVNSU1OTFVZYYYG+lVZaKfPmzcvEiRPTs2fP71X/11/Pli1bJlnwdRs4cOAi56iuri4eVypdu3ZdoG1x36u/+93vcsstt2TrrbfOsssumy233DK77LJLttpqqwWO+bbrX5QNN9wwl112WcaNG5e33norZWVlWXfddYsBnd/85jd5/PHHs/7666devf//9wZPPPFETj755Dz11FMLBLeqq6trhdwW5rt+Xhd2H7+r73OP5odRvu3757ta2GeoR48eqampyZQpU9K2bdsF+t96660fXMvCvvfKy8uLW7D9e/snn3xSfP7mm2/m9ddfX+zX6+umTJmSqVOn5oorrsgVV1yxWHOU4jUHAAAAAJYcgjgAAP9h8+bNyy9+8YscffTRC+3v0aNHref169df6LhFtRcKheJ5kuTaa69d6C/L/301nW+a7/uaOHHiAr+gfvTRR7PJJpssdPyiVspY2Kob559/fvbZZ5/87W9/ywMPPJDf//73GTp0aJ5++ul06NAh8+bNS1lZWe67776FXlezZs2++wWVyOK+bueee2569eq10LE/Rv0LW9Fjcd+ryyyzTF588cWMGDEi9913X+67775cffXV2XvvvXPNNdfUOubbrn9RNthggyTJyJEj8/bbb2eNNdZI06ZNs+GGG+aiiy7K559/ntGjR+eMM84oHvPWW29l8803z4orrpgLLrggHTt2TKNGjTJ8+PD88Y9/XKyVhb7r57UUK6N833u0OL7L56wuLeweLM59mTdvXlZdddVccMEFCx379QDj181/T+y5556LDMOtttpqtZ5bDQcAAAAA+HeCOAAAJdK6des0b948r7766jeO69atWz7//PNsscUWP2o93bp1S/JVSKJU5/ouW9y0bdt2ga2KVl999UWOn7/qx9SpU2u1L2o7nlVXXTWrrrpqTjjhhDz55JNZf/31c9lll+X0009Pt27dUigU0rVr1wWCEt+mdevWqaioyNixYxfoGzNmTOrVq/etv8z/Iea/bs2bN//W1+2HbDm0uLUs7nu1UaNG+dWvfpVf/epXmTdvXn73u9/l8ssvz4knnpju3bv/4Fo6deqUTp065fHHH8/bb79d3NJro402yuDBg3Prrbdm7ty52WijjYrH3HPPPZk5c2buvvvuWiusLGx7okXdy//U5/WHmr+N2rd9/7Rs2XKBz1iy6M/Z/BWa/t0bb7yRioqKRa46M/89/Oqrr5bktf8uunXrlpdeeimbb775t34+FtbfunXrVFZWZu7cuT/51xwAAAAA+Gmq9+1DAABYHPXq1Uv//v1zzz335Lnnnlugf/6qDbvsskueeuqpjBgxYoExU6dOzZw5c0pST9++fdO8efOceeaZmT179gL9X982anFUVFQkWTAsszDl5eXZYostaj2+aTul+b+8HzlyZLFt7ty5C2wPM23atAXu0aqrrpp69epl5syZSZIddtgh9evXz6mnnrrAKiKFQqHWVjZfV79+/Wy55Zb529/+lvHjxxfbP/zww9xwww3ZYIMNFtjWq5R69+6dbt265bzzzsvnn3++QP+/v25NmzZNsnivx/exuO/Vr9/PevXqFVcNmf+alMKGG26YRx55JM8880wxiNOrV69UVlbmrLPOSpMmTdK7d+/i+PkrqPz7e6C6ujpXX331AnM3bdp0offxP/V5/aFat26djTbaKFdddVXefffdWn3/fv3dunVLdXV1Xn755WLbBx98kDvvvHOh8z711FN54YUXis8nTpyYv/3tb9lyyy0XuULNlltumcrKygwdOjRffvnlImv5Meyyyy6ZNGlSrrzyygX6vvjii8yYMaP4fGGvef369bPjjjvm9ttvX2io6ft8bwIAAAAA/12siAMAUEJnnnlmHnjggWy88cYZNGhQVlpppXzwwQe59dZb889//jMtWrTIUUcdlbvvvjvbbrtt9tlnn/Tu3TszZszIK6+8kttuuy3jx49Pq1atfnAtzZs3z7Bhw7LXXntljTXWyG677ZbWrVvn3Xffzd///vesv/76ueSSS77TnE2aNMnKK6+cm2++OT169MhSSy2VVVZZJausssoPrrdnz55ZZ511MmTIkHz66adZaqmlctNNNy0QdHjkkUdy8MEHZ+edd06PHj0yZ86cXHvttcVfoCdfhQ1OP/30DBkyJOPHj0///v1TWVmZd955J3feeWcGDRqUI488cpG1nH766XnwwQezwQYb5He/+10aNGiQyy+/PDNnzsw555zzg6/1m9SrVy9/+ctfsvXWW6dnz57Zd999s+yyy2bSpEl59NFH07x589xzzz1JUgydHH/88dltt93SsGHD/OpXvyoGdH6oxX2v7r///vn000+z2WabpUOHDpkwYUIuvvji9OrVKyuttFJJakm+CuJcf/31KSsrK25VVb9+/ay33noZMWJENtlkkzRq1Kg4fssttyyu1HPAAQfk888/z5VXXpllllkmH3zwQa25e/funWHDhuX0009P9+7ds8wyy2SzzTb7j31eS+Giiy7KBhtskDXWWCODBg1K165dM378+Pz973/Piy++mCTZbbfdcswxx2T77bfP73//+9TU1GTYsGHp0aNHrcDNfKusskr69u2b3//+92ncuHEuvfTSJMmpp566yDqaN2+eP/7xj9l///2z1lprZffdd0/Lli3z0ksvpaamZoHtykppr732yi233JLf/va3efTRR7P++utn7ty5GTNmTG655ZaMGDEia665ZpKvXvOHHnooF1xwQdq3b5+uXbumT58+Oeuss/Loo4+mT58++c1vfpOVV145n376aV544YU89NBD+fTTT3+0+gEAAACAnz9BHACAElp22WUzatSonHjiibn++uszbdq0LLvsstl6662Lq8lUVFTksccey5lnnplbb701//d//5fmzZunR48eOfXUU1NVVVWyenbfffe0b98+Z511Vs4999zMnDkzyy67bDbccMPsu+++32vOv/zlLznkkENy+OGHZ9asWTn55JNLEsRJkuuvvz4HHHBAzjrrrLRo0SL77bdfNt100/ziF78ojll99dXTt2/f3HPPPZk0aVIqKiqy+uqr57777ss666xTHHfsscemR48e+eMf/1gMDXTs2DFbbrll+vXr94119OzZM48//niGDBmSoUOHZt68eenTp0+uu+669OnTpyTX+k022WSTPPXUU/nDH/6QSy65JJ9//nnatm2bPn365IADDiiOW2uttfKHP/whl112We6///7Mmzcv77zzTsmCOIv7Xt1zzz1zxRVX5NJLL83UqVPTtm3b7LrrrjnllFNSr17pFuGcvwrOiiuumKWXXrpW+4gRI4r9862wwgq57bbbcsIJJ+TII49M27Ztc+CBB6Z169b59a9/XWvsSSedlAkTJuScc87J9OnTs/HGG2ezzTb7j35ef6jVV189Tz/9dE488cQMGzYsX375ZTp37pxddtmlOGbppZfOnXfemcGDB+foo49O165dM3To0Lz55psLDeJsvPHGWXfddXPqqafm3Xffzcorr5y//vWvxRWPFmW//fbLMsssk7POOit/+MMf0rBhw6y44oo5/PDDS37d/65evXq566678sc//jH/93//lzvvvDMVFRVZbrnlcuihh9baqu6CCy7IoEGDcsIJJ+SLL77IwIED06dPn7Rp0ybPPPNMTjvttNxxxx259NJLs/TSS6dnz545++yzf9T6AQAAAICfv7LCj702OAAAAAAAAAAA/Bco3Z+nAgAAAAAAAADAfzFBHAAAAAAAAAAAKAFBHAAAAAAAAAAAKAFBHAAAAAAAAAAAKAFBHAAAAAAAAAAAKIGfRBDnz3/+c7p06ZLy8vL06dMnzzzzzDeOv/XWW7PiiiumvLw8q666aoYPH16rv1Ao5KSTTkq7du3SpEmTbLHFFnnzzTdrjenXr186deqU8vLytGvXLnvttVfef//9WmNefvnlbLjhhikvL0/Hjh1zzjnnlOaCAQAAAAAAAABY4pQVCoVCXRZw8803Z++9985ll12WPn365MILL8ytt96asWPHZplllllg/JNPPpmNNtooQ4cOzbbbbpsbbrghZ599dl544YWsssoqSZKzzz47Q4cOzTXXXJOuXbvmxBNPzCuvvJJ//etfKS8vT5L88Y9/zLrrrpt27dpl0qRJOfLII4vzJ8m0adPSo0ePbLHFFhkyZEheeeWV/PrXv86FF16YQYMGLda1zZs3L++//34qKytTVlZWitsFAAAAAEAdKxQKmT59etq3b5969X4Sf+8KAAD8RNR5EKdPnz5Za621cskllyT5KrzSsWPHHHLIITn22GMXGL/rrrtmxowZuffee4tt66yzTnr16pXLLrsshUIh7du3zxFHHFEM11RXV6dNmzb561//mt12222hddx9993p379/Zs6cmYYNG2bYsGE5/vjjM3ny5DRq1ChJcuyxx+auu+7KmDFjFuva3nvvvXTs2PE73Q8AAAAAAH4eJk6cmA4dOtR1GQAAwE9Ig7o8+axZs/L8889nyJAhxbZ69epliy22yFNPPbXQY5566qkMHjy4Vlvfvn1z1113JUneeeedTJ48OVtssUWxv6qqKn369MlTTz210CDOp59+muuvvz7rrbdeGjZsWDzPRhttVAzhzD/P2Wefnc8++ywtW7ZcYJ6ZM2dm5syZxefzM04TJ05M8+bNv+12AAAAAADwMzBt2rR07NgxlZWVdV0KAADwE1OnQZyPP/44c+fOTZs2bWq1t2nTZpGrzkyePHmh4ydPnlzsn9+2qDHzHXPMMbnkkktSU1OTddZZp9YqO5MnT07Xrl0XmGN+38KCOEOHDs2pp566QHvz5s0FcQAAAAAAljBlZWV1XQIAAPAT81+9ee1RRx2V0aNH54EHHkj9+vWz995754fs1DVkyJBUV1cXHxMnTixhtQAAAAAAAAAA/JTV6Yo4rVq1Sv369fPhhx/Wav/www/Ttm3bhR7Ttm3bbxw//38//PDDtGvXrtaYXr16LXD+Vq1apUePHllppZXSsWPHPP3001l33XUXeZ5/P8fXNW7cOI0bN/6WqwYAAAAAAAAAYElUpyviNGrUKL17987DDz9cbJs3b14efvjhrLvuugs9Zt111601PkkefPDB4viuXbumbdu2tcZMmzYto0aNWuSc88+bJDNnziyeZ+TIkZk9e3at86ywwgoL3ZYKAAAAAAAAAID/bnW+NdXgwYNz5ZVX5pprrsnrr7+eAw88MDNmzMi+++6bJNl7770zZMiQ4vhDDz00999/f84///yMGTMmp5xySp577rkcfPDBSb7ak/ewww7L6aefnrvvvjuvvPJK9t5777Rv3z79+/dPkowaNSqXXHJJXnzxxUyYMCGPPPJIBgwYkG7duhXDOrvvvnsaNWqU/fbbL6+99lpuvvnm/OlPf8rgwYP/szcIAAAAAAAAAICfhTrdmipJdt1110yZMiUnnXRSJk+enF69euX+++9PmzZt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fPLJDBgwIEOHDs22226bG264If37988LL7yQVVZZJUlyzjnn5KKLLso111yTrl275sQTT0zfvn3zr3/9K+Xl5RkzZkzmzZuXyy+/PN27d8+rr76a3/zmN5kxY0bOO++8Wud76KGH0rNnz+LzpZde+se9IQDwk7djXRcAAAAAAAAAP0llhUKhUJcF9OnTJ2uttVYuueSSJMm8efPSsWPHHHLIITn22GMXGL/rrrtmxowZuffee4tt66yzTnr16pXLLrsshUIh7du3zxFHHJEjjzwySVJdXZ02bdrkr3/9a3bbbbeF1nHuuedm2LBhefvtt5N8tSJO165dM3r06PTq1et7Xdu0adNSVVWV6urqNG/e/HvNwaKV5YW6LgG+t0LWqOsS4Hvz/cvPme9fAACgFPzsFwAAWJQ63Zpq1qxZef7557PFFlsU2+rVq5ctttgiTz311EKPeeqpp2qNT5K+ffsWx7/zzjuZPHlyrTFVVVXp06fPIudMvgrrLLXUUgu09+vXL8sss0w22GCD3H333d/p+gAAAAAAAAAA+O9Rp1tTffzxx5k7d27atGlTq71NmzYZM2bMQo+ZPHnyQsdPnjy52D+/bVFjvm7cuHG5+OKLa21L1axZs5x//vlZf/31U69evdx+++3p379/7rrrrvTr12+h88ycOTMzZ84sPp82bdpCxwEAAAAAAAAAsOSp0yDOT8GkSZOy1VZbZeedd85vfvObYnurVq0yePDg4vO11lor77//fs4999xFBnGGDh2aU0899UevGQAAAAAAAACAn5463ZqqVatWqV+/fj788MNa7R9++GHatm270GPatm37jePn/+/izPn+++9n0003zXrrrZcrrrjiW+vt06dPxo0bt8j+IUOGpLq6uviYOHHit84JAAAAAAAAAMCSoU5XxGnUqFF69+6dhx9+OP3790+SzJs3Lw8//HAOPvjghR6z7rrr5uGHH85hhx1WbHvwwQez7rrrJkm6du2atm3b5uGHH06vXr2SfLVF1KhRo3LggQcWj5k0aVI23XTT9O7dO1dffXXq1fv2TNKLL76Ydu3aLbK/cePGady48bfOQ2nsXrZGXZcA31+hrgsAAAAAAAAAoNTqfGuqwYMHZ+DAgVlzzTWz9tpr58ILL8yMGTOy7777Jkn23nvvLLvsshk6dGiS5NBDD83GG2+c888/P9ts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SwEAAEqocePGKSsry6xZs751rCAOAAAAAACUUFlZWV2XAAAAlNB3+W98W1MBAN/JDrm7rkuAH6BfXRcAAAAAAAsYPnx4ttlmm0yZMiWtWrWq63IA+AGsiAMAAAAAAAD8bEycODH77LNPOnTokEaNGqVt27bZbLPNcvfdi/dHhBdffHEqKyt/5Cq/m8022yzvvvtullpqqbouBYAfyIo4AAAAAAAAwM/C2LFjs+GGG6Z58+Y544wzssYaa2TWrFm55557cuihh6Zfv5/fisgzZ85MeXl5OnbsWNelAFACVsQBAAAAAAAAfhYGDRqUsrKyvPDCCxk4cGBWXXXV9O7dO6ecckqeffbZJMkpp5ySHj16pEmTJmnbtm322muvVFdXJ/lqC6jf//73+fzzz1NWVpaysrIcccQRSZIvvvgiBxxwQJZZZpk0adIkq622WoYPH17r/BdccEHatm2b8vLybLnlljnllFMWWF3nnHPOSceOHdOwYcN07do1w4YNq9VfVlaWc845J5tvvnmaNGmS4447LsOHD09ZWVk+/vjj4rgHHngga665ZsrLy9O2bdvsu+++mTZtWrH/7LPPTufOndO4ceMsvfTS2WqrrUp3owH43gRxAAAAAAAAgJ+8jz76KI8//nj222+/NG/efIH+Vq1aJUnq16+fCy64IC+++GKuvPLK/POf/8zBBx+c5KstoP7whz+kWbNmeffdd/Puu+/mpJNOSpLsu+++efbZZ3Pttdfm+eefz/bbb5/tt98+r776apLkwQcfzFFHHZUDDjggzz77bDbffPNceOGFtWq49tprc/zxx+fggw8uhoUOOeSQ3HvvvbXGnX322dluu+3ywgsv5Le//e0C1/Kvf/0r/fv3z3bbbZfnnnsu1113XUaNGpVf//rXSZLHH388xx9/fI4//vi88sorueeee7Lhhhv+sBsMQEnYmgoAAAAAAAD4yXv99ddTKBSy0korfeO4E088sfjvFVZYIZ988kkOP/zwJEl5eXmqqqqSpNZWUG+++WZuu+22jBs3Ll26dEmSnHrqqXnwwQdz2WWX5ZJLLsmf/vSnbLTRRjn11FOTJKuuumqeeuqpPPzww8V5/vjHP2annXbKMcccUxzzzDPP5Lzzzsu2225bHLf99tvn97//fa3z/7tTTz01/fv3L17LKquskgsvvDBbb711ampq8s4776RJkybZZZdd0qJFi/To0SPrrbfe4t1IAH5UVsQBAAAAAAAAfvLmzZu3WOP+9re/Zd11180yyyyTpk2b5re//W2mTp2a6dOnL/KYF154IXPnzs3KK6+cioqK4uOZZ57JO++8kyR56623suaaa9Y6bq211qr1/K233sr6669fq2299dbLuHHjarV9fZ6ve+2113LbbbfVqmW77bbLvHnzMnbs2PTr1y/t2rVL165ds/322+eyyy77xusD4D/HijgAAAAAAADAT17Pnj1TVlaW119/fZFjxo4dm1122SV77bVXzjjjjLRu3TqPPPJIDjvssMycOTOVlZULPe7zzz9P/fr18/TTT6d+/fq1+ha2DdYP1axZs2/sr6mpyR577JEjjzxygb5u3bqlvLw8r732WoYPH577778/Z5xxRoYOHZrnn3++uEUXAHXjJ7Eizp///Od06dIl5eXl6dOnT5555plvHH/rrbdmxRVXTHl5eVZdddUMHz68Vn+hUMhJJ52Udu3apUmTJtliiy1qLec2fvz47LfffunatWuaNGmSbt265eSTT86sWbNqzfPyyy9nww03THl5eTp27JhzzjmndBcNAAAAAAAALLZlllkmG2ywQf73f/8306ZNW6D/448/ztNPP5158+bl8ssvz2abbZZVV101kyZNqjWuUaNGC6yus/baa2fu3Ln54IMP0rNnz1qP+VtYdevWLc8//3yt45577rlaz7t165YnnniiVtuTTz6Z5Zdf/jtd66qrrpqxY8cuUEvPnj1TXl6eJGnYsGG22267DBs2LK+99lomTZq0wO9NAfjPq/Mgzs0335zBgwfn5JNPzgsvvJDVV189ffv2zUcffbTQ8U8++WQGDBiQ/fbbL6NHj07//v3Tv3//vPrqq8Ux55xzTi666KJcdtllGTVqVJo2bZq+ffvmyy+/TJKMGTOm+H/Ar732Wv74xz/msssuy3HHHVecY9q0adlyyy3TuXPnPP/88zn33HNzyimn5IorrvhxbwgAAAAAAACwUJdffnnmzZuXNdZYI9dcc01effXVjB49OmeccUbWXnvtrLDCCpkzZ06GDh2a119/PcOGDcs111xTa45u3bqlpqYmd999dz744INMnz49q666arbbbrv8+te/zv/93/9lzJgxeeyxx3Lcccfl5ptvTpIceuiheeyxx3LKKafk1VdfzXnnnZd//OMfKSsrK849ePDg3HbbbTnnnHPy6quv5pRTTskDDzyQo4466jtd53HHHZcXXnghAwcOzFNPPZVXX301N9xwQwYOHJgkuemmm3LGGWfkqaeeyhtvvJHLLrsshUIhPXv2/IF3GIAfqqxQKBTqsoA+ffpkrbXWyiWXXJLkq70dO3bsmEMOOSTHHnvsAuN33XXXzJgxI/fee2+xbZ111kmvXr2K/wfTvn37HHHEEcWl2qqrq9OmTZv89a9/zW677bbQOs4999wMGzYsb7/9dpJk2LBhOf744zN58uQ0atQoSXLsscfmrrvuypgxYxbr2qZNm5aqqqpUV1f/KEvW/dcru7uuK4Dvr9CvriuA78/3Lz9nvn8BAIASWNTPfqurqzNhwoR07949FRUVdVghwJJtwoQJOemkk/LQQw9lypQpadmyZVZdddUMHjw4v/zlL3PaaaflkksuybRp07LWWmtl9913z+9+97tMmTKluG3Tnnvumb///e+ZOnVqBg8enPPPPz8zZ87Msccem1tuuSUfffRRWrZsmV69euX000/P2muvnSS54IILcvbZZ6e6ujobbbRR1lhjjfzv//5vpkyZUqzvnHPOycUXX5zJkyenQ4cOOfroo3PggQcW+8vKynLttddmzz33LLYNHz4822yzTa0aR44cmeOOOy6jR49OoVBIx44ds8MOO2To0KF54IEHcsIJJ2Ts2LGZOXNmOnfunGOOOSa//vWv/xMvAcB/nZqamowbNy6dO3dOVVXVN46t0yDOrFmzUlFRkdtuuy39+/cvtg8cODBTp07N3/72twWO6dSpUwYPHpzDDjus2HbyySfnrrvuyksvvZS333473bp1y+jRo9OrV6/imI033ji9evXKn/70p4XWcsIJJ+T+++8vLh+39957Z9q0abnrrruKYx599NFsttlm+fTTT9OyZctvvT5BnB+ZXwTzc+YXwfyc+f7l58z3LwAAUAKCOADMt9tuu2XcuHELbFEFwJLluwRxGvyHalqojz/+OHPnzk2bNm1qtbdp02aRq85Mnjx5oeMnT55c7J/ftqgxXzdu3LhcfPHFOe+882qdp2vXrgvMMb9vYUGcmTNnZubMmcXnC9ubEgAAAAAAAPh5Ovnkk7P11lunsrIyd911V26//facc845dV0WAD8hdRrE+SmYNGlSttpqq+y88875zW9+84PmGjp0aE499dQSVQYAAAAAAAD8lDz77LO5+OKLU1NTkw4dOuTMM8/M4YcfXtdlAfATUqdBnFatWqV+/fr58MMPa7V/+OGHadu27UKPadu27TeOn/+/H374Ydq1a1drzL9vVZUk77//fjbddNOst956ueKKKxbrPP9+jq8bMmRIBg8eXHw+bdq0dOzYcaFjAQAAAAAAgJ+X4cOH13UJAPzE1avLkzdq1Ci9e/fOww8/XGybN29eHn744ay77roLPWbdddetNT5JHnzwweL4rl27pm3btrXGTJs2LaNGjao156RJk7LJJpukd+/eufrqq1OvXu1bse6662bkyJGZPXt2rfOssMIKC92WKkkaN26c5s2b13oAAAAAAAAAAPDfoU6DOEkyePDgXHnllbnmmmvy+uuv58ADD8yMGTOy7777Jkn23nvvDBkypDj+0EMPzf3335/zzz8/Y8aMySmnnJLnnnsuBx98cJKkrKwshx12WE4//fTcfffdeeWVV7L33nunffv26d+/f5L/H8Lp1KlTzjvvvEyZMiWTJ0/O5MmTi+fZfffd06hRo+y333557bXXcvPNN+dPf/pTrRVvAAAAAAAAAABgvjrdmipJdt1110yZMiUnnXRSJk+enF69euX+++9PmzZtkiTvvvturdVq1ltvvdxwww054YQTctxxx2X55ZfPXXfdlVVWWaU45uijj86MGTMyaNCgTJ06NRtssEHuv//+lJeXJ/lqZZtx48Zl3Lhx6dChQ616CoVCkqSqqioPPPBADjrooPTu3TutWrXKSSedlEGDBv3YtwQAAAAAAAAAgJ+hssL85AklN23atFRVVaW6uto2VT+GsrvrugL4/gr96roC+P58//Jz5vsXAAAogUX97Le6ujoTJkxI9+7dU1FRUYcVAgAApVRTU5Nx48alc+fOqaqq+saxdb41FQAAAAAAAAAALAkEcQAAAAAA4L/M2muvnWHDhiVJhgwZkoEDB9ZxRd/fiBEjssIKK3zv47t3756HH364hBUBAPDfrEFdFwAAAAAAANSdoUOHlnzOsWPHpmfPnpkzZ07J5/66vn37ZuzYsd/7+HHjxpWwGgAA/tsJ4gAAAAAAwI+lX9mPO//dhR91+tmzZ6dhw4Y/6jkAAGBJYmsqAAAAAABYwo0cOTI9evRIs2bNsscee2TevHnFviOOOCK77rprkmT48OHp1KlTDj/88LRs2TJHHHFEZsyYkYEDB2aZZZZJmzZtctxxxxWPnT17dg477LC0b98+lZWVWXvttZN8tUrN3LlzU1FRkYqKirz55psL1PTRRx+lX79+WWqppdKhQ4dccsklxb611147hx12WHr27JmKiorsuuuumTBhQtZZZ500a9Ysffv2zRdffFGr5iSZO3du9t1337Rs2TKVlZVZZZVV8sEHHyyyPUmWXXbZPPDAA0mSmpqa7L333mnVqlXatWuXo446KnPnzi3ep+222y5bb711mjZtmtVWWy1jxoxJksyYMSO/+tWvUlVVlaqqqqy55pqleeEAAPjZEcQBAAAAAIAl2Jdffplddtkl+++/fz755JOsvPLKefHFFxc5/v3330+DBg0yefLkDB06NAceeGA+++yzvPnmmxk1alRuueWW3HTTTUmSE088MY888kgee+yxfPbZZznttNOSJCNGjEj9+vVTU1OTmpqaLL/88gucZ5dddkm7du0yadKk3HvvvTnttNMyatSoYv+9996bu+++O2PHjs3DDz+cbbbZJn/+85/z3nvv5Z133smVV165wJx33XVXnn322bz99tv57LPPcvnll6eiomKR7V937LHHZsyYMXn99dczcuTI3Hrrrbn00kuL/SNGjMhBBx2UqVOnpnv37jn++OOTJJdeemlqamry/vvv5+OPP84ZZ5yxeC8OAABLHEEcAAAAAABYgj366KOpX79+jj766DRu3DhDhgxJq1atFjm+YcOGOfPMM9O4ceM0adIkt9xySy666KJUVVWlS5cu2W+//XLbbbclSW688cacdtppWX755dOgQYNstdVWi1XTxIkTM2rUqFx00UVp0qRJevXqle233z633HJLccyee+6Zbt26pWPHjunTp0/WWmut9O7dOy1atMgWW2yRl156aaG1z5gxIy+//HLq1auX9ddfP1VVVYts/7o777wzJ510Ulq3bp3ll18+Bx98cK2a1ltvvWy77bZp2LBhBgwYkNdee6143s8++yxjxoxJw4YN07dv38W6DwAALHka1HUBAAAAAADAj2fSpElp165d8Xm9evXStm3bRY5v1apVGjZsmCT54IMPMnPmzKy66qrF/kKhkDXWWCNJ8uGHHy50tZtv8/bbb2fWrFm1AkHz5s1L//79i8/btGlT/HeTJk3SunXr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+ugf/TyXXXZZNttssx80xxFHHJFdd921RBUBAPBTJ4gDAAAAAAA/lrK7f9zHYjrnnHOy8sorp0GDBjniiCNq9Q0ZMiQVFRXFR+PGjdO0adPFOjZJLr744rRp0ybNmjXLTjvtlC+//LLY969//StrrLFGysvLs/LKK+fpp59e7JqXXXbZlJeX16rt7LPPXuzjv83aa6+dYcOGfeOY3/72t3nkkUdKdk4AAJZ8gjgAAAAAALCEa9++fU444YRstdVWC/QNHTo0NTU1xcfOO++crbfeerGOfeaZZ3L88cfn1ltvzYQJE/L+++/n2GOPLfbvtttu2XjjjfPpp59mn332yU477ZTZs2cvdt133313rdqOOeaY73jl3993qfOnbEm5DgCAnwtBHAAAAAAAWMLtueee2X333VNVVfWN47788svce++92XvvvRfr2P/7v//L1ltvnY022ihLL710TjjhhNxyyy1Jkpdffjnjxo3LmWeemYqKihx99NEpFAoZMWJEaS8uyV//+td07949VVVV2XzzzTNp0qRi3z333JNVVlklzZo1S+fOnTNixIgcddRRef7553PYYYeloqIiQ4YMyfDhw9OpU6ccfvjhadmyZY444ohcfPHFWW+99YpzPfXUU1lrrbVSWVmZdu3a5eqrr06S3HTTTenRo0eaNm2azp07F9sXx1lnnZXOnTunZcuW2XHHHTNt2rQkX600tM4662TPPfdMs2bN0q1btzzxxBPF4958881ssskmadGiRZZbbrncfvvtxb5ll102J554YpZbbrl06dIlSXLUUUdlqaWWyrLLLpszzjgjDRo0SPLVikg77bRTrZrWWmutXH755Yt9DQAA/H+COAAAAAAAQJLk1ltvTXl5ebbZZpvFGj9mzJisttpqxee9e/fOBx98kOrq6rz00kvp0qVLmjRpUuxfYYUV8sorryRJLr/88vTo0eMH1/zYY4/lmGOOyQ033JCPPvooPXr0yH777Zckef311zNgwICccMIJmTp1ah566KF06NAh5557bnr37p0LL7wwNTU1GTp0aJLk/fffT4MGDTJ58uRi23yffPJJttlmm+y+++75+OOP8/zzz2fVVVdNklRVVeW2227LtGnTct555+Wggw7KxIkTv7X2q6++OldddVUefPDBvPfee5k9e3aOOuqoYv9zzz2XjTbaKFOnTs22226bww47LEkyd+7cbLvttvnFL36RKVOm5Morr8z++++f9957r3js3XffnZEjR+aNN97IjTfemOuuuy7//Oc/8/LLL+f+++8vjtt3333zwAMPpKamJkny9ttvF+8bAADfnSAOAAAAAACQJLn22muz4447pn79+os1fsaMGWnevHnxeYsWLZIk06ZNy+eff55mzZrVGl9ZWZnp06cnSQ444IC88cYb3zj/9ttvn8rKyuLjvvvuW2DMFVdckV//+tdZe+2107hx4wwdOjQPPfRQZs+enWuuuSabb755dttttzRo0CDLL798evbsucjzNWzYMGeeeWYaN26cpk2b1uq79dZb06VLlxx++OFp3Lhx2rdvnzXXXDNJsvXWW2e11VZL/fr1s/POO6dHjx61Vq9ZlKuuuipHHHFEcTWdk046Kffee2+xf7nllsugQYPSoEGDDBw4MGPGjEnyVfho5syZOf7449OwYcNsvvnm6dOnT+68887isQcddFA6dOiQpk2b5vbbb8+ee+6ZlVdeOUsvvXStsE+PHj3So0eP3HbbbUm+WuVos802q/W6AgCw+ARxAAAAAACAfPTRR/nHP/5RXE1mcTRt2rS4lVKSTJ06NUnSvHnzNGvWLJ9//nmt8dOnT09lZeViz3/nnXdm+vTpxcfWW2+9wJj33nsvF154YTGs07FjxzRo0CATJ07Me++9V9yaaXG0atUqDRs2XGjfxIkT06lTp4X2PfDAA1ljjTVSVVWVysrKvPrqq/n444+/9Xzvv/9+Bg8eXKx90003zaefflqrnvmaNm2aL774Ikkyfvz4vPfee7VCSiNHjswHH3xQHN+5c+fivz/88MN06NCh+Pzr92TAgAG58cYbkyS33XZbdt9992+tHQCAhRPEAQAAAAAAcs0112T55ZfPGmussdjHrLjiisWtppLkhRdeSLt27VJVVZXVV189EyZMKIZHkmTs2LHF7ZxKpV27djnmmGNqBXa+/PLLLLfccunYsWMmTJiw0OPKysoWq22+Tp06LXK7qX333Td77LFHPvzww0yfPj2rrLJKCoXCt9betm3bDBs2rFbt/36/FqVjx45Zbrnlah1XU1OTM888c6HX0qZNm1rbVo0fP77WfHvvvXeeeOKJ/POf/8ykSZOy/fbbf2sNAAAsnCAOAAAAAAAs4WbPnp2amprMnTs3c+bMSU1NTebMmVNrzI033pgBAwZ8p2P33nvv3HffffnnP/+ZTz75JGeccUZ22WWXJMlqq62Wbt265cQTT8wXX3yR888/P2VlZenbt29Jr23//ffPX/7ylzz99NNJvlrZ54YbbkiSDBw4MA8//HBuvfXWzJ07N2+99Vb+9a9/JflqtZl33nlnsc+z00475Z133slFF12UmTNn5v33389zzz2XJKmpqUmrVq3SqFGjXHPNNXnttdcWa86BAwfmnHPOKdY0YcKE3H777d963CabbJJCoZBzzjknX375Zb788suMGDEib7755kLH77DDDrnhhhvy+uuv57PPPst5551Xq79169ZZZ511su+++2abbbZJ48aNF6t+AAAWJIgDAAAAAAA/lkK/H/exmI499tg0bdo0N998cy666KI0bdo0w4YNK/a//vrreeWVV7Lvvvt+p2PXXnvtnH766dlhhx3SqVOntG3bNkOHDi0ee+ONN+aRRx5Jy5Yt85e//CW33nprceunyy67LN27d//Guvv165eKiori4/e///0CY7bYYouceeaZGThwYJo1a5b/+Z//yeOPP57kqxV7rrvuupx00klp3rx5Nt988+LKMIceemhuuummVFZW5rjjjvvWe7j00kvnnnvuyTXXXJNWrVplzTXXLAZuzj777Bx11FGpqqrK/fffn7XXXvtb50uSQYMGZe+9984222yTZs2aZeONN661wtCiNGzYMH//+9/z4IMPpl27dmnXrl1OP/30zJs3b6Hjd9999+y2225Zb7310rNnz2y22WYLbMG15557Zty4cdlrr70Wq3YAABaurLA4ayPyvUybNi1VVVWprq5O8+bN67qcJU/Z3XVdAXx/3+GHJPCT4/uXnzPfvwAAQAks6me/1dXVmTBhQrp3756Kioo6rBC+2R133JHBgwfX2qLq8ccfz6677pr33nsv9er5O24AgH9XU1OTcePGpXPnzqmqqvrGsf5LCgAAAAAAYAl33XXXZebMmZk4cWJOP/30bLXVVsW+OXPm5MILL8yAAQOEcAAAfiD/NQUAAAAAALCEu+iii7LUUktltdVWy3LLLZezzjorSfLRRx+lefPmGTt2bIYMGVLHVQIA/Pw1qOsCAAAAAAAA+HE988wzC21fZpllUlNT8x+uBgBgyWVFHAAAAAAAAAAAKAFBHAAAAAAAAAAAKAFBHAAAAAAAAAAAKAFBHAAAAAAAAAAAKIEGdV0AAAAA3+7JlNV1CfC9rZdCXZcAACyBKioq8q9//StdunT5TsddfPHFufHGG/Pkk0/mzTffzBprrJHp06f/KDUeccQRee+993LzzTf/KPMDAPDTY0UcAAAAAABYwg0YMCCtW7dOs2bN0qNHj9x4443FvosvvjgNGjRIRUVF8fHmm28uMMdxxx2XsrKyPPDAA8W2t956K5tuumkqKyuz7LLL5qqrrir2zZ49O1tttVXatm2bsrKyjB079jvVXFZWliZNmqSioiJLLbVUBgwYkC+//LLYX1NT851DOF+3/PLL/2ghHAAA/jtZEQcAAAAAAH4kd/zICxvusJgLzx1zzDG56qqr0qRJk4wcOTLbbLNNNttss7Rp0yZJsvbaa+fJJ59c5PHvvPNObr/99rRu3bpW+2677ZY11lgj999/f55//vlss802WWONNdKrV68kyQYbbJCjjjoqv/zlL7/X9b322mtZbrnl8uGHH2bLLbfM+eefn+OPP/57zQUAAP8JVsQBAAAAAIAlXK9evdKkSZMkX600M3v27IwfP36xjz/kkENywgknpGHDhsW26urqPP/88znrrLPSuHHjrLfeeunbt2+uvvrqJEnDhg1zwgknZPPNN//B9bdp0yabbrppXn/99WJbWVlZ3n777STJlClT8qtf/SotW7ZMx44dc9555xXHTZs2Ldttt10qKyuz8sor11rtZ+zYsWnQ4P//zfJHH32Ufv36ZamllkqHDh1yySWXFPv+9Kc/pX379mnatGm6du2a4cOHJ0lmzJiRgQMHZplllkmbNm1y3HHH/eDrBQDg50sQBwAAAAAA/gvstddeKS8vz0YbbZR11lkna621VrHvxRdfTIsWLdKtW7ece+65tY4bPnx4Pv300+y111612guFQgqFQubNm1er7d/DMt/kuOOOy6abbrpYYydNmpRHHnkkffr0WWj//vvvnyR59913c9ttt+WMM87Ifffdl+Sr1YCmTJmSd999NzfccENuueWWRZ5nl112Sbt27TJp0qTce++9Oe200zJq1KhMmzYtxx9/fB544IHMmDEjI0aMyHLLLZckOfDAA/PZZ5/lzTffzKhRo3LLLbfkpptuWqzrAgBgySOIAwAAAAAA/wWuvfbafP755/nb3/6WLbbYIvXqffUrgl/84hcZPXp0Pvnkk/zlL3/Jueeem2uuuSZJMnv27BxxxBG56KKLFpivRYsWWWONNXLMMcfkiy++yOOPP57hw4enpqZmseo588wz8+ijj37jmNVXXz2VlZXp0KFD6tevn3322WeBMXPmzMnw4cNz7rnnprKyMn369Mkee+yRa6+9Nkly991354QTTkjLli3Tq1ev7Lrrrgs918SJEzNq1KhcdNFFadKkSXr16pXtt9++GNwpKyvLiy++mC+++CI9evTIiiuumHnz5uWWW27JRRddlKqqqnTp0iX77bdfbrvttsW6BwAALHkEcQAAAAAA4L9EgwYN0q9fvzzyyCO59dZbkyQrrrhiVlhhhdSvXz+bbrpp9t9//9xxxx1JkrPPPjt9+vTJmmuuudD5brzxxrz11ltp3759DjrooOy0005p3759yep96aWXMn369EydOjVdunTJTjvttMCYyZMnZ86cOenevXuxrXPnzpk8eXKS5OOPP06XLl2KfR07dlzoud5+++3MmjUrrVq1SmVlZSorK3Pddddl8uTJad68ea666qpccsklWWaZZbL11ltn/Pjx+eCDDzJz5sysuuqqxWPOOOOMfPTRRyW7BwAA/LwI4gAAAAAAwH+ZOXPm5I033lhoX/369VMoFJIkjz32WO688860atUqrVq1yuTJk7PLLrvkggsuSJL06NEjjz76aD777LO8/PLL+eSTT2pteVUqVVVV2W233fL4448v0Ne2bds0aNAg48aNK7ZNmDAhbdu2TZK0atUq48ePL/ZNnDhxoefo1KlTKioqUl1dnenTp2f69OmZMWNGrr/++iTJzjvvnKeffjrvvfdeGjdunCOPPDJt27ZNo0aN8tZbbxWP+fzzzzNy5MgSXj0AAD8ngjgAAAAAALAE++STT3L55Zenuro6s2fPztVXX51Ro0Zls802S5Lcfvvtef/995MkTzzxRK644or069cvyVcr3rz66qsZPXp0Ro8endatW+fSSy/Nb37zmyTJCy+8kOrq6nzxxRcZNmxYRo8enYMPPrh47i+++KK4VdXMmTMXe9uqr5sxY0ZuueWWLLfccgv0NWjQIFtvvXWOOeaYTJ8+Pc8991xuvPHG7L777kmSX/3qVznzzDOLYaH5W019XdeuXdOrV68cdthhmT59embPnp0nnngiL7zwQt57773cdNNNmTFjRsrLy9OkSZPUr18/9evXz4477pjf/e53+fjjjzN37tyMHj06jz322Pe6TgAAfv4EcQAAAAAAYAlWr169XHXVVenQoUOWWmqpnHfeebnyyiuz7rrrJklGjBiRVVZZJU2aNMkee+yR3//+99l///2TfLWaTMeOHYuP+vXrF7duSpK//e1v6dy5c5Zeeulcd911+fvf/54mTZoUz929e/c0bdo0s2bNyuqrr56mTZsW+4YMGZKNNtroG2vv2bNnKioq0q5du3z44Ye57rrrFjruL3/5S+bMmZOOHTumf//+OeaYY7Ltttsm+Wp7rZYtW6ZTp07ZbbfdsvPOOy/yfLfddlsmTZqUrl27plWrVjn00ENTU1OTuXPn5rzzzkubNm3SunXrfPDBBznnnHOSJJdffnmqqqqyyiqrpEWLFtlrr73yySeffNvLAgDAEqqsMH99SUpu2rRpqaqqSnV1dZo3b17X5Sx5yu6u6wrg+yv0q+sK4Pvz/cvPme9ffsaeTFldlwDf23rxowcAliyL+tlvdXV1JkyYkO7du6eioqIOKwQAAEqppqYm48aNS+fOnVNVVfWNY62IAwAAAAAAAAAAJSCIAwAAAAAAAAAAJSCIAwAAAAAAAAAAJSCIAwAAAAAAAAAAJSCIAwAAAAAAAAAAJSCIAwAAAAAAAAAAJSCIAwAAAAAAAAAAJSCIAwAAAAAAAAAAJSCIAwAAAAAA8B80fPjwdOrUqfi8e/fuefjhh7/zcQAA/PQI4gAAAAAAwBJuwIABad26dZo1a5YePXrkxhtvLPbtscceqaioKD4aNmyYHj16LDDHX/7yl5SVlWXYsGHFtnPPPTcdOnRIs2bN0q5duxx33HG1jrntttvSqVOnNGnSJFtssUWmTJmy2DXPmDEjBx54YNq3b5+Kiop06dIlhx56aKZNm/Y97sCPo6ysLG+//fYPnmfcuHHZfPPNS1ARAAB1rUFdFwAAAAAAAEuqPcp+3PmvLyzeuGOOOSZXXXVVmjRpkpEjR2abbbbJZpttljZt2uT666+vNXajjTbKWmutVatt2rRpOfvss9O9e/da7f369cu+++6bVq1aZcKECdl8882z+uqrZ9ddd82kSZOy77775qqrrspWW22VffbZJ4MGDcqdd975rfXOmzcvffv2zfTp03PnnXdmzTXXzPvvv58//OEPef3119OnT5/Fu3AWMHv27DRs2LCuywAAWGJ9pxVxZs+enW7duuX111//seoBAAAAAABKrFevXmnSpEmSr1ZxmT17dsaPH7/AuIkTJ+bJJ5/MfvvtV6t9yJAh2WuvvdKyZcta7SussEJatWpVfF6vXr2MGzcuSXLjjTdm1VVXzc4775zKysqcccYZGT58eGbMmPGt9d5111157rnn8re//S19+vRJ/fr107Fjx1xxxRXFEM4zzzyTNddcM82bN0/Pnj3z+OOPF48vKyvLWWedlWWXXTaVlZU577zz8tBDD6Vbt25p3rx5jjrqqOLYOXPm5PDDD0/79u2z9NJLZ9CgQZk9e3aS5Igjjsh2222XrbfeOk2bNs1qq62WMWPGJEk22GCDJEnPnj1TUVGRESNGLHAd06ZNy1577ZVlllkmzZs3z/bbb7/Q61122WXzwAMPJEl22mmn7Lvvvll33XXTtGnTbLDBBvnoo48Wetxvf/vbrLvuupk+fXo++uij9OvXL0sttVQ6dOiQSy65pDhu7bXXzmGHHZZVVlklTZs2zRdffJF99903LVu2TGVlZVZZZZV88MEH3/q6AADw7b5TEKdhw4b58ssvf6xaAAAAAACAH8lee+2V8vLybLTRRllnnXUWWPUmSa6++uqsttpqWXnllYttr7zySh566KEcc8wxC5338ssvT9OmTdOlS5d88cUX2XPPPZMk//rXv9KzZ8/iuBVXXDENGjQo/rHvXnvtlb322muhcz700ENZbbXV0qVLl4X2V1dXZ9ttt80hhxySTz/9NEOGDMkuu+ySmpqa4ph//vOfGTNmTG688caccMIJOffcc/PUU09l5MiRufjii4t1nHbaaXnqqafy3HPPZezYsXnppZdy3nnnFecZMWJEDjrooEydOjXdu3fP8ccfX5w/SV577bXU1NSkb9++C9Q5aNCgvPfee3nppZcyZcqUHHjggQu9nq+75557cuGFF2bKlCmZO3duhg4dWqt/3rx52XffffPaa6/loYceSmVlZXbZZZe0a9cukyZNyr333pvTTjsto0aNKh5zxx135Oabb87UqVPz97//Pc8++2zefvvtfPbZZ7n88stTUVGxWLUBAPDNvlMQJ0kOOuignH322ZkzZ86PUQ8AAAAAAPAjuPbaa/P555/nb3/7W7bYYovUq7fgrwhuuummDBgwoFbbQQcdlDPPPDONGzde6LwHHHBAZsyYkWeffTa77bZbWrRokSSZMWNGmjdvXmts06ZNM23atGI911577ULn/OSTT7LMMsss8lpuvfXW9OjRIwMHDkyDBg2y5557Zumll84//vGP4pghQ4aksrIy2267bZo2bZo99tgjyyyzTHr16pUePXrk+eefL9Zx+umnp3379mnVqlUOP/zwWttnrbfeetl2223TsGHDDBgwIK+99toi6/p3c+fOzZ133pmLL7447dq1S+PGjbPlllsu1rHbbrtt+vTpk4qKivTv3z+vvvpqsa9QKGSPPfbI+PHj88ADD6Rp06aZOHFiRo0alYsuuihNmjRJr169sv322+eWW24pHrfnnnsWV+9p1KhRZsyYkZdffjn16tXL+uuvn6qqqsWqDQCAb9bgux7w7LPP5uGHH84DDzyQVVddNU2bNq3Vf8cdd5SsOAAAAAAAoHQaNGiQfv365cILL8wKK6yQnXfeudj3/PPP56233so+++xTbLvhhhvSoEGD7Ljjjt8695prrpl77703xx57bIYNG1YrdDPfwsI5C7P00kvnnXfeWWT/hAkT8swzz6SysrLYNmfOnEycOLH4vF27dsV/l5eXp23btrWeT58+PUnywQcfLLBl1L+HgFq3bl38d9OmTWutuvNNPvjgg8yaNSsrrLDCYo1f1PkrKipqbef16aef5s4778zf//734nZjb7/9dmbNmlVrm7B58+alf//+xecdO3Ys/rtfv3558cUXc8ABB+Tjjz/OjjvumIsuumiRYSsAABbfdw7itGjRYrH+gxsAAAAAAPhpmjNnTt54441abVdddVU22WSTWsGThx9+OM8++2wx4FFdXZ3XX389Y8eOzYUXXrjAvLNnz85bb72VJFl55ZVrrSwzduzYzJkzJyuttNK31rfFFlvkqquuysSJE2sFSOZbdtlls+GGG+bhhx9erOv9Jm3atMkNN9yQ9ddf/wfP9e/atWuXRo0a5Y033qi1RdcPtfTSS+fcc8/NgAEDMmLEiPzP//xPOnXqlIqKilRXVy90paOFOemkk3LSSSflrbfeytZbb50rrrgihxxySMnqBAD4b/Wdt6a6+uqrv/EBAAAAAAD8dHzyySe5/PLLU11dndmzZ+fqq6/OqFGjstlmmxXHzJ07N7fffnsGDhxY69jzzz8///rXvzJ69OiMHj06q6yySo4//viccsopSZJLLrkkkyZNyrx58/LEE0/kf//3f7PpppsmSQYMGJCXX345t99+e6ZPn57jjz8+v/zlLxdYaX9h+vfvn969e2e77bbLM888k7lz52bSpEn53e9+l1GjRmXnnXfOa6+9luuuuy6zZ8/OjBkzcvvtt+eTTz75zvdnjz32yHHHHZcJEyZk3rx5GTt2bO67777FOnappZbKuHHjFtpXv3797LDDDvn973+fDz/8MDNnzsyDDz74netbmF133TVnnnlmfvnLX2bMmDHp2rVrevXqlcMOOyzTp0/P7Nmz88QTT+SFF15Y6PGPP/54Ro4cmdmzZ6eqqioNGjRIgwbf+W+3AQBYiO8cxEm+Sso/9NBDufzyy4tLN77//vv5/PPPS1ocAAAAAADww9SrVy9XXXVVOnTokKWWWirnnXderrzyyqy77rrFMcOHD8/MmTMXWBG/RYsW6dixY/HRsGHDVFVVpUWLFkmSUaNGZbXVVkuz/8fefYdHUb3//3+mmWQ3myWQQhJIqKGKgBQp0puA9N4RkKqIFOm8BSnSfkgRUAmC0ouISBUQFBWlifQeCAkhQEhCApjC7w++zIeQQgLBCL4e17UX2TlnzrnPzOxsLubOOS4utG3bli5duvDBBx8A92etCQwM5L333sPDw4OIiAg+++wzo+327dvTvn37VGPevHkz5cqVo3HjxlgsFipWrMhLL71E0aJFyZEjB99++y1z5szB3d0dPz8/5s+f/0TH58MPP6RcuXJUqlQJV1dX3nzzTS5cuJCufQcPHkzbtm2xWCxs3bo1Wfm8efPImTMnxYoVw9PTk3nz5j1RjCnp3r07gwcPpk6dOgQFBbF69WouX75M3rx5cXd3p3///qkuoxUREUH37t2xWq0UKlSIcuXK0aNHj0yLTUREROS/zObevXv3MrJDUFAQ9erV4+LFi9y9e5dTp06RL18++vfvz927dzP1l8jnXVRUFFarlcjIyHSteSsZZLM+qyMQeXL3GmV1BCJPTvdfeZ7p/ivPsV+wyeoQRJ5YRTL0Xw8iIiL/eqn9329kZCRBQUEUKFAAk8mUhRGKiIiIiEhmio2N5cyZM/j7+2O1WtOsm+EZcfr370+ZMmWIiIjA2dnZ2N60adNMWYtVREREREREREREREREREREROR5lOEFP3/66Sd++eUXXnrppSTb8+TJw+XLlzMtMBERERERERERERERERERERGR50mGE3ESExNJSEhItj04OBiLxZIpQYmIiIiIiEhSlUK0tI88v+75ZHUEIiIiIiIiIiIi/4wML01Vp04dZsyYYby3sbHh1q1bjBkzhvr162dmbCIiIiIiIiIiIiIiIiIiIiIiz40Mz4gzbdo06tatS9GiRblz5w7t2rXj9OnTuLu7s2zZsmcRo4iIiIiIiIiIiIiIiIiIiIjIv16GE3Fy5crFn3/+yYoVK/jzzz+5desW3bp1o3379jg7Oz+LGEVERERERERERERERERERERE/vUynIize/duKlasSPv27Wnfvr2xPT4+nt27d1OlSpVMDVBERERERERERERERERERERE5Hlgm9Edqlevzo0bN5Jtj4yMpHr16pkSlIiIiIiIiIiIiIiIiIiIiIjI8ybDiTj37t3DxsYm2fbr169jNpszJSgREREREREREREREZF/mq+vL1u3bs3QPi1atGDIkCHPKKKn9yRjEhEREZEnl+5EnGbNmtGsWTNsbGzo0qWL8b5Zs2Y0btyYunXrUrFixWcZq4iIiIiIiIiIiIiIPIG2bdvi4eGBi4sLAQEBLFu2LFmduLg4AgIC8PPzS7LdxsYGZ2dnTCYTJpOJYcOGGWVffvklr7zyCo6OjrRo0SJZm6tXr8bPzw9nZ2dq1apFeHh4uuJ97bXXmDx5svH+u+++w8bGhg0bNhjbPv74YypUqJCu9kRERERE/in26a1otVqB+zPiWCwWnJ2djbKXXnqJ1157jR49emR+hCIiIiIiIiIiIiIizykbDjzT9u9ROl31PvjgAwIDA3F2dmb37t00aNCAGjVq4OXlZdSZNGkSFouFO3fuJNv/6NGj5MuXL9n2HDlyMGDAAPbs2UNERESSssuXL9O1a1cCAwOpV68eXbp04e233+abb755bLyvvfYae/bsMd7v3r2bPHnysGvXLho2bAjAnj17eO2119I1/udBXFwcDg4OWR2GiIiIiDyldM+Is3DhQhYuXMiYMWNYsGCB8X7hwoXMnz+fYcOG4e7u/ixjFRERERERERERERGRJ1CyZEnjD2xtbGyIi4vjwoULRnlwcDBffvllhpdYevPNN+nSpQseHh7JypYtW8bLL79My5YtsVgsjB8/no0bNxITE/PYdqtVq8Yff/xhvP/111/p168fv/32m7Htjz/+oFq1asD92XFy5cqFm5sbTZo04fr160a9xYsXky9fPlxdXalevTrnz583yh7M2GO1Whk0aFCaMZ04cYJq1aqRLVs2PDw8GD9+vFEWHh5OhQoVMJvNVK5cmatXrxplderUIXv27FitVt544w2j7OTJk9jb2zNlyhQ8PT1p2bIlcXFxvPfee/j4+GCxWChXrly6xtGlSxc8PT2xWCxUrlyZ06dPP/YYi4iIiMizke5EnAfGjBmDo6MjP/zwA/Pnzyc6OhqAkJAQbt26lekBioiIiIiIiIiIiIjI0+vYsSNOTk5UqVKF1157jbJlyxpl7733HoMGDcJisaS472uvvYanpyctWrQgLCwsXf0dO3aMYsWKGe8LFy6Mvb09x48fN+Lp2LFjivtWr16dq1evcu7cOeLj4zl16hR9+vTh5MmTxMfHc/r0acLDw6lWrRrr1q1j6tSprF+/nqCgIG7fvk3Pnj0BOHToEH379mXevHmEhYWRJ08e2rRpA9x/rtG5c2cmT55MWFgYMTExqY4tLi6OBg0a8OqrrxISEsKpU6eoWrWqUf7dd98xY8YMwsPDSUhIYOLEiUZZ06ZNuXDhAufOnePWrVtJlvZKSEjg0KFDXLhwgSVLljBq1Ch27NjBrl27iIiIYOzYsY8dB0DlypU5fvw4V65cwcfHhz59+qTrHImIiIhI5stwIk5QUBAvv/wyjRs3pm/fvsZ6rh9//PFjs8VFRERERERERERERCRrfPXVV9y6dYtvv/2WWrVqYWt7/xHB9u3bOXfunJG88qjNmzdz6dIlDh06RGxsLG3btk1XfzExMbi6uibZZjabiYqKMuL56quvUtzXarVSuHBhfvjhB/bu3UuBAgVwdnYmf/78/P777+zYsYPChQtjtVpZtmwZHTp0oHTp0ri6ujJlyhQ2bNhAYmIiS5YsoU6dOtSpUwdnZ2dmzJjB/v37CQoKYu3atRQrVow2bdrg5OTE5MmTsbGxSTGeH3/8kZiYGCZPnozJZMLNzY3KlSsb5Q0bNqR8+fKYTCaaNGnCkSNHjLLevXvj6upqLOO1d+/eJG1PmDABk8mE2Wxm2bJljB07loIFC2Jvb0+9evUA0hwHQPfu3cmRIwdms5mRI0eyb9++dJ0jEREREcl8GU7E6d+/P2XKlCEiIsKYxhLuZ3Rv3749U4MTEREREREREREREZHMY29vT6NGjdixYwerVq0iISGB/v37M2PGDCMx51F169bF0dERHx8f5s+fz65du4iNjX1sXw8n3TyQUnJOasqXL8/PP//Mjz/+SPny5Y1tO3fu5Oeff+a1114DIDQ0FH9/f2O/AgUKcPfuXcLDwwkNDSV37txGmdVqJVu2bFy6dImQkBB8fX2NMovFQrZs2VKM5eLFi/j6+mJnZ5diuaenp/GzyWQylt+Ki4ujW7du+Pj44OLiQseOHYmIiDDq2traJok9LCyMggULJms/rXEADB06FD8/P1xcXKhUqRI3b95MMU4RERERefYynIjz008/MXLkSF566aUk2/PkycPly5czLTAREREREREREREREXk2Hiz3FBERwfHjx2nWrBnu7u60bduWkJAQ3N3dkySMPPAgWefevXuP7aNo0aIcO3bMeP9gWakiRYqkK8YqVaqwd+9e9uzZQ5UqVYxtv/zyC3v37jW2eXt7GzPDAJw9exZHR0c8PDzw9vY2klUAoqKiuHnzJrlz58bHxyfJc42YmJhUE1j8/f25fPkyiYmJ6Yr9gfnz57Nnzx727NnDrVu3ks0A9OgMPDlz5uTMmTPJ2klrHJs2bSIwMJDvv/+eqKgo9uzZk6EYRURERCRzZTgRJzExkYSEhGTbg4ODU107VkREREREREREREREssb169eZP38+kZGRxMXFsXDhQvbu3UuNGjXInj07Fy5c4ODBgxw8eJBZs2bh5eXFwYMHsVqt7N+/n99++434+HjCw8Pp3bs3FStWxGw2A/cTemJjY4mPjychIYHY2Fji4uIAaNu2LYcPH2bNmjVER0czYsQI6tevb+z7ODVr1uTMmTPs3buXatWqAVC1alV+++03zp49S82aNQFo06YNS5Ys4eDBg0RFRTFkyBAaNGiAra0t7dq1Y+vWrfzwww/cuXOH999/n1KlSuHv70+zZs04evQoq1at4s6dOwwZMiTVBKOqVatiNpv54IMPiI2NJSIigp9//vmxY4iOjsbR0RF3d3dCQ0OZNm1amvXbtm3L6NGjOXv2LPHx8WzevBkgzXFERkbi4OCAl5cX0dHRjBkzJl3HV0RERESejQwn4tSpU4cZM2YY721sbLh16xZjxoyhfv36mRmbiIiIiIiIiIiIiIg8JVtbWwIDA8mVKxfZs2dn6tSpfP7551SoUAFbW1ty585tvNzd3bGzsyN37tzY2toSEhJCmzZtsFgsFClSBDs7O5YvX260PXfuXMxmM1OmTGHdunWYzWaGDh0KgK+vL4GBgbz33nt4eHgQERHBZ599Zuzbvn172rdvn2rcuXLlMmJyc3MDIEeOHLi7u5M7d25jWammTZvSv39/GjZsiL+/Pw4ODsybNw+AUqVKMXPmTHr06IGnpyenT5824vfx8WHBggW8//77eHp64uzsjJeXV4qxODg4sGHDBn777Tdy5sxJQEAAP/3002OPfa9evbBareTMmZNKlSpRu3btNOv/73//o2rVqlSqVAk3Nzf+97//PXYczZs3p0yZMuTNm5eiRYtSoUKFx8YlIiIiIs+Ozb30zB/5kODgYOrWrcu9e/c4ffo0ZcqU4fTp07i7u7N79+4k66D+10VFRWG1WomMjEz3mreSATbrszoCkSd3r1FWRyDy5HT/leeZ7r/yHLMJyeoIRJ7cPZ+sjkBERCRzpfZ/v5GRkQQFBVGgQAFMJlMWRigiIiIiIpkpNjaWM2fO4O/vj9VqTbOufUYbz5UrF3/++SfLly/n8OHD3Lp1i27dutG+fXucnZ2fOGgRERERERERERERERERERERkedZhhNxAOzt7enQoUNmxyIiIiIiIiIiIiIiIiIiIiIi8tx6okSckJAQfv75Z65evUpiYmKSsnfffTdTAhMREREREREREREREREREREReZ5kOBHnyy+/pGfPnrz00kvkyJEDGxsbo8zGxkaJOCIiIiIiIiIiIiIiIiIiIiLyn5ThRJxRo0YxevRohg0bhq2t7bOISURERERERERERERERERERETkuZPhTJrY2FjatGmjJBwRERERERERERERERERERERkYdkOJumW7durFq16lnEIiIiIiIiIiIiIiIiIiIiIiLy3Mrw0lQTJ06kYcOGbN68mZdffhkHB4ck5dOnT8+04EREREREROS+dr5ZHYHIU7iX1QGIiIiIiIiIiIj8M54oEWfLli0UKlQIABsbG6Ps4Z9FREREREREREREREReRC1atCBfvnxMnjw5q0MRERERkX+ZDC9NNW3aNAIDAzl+/Dg//vgjO3fuNF47dux4FjGKiIiIiIiIiIiIiDyXbBjxTF/pNXnyZIoWLYq9vT0DBw5MUpaYmMi7776Lh4cHrq6u1KhRgwsXLhjlu3fvJiAgACcnJ8qWLcupU6eMspiYGJo0aYLZbMbb25vPPvssSduzZs3Cy8sLFxcXWrRowZ07d9IV78aNG7GxsaFfv35Jtjs6OnLy5MnH7j9w4EBat26drr7+jXx9fdm6dWtWhyEiIiIiTyDDiTiOjo5UqlQp0wKYM2cOefLkwcnJifLly/P777+nWX/VqlUULlwYJycnXn75ZTZu3Jik/N69e4wePRpvb2+cnZ2pVasWp0+fTlJn/PjxVKxYEZPJRLZs2VLsx8bGJtlr+fLlTzVWEREREREREREREZGs4OPjw8iRI6lXr16ysq+++opVq1bxyy+/cPXqVbJnz84777wDwO3bt2nVqhW9e/fmxo0bVKhQgXbt2hn7Dho0iOvXrxMcHMySJUsYNGgQhw8fBuD3339nxIgRrFq1iqCgIEJCQhg6dGi6YzabzSxevJiwsLCnHH3GJCYmkpCQ8I/2mZni4uKyOgQRERGR/7QMJ+L079+fWbNmZUrnK1as4P3332fMmDEcOHCAV155hbp163L16tUU6//yyy+0bduWbt26cfDgQZo0aUKTJk04cuSIUWfy5MnMnDmTefPmsXfvXsxmM3Xr1k2SZf/333/TsmVLevfunWZ8CxcuJDQ01Hg1adIkU8YtIiIiIiIiIiIiIvJP6tChA+3atcNqtSYrO3/+POXKlaNgwYI4OTnRunVrY9abTZs28dJLLzFgwABMJhPjx4/nyJEjnDhxAoDVq1czatQo3NzcqFGjBnXq1GHhwoUALF68mDfeeIMqVaqQI0cORo4cycqVK9Mdc/bs2alduzbjxo1LsXz58uUEBARgNpvx9/c3+t24cSMzZ85kzZo1mEwmqlSpAtz/A9xz584Z+5crV465c+cC95ea6ty5M6+99homk4njx4/zySefkCdPHsxmMwEBAcn+MDgl0dHRODk5ERUVBUDbtm3JlSuXUV6qVCnWrVsHQJcuXfD09MRisVC5cmXjj4pbt25NaGgojRo1wmQyMW/ePAC+/PJLChQogNVqpWbNmly+fNkYr5+fHwMGDMDNzS3ZjEciIiIi8s/KcCLO77//zqJFi8iXLx9vvvkmzZo1S/LKiOnTp9OjRw+6du1K0aJFmTdvHiaTicDAwBTrf/LJJ9SrV4/BgwdTpEgRxo0bR+nSpZk9ezZwfzacGTNmMHLkSBo3bkyJEiVYvHgxISEhxi+2AB9++CEDBgzg5ZdfTjO+bNmykTNnTuPl5OSUofGJiIiIiIiIiIiIiPzbtWvXjrNnz3LixAliYmJYunQp1atXB+DIkSMULlzYqGuxWPDz8+PQoUOEh4dz7do1ypYta5QXL16c48ePA3DixAlKlChhlL366quEhoYSGRkJQPXq1Rk+fHiasX344YcsXrw4xT/gtVqtrF69mqioKKZOnUrfvn25dOkS9evX591336V58+bExsaye/fudB2H9evXM3XqVKKjoylYsCA+Pj5s376dyMhIevXqRadOnbh9+3aabVgsFgoVKsSPP/4I3H+mcu/ePS5cuEBMTAzHjx83jm3lypU5fvw4V65cwcfHhz59+gD3/4jZ29ub9evXExsbS69evdi1axcffPABS5cu5erVqwQEBNCtWzej35CQEOzt7bly5QoTJ05M13hFRERE5NnIcCJOtmzZaNasGVWrVsXd3R2r1ZrklV5///03+/fvp1atWv8XjK0ttWrV4tdff01xn19//TVJfYC6desa9c+fP8+VK1eS1LFarZQvXz7VNtPSt29f3N3dKVeuHIGBgdy7dy/N+nfv3iUqKirJS0RERERERERERETk3yx37tyULl2aIkWKYLVaOXnyJJMmTQLuz/Di6uqapL6Liwu3bt0y/g/84WcDrq6uxMTEABATE5Nk32zZsgEY++3cuZMJEyakGVvx4sWpWbMmH330UbKyN954gxIlSmBnZ0fLli0JCAhgz549GRx90vYqV66Mg4MDjo6OtGzZkvz582Nvb8/777+PjY0NR48efWw7FSpUYOfOnYSEhGBnZ0etWrXYvn07u3btMma0AejevTs5cuTAbDYzcuRI9u3bl2qbn332GW+99RblypXD0dGRiRMn8sMPPxjLUDk4ODBhwgQcHR0xm81PfAxERERE5OnZZ3SHB1M7Pq1r166RkJCAl5dXku1eXl7GlJaPunLlSor1r1y5YpQ/2JZanfQaO3YsNWrUwGQysXXrVvr06cOtW7d49913U91n4sSJfPjhhxnqR0REREREREREREQkKw0ePJiTJ09y+fJlrFYr7777Lq1atWLr1q1YLJZkf3R669YtXFxcjCSbyMhI3NzcgPtJNg8SQcxmc5J9b968CZAssedxPvzwQypXrszIkSOTbN+6dStDhw7l7NmzJCYmcvv2ba5du5ahth/m6+ub5P3XX3/NhAkT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Yfj4+ODi4kLJkiXZu3dvpo1VRERERJ4PGU7EmThxIoGBgcm2BwYG8vHHH2dKUCIiIiIiIiIiIiIikvWOHj2KyWQiX758xraiRYty9OjRx+77559/kidPHpydnY1thQoV4q+//gJg/vz5BAQEPFV8TZs25cKFC5w7d45bt24xbNgwoywhIYFDhw5x4cIFlixZwgcffEB4eDgXL15k6dKlrFy5MtV2582bx7x581izZg1RUVHMnTsXR0dHwsLCaNmyJcOGDePatWu88cYbNGnShLi4OACKFCnCvn37uH79OtWqVaNz585PNT4RERERef5kOBFn/vz5FC5cONn2YsWKMW/evEwJSkREREREREREREREsl50dDQuLi5Jtrm6unLr1q3H7nvr1q1k+1osFqKjowHo2bMnp06dSrONpk2bYrFYjNfs2bOTlPfu3RtXV1dy5MjBgAEDks1A82A2HrPZzPr16xk5ciRubm6ULFmS1q1bp9rvV199xYABAyhTpgx2dnZUqlSJbNmysXbtWgoVKkSnTp1wdHRkzJgx3L59m927dwPQqVMnfHx8cHR0ZMKECZw6dYrIyMjHHisREREReXFkOBHnypUreHt7J9vu4eFBaGhopgQlIiIiIiIiIiIiIiJZz2KxJEu6iYqKSpZgkxIXF5dk+0ZHR2OxWNLd/zfffEN0dLTx6tevn1EWFxdHt27djKWgOnbsSEREhFFua2uLv7+/8f7atWvkyZPHeJ87d+5U+w0NDSV//vzJtgcHB5MrVy7jvZ2dHd7e3gQHBwMwffp0ChQogMViwcvLi3v37hlLWomIiIjIf0OGE3Fy587Nnj17km3fs2cPPj4+mRKUiIiIiIiIiIiIiIhkvWLFihEbG8v58+eNbcePH6dYsWKP3feVV14hKCiI27dvG9tOnjzJyy+/nCmxzZ8/nz179rBnzx5u3brFV199laTcxsYmyXt3d3cuXLhgvL906VKqbfv4+HDu3Llk23PlymUk3QAkJiYSGhpKrly5OHnyJCNGjGDhwoXcvHmTK1euYGNjw717955whCIiIiLyPMpwIk6PHj147733WLhwIUFBQQQFBREYGMiAAQPo0aPHs4hRRERERERERERERESeQlxcHLGxsSQkJBAfH09sbCzx8fFGeWxsrJEw8/DPVquVWrVqMXToUGJiYli+fDknT56kTZs2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RERERERERERERP6T9u/fz8GDB0lISODbb79l27ZtNG/ePKvDEhEREZHnmH1WByAiIiIiIiIiIiIiIpIVbty4QdeuXbl27RpeXl5MmTKFMmXKZHVYIiIiIvIcUyKOiIiIiIiIiIiIiIj8J9WuXZvg4OCsDkNEREREXiBamkpEREREREREREREREREREREJBMoEUdEREREREREREREREREREREJBMoEUdEREREREREREREREREREREJBPYZ3UAIiIi8nwJuNc4q0MQeWKnuJfVIYiIiIiIiIiIiIiIyAtMM+KIiIiIiIiIiIiIiIiIiIiIiGQCJeKIiIiIiIiIiIiIiMg/qkWLFgwZMiSrw+D06dNYLJZ/vN9Zs2ZRsWLFf7xfEREREXn2tDSViIiIiIiIiIiIiMiz8rnNs22/R/qW4J08eTJffvklp06don///kybNi1J+V9//UXv3r05cOAAzs7ODBo0iGHDhqWr7dDQUPr378+2bdu4e/cuhQoVYty4cTRs2BCAkydPUqxYMeLj4zM2tn9AwYIFiY6OzuowREREROQFohlxRERERERERERERERecD4+PowcOZJ69eolK4uNjaV+/fp06NCBGzducObMGd544410tRsbG0u1atWIjo7m4MGDhIeH06VLF1q1asXmzZszexjJxMXFPfM+nsS/NS4RERERefaUiCMiIiIiIiIiIiIi8oLr0KED7dq1w2q1JiubPXs2ZcqUoVevXjg5OeHm5kbJkiXT1e7cuXOJiIhg7dq15MmTB7PZTP/+/WnXrh3Dhw8HoG7duiQkJGAymTCZTJw+fRqA8PBwKlSogNlspnLlyly9etVod9OmTRQrVgyLxUK5cuU4duwYcH92HXt7e6ZMmYKnpyctW7ZMFlOLFi3o2rUr5cuXx2QyUaNGDUJCQqhXrx4uLi6UL1+esLCwJO094Ovry//+9z/y5cuHxWKhc+fOSdqeNGkS/v7+uLm50bx5c6KiooD7S02VL1+edu3aYbFYmDVrFjt37qR48eK4uLjg4+PD+PHjUzyGMTExvPnmm1itVqxWK2XKlEnXsRcRERGRfycl4oiIiIiIiIiIiIiI/If9/vvvRvJN9uzZqV27NufPnzfKq1evbiTVPGrnzp1UqVIFZ2fnJNubN2/On3/+SXR0NFu2bMHOzo7Y2FhiY2MpWLAgAN999x0zZswgPDychIQEJk6cCMDZs2dp164d06dPJyIigsaNG9OqVSuj7YSEBA4dOsSFCxdYsmRJinFt2LCBTz/9lJCQEIKDg6lUqRIDBgzg2rVrODg4MGnSpFSPx4YNG9izZw9//vkn3333HRs2bABg4cKFBAYGsm3bNoKDg4mLi2Pw4MHGfvv376dChQrcvHmTnj178tJLLzF//nwiIyNZsWIFkyZN4pdffknW36effkpsbCwhISFcu3Yt1YQdEREREXk+KBFHREREREREREREROQ/7MqVK6xatYqZM2cSHBxMrly5aNeunVG+c+dOJkyYkOK+N27cIGfOnMm2e3t7k5iYyLVr11Ltt2HDhsasNU2aNOHIkSMALFiwgHr16lG3bl3s7e0ZMWIEly9f5uTJk8a+EyZMwGQyYTabU2371VdfJVu2bNSqVYt8+fJRt25dnJycaNSokdFXSt555x28vb3Jly8fr732GgcPHgQgMDCQgQMHEhAQgNlsZvTo0UaSDkDu3Ll55513sLOzw2w2U6lSJSpVqoSdnR2vv/461apVY9euXcn6c3BwICIighMnTuDg4EDdunVTjU1ERERE/v2UiCMiIiIiIiIiIiIi8h/m5ORE3bp1qVKlCiaTiUmTJrF3715iYmIeu6+bmxtXrlxJtj00NBRbW1vc3d1T3dfT09P42WQyGf1dunSJb775BovFYrxu377NxYsXAbC1tcXf3z/NuDw8PIyfnZ2dk8Th7Oyc5ti8vb2TxBUdHQ1ASEgI77//vhFT9erVuXHjhlH30YSk/fv3U6lSJdzc3LBYLGzZsoXr168n669Xr15UqVKF5s2b4+Pjk+rsQyIiIiLyfFAijoiIiIiIiIiIiIjIf1jRokWxtf2/xwU2NjbY2Nika9/q1auze/dubt++nWT7mjVrKFGiBBaLJd1tPeDr60vbtm2Jjo42Xnfu3KF27dpGfFkhZ86czJ07N0lcD4/70bj69OlD2bJlCQ4OJjo6mrp163Lv3r1k7To5OTFjxgwuXLjAxo0b+eyzz9i4ceMzH4+IiIiIPBtKxBERERERERERERERecHFxcURGxtLQkIC8fHxxMbGEh8fD0DXrl3Ztm0bv/76K3fv3mX48OGUL18+1WWfHta7d2+yZctGs2bNuHDhAjExMXzyyScsXbqU8ePHA/cTWBITEzl37ly6Yu3SpQsbNmxgy5YtJCQkcPPmTb788ssnHntm6dy5M5MnT+bYsWMABAUFsWbNmlTrx8TEkC1bNpydndmyZQs7d+5Msd6GDRvYv38/CQkJZMuWDTs7O+zs7J7JGERERETk2bPP6gBERERERERERERERF5YPZLPgJIVhg4dyvTp0433M2fOZObMmbzzzjuUKlWKqVOn0qJFC6KioihTpgxLliwx6lapUoVKlSoxceLEZO2azWZ+/PFH3n33XUqWLMndu3cJCAhg+fLl1K9fHwBXV1f69OnDq6++Snx8PAcOHEgz1sKFC7N48WKGDBnCuXPncHZ2plKlSnTp0iVzDsYTevvtt7l58yYNGjQgPDwcd3d3unTpQvPmzVOsP2HCBPr27cuUKVOoXLkytWrVSrHe5cuX6du3L+Hh4bi4uNC5c2fq1q37LIciIiIiIs+Qzb2U5kGUTBEVFYXVaiUyMhJXV9esDueFE0DWTD8qkhlOoVuvPL90/5Xnme6/8lyzWZ/VEYg8uXuNsjoCERGRTJXa//1GRkYSFBREgQIFMJlMWRihiIiIiIhkptjYWM6cOYO/vz9WqzXNulqaSkREREREREREREREREREREQkEygRR0REREREREREREREREREREQkEygRR0REREREREREREREREREREQkEygRR0REREREREREREREREREREQkEygRR0REREREREREREREREREREQkEygRR0REREREREREREREREREREQkEygRR0REREREREREREREREREREQkEygRR0REREREREREREREXlizZs2iYsWKWR3GC+306dNYLJasDgOAPn36YLVaKVasWLKyxMREmjZtisVioU6dOhluu0qVKixYsOCx9U6ePIm9vX2G2xcREZEXgxJxRERERERERERERET+A0aNGkXOnDkxm80UKVKEmzdvAvcTVezt7TGZTMbr9OnTxn7t27fHz88PGxsbNm7cmKTNzZs3U7ZsWUwmE+XKlctQPA/36+LiQokSJdi2bdtTjzOjMTzvSTobN27Ez88vS2MoWLAg0dHRWRoD3E8IWrRoEadPn+bo0aPJyrdu3coff/xBWFgYW7duzXD7u3fvplu3bk8dZ4sWLRgyZMhTtyMiIiL/TkrEERERERERERERERF5Ru7aJD7TV3pNmjSJbdu28dNPPxEdHc2XX36Jo6OjUV6uXDli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8tSqVSstWrTIF198kXPPPXeJ7mf27Nn5wx/+kM8//zy1a9dOgwYNUqNGjcL5xx57LM8++2xmzZqVs88+OzvttFNKS0tzwAEH5LHHHssTTzyR2bNnZ9CgQdlkk00WuwpOy5Yt8/nnn2fmzJmLPP/cc8/l2Wefzdy5c1NWVpaaNWumZs2a6dmzZyoqKnLppZdm9uzZmT17dh599NG89957i72nHXfcMbNmzcpvfvOb7LHHHousadeuXbp27Zqjjjoq5eXlmTVrVp588skkySGHHJJLL700b731VpJk0qRJuffee5Mkw4YNy8SJE1NaWppVVlklyaJDRnvssUd+97vf5ZNPPsm//vWvXHvttdlnn30W2/PSWJrPZI899si1116bjz76KB9++GH++Mc/LvE8q622WqWtxgCAlYsgDgAAAAAArOSGDh2aTz/9NM2aNcuuu+6as846K717906SPProo+nUqVPq1auXAw88MCeccEJ+/etfF67dZptt0qBBg0ycODF77bVXGjRoUAgmPProo2nQoEGOOeaYjB07Ng0aNMiBBx5YuHadddbJjTfeuMR9nnbaafnzn/+c6dOn5+67784bb7yR5s2b55hjjskNN9yQTp06JUkuueSSnHrqqSkrK8vIkSPTtWvXwhiXXHJJVllllay55prZb7/9vjekscsuu2SNNdbIqquumnXXXXeRNXvvvXe6dOmS9u3bZ4MNNkj37t2X+H7+8pe/pG3btmnSpEmeeuqpXH/99YVze+65Z04++eS0aNEiM2bMyA033JAk2WSTTXL11VfniCOOyGqrrZb33nsvd95552Ln2GSTTbLDDjukTZs2adSo0ULnP//88/z6179OWVlZ1ltvvXTt2jVHHHFEatWqlb/97W95/PHH06pVq7Rq1Sq/+93vCiGrRalRo0Z22223vPjii4vclupbd999d8rLy9OuXbusscYaha3OjjzyyBx88MHZZZdd0rBhw2y77bZ54403kiRjxozJ5ptvnvr16+e4447LzTffnHr16i009iWXXJJ11lknHTt2zJZbbpm99torxx577GJ7WRpL85mccsop2XTTTbPBBhtkm222ya677pratWsv0TxHH310Xn311TRq1Cj/8z//U5TeAYAVR0nF8l5f8mdk5syZKSsrS3l5+SL3QuXHWTc/vNwmrKjejUcv1ZfnL9WZ5y/VWsmDVd0BLLuK3X+4BgCqkcV991teXp5JkyZlnXXWSf369auwQ1Z0/fr1y1prrZVLL720qluhSC6//PLcf//9ef7556u6FQDgJ/DVV1/l/fffT9u2bVNWVva9tVbEAQAAAAAAgKUwY8aMPPDAA5k3b17GjRuX6667LrvuumtVtwUArAAEcQAAAAAAAGApzJ8/P2eeeWYaN26c7bbbLr169cpJJ51U1W0BACuAmlXdAAAAAAAAwM/JPffcU9Ut8COtuuqqeeutt6q6DQBgBWRFHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKIIqD+Jcd911adeuXerWrZtu3brlpZde+t764cOHp2PHjqlbt2423HDDjBgxotL5ioqKnHPOOWnVqlXq1auXXr165b333qtUc+GFF2bLLbdM/fr106RJk0XOM3ny5Oyyyy6pX79+VltttZx66qmZN2/ej7pXAAAAAAAAAABWXlUaxLnrrrsyaNCgnHvuufnHP/6RjTfeOL179860adMWWf/CCy9k//33z+GHH55XX301ffv2Td++ffPmm28Wai699NJcffXVufHGGzNmzJg0aNAgvXv3zuzZsws133zzTfbZZ58MGDBgkfPMnz8/u+yyS7755pu88MILufXWWzNs2LCcc845xf0AAAAAAAAAAABYaZRUVFRUVNXk3bp1y+abb55rr702SbJgwYK0adMmxx9/fM4444yF6vv3759Zs2bl4YcfLhzbYost0rlz59x4442pqKhI69atc/LJJ+eUU05JkpSXl6dFixYZNmxY9ttvv0rjDRs2LAMHDsyMGTMqHX/kkUey66675t///ndatGiRJLnxxhtz+umn55NPPknt2rWX6P5mzpyZsrKylJeXp3Hjxkv8ubBk1k1JVbcAy+zdVNmjF340z1+qM89fqrWSB6u6A1h2FbtXdQcAUFSL++63vLw8kyZNyjrrrJP69etXYYfLbsSIETn66KMzefLkqm4FAABWGF999VXef//9tG3bNmVlZd9bW2Ur4nzzzTcZO3ZsevXq9f83U1qaXr16ZfTo0Yu8ZvTo0ZXqk6R3796F+gkTJmTq1KmVasrKytKtW7fFjrm4eTbccMNCCOfbeWbOnJlx48Yt9ro5c+Zk5syZlV4AAAAAALCi6tq1a2644YaqbgMAAFYaNatq4unTp2f+/PmVwi5J0qJFi4wfP36R10ydOnWR9VOnTi2c//bY4mqWxOLm+e4cizJkyJCcf/75SzwPAAAAAAArtxd+4pVlt1xBV/6cO3duatWqVdVtAADAcldlK+KsjM4888yUl5cXXh9++GFVtwQAAAAAABk7dmy6dOmSRo0a5Re/+EUef/zxnHrqqRk7dmwGDhyY+vXr58wzzyzUn3rqqSkrK8vqq6+ev/71r4Xj06ZNy+67756mTZtmjTXWyLXXXls417Vr1wwcODCdOnVKgwYNMmfOnOV6jwAAsCKosiBOs2bNUqNGjXz88ceVjn/88cdp2bLlIq9p2bLl99Z/+8+lGXNp5vnuHItSp06dNG7cuNILAAAAAACq0uzZs7PHHntkzz33zPTp0zNo0KD069cvp512WjbbbLNceeWV+eqrrzJkyJAkyb///e/Url27UHvccccVxtp3333TqlWrfPTRR3n44YczePDgjBkzpnD+r3/9a+66667MmDHDijgAAPwsVVkQp3bt2tlss80yatSowrEFCxZk1KhR6d69+yKv6d69e6X6JHn88ccL9e3bt0/Lli0r1cycOTNjxoxZ7JiLm+eNN97ItGnTKs3TuHHjbLDBBks8DgAAAAAAVLVnnnkmFRUVOfvss1OnTp0cfvjhad++fe67775F1terVy+DBw9OrVq1cuSRR2bKlCmZPn16Pvzww4wZMyZXX3116tWrl86dO2fPPffM3XffXbj2oIMOyi9+8YvUr18/paUW5QcA4OenZlVOPmjQoBxyyCHp0qVLunbtmiuvvDKzZs3KYYcdliQ5+OCDs/rqqxdS+CeeeGK23Xbb/P73v88uu+ySO++8M6+88kr++Mc/JklKSkoycODA/O53v0uHDh3Svn37/Pa3v03r1q3Tt2/fwryTJ0/OZ599lsmTJ2f+/Pl57bXXkiTrrLNOGjZsmB133DEbbLBB/ud//ieXXnpppk6dmt/85jc59thjU6dOneX6GQEAAAAAwI/xf//3f2nVqlWlY2ussUb+/e9/L7J+lVVWSY0aNZIkjRo1SvKfX3r98MMP880336RZs2aF2gULFlT6/r1NmzZF7h4AAKqXKg3i9O/fP5988knOOeecTJ06NZ07d87IkSPTokWLJP8JzHw3Mb/lllvm9ttvz29+85ucddZZ6dChQ+6///506tSpUHPaaadl1qxZOfLIIzNjxoz06NEjI0eOTN26dQs155xzTm699dbC+0022SRJ8tRTT6Vnz56pUaNGHn744QwYMCDdu3dPgwYNcsghh2Tw4ME/9UcCAAAAAABFtcYaa2TKlCmVjn300UfZfffdU1JSssTjrLnmmqlfv37Ky8utdgMAAItRpUGcJDnuuOMq7S/7XU8//fRCx/bZZ5/ss88+ix2vpKQkgwcP/t7QzLBhwzJs2LDv7att27YZMWLE99YAAAAAAMCKbtttt02SDBkyJKecckr+8pe/5F//+lf23HPPPPDAA5kwYcISjdO+fft07tw5AwcOzIUXXpi6devmpZdeSr169bLpppv+lLcAAADVhsg6AAAAAACsxOrWrZu//vWvGT58eJo2bZrLLrssw4cPT/PmzXPiiSfmzjvvTKNGjXLWWWf94Fj33HNPPvroo7Rv3z7NmjXLiSeemK+++mo53AUAAFQPJRUVFRVV3cTKaubMmSkrK0t5eXkaN25c1e2sdNbNki+ZCiuad+PRS/Xl+Ut15vlLtVbyYFV3AMuuYveq7gAAimpx3/2Wl5dn0qRJWWeddVK/fv0q7BAAACimr776Ku+//37atm2bsrKy7621Ig4AAAAAAAAAABSBIA4AAAAAAAAAABSBIA4AAAAAAAAAABSBIA4AAAAAAAAAABSBIA4AAAAAABRRRUVFVbcAAAAU0dL8GV8QBwAAAAAAiqB27dqpqKjInDlzqroVAACgiObMmZOKiorUrl37B2trLod+AAAAAABgpVenTp3UrFkzn3zySWrVqpUaNWpUdUsAAMCPNH/+/EybNi01a9ZMnTp1frBeEAcAAAAAAIqgtLQ07dq1y/vvv58JEyZUdTsAAECRVFRUZJ111klp6Q9vPCWIAwAAAAAARdKgQYP84he/yKxZs6q6FQAAoEgaNGiQmjWXLGIjiAMAAAAAAEVUs2bNlJWVVXUbAABAFfjhNXMAAAAAAAAAAIAfJIgDAAAAAAAAAABFIIgDAAAAAAAAAABFIIgDAAAAAAAAAABFULOqGwAAAOCHrVuxR1W3AMvs3VRUdQsAAAAAsFxYEQcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIpAEAcAAAAAAAAAAIqgZlU3AAAAAAAA/P/mz5+fBQsWVHUbVJHS0tLUqFGjqtsAAGAZCeIAAAAAAMAKYv78+Zk2bVoqKiqquhWqSElJSVZbbTVhHACAakoQBwAAAAAAVhALFixIRUVFVlllldSs6Sv8n5t58+bl888/z4IFCwRxAACqKX+KBwAAAACAFUzNmjVTq1atqm4DAABYSqVV3QAAAAAAAAAAAKwMBHEAAAAAAAAAAKAIBHEAAAAAAAAAAKAIBHEAAAAAAKCaGD9+fHbYYYc0aNAgLVu2zGmnnZZvvvlmmcf78ssvc/7556dTp06pX79+GjRokK5du+aKK67I7NmzkyRPP/10SkpKCq9GjRplk002yc0335yKiorFjj1x4sSUlJTknnvuKRw79NBD06lTpx/s69BDD60053dfd9555zLf73f17Nmz0rhlZWXZYost8sADD1Sq++/7b9CgQTbccMNcddVVmT9/flF6AQBg5VGzqhsAAAAAAAB+2Oeff57tt98+HTp0yF//+td89NFHGTRoUL766qtce+21Sz3e9OnTs9122+XDDz/MwIED06NHjyTJ6NGjc/HFF6dGjRo58cQTC/W33HJLOnbsmBkzZmTo0KE5/PDDM3fu3Bx11FFFu8fvWmuttXLbbbctdLxDhw5Fm2OrrbbK5ZdfniSF+9prr73y7LPPZquttqpU++39l5eX59Zbb83AgQPz9ddf54wzzihaPwAAVH+COAAAAAAAUA3ceOONmTlzZu677740bdo0STJv3rwcc8wxOeuss9K6deulGu+YY47JBx98kDFjxlRapaZXr1459thjM378+Er1nTp1SpcuXZIkO+ywQ9Zff/1cc801P1kQp169etliiy1+krG/1aRJk0pz9OrVK61atcoDDzywUBDnv+//1VdfzS233CKIAwBAJbamAgAAAACAauCRRx5Jr169CiGcJNl3332zYMGCPPbYY0s11qRJk3LPPffk6KOPXuRWUU2bNs2WW2652Otr1KiRTTbZJBMmTFiqeVd0NWvWTL169TJ37tzvrSstLc1GG22UyZMnL6fOAACoLgRxAAAAAACgGhg/fnw6duxY6ViTJk3SqlWrSqvXHHrooSkpKfnesZ577rlUVFSkT58+y9zPhAkTlnoVnqU1b968hV7FVFFRURh3+vTpufDCC/PRRx9lr732+sFrJ02alPbt2xe1HwAAqj9bUwEAAAAAQDXw+eefp0mTJgsdX2WVVfLZZ58V3teoUSM1atT43rE++uijJMmaa665xPPPnz8/8+bNS3l5ef7whz/k5ZdfzplnnrnE1y+tcePGpVatWgsd//DDD7PGGmsUZY4RI0ZUmqNGjRq54oorsvXWWy9U+937v+WWW/LSSy/ljjvuKEofAACsPARxAAAAAABgJTJ06NAMHTp0iWp/aOWc79piiy0K/16zZs0cffTROeecc5a6v++aP39+KioqKo37rbXXXjt33nnnQte0aNFimcZblB49euR///d/kyRffPFFRowYkUGDBqVJkyY55JBDKtV+9/6T5Iwzzkj//v2/d3wAAH5+BHEAAAAAAKAaWGWVVVJeXr7Q8c8//zxNmzZdqrFWX331JMnkyZOz7rrrLtE1f/rTn7L++uuncePGadeuXWrXrr1Ucy7K2muvnUmTJhXeT5gwIe3atUuS1K1bN126dCnaeItSVlZWaY7tttsu77zzTk455ZQcfPDBlYJK397/tGnTMmTIkFxyySXZdtttf9T2XgAArHwEcQAAAAAAoBro2LFjxo8fX+lYeXl5pkyZko4dOy7VWNtss01KSkry6KOPplevXkt0zfrrr7/UwZgf8tBDD2XOnDmF961bt67y8dZff/089NBDmTZtWqXVd757/9tss03WW2+9nHzyyendu/dSrSwEAMDKrbSqGwAAAAAAAH7YTjvtlCeeeCIzZswoHBs+fHhKS0uz4447LtVYa665Zvr165cbbrghb7311kLnZ8yYkdGjR//Yln/QhhtumC5duhReP3aVnWKM9+abb6ZWrVpp3LjxYmsaNmyY888/P2+99Vbuv//+H9ExAAArG0EcAAAAAACoBo4++ug0atQoffv2zWOPPZZbbrklp556ao4++uhKK78cfvjhqVnzhxfEv/7669OuXbtstdVWGTx4cEaNGpVRo0bloosuyvrrr5+XXnrpp7ydH/T111/nxRdfXOj10UcfFW2OGTNmFMZ9/PHHc9JJJ2XEiBE59NBDU69eve+99pBDDkn79u1zySWXFK0fAACqP1tTAQAAAABANbDKKqtk1KhROf7449O3b980atQov/71r3PhhRdWqps/f37mz5//g+M1a9Yso0ePzhVXXJG77rorQ4YMSWlpaX7xi1/k9NNPz1FHHfVT3coS+eCDD9K9e/eFjl9wwQX5zW9+U5Q5/v73vxfmqFevXtZaa61cdtllOeGEE37w2lq1auWss87KEUcckaeffjo9e/YsSk8AAFRvJRUVFRVV3cR1112Xyy67LFOnTs3GG2+ca665Jl27dl1s/fDhw/Pb3/42EydOTIcOHXLJJZdk5513LpyvqKjIueeem5tuuikzZszIVlttlRtuuCEdOnQo1Hz22Wc5/vjj89BDD6W0tDR77713rrrqqjRs2DBJMnHixLRv336huUePHp0ttthiie5r5syZKSsrS3l5+fcuYcmyWTf23KX6ejdV/uiFZeb5S3Xm+Ut15vlLdeb5C8DK5qf87nfu3Ln55JNP0rx589SqVauoY7Pi8/MHAKj+qnxrqrvuuiuDBg3Kueeem3/84x/ZeOON07t370ybNm2R9S+88EL233//HH744Xn11VfTt2/f9O3bN2+++Wah5tJLL83VV1+dG2+8MWPGjEmDBg3Su3fvzJ49u1Bz4IEHZty4cXn88cfz8MMP59lnn82RRx650HxPPPFEpkyZUnhtttlmxf8QAAAAAAAAAACo9qp8RZxu3bpl8803z7XXXpskWbBgQdq0aZPjjz8+Z5xxxkL1/fv3z6xZs/Lwww8Xjm2xxRbp3LlzbrzxxlRUVKR169Y5+eSTc8oppyRJysvL06JFiwwbNiz77bdf3n777WywwQZ5+eWX06VLlyTJyJEjs/POO+f//u//0rp168KKOK+++mo6d+68TPdmRZyflt8IpjrzG8FUZ56/VGeev1Rnnr9UZ56/AKxsrIjDT8XPHwCg+qvSFXG++eabjB07Nr169SocKy0tTa9evTJ69OhFXjN69OhK9UnSu3fvQv2ECRMyderUSjVlZWXp1q1boWb06NFp0qRJIYSTJL169UppaWnGjBlTaezdd989q622Wnr06JEHH3zwe+9nzpw5mTlzZqUXAAAAAAAAAAA/D1UaxJk+fXrmz5+fFi1aVDreokWLTJ06dZHXTJ069Xvrv/3nD9Wsttpqlc7XrFkzTZs2LdQ0bNgwv//97zN8+PD87W9/S48ePdK3b9/vDeMMGTIkZWVlhVebNm1+6CMAAAAAAAAAAGAlUaVBnBVZs2bNMmjQoMLWWRdffHEOOuigXHbZZYu95swzz0x5eXnh9eGHHy7HjgEAAAAAWJm9//77Ofroo9O5QBCXlwAANwdJREFUc+fUrFkznTp1+tFjfvnllzn//PPTqVOn1K9fPw0aNEjXrl1zxRVXZPbs2UmSp59+OiUlJYVXo0aNsskmm+Tmm29ORcWit6C89957U1JSkueff36R5z/77LPUrl0755xzzmJ7a9euXWHOmjVrpl27djnkkEMW+d37iy++mJ122iktW7ZMvXr10q5du/Tr12+hVfCX1X9/BjVr1kzbtm0zYMCAfPrpp5Vqe/bsWagrLS3NGmuskb322itvvfVWUXoBAGDFVrMqJ2/WrFlq1KiRjz/+uNLxjz/+OC1btlzkNS1btvze+m//+fHHH6dVq1aVajp37lyomTZtWqUx5s2bl88++2yx8yZJt27d8vjjjy/2fJ06dVKnTp3FngcAAAAAgGU1bty4/O1vf0u3bt2yYMGCLFiw4EeNN3369Gy33Xb58MMPM3DgwPTo0SNJMnr06Fx88cWpUaNGTjzxxEL9Lbfcko4dO2bGjBkZOnRoDj/88MydOzdHHXXUQmPvsssuady4ce64447CuN91zz33ZO7cuTnwwAO/t8d+/frl5JNPzty5c/Pyyy/n3HPPzauvvpqxY8emVq1aSZK///3v6dmzZ/r06ZMbb7wxjRs3znvvvZf7778/L730Urp16/ZjPqZKvv0M5s2bl3HjxuXss8/OhAkTMnLkyEp1W221VS6//PLMnz8/b731Vn7zm9+kV69eGTduXFZZZZWi9QMAwIqnSoM4tWvXzmabbZZRo0alb9++SZIFCxZk1KhROe644xZ5Tffu3TNq1KgMHDiwcOzxxx9P9+7dkyTt27dPy5YtM2rUqELwZubMmRkzZkwGDBhQGGPGjBkZO3ZsNttssyTJk08+mQULFnzvH8hfe+21SuEeAAAAAABYXnbbbbfsscceSZJDDz00r7zyyo8a75hjjskHH3yQMWPGVFpdp1evXjn22GMzfvz4SvWdOnVKly5dkiQ77LBD1l9//VxzzTWLDOLUrVs3e++9d4YPH56rrroqNWtW/t8Rt99+ezbddNOst95639tjixYtssUWWyRJtt5668yePTtnn312XnnllcL/F7jhhhvSrl273H///alRo0aSZPvtt89RRx31o8NK/+27n0GPHj0ye/bsnHTSSfnyyy/TsGHDQl2TJk0KfW+11VZp0KBBDjzwwIwcOTL7779/UXsCAGDFUuVbUw0aNCg33XRTbr311rz99tsZMGBAZs2alcMOOyxJcvDBB+fMM88s1J944okZOXJkfv/732f8+PE577zz8sorrxSCOyUlJRk4cGB+97vf5cEHH8wbb7yRgw8+OK1bty6EfdZff/306dMnRxxxRF566aX8/e9/z3HHHZf99tsvrVu3TpLceuutueOOOzJ+/PiMHz8+F110UW6++eYcf/zxy/cDAgAAAACAJKWlxftKf9KkSbnnnnty9NFHL3KLq6ZNm2bLLbdc7PU1atTIJptskgkTJiy25oADDsgnn3ySJ554otLxjz76KM8999wProazKJtsskmSZPLkyYVjn3/+eVZbbbVCCOe7ivmZLUqjRo1SUVGR+fPnf2/dovoGAGDlVOVBnP79++fyyy/POeeck86dO+e1117LyJEj06JFiyT/+UPplClTCvVbbrllbr/99vzxj3/MxhtvnHvuuSf3339/pb8onHbaaTn++ONz5JFHZvPNN8+XX36ZkSNHpm7duoWa2267LR07dswvf/nL7LzzzunRo0f++Mc/VurtggsuyGabbZZu3brlgQceyF133VUICAEAAAAAwIro0EMPTUlJyffWPPfcc6moqEifPn2WeZ4JEyYUfrl1Ubbffvu0bNkyt99+e6Xjd955Z5Jkv/32W+o5J02alOQ/q+N/a7PNNssLL7yQ3/72twut4lNs8+fPz7x58zJ79uyMHTs2l19+eXr16pWysrKl7hsAgJVTlW5N9a3jjjtusVtRPf300wsd22effbLPPvssdrySkpIMHjw4gwcPXmxN06ZNF/rD/3cdcsghOeSQQxbfNAAAAAAArIBq1KixyNVhvuujjz5Kkqy55ppLPO63IZTy8vL84Q9/yMsvv1xpRfv/Vlpamv322y9Dhw7N7NmzC78se8cdd6Rnz57fG+L5VkVFRebNm5e5c+fmlVdeyUUXXZSdd945Xbt2LdSceuqpefHFF/O73/0uv/vd79K0adP06dMnRx99dLbeeuslvr8l8e12U9/aaKON8qc//WmxfS9YsCDjxo3L6aefnk022aSwtRgAACuvKl8RBwAAAAAAKJ6hQ4dm3rx5S1T7QyvnfNcWW2yRWrVqpVmzZjn33HNz9NFH55xzzvneaw444IB88cUXefjhh5Mk7733XsaOHbvE21Jdf/31qVWrVurXr59tttkm9erVyx133FGpplGjRnnssccyZsyYwur7w4cPz7bbbpv/9//+32LH/jYs8+1rwYIFP9jPn/70p7z88ssZM2ZM7rjjjnzzzTfp06dPvvzyy0p1I0aMSK1atVKnTp1suummmTp1au6///7UqVNnie4bAIDqSxAHAAAAAAB+ZlZfffUkyeTJk5f4mm9DKO+8805mzZqVG264obDKzeJsvvnm6dChQ2GF+ttvvz116tTJ3nvvvURz7rvvvnn55Zfz3HPP5cwzz8y7776bo446apG1Xbt2zfnnn59Ro0blnXfeyRprrJHTTz99sWPfeuutqVWrVuH1q1/96gf7WX/99dOlS5d07do1++23X2677bb885//zLBhwyrV9ejRIy+//HJeeOGFXHbZZZkxY0b233//JQr7AABQva0QW1MBAAAAAADLzzbbbJOSkpI8+uij6dWr1xJd820IZWkdcMABufjii1NeXp477rgju+yyS8rKypbo2ubNmxfm7NGjR7788stcc801GThwYLp167bY69q3b5999tknV1xxRT7++OO0aNFioZrddtstL7/8cuF9s2bNlvLO/vOZJMm4ceMqHS8rKyv03b1795SWlubkk0/O8OHD079//6WeBwCA6sOKOAAAAAAA8DOz5pprpl+/frnhhhvy1ltvLXR+xowZGT16dFHmOuCAAzJnzpz85je/yTvvvLPE21ItynnnnZfGjRvnoosuKhz7+OOPF1n77rvvpk6dOmnSpMkiz6+66qrp0qVL4dWuXbul7ufNN99M8sMhnuOPPz7t27fPkCFDlnoOAACqFyviAAAAAABANfDVV19lxIgRSZJJkyZl5syZueeee5Ik2267bZo3b54kOfzww3Prrbdm3rx53zve9ddfn549e2arrbbKSSedlK222ipJMmbMmFxzzTU544wz0r179x/d97rrrpvNNtss1113XcrKyrLLLrss81hNmzbN8ccfn4suuihvv/121l9//RxxxBGZN29e9t5773To0KHwuTz88MMZOHBg6tSp86Pv4Vtvvvlm5s2blwULFuSDDz7IBRdckPr16+fggw/+3utq1aqVs846K0cccURGjhyZPn36FK0nAABWLII4AAAAAABQDUybNi377LNPpWPfvn/qqafSs2fPJMn8+fMzf/78HxyvWbNmGT16dK644orcddddGTJkSEpLS/OLX/wip59+eo466qii9X7ggQdm7Nix2XvvvX90MGbQoEG55pprcskll2TYsGE59thj86c//SkXXXRRpkyZkvr162fttdfO0KFDc8ghhxTpDv7jsMMOS5KUlJSkRYsW6dq1a4YPH54OHTr84LWHHHJILrroolx88cWCOAAAK7GSioqKiqpuYmU1c+bMlJWVpby8PI0bN67qdlY666akqluAZfZuPHqpvjx/qc48f6nOPH+pzjx/AVjZ/JTf/c6dOzeffPJJmjdvnlq1ahV1bFZ8fv4AANVfaVU3AAAAAAAAAAAAKwNBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAqAaGDx+ePfbYI2ussUYaNGiQzp075+abb05FRcUyjdeuXbuUlJSkpKQkNWvWzFprrZUBAwZk+vTpRen36aefzkUXXbTQ8fPOOy8NGzYsyhxLqm/fvunZs2dRxpo4cWJKSkpyzz33FI4deuihKSkpycEHH/yTzg0AwIpPEAcAAAAAAKqBK664IvXr18/vf//7PPTQQ9lpp51yxBFHZPDgwcs8Zr9+/TJ69Og89dRTGTBgQP70pz+lb9++WbBgwY/ud3FBnJXZ7bffnn/9619V3QYAAFWoZlU3AAAAAAArqhdSUtUtwDLbMsu2SgorroceeijNmjUrvN9+++3z6aef5oorrshvf/vblJYu/e/etmjRIltssUWSZOutt87s2bNzzjnn5B//+Ee6dOmyTH3OmTMntWrVWqZrq7MOHTrk66+/zkUXXZShQ4dWdTsAAFQRK+IAAAAAAEA18N0Qzrc22WSTzJw5M7NmzSrKHN+GbyZMmJAkmTRpUvr165eysrI0aNAgvXv3zhtvvFHpmnbt2uW4447LpZdemrZt26ZevXo54YQTcv7552fWrFmF7a8Wtz3TrFmzctxxx2W99dZL/fr1065duxx99NEpLy9f5DzXXXdd2rZtm7KysvTt2zeffPJJpbq333472267berWrZu11147t956a1E+mx9Su3btnH766fnzn/+cSZMmLZc5AQBY8VgRBwAAAAAAqqnnn38+q6++eho1alQ4duihh+bWW29NRcXSr4r0bQCndevW+eKLL9KzZ8+UlpbmxhtvTN26dXPhhRdmm222yT//+c+0adOmcN29996bDh065KqrrkqNGjXSuXPnzJ49O7fffnuefPLJJEnjxo0XOedXX32V+fPn58ILL0zz5s3z4Ycf5sILL0zfvn3z1FNPVap98MEH89577+W6667L9OnTc9JJJ+X444/PnXfemSSZPXt2dtxxxzRo0CB//vOfkyTnnHNOZs6cmQ4dOiz157G0fv3rX+fCCy/MRRddlD/84Q8/+XwAAKx4BHEAAAAAAKAaev7553PnnXfm97//faXjNWrUSI0aNZZojIqKisybNy9z587NmDFjcuGFF2attdbKpptumptuuimTJk3KuHHjsv766ydJtt1226y55pq58sorK807d+7cPPLII2nQoEHh2BprrJHS0tLC1leL07x589xwww2F9/PmzUv79u3To0ePvPvuu1l33XUr9fvggw+mTp06SZKJEyfmoosuyoIFC1JaWpphw4bl3//+d8aPH18I3myyySZZb731lksQp27dujn11FNz5pln5re//W3WWGONn3xOAABWLLamAgAAAACAaub//u//0r9//2y33XY54YQTKp0bOnRo5s2bt0TjXH/99alVq1bq16+f7bbbLquvvnruvffe1KtXL88991w6depUCOEkSdOmTbPDDjvk+eefrzROz549K4Vwltaf//znbLLJJmnYsGFq1aqVHj16JEnefffdSnXbbrttIYSTJBtssEHmzp2badOmJUnGjBmTTp06VQrdrLPOOtl4442/d/5vA0nfvubPn7/M93L00UenrKwsF1988TKPAQBA9SWIAwAAAAAA1ciMGTOy0047ZdVVV829996b0tJl/6p/3333zcsvv5zXXnstn376aV566aV07tw5SfL555+nRYsWC13TokWLfPbZZwsdW1b33XdfDj744HTt2jV33313Xnzxxdx3331J/rPV1Hc1adKk0vvatWtXqpsyZUpWW221Rfb8fZ555pnUqlWr8PrlL3+5rLeT+vXrZ9CgQRk6dGimTJmyzOMAAFA92ZoKAAAAAACqia+//jq77rprysvLM3r06JSVlf2o8Zo3b54uXbos8lzTpk3zzjvvLHT8448/TtOmTSsdKykpWeYehg8fns6dO+cPf/hD4dgzzzyzTGO1atUq//jHPxY6/vHHH6dx48aLvW6zzTbLyy+/XHjfqFGjZZr/W8cee2wuu+yyXHrppT9qHAAAqh8r4gAAAAAAQDUwb9687Lvvvnn77bczcuTIrL766j/pfD169Mgbb7xRKYzz+eef54knnihsHfV9ateunTlz5vxg3ddff11Y2eZbt91229I3nKRr165588038/777xeOvf/++3n99de/97pGjRqlS5cuhdd66623TPN/d7yBAwfmD3/4Q2HbLAAAfh4EcQAAAAAAoBo45phj8vDDD+fss8/OzJkz8+KLLxZe3w28HH744alZ88cviH/YYYelbdu22WWXXXLnnXfm/vvvz4477piaNWtm4MCBP3j9+uuvn3nz5uWqq67Kyy+/vMjVdZJkhx12yEsvvZQLLrggTzzxRAYNGpRRo0YtU8+HHnpoWrZsmV133TXDhw/P8OHDs9tuu6Vly5bLNN6PccIJJ6R27doZPXr0cp8bAICqI4gDAAAAAADVwGOPPZYkOfnkk9O9e/dKrylTphTq5s+fn/nz5//o+Ro1apSnn346G2+8cY488sgceOCBWWWVVfLss8+mTZs2P3j9brvtlmOOOSZDhgxJt27dctRRRy2y7qijjsrJJ5+ca665JnvttVc+/PDD3H777cvUc7169fLYY49ltdVWy0EHHZTTTz89p512WjbffPNlGu/HKCsry/HHH7/c5wUAoGqVVFRUVFR1EyurmTNnpqysLOXl5d+79yzLZt0s+57DUNXejUcv1ZfnL9WZ5y/Vmecv1ZnnL9XZnJIFVd0CLLM6FX4P86fyU373O3fu3HzyySdp3rx5atWqVdSxWfH5+QMAVH/+JgYAAAAAAAAAAEXw4zeJBQAAAICVVJ0/1qjqFuBHsCIZAADA8mZFHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJbUwEAAADAYpTMtrUP1Zf/egEAAJY/K+IAAAAAAEA1MGLEiGy77bZp3rx56tSpk7XWWiuDBg1KeXn5Mo135ZVXZsSIEUXusjgOPfTQdOrUaaHjEydOzJFHHpm2bdumTp06adq0afr06ZN77rlnufbXrl27lJSUpKSkJDVr1sxaa62VAQMGZPr06YWaQw89tFDz368777xzufYLAMDyY0UcAAAAAACoBj777LN069YtJ5xwQlZdddW8+eabOe+88/Lmm2/mscceW+rxrrzyyuy6667Zeeedf4Jui+/FF19Mnz590rx585xxxhnZYIMNMnPmzIwYMSIHHnhgOnTokI033ni59dOvX7+cfPLJmTt3bl588cWcd955eeONN/Lss8+mtPQ/vwe91lpr5bbbblvo2g4dOiy3PgEAWL4EcQAAAAAAoBo46KCDKr3v2bNn6tSpkyOPPDL//ve/07p16yrq7Kc3e/bs7LvvvlljjTXywgsvpHHjxoVzu+22WwYMGJAmTZos155atGiRLbbYIkmy9dZbZ/bs2TnnnHPyj3/8I126dEmS1KtXr1ADAMDPg62pAAAAAACgmlp11VWTJN98881SXdeuXbtMmjQp1113XWG7pGHDhuXkk0/OmmuumQULFlSqf+SRR1JSUpK33nqrcP1xxx2Xyy67LKuvvnrq16+fPfbYI1OmTKl03Zw5c3LWWWcVtpJaf/31c/vtty/1fQ4fPjwffvhhhgwZUimE862NNtooa665ZuH9X//613Tu3Dl169ZN69atM2jQoMyePXup510a34ZvJkyY8JPOAwDAis2KOAAAAACwGI1PqOoO4Ec4vqob4Kcyf/78zJ07N2+99VYGDx6c3XffPe3atSucP++883L++ednwoQJlY5/13333Zedd945PXr0yMknn5wkWXvttdOtW7dcccUVefzxx9O7d+9C/c0335wtttgiG2ywQaUx2rZtmxtuuCGff/55Tj/99Oy1114ZPXp0oWbffffN888/n3PPPTfrr79+RowYkYMOOiirrLJKdtpppyW+52eeeSY1atRIr169frD2wQcfTL9+/bLffvvl4osvzvjx43PWWWdl8uTJueeee5Z4zqX1bQDnv1cmmjdv3kK1NWv63zMAACsrf9IDAAAAAIBqpG3btvnoo4+SJH369FlohZnS0tLUqFEjJSUlix1jk002SZ06dSptr5QkzZs3T48ePXLzzTcXgjiffvppHnzwwVx77bWVxvjiiy/yyCOPpKysLEnSpk2b/PKXv8yjjz6a3r1756mnnsqDDz6YRx99NDvuuGOSZIcddsiUKVNy7rnnLlUQ56OPPkrz5s1Tr169H6w977zzssUWWxQ+lz59+qR+/fo56qij8sYbb2TDDTdc4nm/T0VFRebNm5e5c+dmzJgxufDCC7PWWmtl0003LdSMGzcutWrVWujaDz/8MGussUZR+gAAYMViayoAAAAAAKhGRowYkRdeeCE33XRT3n777ey2226ZP39+4fw555yTefPmpW3btss0/hFHHJEHHnggn332WZLktttuS61atbLffvtVqttuu+0KIZwk2X777dO0adOMGTMmSfLYY4+ladOm2X777TNv3rzCa4cddsirr75aqecl8X3Bom99+eWXee2119KvX79Kx/v3758kef755xd77Xd7XNQqNv/t+uuvT61atVK/fv1st912WX311XPvvfdWCgutvfbaefnllxd6tWjR4gfHBwCgerIiDgAAAAAAVCMbbbRRkqR79+7ZfPPN07lz59x3330LhU+W1T777JMTTzwxf/nLX3LCCSfklltuSb9+/dKoUaNKdautttpC16622mqZMmVKkmT69On57LPPFrkiTJJMmTJliVeFWX311fPEE09k9uzZqVu37mLrZsyYkYqKioWCLmVlZalTp04hXLQo/91nRUXF9/a077775tRTT02tWrXSpk2bNG3adKGaunXrpkuXLt87DgAAKxdBHAAAAAAAqKY22mij1KpVK++//37RxqxXr14OPPDA3HLLLenRo0dee+21XH311QvVTZs2bZHHWrVqlSRp2rRpmjdvnhEjRixynkUFeRanZ8+eGTp0aEaNGpVddtllsXVNmjRJSUnJQr2Vl5dnzpw5iwzLfOvll19e4n6S/2zjJWQDAMB/szUVAAAAAABUU2PGjMncuXOz1lprLfW1tWvXzuzZsxd57ogjjshrr72Wk046KR06dMjWW2+9UM1TTz2V8vLywvsnn3wyn332Wbp165Yk6dWrVz755JPUrl07Xbp0WehVu3btJe61X79+adOmTc4666x88cUXC51/44038uGHH6Zhw4bp3Llz7rnnnkrn77777iRJjx49FjvHf/cHAADLwoo4AAAAALAY5Smp6hbgR/j+bXWofvbaa6906dIlG220UerVq5fXX389l112WTbaaKP07du3UDd48OAMHjw4//rXv9K2bdvFjrf++uvnySefzOOPP55VVlkl7du3z6qrrpok2XjjjbP55pvn2WefzZAhQxZ5faNGjbLTTjvljDPOyIwZM3L66aena9eu6d27d5Jkhx12yG677ZY+ffrktNNOy0YbbZRZs2Zl3Lhxef/99/P//t//W+J7r1u3bu6+++706dMnXbp0yUknnZQNNtggM2fOzKOPPpqbbropY8aMSZs2bXLeeeelb9++Oeigg3LQQQflnXfeyVlnnZW99947G2644RLPWQxff/11XnzxxYWOt2nTJquvvvpy7QUAgOVDEAcAAAAAAKqBrl275q677srFF1+c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Oy777bdf4TcYDjjggNSuXTuHH354xo0bl7vuuitXXXVVpRVvAAAAAAAAAADgW1W6Ik6S9O/fP5988knOOeecTJ06NZ07d87IkSPTokWLJMnkyZNTWvr/54W23HLL3H777fnNb36Ts846Kx06dMj999+fTp06FWpOO+20zJo1K0ceeWRmzJiRHj16ZOTIkalbt26h5rbbbstxxx2XX/7ylyktLc3ee++dq6++unC+rKwsjz32WI499thsttlmadasWc4555wceeSRy+FTAQAAAAAAAACguimpqKioqOomgBXLnDlzMmTIkJx55pkLbbcGwE/H8xeganj+AlQNz18AAABWRoI4AAAAAAAAAABQBKU/XAIAAAAAAAAAAPwQQRwAAAAAAAAAACgCQRwAAAAAAAAAACgCQRwAAAAAAAAAACiCmlXdAADAymz69Om5+eabM3r06EydOjVJ0rJly2y55ZY59NBD07x58yruEAAAAAAAgGKxIg4AwE/k5Zdfzrrrrpurr746ZWVl2WabbbLNNtukrKwsV199dTp27JhXXnmlqtsEWCm9/fbbueWWWzJ+/Pgkyfjx4zNgwID86le/ypNPPlnF3QGsvL7++us8//zzeeuttxY6N3v27PzpT3+qgq4AAABg+SmpqKioqOomgKr34Ycf5txzz83NN99c1a0ArDS22GKLbLzxxrnxxhtTUlJS6VxFRUWOPvro/POf/8zo0aOrqEOAldPIkSOzxx57pGHDhvnqq69y33335eCDD87GG2+cBQsW5Jlnnsljjz2W7bffvqpbBVipvPvuu9lxxx0zefLklJSUpEePHrnzzjvTqlWrJMnHH3+c1q1bZ/78+VXcKQAAAPx0rIgDJEk+++yz3HrrrVXdBsBK5fXXX89JJ520UAgnSUpKSnLSSSfltddeW/6NAazkBg8enFNPPTWffvppbrnllhxwwAE54ogj8vjjj2fUqFE59dRTc/HFF1d1mwArndNPPz2dOnXKtGnT8s4776RRo0bZaqutMnny5KpuDQAAAJabmlXdALB8PPjgg997/oMPPlhOnQD8fLRs2TIvvfRSOnbsuMjzL730Ulq0aLGcuwJY+Y0bN66w9cm+++6b//mf/0m/fv0K5w888MDccsstVdUewErrhRdeyBNPPJFmzZqlWbNmeeihh3LMMcdk6623zlNPPZUGDRpUdYsAAADwkxPEgZ+Jvn37pqSkJN+3G92iVmwAYNmdcsopOfLIIzN27Nj88pe/LIRuPv7444waNSo33XRTLr/88iruEmDl9O2fbUtLS1O3bt2UlZUVzjVq1Cjl5eVV1RrASuvrr79OzZr//9eNJSUlueGGG3Lcccdl2223ze23316F3QEAAMDyIYgDPxOtWrXK9ddfnz322GOR51977bVsttlmy7krgJXbsccem2bNmuV///d/c/3112f+/PlJkho1amSzzTbLsGHDsu+++1ZxlwArn3bt2uW9997L2muvnSQZPXp01lxzzcL5yZMnp1WrVlXVHsBKq2PHjnnllVey/vrrVzp+7bXXJkl23333qmgLAAAAlqvSqm4AWD4222yzjB07drHnf2i1HACWTf/+/fPiiy/mq6++ykcffZSPPvooX331VV588UUhHICfyIABAwrhxyTp1KlTpRUaHnnkkWy//fZV0RrASm3PPffMHXfcschz1157bfbff3/fPQAAALDSK6nwt1/4WXjuuecya9as9OnTZ5HnZ82alVdeeSXbbrvtcu4MAAAAAAAAAFYOgjgAAAAAAAAAAFAEtqYCAAAAAAAAAIAiEMQBAAAAAAAAAIAiEMQBAAAAAAAAAIAiEMQBAIBqbNiwYWnSpMkS1z/99NMpKSnJjBkzfrKeAAAAAADg50oQBwAAlqPRo0enRo0a2WWXXZb62nbt2uXKK6+sdKx///559913l3iMLbfcMlOmTElZWVmSpQ/y/Lfzzz8/Bx100CLPnXfeeSkpKUlJSUlq1qyZZs2aZZtttsmVV16ZOXPmLNU8VRUgOu+889K5c+flOicAAAAAANWXIA4AACxHQ4cOzfHHH59nn302//73v3/0ePXq1ctqq622xPW1a9dOy5YtU1JS8qPnTpIHHnggu++++2LP/+IXv8iUKVMyefLkPPXUU9lnn30yZMiQbLnllvniiy+K0gMAAAAAAKwoBHEAAGA5+fLLL3PXXXdlwIAB2WWXXTJs2LCFah566KFsvvnmqVu3bpo1a5Y999wzSdKzZ89MmjQpJ510UmGVmaTyijbvvvtuSkpKMn78+Epj/u///m/WXnvtJJVXlnn66adz2GGHpby8vDDmeeedl8GDB6dTp04L9da5c+f89re/Lbz/8MMPM27cuPTp02ex91yzZs20bNkyrVu3zoYbbpjjjz8+zzzzTN58881ccsklhbo///nP6dKlSxo1apSWLVvmgAMOyLRp05IkEydOzHbbbZckWWWVVVJSUpJDDz00STJy5Mj06NEjTZo0yaqrrppdd901//rXvwrjfvPNNznuuOPSqlWr1K1bN23bts2QIUMK52fMmJFf//rXad68eRo3bpztt98+r7/+euGzPf/88/P6668XPp9F/cwAAAAAAOBbgjgAALCc3H333enYsWPWW2+9HHTQQbn55ptTUVFROP+3v/0te+65Z3beeee8+uqrGTVqVLp27Zok+etf/5o11lgjgwcPzpQpUzJlypSFxl933XXTpUuX3HbbbZWO33bbbTnggAMWqt9yyy1z5ZVXpnHjxoUxTznllPzqV7/K22+/nZdffrlQ++qrr+af//xnDjvssMKxBx98MD179kzjxo2X6nPo2LFjdtppp/z1r38tHJs7d24uuOCCvP7667n//vszceLEQtimTZs2uffee5Mk77zzTqZMmZKrrroqSTJr1qwMGjQor7zySkaNGpXS0tLsueeeWbBgQZLk6quvzoMPPpi7774777zzTm677ba0a9euMO8+++yTadOm5ZFHHsnYsWOz6aab5pe//GU+++yz9O/fPyeffHJhVZ8pU6akf//+S3WvAAAAAAD8vNSs6gYAAODnYujQoTnooIOSJH369El5eXmeeeaZ9OzZM0ly4YUXZr/99sv5559fuGbjjTdOkjRt2jQ1atQorBizOAceeGCuvfbaXHDBBUn+s0rO2LFj85e//GWh2tq1a6esrCwlJSWVxmzYsGF69+6dW265JZtvvnmS5JZbbsm2226btdZaq1D3wAMPZI899limz6Jjx4557LHHCu9/9atfFf59rbXWytVXX53NN988X375ZRo2bJimTZsmSVZbbbXCCkBJsvfee1ca9+abb07z5s3z1ltvpVOnTpk8eXI6dOiQHj16pKSkJG3bti3UPv/883nppZcybdq01KlTJ0ly+eWX5/77788999yTI488Mg0bNiys6gMAAAAAAD/EijgAALAcvPPOO3nppZey//77J/nPlk39+/fP0KFDCzWvvfZafvnLX/6oefbbb79MnDgxL774YpL/rIaz6aabpmPHjks1zhFHHJE77rgjs2fPzjfffJPbb7+9Ulhm5syZeeaZZ7L77rsvU58VFRWF7bWSZOzYsdltt92y5pprplGjRtl2222TJJMnT/7ecd57773sv//+WWuttdK4cePCajffXnfooYfmtddey3rrrZcTTjihUvjn9ddfz5dffplVV101DRs2LLwmTJhQaXsrAAAAAABYUlbEAQCA5WDo0KGZN29eWrduXThWUVGROnXq5Nprr01ZWVnq1av3o+dp2bJltt9++9x+++3ZYostcvvtt2fAgAFLPc5uu+2WOnXq5L777kvt2rUzd+7c9OvXr3D+kUceyQYbbJA2bdosU59vv/122rdvn+Q/20v17t07vXv3zm233ZbmzZtn8uTJ6d27d7755psf7LNt27a56aab0rp16yxYsCCdOnUqXLfppptmwoQJeeSRR/LEE09k3333Ta9evXLPPffkyy+/TKtWrfL0008vNO53V90BAAAAAIAlJYgDAAA/sXnz5uVPf/pTfv/732fHHXesdK5v37654447cvTRR2ejjTbKqFGjcthhhy1ynNq1a2f+/Pk/ON+BBx6Y0047Lfvvv38++OCD7LfffoutXdyYNWvWzCGHHJJbbrkltWvXzn777VcpKPRjtqUaP358Ro4cmTPPPLPw/tNPP83FF19cCPa88sorC/WZpFKvn376ad55553cdNNN2XrrrZP8Z7up/9a4ceP0798//fv3T79+/dKnT5989tln2XTTTTN16tTUrFmzsJLOf1vSzxwAAAAAABJbUwEAwE/u4Ycfzueff57DDz88nTp1qvTae++9C9tTnXvuubnjjjty7rnn5u23384bb7yRSy65pDBOu3bt8uyzz+ajjz7K9OnTFzvfXnvtlS+++CIDBgzIdtttV2kVnv/Wrl27fPnllxk1alSmT5+er776qnDu17/+dZ588smMHDmy0rZU8+bNyyOPPLJE21LNmzcvU6dOzb///e+88cYbueaaa7Ltttumc+fOOfXUU5Mka665ZmrXrp1rrrkmH3zwQR588MFccMEFlcZp27ZtSkpK8vDDD+eTTz7Jl19+mVVWWSWrrrpq/vjHP+b999/Pk08+mUGDBlW67oorrsgdd9yR8ePH5913383w4cPTsmXLNGnSJL169Ur37t3Tt2/fPPbYY5k4cWJeeOGFnH322YUgULt27TJhwoS89tprmT59eubMmfOD9wwAAAAAwM+XIA4AAPzEhg4dml69eqWsrGyhc3vvvXdeeeWV/POf/0zPnj0zfPjwPPjgg+ncuXO23377vPTSS4XawYMHZ+LEiVl77bXTvHnzxc7XqFGj7Lbbbnn99ddz4IEHfm9vW265ZY4++uj0798/zZs3z6WXXlo416FDh2y55Zbp2LFjunXrVjj+zDPPpGHDhtl0001/8N7HjRuXVq1aZc0110zPnj1z991358wzz8xzzz2Xhg0bJkmaN2+eYcOGZfjw4dlggw1y8cUX5/LLL680zuqrr57zzz8/Z5xxRlq0aJHjjjsupaWlufPOOzN27Nh06tQpJ510Ui677LKFPotLL700Xbp0yeabb56JEydmxIgRKS0tTUlJSUaMGJFtttkmhx12WNZdd93st99+mTRpUlq0aJHkPz+fPn36ZLvttkvz5s1zxx13/OA9AwAAAADw81VSUVFRUdVNAAAAK56Kiop06NAhxxxzTKWVZk444YTMmzcv119/fRV2BwAAAAAAK56aVd0AAACw4vnkk09y5513ZurUqTnssMMqnevUqVO6d+9eRZ0BAAAAAMCKy4o4AADAQkpKStKsWbNcddVVOeCAA6q6HQAAAAAAqBasiAMAACxEXh8AAAAAAJZeaVU3AAAAAAAAAAAAKwNBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKAJBHAAAAAAAAAAAKIL/D0fo4n3Mv8HhAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "lvl21_plot_stacked_absolute(cement_sector_compare, 'cement')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3.3. Level 2.2 Bar plots of a certain characterized input compared among datasets/ activities" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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bdu21XfffZfqPgAAAEjMPAQAPOS+//57FS1aVDVr1sxQ/5dfflmzZs1S69atNXDgQG3ZskURERHav3+/lixZYtP38OHD6tChg3r06KFOnTpp7NixatasmaZOnaq33npLvXv3liRFRESobdu2OnjwoM3Ms6SkJDVu3FjVq1fXmDFjtHLlSg0dOlSJiYkaMWKEtd+ECRPUvHlzdezYUQkJCZo/f77atGmjH374QU2bNrWp6aefftLChQvVp08feXt7pxn69OzZU4sXL1afPn1UpkwZ/fvvv9q4caP279+vJ554QtJ/YVNoaKiqVKmiiIgIxcTEaMKECfr111+1c+dOm5l5SUlJatSokapVq6axY8dq7dq1+uijj1SsWDH16tUrQ/f+VkeOHJGjo2OaMwANw1Dz5s21bt06devWTRUrVtSqVav0xhtv6OTJk/r4448lSV999ZVefvllVa1aVa+88ookqVixYqZjpjw2+uKLL6phw4bq3LmzdV9MTIxq1qypq1evql+/fsqTJ49mzZql5s2ba/HixWrVqpXNWO+9955cXFz0+uuvKz4+Xi4uLpm+B6NHj5aDg4Nef/11xcbGasyYMerYsaO2bNli0+/ChQt65pln1LZtW7Vv314LFy5Ur1695OLiopdeeilT53z77bcVGxurv//+23oPs2fPnuFjZ8+eneWzDzds2KBly5bp1VdflfTf79Szzz6rN998U5MnT1bv3r114cIFjRkzRi+99JJ++uknm+Mzcn+Sk5PVvHlzbdy4Ua+88ooCAwO1e/duffzxxzp06FCqd2Zm9HftZv/++6+SkpJ0/Phx6+94Wo8ip5gzZ47c3d1tAr0Ux48f1+jRozVjxgy5u7unO05CQoLi4uJ07do1/fbbbxo7dqwKFy6s4sWLW/vs3LlTTzzxRKoZslWrVtXnn3+uQ4cOqXz58re9TgAA8JgxAAB4SMXGxhqSjBYtWmSo/65duwxJxssvv2zT/vrrrxuSjJ9++snaVrhwYUOSsWnTJmvbqlWrDEmGu7u7cezYMWv7Z599Zkgy1q1bZ23r0qWLIcno27evtS05Odlo2rSp4eLiYpw9e9bafvXqVZt6EhISjHLlyhkNGjSwaZdkODg4GHv37k11bZKMoUOHWj97eXkZr776apr3IiEhwcibN69Rrlw549q1a9b2H374wZBkDBkyJNW1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/XpZLBbrliNHDlWqVEkzZsxIM5v65ptvZLFYtHHjRtP958+fl4uLi4YMGZJmbQEBAdZzOjk5KSAgQF26dNGJEydS9d28ebOaNGkiPz8/ubu7KyAgQK1bt9aWLVvu4K6kdus9cHJyUuHChdWrVy/9+++/Nn3r1atn7efg4KCCBQvqueee0759++7o3JlaMCWrJSQkaPv27QoPD7e2OTg4KCQkRFFRUWkeN2LECOXNm1fdunXThg0b0j1HfHy84uPjrZ/j4uLuvnAAAAAAAIDHzN69e7V8+XJVq1ZNycnJd70+xrlz51S/fn2dOHFC/fv3V+3atSVJUVFRGj16tBwdHfXaa69Z+8+cOVOlS5fWxYsXNX36dHXr1k03btxItaCvJDVt2lSenp6aN2+eddybLV68WDdu3FDHjh3TrbF169YaOHCgbty4oW3btmno0KHauXOntm/fbl2N+Ndff1W9evXUuHFjTZ06VZ6envrzzz+1dOlSbd26VdWqVbub22Qj5R4kJiZq7969evvtt3X06FGtXLnSpl+tWrU0duxYJSUlad++fXrnnXcUEhKivXv3KleuXJk6512Fh506dbqjpb9TnDt3TklJSfL19bVp9/X11YEDB0yP2bhxo6ZPn65du3Zl6BwREREaPnz4HdcIAAAAAAAAqVmzZmrRooUkqWvXrvrtt9/uarzevXvryJEj2rJli80sxpCQEL366qupsqFy5copODhYktSwYUMFBgbq008/NQ0P3dzc9Pzzz2vRokWaMGGCnJxsI7C5c+fqiSeeUKlSpdKt0dfXV9WrV5ckPfnkk7p+/brefvtt/fbbb6pRo4YkacqUKQoICNDSpUvl6OgoSWrQoIF69OiR5QsQ33wPateurevXr2vAgAG6fPmysmfPbu2XM2dOa921atWSh4eHOnbsqJUrV6p9+/aZOuddPbY8ZcoUeXt7380QmXLp0iW9+OKLmjZtWobPGx4ertjYWOtmNrUUAAAAAAAA6XNwyLp1d48dO6bFixerZ8+epo8/586dWzVr1kzzeEdHR1WqVElHjx5Ns0+HDh109uxZrV271qb95MmT2rBhw21nHZqpVKmSJOn48ePWtgsXLihv3rzW4PBmWXnPzOTIkUOGYSgpKSndfmZ1Z1SmruDatWvauHGj6TPS169f1+zZszN1cm9vbzk6OiomJsamPSYm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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "lvl22_plot_input_comparison_with_method(cement_sector_compare, 'cement_global_warming_potential_(gwp100)', '37430')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3.3. Level 2.3 Bar plots of a certain input not characterized" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*TBD: Include same legend as in previous graph which shows the name of the input*" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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LXTs2DHz85CQEI0YMUKSVKBAAXMfzpw5k+RxlKQ9e/bopZdeUvbs2eXu7q4yZcro3XfftemXmvOcEddsaseQpE8//VSVK1dW5syZlT17dr344ovavHmzpId/q0eOHNHOnTvNY/HoKswbN25oyJAh5jVUuHBhTZ8+3arszKPnKCwszDxHR48etaltm3D+E3s9XlP6m2++Mc+lh4eHAgMDdeTIEZv9W7NmjQICAuTq6qqAgACFh4cnehxSK+G4J4zr4uKiUqVKmcc+QUKd3ePHj6tdu3bKmjWrcuTIocGDB+v+/fs2xyex8iqP3nvSe20+icyZM8vHxyfFUiMXL17U9u3b9fLLLyf6xcP//vc/rVy5Ms316hPO+aPzf/XVV4qJiVG/fv3MNovFor59++qPP/5QRESE2X7z5k0dP35cN2/eTHaee/fuadq0aSpevLjeeuutRGsrv/rqq6pcubL5Pq3X/ty5c1WwYEFlzpxZDRs21Pnz52UYht544w3lzZtXbm5uatGiha5du2Yzd2qu9dT8t+TMmTPy8fGRJE2aNMm8hlJ6BsONGzc0dOhQ8795efPmVZcuXZKtIZ1YjerU/u0k5uzZsypcuLACAgJ0+fJlM64nuf9I0uzZs1WqVCnz/lexYkUtW7YsxXgAAACeFc/m0gAAeArWrl2rggULpvqnzj179tSSJUvUpk0bDRs2THv27NG0adN07Ngxm+TQyZMn1bFjR7322mvq3Lmz3nrrLTVr1kzz58/X2LFjzSTEtGnT1K5dO/36669WK2rj4uLUuHFjvfDCC5oxY4Y2btyoiRMnKjY2VpMnTzb7vfvuu2revLk6deqk6Ohoff7552rbtq3WrVunwMBAq5i2bdumL7/8UgMGDJC3t3eSD1vr06ePVq5cqQEDBqhkyZK6evWqdu3apWPHjun555+X9DBp261bN1WqVEnTpk3T5cuX9e677+r777/XwYMHrVYcx8XFqVGjRqpSpYreeustbd26VW+//bYKFSqkvn37purYP+7333+Xo6NjkiubDcNQ8+bNtX37dvXo0UPlypXTpk2bNGLECF24cEHvvPOOJGnp0qXq2bOnKleurN69e0uSChUqlOiYL774opYuXapXX31VDRo0UJcuXczPLl++rGrVqunu3bsaNGiQcuTIoSVLlqh58+ZauXKlWrVqZTXWG2+8IWdn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Eq1f7eDgoPfff1/NmjVTuXLl1K1bN/n6+ur48eM6cuRIokmU5GTENZvaMQoXLqxx48bpjTfeUM2aNfXyyy/LxcVF+/btk5+fn6ZNm2Yej/fff19vvvmmChcurJw5c6pu3boaMWKEvv76azVt2lRBQUGqUKGC7ty5o0OHDmnlypU6c+aMvL2907T/69ev1yeffKLWrVvrl19+sYo3S5YsatmypbJmzar3339fr776qp5//nl16NBBPj4+OnfunNavX6/q1aubX8BMmzZNgYGBqlGjhrp3765r165p9uzZKlWqlM1D+p6W06dPq3nz5mrcuLEiIiL06aefqmPHjipbtqzZp2fPngoNDVXPnj1VsWJF/e9//zN/IfKotFybadWkSRPlzZtXVapUUc6cOXXu3DktWrRIf/75p7744gub/nFxcfriiy/0wgsvWN0vEnh7eydaRiPhy8xHP/vtt99Uv359tW/fXsWLF5eDg4P279+vTz/9VP7+/ho8eLDZN2/evBoyZIhmzpypmJgYVapUSWvWrNF3332nzz77zGo1dHh4uLp166ZFixal+EDFESNG6MiRI3r77be1fft2tWnTRrlz59alS5e0Zs0a7d27V7t37zb7ZvS1n5i0XOup5ebmppIlS+qLL75Q0aJF5eXlpYCAgCTr7I8YMUIrV65U27Zt1b17d1WoUEHXrl3T119/rfnz51tdx0+Dg4ODPv30U7Vs2VLt2rXThg0bMuz+07BhQ+XOnVvVq1dXrly5dOzYMc2ZM0eBgYGpfrAmAACA3RkA8B9z4sQJo1evXoa/v7/h7OxseHh4GNWrVzdmz55t3L9/3+wXExNjTJo0yShQoIDh5ORk5MuXzxgzZoxVH8MwjPz58xuBgYE280gy+vfvb9V2+vRpQ5Ixc+ZMs61r166Gu7u7cerUKaNhw4ZG5syZjVy5chkTJ0404uLirLZfsGCBUaRIEcPFxcUoXry4sWjRImPixInG47fzxOZ+9LOJEycahmEYDx48MEaMGGGULVvW8PDwMNzd3Y2yZcsa8+bNs9nuiy++MMqXL2+4uLgYXl5eRqdOnYw//vjDqk/CvjwusRgTU6tWLaNUqVIp9uvatauRP39+q7bbt28bQ4cONfz8/AwnJyejSJEixsyZM434+HirfsePHzdefPFFw83NzZBkdO3aNdm5kjqWp06dMtq0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72z37t2qUKGCXF1dFRAQoG+++SaDjk7yfHx81KdPH4WFhen27dsZNm66EtVeXl5au3atTfvatWvl5eUlSbpz5448PDyeLDoAAAAAAAA8s3bt2qU8efJY5YCCgoJSVQd54MCBGjlypJo2baq1a9dq7ty58vDw0F9//SVJ+v3331WtWjVdu3ZNixcv1rJlyxQZGal69erZJPbmzJmjc+fOaenSpQoODtbMmTM1fPhwDR06VGPGjNHSpUt14sQJ9ejRw2q7du3a6YMPPtCwYcO0bt06NW7cWJ07d7ZJ+F26dEmDBg3SiBEj9OWXX+r+/ftq1aqVYmJiJD1M4ibsU0REhCIiIvT8888nu/9jx45VfHy8vvzyS40YMUKzZ8/W+PHjbfp17NhRdevW1bp16/Tqq6/q/PnzevHFF3X16lV9+umnmj9/vg4cOKBatWpZJQ27d++u8PBwhYaGasmSJTp69KjCwsJSPC+J+f7771W7dm09ePBAH3/8sVatWqUWLVro3Llz8vX11erVqyVJU6dONfff19c30bFGjBihkJAQBQUFae3atWrYsKH69OmjOXPmWPWLiYlRp06dFBQUpPDwcOXMmVOtW7fW1atX07UPj0tIUPv5+aX6mErSu+++qxMnTmjBggX69NNP9frrr+ull15SwYIFzX1PapVxVFSUvLy8NGvWLG3cuFEjR47UkiVLbKpWSA+v6d9++01LlizRhAkTtGzZMr3xxhvm55cuXVKjRo3k4uJiXkN9+/bVhQsXMuT4pGT48OG6e/euzXl7Eukq/fH666+rb9++2r59uypXrixJ2rdvnzZs2KD58+dLkrZs2aJatWplWKAAAAAAAAB4duzatUuff/653n77bat2R0dHOTo6JrvtiRMn9P7772vKlCkaM2aM2d66dWvz35MmTZKXl5e2bNkiV1dXSVK1atVUsGBBLViwQP369TP7+vn5aenSpZKkRo0a6euvv9Y777yjI0eOqESJEpKkCxcuaODAgbpx44ayZcum7du36+uvv9amTZvUsGFDSVKDBg108eJFTZw4UU2aNDHHv3btmnbu3KlSpUpJktzd3VWnTh3t2bNHNWrUMEtKPFpeIiWFChXSokWLzJjv3bunt99+W6NGjVL27NnNfn369NGoUaPM98HBwYqJidHmzZvNBaPly5dXyZIltXjxYg0cOFBHjx7V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de/eXZMnT9aGDRvUpEkTffrpp+rXr5+5kj5BSucqKipKBw8eTPRaTUvpC0nKkyePjh8/nmK/tB7LBGfOnFGBAgXM9/nz59eZM2eSnWvw4MHq3LmzWQc7YTHzozw9Pc3a1emVrkT1Z599pldeeUXr1q1TjRo1JEkDBw7UqlWrtH379icKCAAAAAAAAP8MZcqUkZOTk06ePJmm7RJ+kf/nn38qb968ifbx8vJS48aN9cYbb9h85uLikvZgExnfYrFo165diT607tG6xU/DlStXrN7funVL9+/fl6+vr1X746trvby89Ouvv9qMd/nyZbOucsIYV65csSrPcPnyZattXF1dJdk+DPP69etW8+bIkUN//vlnqvYrOQnxPb7vCXE9Whf675A3b141btxYCxcuVGxsrKKiotStWzebfimdKy8vL5UpU0YLFix44phq166tb7/9VkeOHFGpUqWS7JfeY+nn52e1yjs1f0t58+Z94iR0aqS69MejAgMDNW/ePDVv3lw//vij+vXrp9WrV2vHjh1WNXQAAAAAAADw77Vnzx7FxMSoYMGCadquatWqypw5sxYtWpRkn/r16+vo0aMqUaKEKlasaPVKy8PpkpJQ3uHq1as241esWDHRVaPJSetq37Vr11qVXVi5cqUsFosqVaqU7HY1atTQoUOHrJLV169f19atW80FpaVLl5abm5vCw8Ottl21apXV+4QvCY4dO2a2RUVF6cCBA1b96tevr5UrV+r27dtJxuXk5JTi/hcrVkw+Pj5asWKFVfuXX34pZ2dnVa5cOdnt0yu52Hr16qX169frrbfeUr169RItWZPSuapfv75+//13+fn5JXotpUXPnj2VNWtWDR06VDExMTaf79ixQ3fv3k33sXR2ds7wv6WMkq4V1ZLUsWNH3bhxQ9WrV5ePj4927typwoULZ2RsAAAAAAAAeEa8/PLLqlixosqUKSM3Nzf9/PPPmjlzpsqUKaOWLVua/SZPnqzJkyfr1KlTSdap9vT01MSJEzVq1CjFx8erRYsWio+P1/bt2/XKK6+oYsWKCg4O1meffaZatWpp8ODBeu655xQZGak9e/bIz89PQ4cOfaL9KVq0qPr3769XX31VI0aMUJUqVRQTE6MTJ05o+/btWrNmTZrGK1GihLZt26YtW7Yoe/bsKlCgQLLPcnvw4IFatmypfv366fTp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YpcuXTJo0KAsXry4uq2trS2LFy/OkCFDdnjOkCFDOhyfJP/zP/+z0+MBAAAAADiwFV/6Y9KkSbnwwgszePDgnHjiiZk+fXpeeumljB8/PklywQUX5Igjjsi0adOSJJ/+9KczbNiwfPnLX84ZZ5yR+fPnZ8WKFfnGN75R8m0AAAAAALCHiofq5ubmPPvss7niiivS2tqaAQMGZNGiRdUvTFyzZk1qan734PfQoUMzd+7c/Ou//mv++Z//Occcc0zuueee9OvXr9Rb4M9IbW1tpkyZst1yMQC74t4B7An3DmBPuX8A8Oeo0t7e3l56CAAAAAAA3rqKrlENAAAAAABCNQAAAAAARQnVAAAAAAAUJVQDAAAAAFCUUA0AAAAAQFGdSw8AAAAA7NyGDRsya9asLFu2LK2trUmShoaGDB06NBdddFF69OhReEIA2HueqOYt7ZVXXskPfvCDPPbYY9vt++1vf5vbb7+9wFTAm90zzzyTiy++uPQYwAHm8ccfz2233ZZVq1YlSVatWpUJEybk4osvzgMPPFB4OuBA9aMf/SjHHntsbrrpptTX1+eUU07JKaeckvr6+tx0001pamrKihUrSo8JAHut0t7e3l56CCjhySefzOmnn541a9akUqnk5JNPzvz589OrV68kybp169K7d++8+uqrhScF3mxWrlyZgQMHun8AVYsWLcpZZ52Vurq6vPzyy7n77rtzwQUXpH///mlra8vSpUtz3333ZcSIEaVHBQ4w73vf+9K/f//ccsstqVQqHfa1t7fn0ksvzSOPPJJly5YVmhAA9g2hmresMWPGZOvWrZk9e3aef/75/MM//EMee+yxLFmyJH379hWqgZ1asGDBLvc/9dRT+exnP+v+AVQNHTo0I0aMyBe+8IXMnz8/l112WSZMmJAvfvGLSZLJkyenpaUl9913X+FJgQPNQQcdlIceeihNTU073L9q1aq8973vzSuvvLKfJwOAfUuo5i2rZ8+euf/++3P88ccnee1phMsuuyz33ntvHnzwwfzlX/6lUA3sUE1NTSqVSnb1r9BKpeL+AVTV19enpaUl73znO9PW1pba2tosX748733ve5Mkjz76aEaOHFldexbgde94xzsyderUXHDBBTvcf/vtt+eKK67I6tWr9+9gALCP+TJF3rJeeeWVdO78u38EKpVKvv71r2fixIkZNmxY5s6dW3A64EDWq1ev3HzzzTnrrLN2uP/hhx/OoEGD9vNUwIHu9T+yX1NTk65du6a+vr667+CDD87GjRtLjQYcwD73uc/lE5/4RFpaWnLaaaelZ8+eSV5bqnDx4sW59dZbc/311xeeEgD2nlDNW9brXzry7ne/u8P2GTNmJEk++MEPlhgLeBMYNGhQWlpadhqq/9jT1sBbT2NjY372s5/l6KOPTpIsW7Ysffv2re5fs2ZN9XsyAH7f3//936d79+75yle+kptvvrn6J7Y6deqUQYMGZfbs2fnwhz9ceEoA2HtCNW9ZY8aMybx58/LRj350u30zZsxIW1tbbrnllgKTAQe6yy+/PC+99NJO97/zne/Mgw8+uB8nAg50EyZM6LAcUL9+/TrsX7hwoS9SBHaqubk5zc3N2bp1azZs2JAk6d69e/7iL/6i8GQAsO9YoxoAAAAAgKJqSg8AAAAAAMBbm1ANAAAAAEBRQjUAAAAAAEUJ1QDAn6XZs2fnkEMOecPHL1myJJVKJc8///yfbCYAAAB2TKgGAA4Iy5YtS6dOnXLGGWfs9rmNjY2ZPn16h23Nzc158skn3/A1hg4dmrVr16a+vj7J7ofuPzR16tR85CMf2eG+K6+8MpVKJZVKJZ07d0737t1zyimnZPr06dm8efNuvU6pwH7llVdmwIAB+/U1AQCAP19CNQBwQJg5c2Y++clP5nvf+15+9atf7fX1DjrooLz97W9/w8d36dIlDQ0NqVQqe/3aSfKd73wnH/zgB3e6/6//+q+zdu3arFmzJg8++GA+9KEPZdq0aRk6dGhefPHFfTIDAADAm4VQDQAUt2nTptxxxx2ZMGFCzjjjjMyePXu7Y/7rv/4rJ5xwQrp27Zru3btnzJgxSZLhw4fnF7/4RT7zmc9Un1JOOj4R/eSTT6ZSqWTVqlUdrvmVr3wlRx99dJKOTyYvWbIk48ePz8aNG6vXvPLKK3PVVVelX79+2802YMCA/Nu//Vv192eeeSY//elPM3r06J2+586dO6ehoSG9e/fO8ccfn09+8pNZunRpHn300Vx77bXV4/793/89gwcPzsEHH5yGhoacd955Wb9+fZJk9erVOfXUU5Mkhx56aCqVSi666KIkyaJFi3LyySfnkEMOyeGHH54PfOAD+fnPf1697pYtWzJx4sT06tUrXbt2zZFHHplp06ZV9z///PP5+Mc/nh49eqRbt24ZMWJEVq5cWf1sp06dmpUrV1Y/nx39PQMAAHijhGoAoLg777wzTU1Nede73pWPfOQjmTVrVtrb26v7//u//ztjxozJ3/7t3+ahhx7K4sWLc+KJJyZJvv3tb+ev/uqvctVVV2Xt2rVZu3btdtc/9thjM3jw4MyZM6fD9jlz5uS8887b7vihQ4dm+vTp6datW/Wan/vc53LxxRfn8ccfz49+9KPqsQ899FAeeeSRjB8/vrptwYIFGT58eLp167Zbn0NTU1P+5m/+Jt/+9rer27Zu3Zqrr746K1euzD333JPVq1dXY3SfPn3yn//5n0mSJ554ImvXrs2NN96YJHnppZcyadKkrFixIosXL05NTU3GjBmTtra2JMlNN92UBQsW5M4778wTTzyROXPmpLGxsfq6H/rQh7J+/fosXLgwLS0tGThwYE477bQ899xzaW5uzmc/+9nqU+Fr165Nc3Pzbr1XAACA39e59AAAADNnzqyu5zx69Ohs3LgxS5cuzfDhw5MkX/ziFzN27NhMnTq1ek7//v2TJIcddlg6depUfeJ4Z84///zMmDEjV199dZLXnrJuaWnJf/zHf2x3bJcuXVJfX59KpdLhmnV1dRk1alRuu+22nHDCCUmS2267LcOGDctRRx1VPe473/lOzjrrrD36LJqamnLfffdVf7/44ourf33UUUflpptuygknnJBNmzalrq4uhx12WJLk7W9/e4c1tc8555wO1501a1Z69OiRxx57LP369cuaNWtyzDHH5OSTT06lUsmRRx5ZPfYHP/hBli9fnvXr16e2tjZJcv311+eee+7Jt771rXziE59IXV1d9alwAACAveWJagCgqCeeeCLLly/PuHHjkry2JEZzc3NmzpxZPebhhx/OaaedtlevM3bs2KxevTr/+7//m+S1p6kHDhyYpqam3brOJZdcknnz5uW3v/1ttmzZkrlz53aIyS+88EKWLl26y/Wpd6W9vb3DOtktLS0588wz07dv3xx88MEZNmxYkmTNmjW7vM7PfvazjBs3LkcddVS6detWfVr69fMuuuiiPPzww3nXu96VT33qUx3i+MqVK7Np06Ycfvjhqaurq/48/fTTHZYPAQAA2Fc8UQ0AFDVz5sxs27YtvXv3rm5rb29PbW1tZsyYkfr6+hx00EF7/ToNDQ0ZMWJE5s6dm/e9732ZO3duJkyYsNvXOfPMM1NbW5u77747Xbp0ydatW3PuuedW9y9cuDDHHXdc+vTps0dzPv7443nHO96R5LXlO0aNGpVRo0Zlzpw56dGjR9asWZNRo0Zly5Ytf3TOI488Mrfeemt69+6dtra29OvXr3rewIED8/TTT2fhwoW5//778+EPfzgjR47Mt771rWzatCm9evXKkiVLtrvu7z+1DQAAsK8I1QBAMdu2bcvtt9+eL3/5yzn99NM77Dv77LMzb968XHrppXnPe96TxYsXd1gH+vd16dIlr7766h99vfPPPz+f//znM27cuDz11FMZO3bsTo/d2TU7d+6cCy+8MLfddlu6dOmSsWPHdgjpe7Psx6pVq7Jo0aJMnjy5+vuvf/3rXHPNNdXwvWLFiu3mTNJh1l//+td54okncuutt+b9739/kteW8/hD3bp1S3Nzc5qbm3Puuedm9OjRee655zJw4MC0tramc+fOHdat/sPXfSOfOQAAwBth6Q8AoJjvfve7+c1vfpOPfexj6devX4efc845p7r8x5QpUzJv3rxMmTIljz/+eH7yk5/k2muvrV6nsbEx3/ve9/LLX/4yGzZs2Onr/d3f/V1efPHFTJgwIaeeemqHp7j/UGNjYzZt2pTFixdnw4YNefnll6v7Pv7xj+eBBx7IokWLOiz7sW3btixcuPANLfuxbdu2tLa25le/+lV+8pOf5Ktf/WqGDRuWAQMG5PLLL0+S9O3bN126dMlXv/rVPPXUU1mwYEF1je3XHXnkkalUKvnud7+bZ599Nps2bcqhhx6aww8/PN/4xjfyf//3f3nggQcyadKkDufdcMMNmTdvXlatWpUnn3wyd911VxoaGnLIIYdk5MiRGTJkSM4+++zcd999Wb16dX74wx/mX/7lX6qhvLGxMU8//XQefvjhbNiwIZs3b/6j7xkAAGBnhGoAoJiZM2dm5MiRqa+v327fOeeckxUrVuSRRx7J8OHDc9ddd2XBggUZMGBARowYkeXLl1ePveqqq7J69eocffTR6dGjx05f7+CDD86ZZ56ZlStX5vzzz9/lbEOHDs2ll16a5ubm9OjRI9ddd1113zHHHJOhQ4emqakpJ510UnX70qVLU1dXl4EDB/7R9/7Tn/40vXr1St++fTN8+PDceeedmTx5cr7//e+nrq4uSdKjR4/Mnj07d911V4477rhcc801uf766ztc54gjjsjUqVPzT//0T+nZs2cmTpyYmpqazJ8/Py0tLenXr18+85nP5Etf+tJ2n8V1112XwYMH54QTTsjq1atz7733pqamJpVKJffee29OOeWUjB8/Pscee2zGjh2bX/ziF+nZs2eS1/7+jB49Oqeeemp69OiRefPm/dH3DAAAsDOV9vb29tJDAAC8mbS3t+eYY47JZZdd1uFJ5U996lPZtm1bbr755oLTAQAAvPlYoxoAYDc8++yzmT9/flpbW7dbM7tfv34ZMmRIockAAADevDxRDQCwGyqVSrp3754bb7wx5513XulxAAAA/ix4ohoAYDf4f/wAAAD7ni9TBAAAAACgKKEaAAAAAICihGoAAAAAAIoSqgEAAAAAKEqoBgAAAACgKKEaAAAAAICihGoAAAAAAIoSqgEAAAAAKEqoBgAAAACgqP8Hpt6CNkdprYgAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "lvl23_plot_input_comparison_plot_no_method(sector_cement_small, input_type='list', input_number='37430')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3.4. Level 3 S-curve" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Need to generate a set of activities from the ecoinvent database which matches that of the premise based database. A small selection of cement datasets is made, to reduce runtime*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*TBD: Need to include treatment of activities which are only present in premise but not in ecoinvent*" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "set_cement_concrete_ei39=generate_sets_from_filters(fp_yaml, database=ei39)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "small_set_cement_ei39=[x for x in set_cement_concrete_ei39['Cement'] if 'Portland' in str(x)]" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "small_set_cement_ei39SSP2=[x for x in set_cement_concrete['Cement'] if 'Portland' in str(x)]" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "method: ('IPCC 2013', 'climate change', 'global warming potential (GWP100)')\n", - "('cement production, Portland', 'kilogram', 'IN', 'cement, Portland'): -0.13196150024305459\n", - "('cement production, Portland', 'kilogram', 'CH', 'cement, Portland'): -0.006313135340331005\n", - "('cement production, Portland', 'kilogram', 'ZA', 'cement, Portland'): -0.18571111730616602\n", - "('cement production, Portland', 'kilogram', 'RoW', 'cement, Portland'): -0.09569498450771763\n", - "('cement production, Pozzolana Portland', 'kilogram', 'IN', 'cement, Pozzolana Portland'): -0.13787683802749023\n", - "('cement production, Portland', 'kilogram', 'BR', 'cement, Portland'): -0.022851308232927123\n", - "('cement production, Portland', 'kilogram', 'PE', 'cement, Portland'): -0.028780527834251113\n", - "('cement production, Portland', 'kilogram', 'US', 'cement, Portland'): -0.07254175187961716\n", - "('cement production, Portland', 'kilogram', 'Europe without Switzerland', 'cement, Portland'): -0.049597058093244224\n", - "('cement production, Portland', 'kilogram', 'CA-QC', 'cement, Portland'): -0.004631176300135965\n", - "('cement production, Portland Slag', 'kilogram', 'IN', 'cement, Portland Slag'): -0.19797309544794708\n" - ] - }, - { - "data": { - "image/png": "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j62tLZ07dyYuLo6TJ0+yatUqdu7cWej97NGjB+XKlSMgIIDDhw8THR3NoEGD6NmzJxUqVCh0nz6tgvosP9lfqC5evJjnMevo6MiSJUtISkpi9+7d9OjRo8iZZv379yc5OZmRI0dy/Phxli1b9tSDveenadOmbNiwgeDgYGbOnFmoddq2bYubmxs9evRg//797Nmzh169euHp6ane1jFo0CAWLFhAeHg4ycnJTJw4kYMHD2rdepabKlWqoKenx+zZszl58iTr1q1jwoQJT7ubJerq1atcvHhR63X37l3g0fm0d+9eFi9eTHJyMuPHjy/UkycKe2yePXuWYcOGcfz4cZYvX87s2bMZMmQIALVq1aJHjx706tWL1atXc+rUKfbs2cOUKVOIiIjIc9stW7bk9u3brF+/XisotXTpUuzs7KhVq1ae6zo4OLB7925Onz7NlStXCp1dMnLkSMLCwggNDSU5OZnvvvuO1atXqwMsGxgY0LhxY6ZOnUpSUhKxsbGMGzdOq46qVaui0WhYv349//77r9ZTxR736aefMmHCBOLi4jhz5gy7du2iV69eWFtbq7epaTQaWrZsydKlS9U+qFu3Lvfu3SMqKirfWxgdHBxIS0sjKiqKK1eukJ6eztatWxk1ahTffvst5cuXV4+TmzdvAvD111+zePFigoODOXLkCElJSfz666859rEgjo6ObNmyhR07dpCUlMQnn3yS4ymYBWnbti21atUiICCAxMREtm3bxpdfflmkOgojKCiIkJAQfvjhB5KTk9XP1ew2NGnShM6dOxMZGcnp06fZsWMHX375JXv37i32Nkuq3uIe5wUZOXIk06ZN47fffuP48eOMGTOGhIQE9ZzOrz1PHnNPqlmzJg8ePFCvpUuWLGHu3LlFbuOQIUOYOnUqa9as4dixYwwYMIAbN24UuN62bdt46623irw9IYQQrzY/v1r8/vs7VKqkncVva2vA3LlN2LmzA8OGuWJo+Cjr//bth0ybdog2bTaxdu1ZsrLkyXwif0UKSrm5uVG/fn1WrFiRZ5latWoRGRlJYmIiDRs2pEmTJqxdu1a9DWLChAl89dVXTJkyBWdnZ3x8fIiIiKBatWpPtSMlUe+7776Lj48PrVq1wtraOsdjuh/Xpk0bHB0dadmyJd26deOdd97J8xHP2SpVqsSGDRvYs2cP7u7u9O/fnz59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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "lvl3_plot_relative_changes(small_set_cement_ei39, small_set_cement_ei39SSP2, method=method_dict['method_1']['object'].name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*TBD: 1. Test with other sectors, larger activity lists. 2. Check water use results*" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/notebook tests/test_unnamed_column.ipynb b/dev/notebook tests/test_unnamed_column.ipynb deleted file mode 100644 index 93a742e..0000000 --- a/dev/notebook tests/test_unnamed_column.ipynb +++ /dev/null @@ -1,962 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import brightway2 as bw\n", - "import bw2data as bd\n", - "import bw2analyzer as ba\n", - "\n", - "#reduce?\n", - "import ast\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "import dopo\n", - "from dopo import*" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Biosphere database already present!!! No setup is needed\n" - ] - } - ], - "source": [ - "bd.projects.set_current(\"premise-validation-try1\")\n", - "bw.bw2setup()\n", - "\n", - "bio3=bw.Database('biosphere3')\n", - "ei39=bw.Database('ecoinvent 3.9.1 cutoff')\n", - "ei39SSP2=bw.Database('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "FILTERS" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "#sector filters file names/paths\n", - "\n", - "cement = 'cement_small.yaml'\n", - "electricity = 'electricity_small.yaml'\n", - "fuels= 'fuels_small.yaml'\n", - "steel = 'steel_small.yaml'\n", - "transport = 'transport_small.yaml'" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement': {'yaml': 'yamls\\\\cement_small.yaml', 'yaml identifier': 'Cement'},\n", - " 'Steel': {'yaml': 'yamls\\\\steel_small.yaml', 'yaml identifier': 'Steel'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "files_dict={}\n", - "files_dict['Cement']={'yaml': 'yamls\\cement_small.yaml', \n", - " 'yaml identifier': 'Cement'}\n", - "files_dict['Steel']= {'yaml':'yamls\\steel_small.yaml',\n", - " 'yaml identifier': 'Steel'} #yaml identifier is the name of the filter in the yaml file, in the first line.\n", - "files_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - "Processing Steel with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Steel:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '18b0dcf01dd401e1549b3796e3786213')\n", - "Processing Cement with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Cement:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '36a53c174f34e672bc15b7e55563685e')\n", - "Processing Steel with database ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27\n", - "Activities for Steel:\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '18b0dcf01dd401e1549b3796e3786213')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ei_cutoff_3.9_image_SSP2-RCP19_2050 2024-06-27', 'af6bd1221fc0206541fbaf481397bf0d')\n", - "Processing Cement with database ecoinvent 3.9.1 cutoff\n", - "Activities for Cement:\n", - " ('ecoinvent 3.9.1 cutoff', 'f8b84f45f50d3bd7ff4feaabdb493f6a')\n", - " ('ecoinvent 3.9.1 cutoff', 'a3c2064d83411f7963af550c04c869a1')\n", - " ('ecoinvent 3.9.1 cutoff', '36a53c174f34e672bc15b7e55563685e')\n", - " ('ecoinvent 3.9.1 cutoff', '3c16b45db40210cd97de6574b2f47aaf')\n", - " ('ecoinvent 3.9.1 cutoff', '86841f8c7ee2668f244d3b8e34f41932')\n", - " ('ecoinvent 3.9.1 cutoff', 'df49e8f525497f2fbd56bcdc80ff0cde')\n", - " ('ecoinvent 3.9.1 cutoff', 'fcb666edf2a01467e555eeff5b4a5bbb')\n", - "Processing Steel with database ecoinvent 3.9.1 cutoff\n", - "Activities for Steel:\n", - " ('ecoinvent 3.9.1 cutoff', '1dffacc9e0ca08fb55c6b780d7e677dc')\n", - " ('ecoinvent 3.9.1 cutoff', 'af6bd1221fc0206541fbaf481397bf0d')\n", - " ('ecoinvent 3.9.1 cutoff', '2baa0deb3adc89dfe8cb89d5e078ba8d')\n", - " ('ecoinvent 3.9.1 cutoff', '18b0dcf01dd401e1549b3796e3786213')\n" - ] - } - ], - "source": [ - "import dopo.filter_sectors\n", - "\n", - "#for plot 1 and 2\n", - "dictionary_one = dopo.filter_sectors.process_yaml_files(files_dict, ei39SSP2)\n", - "\n", - "#for comparison\n", - "premise_dict = dopo.filter_sectors.process_yaml_files(files_dict, ei39SSP2)\n", - "ecoinvent_dict = dopo.filter_sectors.process_yaml_files(files_dict, ei39)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'method_1': {'object': Brightway2 Method: IPCC 2013: climate change: global warming potential (GWP100),\n", - " 'method name': ('IPCC 2013',\n", - " 'climate change',\n", - " 'global warming potential (GWP100)'),\n", - " 'short name': 'global warming potential (GWP100)',\n", - " 'unit': 'kg CO2-Eq'},\n", - " 'method_2': {'object': Brightway2 Method: EN15804: inventory indicators ISO21930: Cumulative Energy Demand - non-renewable energy resources,\n", - " 'method name': ('EN15804',\n", - " 'inventory indicators ISO21930',\n", - " 'Cumulative Energy Demand - non-renewable energy resources'),\n", - " 'short name': 'Cumulative Energy Demand - non-renewable energy resources',\n", - " 'unit': 'megajoule'}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finder=dopo.methods.MethodFinder()\n", - "\n", - "finder.find_and_create_method(criteria=['IPCC', '2013', 'GWP100'], exclude=['no LT'])\n", - "finder.find_and_create_method(criteria=['EN15804','Cumulative', 'non-renewable' ])\n", - "#finder.find_and_create_method(criteria=['land occupation','selected'])\n", - "#finder.find_and_create_method(criteria=['EN15804','fresh water'])\n", - "method_dict=finder.get_all_methods()\n", - "method_dict" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LCA Tables" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "import math\n", - "import operator\n", - "from os.path import commonprefix\n", - "\n", - "import bw2calc as bc\n", - "import bw2data as bd\n", - "import numpy as np\n", - "import pandas as pd\n", - "import tabulate\n", - "from pandas import DataFrame\n", - "\n", - "\n", - "def aggregated_dict(activity):\n", - " \"\"\"Return dictionary of inputs aggregated by input reference product.\"\"\"\n", - " results = {}\n", - " for exc in activity.technosphere():\n", - " results[exc.input[\"reference product\"]] = (\n", - " results.setdefault(exc.input[\"reference product\"], 0) + exc[\"amount\"]\n", - " )\n", - "\n", - " for exc in activity.biosphere():\n", - " results[exc.input[\"name\"]] = (\n", - " results.setdefault(exc.input[\"name\"], 0) + exc[\"amount\"]\n", - " )\n", - "\n", - " return results\n", - "\n", - "\n", - "\n", - "def compare_dictionaries(one, two, rel_tol=1e-4, abs_tol=1e-9):\n", - " \"\"\"Compare two dictionaries with form ``{str: float}``, and return a set of keys where differences where present.\n", - "\n", - " Tolerance values are inputs to `math.isclose `__.\"\"\"\n", - " return (\n", - " set(one)\n", - " .symmetric_difference(set(two))\n", - " .union(\n", - " {\n", - " key\n", - " for key in one\n", - " if key in two\n", - " and not math.isclose(\n", - " a=one[key], b=two[key], rel_tol=rel_tol, abs_tol=abs_tol\n", - " )\n", - " }\n", - " )\n", - " )\n", - "\n", - "\n", - "\n", - "\n", - "def find_differences_in_inputs(\n", - " activity, rel_tol=1e-4, abs_tol=1e-9, locations=None, as_dataframe=False\n", - "):\n", - " \"\"\"Given an ``Activity``, try to see if other activities in the same database (with the same name and\n", - " reference product) have the same input levels.\n", - "\n", - " Tolerance values are inputs to `math.isclose `__.\n", - "\n", - " If differences are present, a difference dictionary is constructed, with the form:\n", - "\n", - " .. code-block:: python\n", - "\n", - " {Activity instance: [(name of input flow (str), amount)]}\n", - "\n", - " Note that this doesn't reference a specific exchange, but rather sums **all exchanges with the same input reference product**.\n", - "\n", - " Assumes that all similar activities produce the same amount of reference product.\n", - "\n", - " ``(x, y)``, where ``x`` is the number of similar activities, and ``y`` is a dictionary of the differences. This dictionary is empty if no differences are found.\n", - "\n", - " Args:\n", - " activity: ``Activity``. Activity to analyze.\n", - " rel_tol: float. Relative tolerance to decide if two inputs are the same. See above.\n", - " abs_tol: float. Absolute tolerance to decide if two inputs are the same. See above.\n", - " locations: list, optional. Locations to restrict comparison to, if present.\n", - " as_dataframe: bool. Return results as pandas DataFrame.\n", - "\n", - " Returns:\n", - " dict or ``pandas.DataFrame``.\n", - "\n", - "\n", - " \"\"\"\n", - " assert isinstance(activity, bd.backends.proxies.Activity)\n", - "\n", - " try:\n", - " similar = [\n", - " obj\n", - " for obj in bd.Database(activity[\"database\"])\n", - " if obj != activity\n", - " and obj.get(\"reference product\") == activity.get(\"reference product\")\n", - " and obj.get(\"name\") == activity[\"name\"]\n", - " and (not locations or obj.get(\"location\") in locations)\n", - " ]\n", - " except KeyError:\n", - " raise ValueError(\"Given activity has no `name`; can't find similar names\")\n", - "\n", - " result = {}\n", - "\n", - " origin_dict = aggregated_dict(activity)\n", - "\n", - " for target in similar:\n", - " target_dict = aggregated_dict(target)\n", - " difference = compare_dictionaries(origin_dict, target_dict, rel_tol, abs_tol)\n", - " if difference:\n", - " if activity not in result:\n", - " result[activity] = {}\n", - " result[activity].update(\n", - " {key: value for key, value in origin_dict.items() if key in difference}\n", - " )\n", - " result[target] = {\n", - " key: value for key, value in target_dict.items() if key in difference\n", - " }\n", - "\n", - " if as_dataframe:\n", - " df = DataFrame(\n", - " [{\"location\": obj.get(\"location\"), **result[obj]} for obj in result]\n", - " )\n", - " df.set_index(\"location\", inplace=True)\n", - " return df\n", - " else:\n", - " return result\n", - "\n", - "\n", - "\n", - "\n", - "def compare_activities_by_lcia_score(activities, lcia_method, band=0.1):\n", - " \"\"\"Compare selected activities to see if they are substantially different.\n", - "\n", - " Substantially different means that all LCIA scores lie within a band of ``band * max_lcia_score``.\n", - "\n", - " Inputs:\n", - "\n", - " ``activities``: List of ``Activity`` objects.\n", - " ``lcia_method``: Tuple identifying a ``Method``\n", - "\n", - " Returns:\n", - "\n", - " Nothing, but prints to stdout.\n", - "\n", - " \"\"\"\n", - " import bw2calc as bc\n", - "\n", - " activities = [bd.get_activity(obj) for obj in activities]\n", - "\n", - " lca = bc.LCA({a: 1 for a in activities}, lcia_method)\n", - " lca.lci()\n", - " lca.lcia()\n", - "\n", - " # First pass: Are all scores close?\n", - " scores = []\n", - "\n", - " for a in activities:\n", - " lca.redo_lcia({a.key: 1})\n", - " scores.append(lca.score)\n", - "\n", - " if abs(max(scores) - min(scores)) < band * abs(max(scores)):\n", - " print(\"All activities similar\")\n", - " return\n", - " else:\n", - " print(\"Differences observed. LCA scores:\")\n", - " for x, y in zip(scores, activities):\n", - " print(\"\\t{:5.3f} -> {}\".format(x, y.key))\n", - "\n", - "\n", - "\n", - "\n", - "def find_leaves(\n", - " activity,\n", - " lcia_method,\n", - " results=None,\n", - " lca_obj=None,\n", - " amount=1,\n", - " total_score=None,\n", - " level=0,\n", - " max_level=3,\n", - " cutoff=2.5e-2,\n", - "):\n", - " \"\"\"Traverse the supply chain of an activity to find leaves - places where the impact of that\n", - " component falls below a threshold value.\n", - "\n", - " Returns a list of ``(impact of this activity, amount consumed, Activity instance)`` tuples.\"\"\"\n", - " first_level = results is None\n", - "\n", - " activity = bd.get_activity(activity)\n", - "\n", - " if first_level:\n", - " level = 0\n", - " results = []\n", - "\n", - " lca_obj = bc.LCA({activity: amount}, lcia_method)\n", - " lca_obj.lci()\n", - " lca_obj.lcia()\n", - " total_score = lca_obj.score\n", - " else:\n", - " lca_obj.redo_lcia({activity.key: amount})\n", - "\n", - " # If this is a leaf, add the leaf and return\n", - " if abs(lca_obj.score) <= abs(total_score * cutoff) or level >= max_level:\n", - "\n", - " # Only add leaves with scores that matter\n", - " if abs(lca_obj.score) > abs(total_score * 1e-4):\n", - " results.append((lca_obj.score, amount, activity))\n", - " return results\n", - "\n", - " else:\n", - " # Add direct emissions from this demand\n", - " direct = (\n", - " lca_obj.characterization_matrix\n", - " * lca_obj.biosphere_matrix\n", - " * lca_obj.demand_array\n", - " ).sum()\n", - " if abs(direct) >= abs(total_score * 1e-4):\n", - " results.append((direct, amount, activity))\n", - "\n", - " for exc in activity.technosphere():\n", - " find_leaves(\n", - " activity=exc.input,\n", - " lcia_method=lcia_method,\n", - " results=results,\n", - " lca_obj=lca_obj,\n", - " amount=amount * exc[\"amount\"],\n", - " total_score=total_score,\n", - " level=level + 1,\n", - " max_level=max_level,\n", - " cutoff=cutoff,\n", - " )\n", - "\n", - " return sorted(results, reverse=True)\n", - "\n", - "\n", - "\n", - "def get_cpc(activity):\n", - " try:\n", - " return next(\n", - " cl[1] for cl in activity.get(\"classifications\", []) if cl[0] == \"CPC\"\n", - " )\n", - " except StopIteration:\n", - " return\n", - "\n", - "\n", - "\n", - "def get_value_for_cpc(lst, label):\n", - " for elem in lst:\n", - " if elem[2] == label:\n", - " return elem[0]\n", - " return 0\n", - "\n", - "\n", - "\n", - "def group_leaves(leaves):\n", - " \"\"\"Group elements in ``leaves`` by their `CPC (Central Product Classification) `__ code.\n", - "\n", - " Returns a list of ``(fraction of total impact, specific impact, amount, Activity instance)`` tuples.\"\"\"\n", - " results = {}\n", - "\n", - " for leaf in leaves:\n", - " cpc = get_cpc(leaf[2])\n", - " if cpc not in results:\n", - " results[cpc] = np.zeros((2,))\n", - " results[cpc] += np.array(leaf[:2])\n", - "\n", - " return sorted([v.tolist() + [k] for k, v in results.items()], reverse=True)\n", - "\n", - "\n", - "\n", - "def compare_activities_by_grouped_leaves(\n", - " activities,\n", - " lcia_method,\n", - " mode=\"relative\",\n", - " max_level=4,\n", - " cutoff=0.2,\n", - " output_format=\"list\",\n", - " str_length=50,\n", - "):\n", - " \"\"\"Compare activities by the impact of their different inputs, aggregated by the product classification of those inputs.\n", - "\n", - " Args:\n", - " activities: list of ``Activity`` instances.\n", - " lcia_method: tuple. LCIA method to use when traversing supply chain graph.\n", - " mode: str. If \"relative\" (default), results are returned as a fraction of total input. Otherwise, results are absolute impact per input exchange.\n", - " max_level: int. Maximum level in supply chain to examine.\n", - " cutoff: float. Fraction of total impact to cutoff supply chain graph traversal at.\n", - " output_format: str. See below.\n", - " str_length; int. If ``output_format`` is ``html``, this controls how many characters each column label can have.\n", - "\n", - " Raises:\n", - " ValueError: ``activities`` is malformed.\n", - "\n", - " Returns:\n", - " Depends on ``output_format``:\n", - "\n", - " * ``list``: Tuple of ``(column labels, data)``\n", - " * ``html``: HTML string that will print nicely in Jupyter notebooks.\n", - " * ``pandas``: a pandas ``DataFrame``.\n", - "\n", - " \"\"\"\n", - " for act in activities:\n", - " if not isinstance(act, bd.backends.peewee.proxies.Activity):\n", - " raise ValueError(\"`activities` must be an iterable of `Activity` instances\")\n", - "\n", - " objs = [\n", - " group_leaves(find_leaves(act, lcia_method, max_level=max_level, cutoff=cutoff))\n", - " for act in activities\n", - " ]\n", - " sorted_keys = sorted(\n", - " [\n", - " (max([el[0] for obj in objs for el in obj if el[2] == key]), key)\n", - " for key in {el[2] for obj in objs for el in obj}\n", - " ],\n", - " reverse=True,\n", - " )\n", - " name_common = commonprefix([act[\"name\"] for act in activities])\n", - "\n", - " if \" \" not in name_common:\n", - " name_common = \"\"\n", - " else:\n", - " last_space = len(name_common) - operator.indexOf(reversed(name_common), \" \")\n", - " name_common = name_common[:last_space]\n", - " print(\"Omitting activity name common prefix: '{}'\".format(name_common))\n", - "\n", - " product_common = commonprefix(\n", - " [act.get(\"reference product\", \"\") for act in activities]\n", - " )\n", - "\n", - " lca = bc.LCA({act: 1 for act in activities}, lcia_method)\n", - " lca.lci()\n", - " lca.lcia()\n", - "\n", - " labels = [\n", - " \"activity\",\n", - " \"product\",\n", - " \"location\",\n", - " \"unit\",\n", - " \"total\",\n", - " \"direct emissions\",\n", - " ] + [key for _, key in sorted_keys]\n", - " data = []\n", - " for act, lst in zip(activities, objs):\n", - " lca.redo_lcia({act.key: 1})\n", - " data.append(\n", - " [\n", - " act[\"name\"].replace(name_common, \"\"),\n", - " act.get(\"reference product\", \"\").replace(product_common, \"\"),\n", - " act.get(\"location\", \"\")[:25],\n", - " act.get(\"unit\", \"\"),\n", - " lca.score,\n", - " ]\n", - " + [\n", - " (\n", - " lca.characterization_matrix\n", - " * lca.biosphere_matrix\n", - " * lca.demand_array\n", - " ).sum()\n", - " ]\n", - " + [get_value_for_cpc(lst, key) for _, key in sorted_keys]\n", - " )\n", - "\n", - " data.sort(key=lambda x: x[4], reverse=True)\n", - "\n", - " if mode == \"relative\":\n", - " for row in data:\n", - " for index, point in enumerate(row[5:]):\n", - " row[index + 5] = point / row[4]\n", - "\n", - " if output_format == \"list\":\n", - " return labels, data\n", - " elif output_format == \"pandas\":\n", - " return pd.DataFrame(data, columns=labels)\n", - " elif output_format == \"html\":\n", - " return tabulate.tabulate(\n", - " data,\n", - " [x[:str_length] for x in labels],\n", - " tablefmt=\"html\",\n", - " floatfmt=\".3f\",\n", - " )\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "def compare_activities_multiple_methods(\n", - " activities_list, methods, identifier, output_format=\"pandas\", mode=\"absolute\"\n", - "):\n", - " \"\"\"\n", - " Compares a set of activities by multiple methods, stores each generated dataframe as a variable (the method is the variable name) in a dictionary.\n", - "\n", - " :param activities_list: List of activities to compare\n", - " :param methods: List of Brightway Method objects\n", - " :param identifier: A string used in defining the variable names to better identify comparisons (e.g. sector name).\n", - " :param output_format: Output format for the comparison (default: 'pandas')\n", - " :param mode: Mode for the comparison (default: 'absolute'; others: 'relative')\n", - " :return: Dictionary of resulting dataframes from the comparisons\n", - " \"\"\"\n", - " dataframes_dict = {}\n", - "\n", - " for method_key, method_details in methods.items():\n", - " result = compare_activities_by_grouped_leaves(\n", - " activities_list,\n", - " method_details[\"object\"].name,\n", - " output_format=output_format,\n", - " mode=mode,\n", - " )\n", - "\n", - " # Create a variable name using the method name tuple and identifier\n", - " method_name = method_details[\"object\"].name[2].replace(\" \", \"_\").lower()\n", - " var_name = f\"{identifier}_{method_name}\"\n", - "\n", - " # add two columns method and method unit to the df\n", - " result[\"method\"] = str(method_details[\"object\"].name[2])\n", - " result[\"method unit\"] = str(method_details[\"object\"].metadata[\"unit\"])\n", - "\n", - " # order the columns after column unit\n", - " cols = list(result.columns)\n", - " unit_index = cols.index(\"unit\")\n", - " cols.insert(unit_index + 1, cols.pop(cols.index(\"method\")))\n", - " cols.insert(unit_index + 2, cols.pop(cols.index(\"method unit\")))\n", - " result = result[cols]\n", - "\n", - " # Order the rows based on 'activity' and 'location' columns\n", - " result = result.sort_values([\"activity\", \"location\"])\n", - "\n", - " # Reset the index numbering\n", - " result = result.reset_index(drop=True)\n", - "\n", - " # Store the result in the dictionary\n", - " dataframes_dict[var_name] = result\n", - "\n", - " return dataframes_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "def small_inputs_to_other_column(dataframes_dict, cutoff=0.01):\n", - " \"\"\"\n", - " Aggregate values into a new 'other' column for those contributing less than or equal to the cutoff value to the 'total' column value.\n", - " Set the aggregated values to zero in their original columns.\n", - " Remove any columns that end up containing only zeros.\n", - "\n", - " :param dataframes_dict: the dictionary\n", - "\n", - " \"\"\"\n", - "\n", - " processed_dict = {}\n", - "\n", - " for key, df in dataframes_dict.items():\n", - " # Identify the 'total' column\n", - " total_col_index = df.columns.get_loc(\"total\")\n", - "\n", - " # Separate string and numeric columns\n", - " string_cols = df.iloc[:, :total_col_index]\n", - " numeric_cols = df.iloc[:, total_col_index:]\n", - " numeric_cols = numeric_cols.astype(float)\n", - "\n", - " # Calculate the threshold for each row (1% of total)\n", - " threshold = numeric_cols[\"total\"] * cutoff\n", - "\n", - " # Create 'other' column\n", - " numeric_cols[\"other\"] = 0.0\n", - "\n", - " # Process each numeric column (except 'total' and 'other')\n", - " for col in numeric_cols.columns[1:-1]: # Skip 'total' and 'other'\n", - " # Identify values less than the threshold\n", - " mask = (\n", - " abs(numeric_cols[col]) < threshold\n", - " ) # abs() to include negative contributions\n", - "\n", - " # Add these values to 'other'\n", - " numeric_cols.loc[mask, \"other\"] += numeric_cols.loc[mask, col]\n", - "\n", - " # Set these values to zero in the original column\n", - " numeric_cols.loc[mask, col] = 0\n", - "\n", - " # Remove columns with all zeros (except 'total' and 'other')\n", - " cols_to_keep = [\"total\"] + [\n", - " col\n", - " for col in numeric_cols.columns[1:-1]\n", - " if not (numeric_cols[col] == 0).all()\n", - " ]\n", - " cols_to_keep.append(\"other\")\n", - "\n", - " numeric_cols = numeric_cols[cols_to_keep]\n", - "\n", - " # Combine string and processed numeric columns\n", - " processed_df = pd.concat([string_cols, numeric_cols], axis=1)\n", - "\n", - " # Sort columns by total\n", - " processed_df = processed_df.sort_values(\"total\", ascending=False)\n", - "\n", - " # Store the processed DataFrame in the result dictionary\n", - " processed_dict[key] = processed_df\n", - "\n", - " return processed_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "def sector_lca_scores(main_dict, method_dict):\n", - " '''\n", - " Generates the LCA score tables for activity list of each sector.\n", - " The tables contain total scores and cpc input contributions.\n", - " This is done by each method defined in the method dictionary.\n", - "\n", - " :param main_dict: dictionary which is returned by process_yaml_files function\n", - " :param method_dict: dictionary which is created with MethodFinder class\n", - "\n", - " It returns the main dictionary updated as scores dictionary which also holds the former information for each sector.\n", - " The LCA scores are stored by method name in the respective sector dictionary within the main dictionary.\n", - " '''\n", - "\n", - " # Initialize scores_dict as a copy of main_dict\n", - " scores_dict = main_dict.copy()\n", - "\n", - " # Loop through each sector in main_dict\n", - " for sector in scores_dict.keys():\n", - " # Extract activities for the current sector\n", - " sector_activities = scores_dict[sector]['activities']\n", - " \n", - " # Calculate LCA scores using the specified method\n", - " lca_scores = compare_activities_multiple_methods(\n", - " activities_list=sector_activities,\n", - " methods=method_dict,\n", - " identifier=sector,\n", - " mode='absolute'\n", - " )\n", - " \n", - " # Apply the small_inputs_to_other_column function with the cutoff value\n", - " lca_scores = small_inputs_to_other_column(lca_scores, cutoff=0.02)\n", - " \n", - " # Save the LCA scores to the scores_dict\n", - " scores_dict[sector]['lca_scores'] = lca_scores\n", - "\n", - " return scores_dict" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n" - ] - } - ], - "source": [ - "scores_dict = sector_lca_scores(dictionary_one, method_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'cement production, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n", - "Omitting activity name common prefix: 'steel production, electric, '\n" - ] - } - ], - "source": [ - "scores_dict_cutoff = sector_lca_scores(dictionary_one, method_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "index_pos=dopo.sector_lca_scores_to_excel_and_column_positions(scores_dict, 'test_dopo_unnamed_1.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Cement_global_warming_potential_(gwp100)': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Cement_cumulative_energy_demand_-_non-renewable_energy_resources': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Steel_global_warming_potential_(gwp100)': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14},\n", - " 'Steel_cumulative_energy_demand_-_non-renewable_energy_resources': {'total': 7,\n", - " 'rank': 8,\n", - " 'mean': 9,\n", - " '2std_abv': 10,\n", - " '2std_blw': 11,\n", - " 'q1': 12,\n", - " 'q3': 13,\n", - " 'method': 5,\n", - " 'method unit': 6,\n", - " 'first_input': 14}}" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dopo.sector_lca_scores_to_excel_and_column_positions(scores_dict, 'test_dopo_unnamed_2.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import dopo.plots_in_xcl\n", - "\n", - "\n", - "current_row=dopo.plots_in_xcl.dot_plots_xcl('test_dopo_3.xlsx', index_pos) #update\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warning: No matching key found for worksheet 'Steel_charts'. Skipping...\n", - "Warning: No matching key found for worksheet 'Cement_charts'. Skipping...\n" - ] - } - ], - "source": [ - "dopo.plots_in_xcl.stacked_bars_xcl('test_dopo_3.xlsx', index_pos, current_row)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "comparison of databases" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'function' object has no attribute 'relative_changes_db'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[12], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m dopo\u001b[38;5;241m.\u001b[39mrelative_changes_db\u001b[38;5;241m.\u001b[39mrelative_changes_db(ecoinvent_dict, premise_dict, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpart2_test_dopo_2\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "\u001b[1;31mAttributeError\u001b[0m: 'function' object has no attribute 'relative_changes_db'" - ] - } - ], - "source": [ - "dopo.relative_changes_db.relative_changes_db(ecoinvent_dict, premise_dict, 'part2_test_dopo_2')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dopo.plots_in_xcl.barchart_compare_db_xcl('part2_test_dopo_1')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "premise", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/plots_sector_lca_scores.py b/dev/plots_sector_lca_scores.py deleted file mode 100644 index abd8791..0000000 --- a/dev/plots_sector_lca_scores.py +++ /dev/null @@ -1,325 +0,0 @@ -#PLOTS -import brightway2 as bw -import bw2data as bd -import bw2analyzer as ba - -#reduce? -import ast -import pandas as pd -import matplotlib.pyplot as plt -import seaborn as sns -import dopo -from dopo import* - - -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series - - -def _categorize_sheets_by_sector(file_path): - # Load the workbook - workbook = load_workbook(filename=file_path, read_only=True) - - # Initialize a dictionary to hold sectors and their corresponding sheet names - worksheet_dict = {} - - # Iterate over all sheet names in the workbook - for sheet_name in workbook.sheetnames: - # Skip combined sector sheets (assuming these sheets don't have an underscore) - if '_' not in sheet_name: - continue - - # Split the sheet name to extract the sector (assumes sector is the first part) - sector = sheet_name.split('_')[0] - - # Add the sheet name to the corresponding sector in the dictionary - if sector in worksheet_dict: - worksheet_dict[sector].append(sheet_name) - else: - worksheet_dict[sector] = [sheet_name] - - return worksheet_dict - - - -def dot_plots_xcl(filepath_workbook, index_positions): - - worksheet_dict = _categorize_sheets_by_sector(filepath_workbook) - - # Load the workbook - wb = load_workbook(filepath_workbook) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - current_row = 1 # Start placing charts from row 1 - current_col = 1 # Start placing charts from column 1 - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - charts_per_row = 3 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find min_row, max_row and max_column - max_row = ws.max_row - max_column = ws.max_column - min_row = 1 - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - total_col = positions.get("total", None) + 1 - rank_col = positions.get("rank", None) + 1 - mean_col = positions.get("mean", None) + 1 - std_adv_col = positions.get("2std_abv", None) + 1 - std_blw_col = positions.get("2std_blw", None) + 1 - q1_col = positions.get("q1", None) + 1 - q3_col = positions.get("q3", None) + 1 - method_col = positions.get("method", None) + 1 - method_unit_col = positions.get("method unit", None) + 1 - - # Ensure that all required columns are present - if None in [total_col, rank_col, mean_col, std_adv_col, std_blw_col, q1_col, q3_col, method_col, method_unit_col]: - print(f"Warning: Missing columns in worksheet '{worksheet_name}' for sector '{sector}'. Skipping...") - continue - - # Create a ScatterChart (or other chart type as needed) - chart = ScatterChart() - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{method_value} LCA scores for {sector} sector" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.y_axis.title = f"{method_unit_value}" - chart.x_axis.title = 'activity rank' - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - - # Define the data range for the chart - y_values = Reference(ws, min_col=total_col, min_row=min_row, max_row=max_row) - x_values = Reference(ws, min_col=rank_col, min_row=min_row, max_row=max_row) - - # Create a series and add it to the chart - series = Series(y_values, x_values, title_from_data=True) - chart.series.append(series) - chart.style = 9 - - # Customize the series to show only markers (dots) - series.marker.symbol = "circle" - series.marker.size = 5 - series.graphicalProperties.line.noFill = True - - # ADJUST X-AXIS - chart.x_axis.tickLblPos = "low" - chart.x_axis.majorGridlines = None - chart.x_axis.tickMarkSkip = 1 # Show all tick marks, this adresses the tick lines - chart.x_axis.tickLblSkip = 1 # Show all labels, doesnt work - - chart.x_axis.scaling.orientation = "minMax" - chart.x_axis.crosses = "autoZero" - chart.x_axis.axPos = "b" - chart.x_axis.delete = False - - # ADJUST Y-AXIS - chart.y_axis.tickLblPos = "nextTo" # Position the labels next to the tick marks - chart.y_axis.delete = False # Ensure axis is not deleted - chart.y_axis.number_format = '0.00000' - chart.y_axis.majorGridlines = None - - # ADD STATS - # MEAN - mean_y = Reference(ws, min_col=mean_col, min_row=min_row, max_row=max_row) - mean_series = Series(mean_y, x_values, title_from_data="True") - chart.series.append(mean_series) - mean_series.marker.symbol = "none" # No markers, just a line - mean_series.graphicalProperties.line.solidFill = "FF0000" # Red line for mean value - mean_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # IQR - iqr1 = Reference(ws, min_col=q1_col, min_row=min_row, max_row=max_row) - iqr3 = Reference(ws, min_col=q3_col, min_row=min_row, max_row=max_row) - iqr1_series = Series(iqr1, x_values, title_from_data="True") - iqr3_series = Series(iqr3, x_values, title_from_data="True") - chart.series.append(iqr1_series) - chart.series.append(iqr3_series) - iqr1_series.marker.symbol = "none" # No markers, just a line - iqr3_series.marker.symbol = "none" - iqr1_series.graphicalProperties.line.solidFill = "6082B6" # Blue line - iqr3_series.graphicalProperties.line.solidFill = "6082B6" - iqr1_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - iqr3_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # STD - std_abv = Reference(ws, min_col=std_adv_col, min_row=min_row, max_row=max_row) - std_blw = Reference(ws, min_col=std_blw_col, min_row=min_row, max_row=max_row) - std_abv_series = Series(std_abv, x_values, title_from_data="True") - std_blw_series = Series(std_blw, x_values, title_from_data="True") - chart.series.append(std_abv_series) - chart.series.append(std_blw_series) - std_abv_series.marker.symbol = "none" # No markers, just a line - std_blw_series.marker.symbol = "none" - std_abv_series.graphicalProperties.line.solidFill = "FFC300" # yellow line - std_blw_series.graphicalProperties.line.solidFill = "FFC300" - std_abv_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - std_blw_series.graphicalProperties.line.width = 10000 # Set line width (default units are EMUs) - - # Set legend position to the right of the plot area - chart.legend.position = 'r' # 'r' for right - chart.legend.overlay = False - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - wb.save(filepath_workbook) - return current_row - - -from openpyxl import load_workbook -from openpyxl.chart import BarChart, Reference - -def stacked_bars_xcl(filepath_workbook, index_positions, current_row_dot_plot): - - worksheet_dict = _categorize_sheets_by_sector(filepath_workbook) - # Load the workbook - wb = load_workbook(filepath_workbook) - - # Iterate over each sector and its associated worksheets - for sector, worksheet_names in worksheet_dict.items(): - - # Create or get the chart sheet for the current sector - chart_sheet_name = f"{sector}_charts" - if chart_sheet_name in wb.sheetnames: - ws_charts = wb[chart_sheet_name] - else: - ws_charts = wb.create_sheet(chart_sheet_name) - - # Initial position for the first chart - chart_height = 30 # Number of rows a chart occupies - chart_width = 12 # Number of columns a chart occupies - current_row = current_row_dot_plot + chart_height # Start placing charts from row where dot plots have left of - current_col = 1 # Start placing charts from column 1 - charts_per_row = 3 # Number of charts per row - - # Iterate over each worksheet name in the current sector - for i, worksheet_name in enumerate(worksheet_names): - ws = wb[worksheet_name] - - # Find the key in index_positions that contains worksheet_name - matching_key = None - for key in index_positions.keys(): - if worksheet_name in key: - matching_key = key - break - - if not matching_key: - print(f"Warning: No matching key found for worksheet '{worksheet_name}'. Skipping...") - continue - - # Retrieve the column positions from the index_positions dictionary - positions = index_positions[matching_key] - - # Find min_row, max_row and max_column - max_row = ws.max_row - max_column = ws.max_column - input_min_col = positions.get("first_input", None) + 1 - rank_col = positions.get("rank", None) + 1 - method_col = positions.get("method", None) + 1 - method_unit_col = positions.get("method unit", None) + 1 - - chart = BarChart() - chart.type = "bar" - chart.style = 2 - chart.grouping = "stacked" - chart.overlap = 100 - - # Chart titles - method_value = ws.cell(row=2, column=method_col).value - chart.title = f"{sector} sector inputs contributions to {method_value}" - - method_unit_value = ws.cell(row=2, column=method_unit_col).value - chart.y_axis.title = f"{method_unit_value}" - - chart.x_axis.title = 'activity rank' - - # Avoid overlap - chart.title.overlay = False - chart.x_axis.title.overlay = False - chart.y_axis.title.overlay = False - chart.legend.overlay = False - - # Define data - data = Reference(ws, min_col=input_min_col, min_row=1, max_row=max_row, max_col=max_column) - cats = Reference(ws, min_col=rank_col, min_row=2, max_row=max_row) - - chart.add_data(data, titles_from_data=True) - chart.set_categories(cats) - chart.shape = 4 - - # Modify each series in the chart to disable the inversion of negative values - for series in chart.series: - series.invertIfNegative = False - - # y-axis ticks - chart.y_axis.tickLblPos = "nextTo" - chart.y_axis.delete = False # Ensure axis is not deleted - chart.y_axis.number_format = '0.000' - - # Adjust chart dimensions - chart.width = 20 # Width of the chart - chart.height = 14 # Height of the chart - - # Add the chart to the chart worksheet - # Calculate the position for this chart - position = ws_charts.cell(row=current_row, column=current_col).coordinate - ws_charts.add_chart(chart, position) - - # Update position for the next chart - current_col += chart_width +1 - if (i + 1) % charts_per_row == 0: # Move to the next row after placing `charts_per_row` charts - current_row += chart_height +1 - current_col = 1 # Reset to the first column - - # Move the chart sheet to the first position - wb._sheets.remove(ws_charts) - wb._sheets.insert(0, ws_charts) - - wb.save(filepath_workbook) - return current_row \ No newline at end of file diff --git a/dev/sector_lca_scores.py b/dev/sector_lca_scores.py deleted file mode 100644 index 182474e..0000000 --- a/dev/sector_lca_scores.py +++ /dev/null @@ -1,416 +0,0 @@ -import brightway2 as bw -import bw2data as bd -import bw2analyzer as ba - -#reduce? -import ast -import pandas as pd -import matplotlib.pyplot as plt -import seaborn as sns -import dopo -from dopo import* - - -from dopo import compare_activities_multiple_methods -from dopo import small_inputs_to_other_column -import pandas as pd -import re -import pandas as pd -from dopo import generate_sets_from_filters -from dopo import compare_activities_multiple_methods -from dopo import small_inputs_to_other_column -import openpyxl -from openpyxl import load_workbook -from openpyxl.chart import ScatterChart, Reference, Series -from openpyxl.chart import BarChart, Reference - -def sector_lca_scores(main_dict, method_dict, cutoff=0.02): - ''' - Generates the LCA score tables for activity list of each sector. - The tables contain total scores and cpc input contributions. - This is done by each method defined in the method dictionary. - - :param main_dict: dictionary which is returned by process_yaml_files function - :param method_dict: dictionary which is created with MethodFinder class - :param cutoff: cutoff value to summarize inputs below or equal to this threshhold in a "other" column - - It returns the main dictionary updated as scores dictionary which also holds the former information for each sector. - The LCA scores are stored by method name in the respective sector dictionary within the main dictionary. - ''' - - # Initialize scores_dict as a copy of main_dict - scores_dict = main_dict.copy() - - # Loop through each sector in main_dict - for sector in scores_dict.keys(): - # Extract activities for the current sector - sector_activities = scores_dict[sector]['activities'] - - # Calculate LCA scores using the specified method - lca_scores = compare_activities_multiple_methods( - activities_list=sector_activities, - methods=method_dict, - identifier=sector, - mode='absolute' - ) - - # Apply the small_inputs_to_other_column function with the cutoff value - lca_scores_cut = small_inputs_to_other_column(lca_scores, cutoff) - - # Save the LCA scores to the scores_dict - scores_dict[sector]['lca_scores'] = lca_scores_cut - - return scores_dict - - -# Function based on brightways bw2analyzer (ba) function for generating dataframe containing total score and contribution by inputs -# ----------------------------------------------------------------------------------------------------------------------------- - - -def compare_activities_multiple_methods( - activities_list, methods, identifier, output_format="pandas", mode="absolute" -): - """ - Compares a set of activities by multiple methods, stores each generated dataframe as a variable (the method is the variable name) in a dictionary. - - :param activities_list: List of activities to compare - :param methods: List of Brightway Method objects - :param identifier: A string used in defining the variable names to better identify comparisons (e.g. sector name). - :param output_format: Output format for the comparison (default: 'pandas') - :param mode: Mode for the comparison (default: 'absolute'; others: 'relative') - :return: Dictionary of resulting dataframes from the comparisons - """ - dataframes_dict = {} - - for method_key, method_details in methods.items(): - result = ba.comparisons.compare_activities_by_grouped_leaves( - activities_list, - method_details["object"].name, - output_format=output_format, - mode=mode, - ) - - # Create a variable name using the method name tuple and identifier - method_name = method_details["object"].name[2].replace(" ", "_").lower() - var_name = f"{identifier}_{method_name}" - - # add two columns method and method unit to the df - result["method"] = str(method_details["object"].name[2]) - result["method unit"] = str(method_details["object"].metadata["unit"]) - - # order the columns after column unit - cols = list(result.columns) - unit_index = cols.index("unit") - cols.insert(unit_index + 1, cols.pop(cols.index("method"))) - cols.insert(unit_index + 2, cols.pop(cols.index("method unit"))) - result = result[cols] - - # Order the rows based on 'activity' and 'location' columns - #result = result.sort_values(["activity", "location"]) - result=result.sort_values(['total']) - - # Reset the index numbering - result = result.reset_index(drop=True) - - # Store the result in the dictionary - dataframes_dict[var_name] = result - - return dataframes_dict - - -# Function for creating 'other' category for insignificant input contributions (for dataframes generated with compare_activities_multiple_methods) -# ------------------------------------------------------------------------------------------------------------------------------------------------- - -def small_inputs_to_other_column(dataframes_dict, cutoff=0.01): - ''' - Aggregate values into a new 'other' column for those contributing less than or equal to the cutoff value to the 'total' column value. - Set the aggregated values to zero in their original columns. - Remove any columns that end up containing only zeros. - - Additionally, if a column is named None or "Unnamed", its values will be added to the 'other' column and then the original column will be deleted. - - :param dataframes_dict: the dictionary - ''' - - processed_dict = {} - - for key, df in dataframes_dict.items(): - # Identify the 'total' column - total_col_index = df.columns.get_loc('total') - - # Separate string and numeric columns - string_cols = df.iloc[:, :total_col_index] - numeric_cols = df.iloc[:, total_col_index:] - numeric_cols = numeric_cols.astype(float) - - # Create 'other' column - numeric_cols['other'] = 0.0 - - # Identify and handle columns that are None or called "Unnamed" - columns_to_remove = [] - for col in df.columns: - if col is None or col == "None" or str(col).startswith("Unnamed"): - numeric_cols['other'] += df[col].fillna(0) - columns_to_remove.append(col) - - # Drop the identified columns - numeric_cols.drop(columns=columns_to_remove, inplace=True) - - for col in numeric_cols.columns[1:-1]: # Skip 'total' and 'other' - mask_positive_total = numeric_cols['total'] > 0 - mask_negative_total = ~mask_positive_total - - # For rows with positive total values - mask_pos = mask_positive_total & ((numeric_cols[col] < numeric_cols['total'] * cutoff) & - (numeric_cols[col] > numeric_cols['total'] * (-cutoff))) - - # For rows with negative total values - mask_neg = mask_negative_total & ((numeric_cols[col] > numeric_cols['total'] * cutoff) & - (numeric_cols[col] < numeric_cols['total'] * (-cutoff))) - - # Apply the logic for both positive and negative totals - numeric_cols.loc[mask_pos | mask_neg, 'other'] += numeric_cols.loc[mask_pos | mask_neg, col] - numeric_cols.loc[mask_pos | mask_neg, col] = 0 - - # Add these values to 'other' - numeric_cols.loc[mask_pos, 'other'] += numeric_cols.loc[mask_pos, col] - numeric_cols.loc[mask_neg, 'other'] += numeric_cols.loc[mask_neg, col] - - # Set these values to zero in the original column - numeric_cols.loc[mask_pos, col] = 0 - numeric_cols.loc[mask_neg,col] = 0 - - # Remove columns with all zeros (except 'total' and 'other') - cols_to_keep = ['total'] + [col for col in numeric_cols.columns[1:-1] - if not (numeric_cols[col] == 0).all()] - cols_to_keep.append('other') - - numeric_cols = numeric_cols[cols_to_keep] - - # Combine string and processed numeric columns - processed_df = pd.concat([string_cols, numeric_cols], axis=1) - - # Sort DataFrame by total (optional) - processed_df = processed_df.sort_values('total', ascending=False) - - # Store the processed DataFrame in the result dictionary - processed_dict[key] = processed_df - - return processed_dict - - - -################################################################# -################################################################# - - -import re -from openpyxl import load_workbook - -def _add_statistics(df, column_name='total'): - - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions - - It adds statistical indicators to a dataframe based on total column which are used for plotting. - - returns updated dataframe - ''' - - #Need a rank row to plot the total LCA scores in descending order (satter opepyxl function takes in non categorial values) - df['rank'] = df[column_name].rank(method="first", ascending=False) - - # Calculate mean, standard deviation, and IQR - df['mean'] = df[column_name].mean() - df['2std_abv'] = df['mean'] + df[column_name].std() * 2 - df['2std_blw'] = df['mean'] - df[column_name].std() * 2 - df['q1'] = df[column_name].quantile(0.25) - df['q3'] = df[column_name].quantile(0.75) - - # Reorder the columns to place the new columns after 'total' - cols = df.columns.tolist() - total_index = cols.index(column_name) + 1 - new_cols = ['rank', 'mean', '2std_abv', '2std_blw', 'q1', 'q3'] - cols = cols[:total_index] + new_cols + cols[total_index:-len(new_cols)] - - return df[cols] - - -def _find_first_input_column(df): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be called before _clean_column_labels function. - Detects the first column in the dataframe which contains input contribution data and saves its index. - This is relevant for calling the right column for defining the to be plotted data dynamically as not all dataframes have the same column order (some contain "direct emissions" for instance). - ''' - - def _clean_label(label): - return label if label is not None else 'Unnamed' - - # Apply the cleaning function to all column names - df.columns = [_clean_label(col) for col in df.columns] - - # Regular expression pattern to match "Number: Name" - pattern = r'^\d+:\s*' - - for idx, column in enumerate(df.columns): - if (column is not None and re.match(pattern, column)) or column == 'Unnamed' or column == 'direct emissions': - return idx - - return None - -def _clean_column_labels(df): - - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. Needs to be run after _find_first_input_column. - - It removes unnecessary numbers in the column header. - - Returns df with formated column labels. - ''' - # Function to remove numbers and colon from column names - def _clean_label(label): - if label is None: - return 'Unnamed' # or return 'Unnamed' if you prefer a placeholder - return re.sub(r'^\d+:\s*', '', str(label)) - - # Apply the cleaning function to all column names - df.columns = [_clean_label(col) for col in df.columns] - - return df - -def _add_sector_marker(df, sector): - ''' - It is called in the function sector_lca_scores_to_excel_and_column_positions. - - It adds information about the sector for titel and labeling in plotting. - - Returns df with added column. - ''' - - # Add sector marker column - df['sector']=str(sector) # potentially remove! - # Reorder the columns to move 'sector' after 'product' - columns = list(df.columns) - - if 'product' in df.columns: - product_index = columns.index('product') - # Insert 'sector' after 'product' - columns.insert(product_index + 1, columns.pop(columns.index('sector'))) - else: - # If 'product' does not exist, 'sector' remains in the last column - columns.append(columns.pop(columns.index('sector'))) - - # Reassign the DataFrame with the new column order - df = df[columns] - return df - -def _categorize_sheets_by_sector(file_path): - # Load the workbook - workbook = load_workbook(filename=file_path, read_only=True) - - # Initialize a dictionary to hold sectors and their corresponding sheet names - worksheet_dict = {} - - # Iterate over all sheet names in the workbook - for sheet_name in workbook.sheetnames: - # Skip combined sector sheets (assuming these sheets don't have an underscore) - if '_' not in sheet_name: - continue - - # Split the sheet name to extract the sector (assumes sector is the first part) - sector = sheet_name.split('_')[0] - - # Add the sheet name to the corresponding sector in the dictionary - if sector in worksheet_dict: - worksheet_dict[sector].append(sheet_name) - else: - worksheet_dict[sector] = [sheet_name] - - return worksheet_dict - - -###################################### -#################################### - -import pandas as pd - -def sector_lca_scores_to_excel(scores_dict, excel_file_name): - """ - What it does: - - Creates a dataframe for each method and sector from the lca scores dictionary - - Before storing each df in a worksheet in an excel file it: - - shortens the column labels of the input (removing cpc code) - - adds a sector name marker for keeping track in excel (when plotting can use it for labeling) - - adds statistics for plotting - - creates a dictionary which holds the indexes to the columns we need to call for plotting, this makes it dynamic. Otherwise need to hardcode index column number for openpxyl. - What it returns: - - Returns the index positions dictionary where the key is "sector_method" - - Creates excel file as defined by user - """ - - # Dictionary to store positions of columns for each method - column_positions = {} - - # DataFrames to store combined sector data - combined_sector_dfs = {} - method_dfs = [] - - # Process each sector and its methods - for sector in scores_dict.keys(): - sector_dfs = [] - lca_scores = scores_dict[sector]['lca_scores'] - - # Process each method for the current sector - for method, table in lca_scores.items(): - df = pd.DataFrame(table) - - # Add sector marker - df = _add_sector_marker(df, sector) - - # Add statistics to the DataFrame - df = _add_statistics(df) - - # Get the index values of columns - columns_of_interest = ["total", "rank", "mean", "2std_abv", "2std_blw", "q1", "q3", "method", "method unit"] - positions = {col: df.columns.get_loc(col) for col in columns_of_interest if col in df.columns} - column_positions[f"{sector}_{method}"] = positions - #column_positions[sector][method]=positions - - - # Find the first input column and add it to the positions dictionary - first_input_col_index = _find_first_input_column(df) - if first_input_col_index is not None: - positions["first_input"] = first_input_col_index - - # Store the positions for this method - column_positions[f"{sector}_{method}"]= positions - - # Remove CPC from input labels - df = _clean_column_labels(df) - - sector_dfs.append(df) - - # Store method-specific DataFrames for later - method_dfs.append((f"{sector}_{method}", df)) - - # Combine all dataframes for this sector - combined_df = pd.concat(sector_dfs, axis=0, ignore_index=True, sort=False).fillna(0) - combined_sector_dfs[sector] = combined_df - - # Write to Excel file - with pd.ExcelWriter(excel_file_name, engine='openpyxl') as writer: - # First write all combined sector sheets - for sector, combined_df in combined_sector_dfs.items(): - worksheet_name_big = f"{sector}" - if len(worksheet_name_big) > 31: - worksheet_name_big = worksheet_name_big[:31] - combined_df.to_excel(writer, sheet_name=worksheet_name_big, index=False) - - # Then write all method-specific sheets - for worksheet_name, df in method_dfs: - if len(worksheet_name) > 31: - worksheet_name = worksheet_name[:31] - df.to_excel(writer, sheet_name=worksheet_name, index=False) - - return column_positions - diff --git a/dopo/example notebook/0509_v1.xlsx b/dopo/example notebook/0509_v1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a95235593587045e1facf419ddf01828e30aadd8 GIT binary patch literal 80777 zcmeFXRdih2mMkdAB8!{TjAoB?l0}Kod77R(AQd443?rSpWY820L#JHF4P*0UXMqCnX>fU4|!>4(d;&@+hWq&cTS?n=w=; zOe?m+zm@O?F&qB?dUQGnFfi2rT7r?Cqsd=2j3-RW_c9}d>O<{s@V&JA0Q#M^e+C*7W^rZ+W=W*s2Ps`AiyQ?S3@nQp3=ACvlDjpNv$=_l$v<9M{(|XTOWSFM z8^iaqYRcX0!3KVS)4#DE-O0jrwLU%QT%I@>RU_Kk!#F<3uTzo}Wi$oxJVCBClOK}) z_;o^D^6-e;pGSlipTNBg9mO3j1sxUKdan)59T%oL9gO&wYFSpMy zI$G~qKqRb;JI3gO&XzVF6ZyhP{pz|}kcD+Fj-;`Hj~>0b(3FazmYqIH{XQ|<6XvK& zv`IcVy1Fn`OIZEQvvvR5$_Bt>@|c&9)!&vGUxUPN!mfBvUMp-{rKhjU(o9gzYH)hy z>yLn8pCqVOsfYYoOjuS#KHhAN30LojzH?yI$ci(&4c^x7wL5p?=uD(N0pylqTTV~* zopon{@aOt`iz(x!hn33sqS9#PZ?lg+o2QxPS#Z(X-)61c)@NhF2P&rA5j(EGh4xm4 z50p(gpIT5+zgJon9AlY_NbH_^qG2}d3(b;%Y1q3ijLm#X(W7~BNy1wuY+D!Bxzf1c z2}k`H=!aaen88h9mvGFEgF*u1>YJ8T@U9YWjM(Z)n9+$_n51b?z=O>g^1qi1AnjkP zdcRL?8!lk;%=Y1(uuAf?C<8A(Z_Auad~-V50~RMP%85+ax6^;VekIp745hZ^LwDpQ zFca~fe0Yd2q-34Ee1#BV?$gu(JG2=c_E=_@A)ubCA+-|p zgd%~rljU^aG;RF~Qz$Y0pxVBcpQ?cgo{F={Udln=zu=zSbzPCgPl%2-o&*mq9Fj^w zg;v7jEB6)sgRXGpBWqUZDv62WMLIs#qK>@SnQHuq4X<0G3g0Eve1_li1L`@81CAgb zpAf^-Z&!BN1RQ zbT%IEGO-Ykgqono1^VqoWE^TIQ3$tm#(AED2IPB=UawU5QNXC_d$VuIJexIr%%kKS zw)7q{Rk7ePD?3bnhUVwrL28!3(olB5FCtbrsOuIYz`mzD99POfyFz7v7xOFGlK)<3ocgRf#l9JixBA zcXL3__4&&(MNn0SCIdNEoQ!{+Fh%oQvO^z}rjY%C1RNT^cHDmVjM573NX8Z|+jcz{) zIbI)hUH8ZfnUzyToAE?CKH0Qpukmu{q{X+u%__y&^*$f>yW{QfEJL>Vq^a8+E=^Cr z9(F5M=U?)t5Dtdj8F_`4=Au>*jSfS&`UHKG%sG$V{924F#LoG ztWt!yQBpNv(H{6j7nkQP8zp{Zf0(MHzdN0GYhhz!Bn(#BKbX~JSwbhF8T@R?paOcQNKPWOENFf*&tlg#xc)vep$=G}f+ z5_zBRQ2$O>w9@xsefPySk?*T)mPbD-xU)C}c`^Ys7B=gi!bL(HG&=Zr(y-VSM1XM- z!H={T_}@1OEi{-D6#yPTar(dzdA%7*G>nL91SnE$$KA`zL`%1*#TR;in;;cd<9X~6 z(eQ2oHb>DV70TPn6)O1P)g6`bHoOih1DRe=+iV8vKdX9k0`=Ge61Vy3TSRrCPMMy~ zJ>unmG!}@SSvPs?S9v!+=^dccix&8H`$R;(OUKGnKFy7-s{?*B=c=ywcufW z3&DG?OsmkC4pmSF#+x_++9*oO~t?p3xdZFja!6VQ|`@B@eDk+`N(pf zXgE9Jd7*v5)j34-2Sj#)cql!V^hVD7J$X3(wU0~0>Yl!s?eoY^@P7{wzN)7Z6>u;x zZBWYM{3Afz>>RC}%uP(3otXZ9`#VLVm8Sm++qYy|VxiV(@Qf8{BlPdcUuRLSvKnmh z8A>7(m7ct^TnWAQN;+h`d4QRBU#ZnUJsquP3>4-)bm&SQ-{6%yaxIDUQd1_V=8&q+ zG(eW(WR%C>a(5)E9ZMJwcb(J7RNqQ)RTmGrEYQAqKnD8IntmrkYAy94F;1y34N$+b zJI}!xj+D-2V3#*SM@=fxm^_G__Y~0H2r1fLXbaiUoma#;40DGwP%j`us_YWF2#ng9 z#J28A`#GQonC#iPu{Ce6q`ogE1tU88MPNPUeblp9;*O#SUU(8EXz&N&FgFD|PVI>?93`Q8k0!r#}_<-8WQ|lS@*_aYJ%$_51zC$GU^6r^LkfX7QLk*N?pKl zI^80hIeCdoF3)y;u34_UV~6!^)GkS-N?^gU(1I3YDA$%lK7T$Q{(Y6F@5V#5n-C0o*pSuyT2}quHIWVl~^64 zCsLOv95K%OYi0b#y%wWA0QT;GKW}K*!0_Uo&FFgj1|fhDa2;rBmq6z=`u$0)V#*S? zzy0S}z3;+!)2>UA!&Tp7ja8^1S!U4aap%FHK-WutU0wu~7On^#Iy;FuC2W0dIFuHq zNEsUF3KO=zvy-O`0%?URs8MR_$4?uw9}8e2WuoRT0nm^YG24Q81@%-(3ltVYGa0Zc z^**0rZ16=^sX)_ABMZGn+>C2(y>0?Dg$;Ihf?Cp#nTOnZpT91Ndo!S=D~5<0ZEk}Q zEjKx14FwU^R*m9GR6lpscPD-RxW=lW6S77Q4j@y7>#FuKF9CaXwEP4A?_CNGG=iT1 zb>{+T)Fb~#m;Or|`i>^n|E>_mzrN|8uR#i6MuFZ^w|D^~5{Kg0+S{>o_b*s z^-9amIQBHvgfvXAj2gy_$9qrx&~z6OrGZ(kngWHy-9Muc!s{eL^olcjeY~px*fkmG zJbXy0$#7qb&l&}H9NGR@S71Ds-mg}i2$zzuai-im z11mY~zC3y_S~*#Q2l2tPk_#4m*@6pWoNqQ>1K#WgagxfilYM`}6s?M%@a9i==7^am z(uo*xP|!_!8(`K_+@3YtOx=W|oRB@T__~C576-SX{=J(2fd#YvHOT)T3;zFr1^>;& z`Tw!t|KC|K%<4n`B*0ay_x04!!0&)f2Njw4CmC@?i2vmRJ`*qqQ1kiqGlaI9G_G z;<%>iwhYt!*UhS1*UX^Ldw=<%xhzI2WjC}>T3!nV2qX1)V%7INjHn|l9RGgN$$P36 zul?DgHpaOa2A)nKj3)m@DxQKW$@psmige7^1T<+!ieXqvs04yz3VyMKECn=DDd8{M z&C4PpBkIFwjr4;I_`fZ&rUc7?|L$50kOfEoBM<&hJpSE-9sXbN;I>8qBLE)rP(DqO z*^Xb|uLfoBXv=$o6J(r2S!8U4u<+XLl~1;#ZExkeb!{XAEus7q)c={6s3-H44-mXRNOhkM(;5vTg` zrTe^a`)IAn5sf5jT75YC31+>wC~nAgzQ4$~zn&uh9!^~qf9ehWMob*4KjPcM?Z=-! zZAa{@(UQKFihMhKm&-vn*x7NrqwhWn7#+Uc4IJ7_Yjl-BR*U zkHP95i2HcXU!%Xg2%vG?d%RTJeE-7!rSjt~^*-C=yo7VH*Q15!H@>VbR#RsO-A04$ z$o18+?R2K^Y0{>Zu`hQshYo_EPnKL~gK2IN5D?RYJX)J7Cp?oFIwk+!A2szEv+1ec z*{SyFb~hBN1?}U(@J`oh*CnH($|U=NYQZ;4&MrqH60e`3oV)lTd&2Urv1Vi4nH_;p zIlm>414u;W;(PJE;?>cC?{~@cX}d&K@)u`hI;Nt?ZQW=s?6UC?WPPjphfIFLg@yz0 zg@oJwal77AK}&XI{ag>9#|nvCSgQ|4OXnDTXO-xQ&kM`+7SNjY5_gYP`__6!TlL*t zcUH?8ABuqbj={mVO+!|)lFS98mNdD`k>Xd(vuz7!btJQjYh}&Fa{(PKJKlB+hF`ab zv9rs0986|@vJ(649E42+b^C8hMs=|^t|4`q3+7sUaFf+1)ArZw_!|u!2#1~Z7gU{s ziv1-Uvzk^nQ(9{&;9rWr-7a{u=p=DGOxC=AJd#AJyx6!?;QKypqxnmNt*jIN0z@lE2mq* zp~kZ&Tpi?EbM(aBi+{!Q7n-Z=!>XOSm&g zk;U34JFah*pIiDJjd$Po>583-(LG~&i15$jpLfAvmF3Pq`qBC7OVcJT9G1YE6=>8A zQOmw(=!aD#Yk^D!6K%?d+f-h%TSWe5zN}C{`KR_Y7G) zo1JN9%&y# zN8d$kbgat#SGaPh+_+SVwbr2n1he>q6fqjqveTgl{#fY&l?Uffj5d(@g8jycL-TJI z-R6374M*KZCGtpF3YLno;NW}Kh-wBbEeOFb9ClE=+6uqN%bBdydpFoFRU04~-3>RLpJaZ>jLmCFgjU}9<%i4ishb7Qf8lKiOdgeUT z!SV7J^i*z%f4=oTFfsmOTdrn(E<;u-Kg7qP!cRON4_fJP&9KrieR}n>T-avXqzS`o zn)uq=x|3y^%G(ga(eE1OM)vJ{-SPQdOh}LQ3vgIY%8xcxx%-5e=+8^|0A58t&@5vL zd(-ca$uo>n=9pGfZ`*O|&9(V{$)1NP+%4VxlOyCtsEEZ|%4E#c z62Wwo>@EEJHgJ;ucQYZN{+AIkm7zGQFK{BquUzq^inj_cg>O1$;U-n>6tx_B*^6<+ln#D3FktCpvu%uduSx*79*yBa)^cTv^oTLQ3A zsF=cM!qYX(1cwJBe>Y71Y?#f0k&~|GK?F}c(9<$EanLfF#aQ6LiUs)IBX3np8%$rW z5TXe%1t>>nPc)2TE;le@0StST4&^mX*b>yl>AmoV2Q-ike12s2@0;~#sB2IrHK^@L z49*;O%|LZQgS9~}VcyDP%}k@@HBMIi^x#VQK%n=C?LvgKC9{Y3Uxi&0-eQE{gIyCf z!1jNI| z+!^++EE>rBwI-(>GNm$&Qgw<< zW(GnnW9;+z$qlZ?4Us=S?3&mX7DN+jb6}S)q$^5uXcr^IBdYt4E>TD#(kmQ)YFM%B zZN(o?00>2XcMKFF@gU;4KvdxqV#tz3k|9vRkUT2n>6$*uUl{th-P8~V2aNM&W6i7B zFzzAKZ%E|gXriO_2>FT%Q2C0S7rqY`dhlJ^Yq)6L>)92=A{1IP|L#eGH5@s{YgIms;H9#ni)lJ}{*X>O7F}cii3?Ql+E5S+ z7b_67Mh8AyvBhJKXbrA&a~vC-f|ny#v;D{(oM0d>QQ$}#v+&Ejm0N+TX5UINzopf& zWmD$PHYv|Z?V7=?D=_~`Lj$)GAZ@{bF9`IfyhLsG?~;SGCAG)*2dP-x0LI@7_KeJ) z*dGR#Uu+8%A{Ny>KnR0~s6SK^d`B_p$q6zq>?+WcnN0FEkl-9|52Vac0(cp4PDTk2 zO{FAEqmujRRz~TV=>iWXADNelrxbU^{l@n@}OE*X661? zC52P7Cf4BnwDh-%!ImhyD%~r-d@YGK$N6kXQ8s60FysYkOJa}iuMN84uOp79@J$7nL~ooA8<*E673TU-6@&BnZJFBzAN~>=M4t^z>3*W+N{DY zs^3Mpz-)ku9J+mY&`5wWwD&aA>U?eq=`@`gRNrT1JTFNX*|Y=+*}vNKGpJ3e#&(|t z7B%(g^(jpHNUR}FE8*Bu)?yJkm<{RIx`M{U$AV;W*hp`2*+}c?;mDYF;eQ5kwA8TDh^&3 z$czLD$P5q&LLd+z7`|(fyeLI1NrgIOc6;=yyFd~rfW|AIaMIpPgk z^kyPjE7CIn1uU}NL)A#<>VLWwbvAqYXKHO(?$X{Tv@~9rrT=hbr|b*~+!dSCF%t>+ zg>V0J86y$}2VRn+MEk~ubV}}SQbUmJh&%?uujA>Y&3Lp8meL^4fIj{5D+kq~lXiD} z{BdlHb0bsVn7XK@t-bHld~xgR;cu=6NZJfpblZQFsi@H80RqNP?8se}g4a^@L;kS& zw3f9wwI8ZM2Nk79QyFKZg|D(^Y~YAjj@;lAmZe$F0&-zPF$?3vez#0Lj0%_6;mwl= zUx=)3oT!yeaFCgk9z{7&0P+Ae(Kpt3%#w_3e4t18{{@$-&fwM09L|jqQzc%-mSJ#& z|Hv;o*EoqLOm;`(l-U~zOzZi*ru60__qbd}O~zz)YnnYbh3PifGZK4be_hB6@+&a^ zP*{GEEfxsHD|ZZmj?gZU)&FqEASDV8`_}hWEQjp1JLhh9a@I`g_?*$3Lia1WxfZ3% zK6#112D|Rqrd0m05=pG@;*0PX#zm;}#)zy&zqha7C`Ro9nMKp2$hWCzqk}S=lUn?T zlhlc7Ehxs0G5iG}A9f{d;EgyM0CLyCDb^{1k%$c?k=Cd=xQV@U6xIoXlKpxl_FY;! z!7#HkCeo3zYBBfB#jFf<^lr6rJkLpV1BL3cSz?YSxQZCt?^XMQ2Jx92qRyZ4GS_S@ zrEp_vr|mgB441<0wWn4%#oS0*;ir+r9!XY$j{suGB%ZL-mWkMZ3)1+pz*V6bohET!mS7?uv<2p$%F=9YSP|WzHG35QhVg)jPOVA9 zP(g2QJ|uhV!$`aA6=rKcc*87Wo!dj>W%#5N@`SCq8gTUA)R-LVuy1Ja&l(4Nx2{W$ z!j~T?$7409C%=I>jUl4c1+&gnDiQQf!U(m_bUw8+SyiD)vr(_p`_-tqakv;V^i2&( z&6V8H*DqMp(qMH+34K*!IW%L5(>34U#%LS55o%df9(5^FI1e2E!ogg1i2m$OL*~K5 zC%6#WxkqtR!`Jc!0nm(&lMd6gDsV25Aivu2o z*n;NK8-3Yc+|yXJRc0A~`|?nGv0(Z<(}Ex0jYmi1P~p8CqCHL**{wCQWU$V^u@UGKg<~5!wkN^zAP~J3)m0 z3D~13M*Xt7Jyf0Nf{>h9kK4#8wpO}Jr*HR)p&J@Ynwi;14P zz5Z)jW~Xv_t;bmuWqr$6vG_CQMO$gWhyMC%4~E#^CAo>=Y7NYIk~w)uWZHbpd17mw z3OOU^>4sg1-ht(Xq6h>Wv4|OJJS&6BykSn@N1#OhTeBtR5g_!}<;NL}OXc8=gEQXYF~ZJ^5-S99ON)nZ&16&`e?tKa-tB zR*fCFy%b$b54b(V>@enjiN<_iLZJnYxl6NDy=ywpz%e8BNu+< zp6z&YNbb^OdV<%Y=chd@oz4Js@aB&NPSRGWX`8SMA?MUZ5ev)<4n;3x6<|O^)1}HD z6axf%17S2^_emMO6GrAz#F;n`21Ov~2vsbW6z(Uvpq{WVb|#Ikw6aBmVqqVmiWJUVMr`d;40| z&=>y;1ilCV$mU$%E=U9XL?8|9f;12tI7VL#dq!GK9C&`!*YkPh&$7^9md0e7vuW_m zz;u09sPT3C@kERJFI{1AbL^NO*HMYsL(|}O;?b6MJ!roVMBsgIUlLLYDm{5{FTyNJ zDE;E>`};U5G{oX%c3z?uaNcN96R|QFH_%Dm!8LL-63VVu@!7-3Z_c6liS#zNX{lfIZHR0md6bgc> z@b_?I{rtez|D~mg-mqKdJ#XSX<{o|o7G$Hb;sE-hwN!eg@7e51QiWXJ>2J5;1qrm_ zsl%rQ2_T0Fu~TlX+SN|!qgI#D5(O`|C^IaLYNOR_N$a!bV6mm&=xZ*UsWQ|#kVW5R zy`~y~dN!7CsgT`M3&v-{J#TB6wJw|y9e9D|7v184V4@w*|HV=<1YgSKB50KZUh5Lx zMW=^y?qg9$NR--k<(})}!I`fA&(~ z6i@_XAS+b(&~VNJ$MpjuuY@^L^NA8OS%Vr|Rp}U!iTT}|v(#Djl!>__F_yOE4i8KI zxFaT5^X2DN*V43XiFr~ zL=Avm@luJ(ge9K!tRq>!&b(Uq&sBmDk&{a(hn+sg9te_s|Mpf?_x@}hU-2Oet@tmb zZ0a6_2+As|mev-6*sg8~u2#}2t^xQ{YgA%QB&~?kgkcvV^`EAthv4Ed(?82)ESKM0 zY`D?MEi_|?XjcB`AdnTxa%ed9kC6N{(i?VD5*NYqNVyLx^YE`St61K>7s?8xckpI; zJ*pC5|d5*~}=c*c#P`t!>Rp3gx=T1l^|eL5W2k;`fW6**xt!S29_ZnvY8 zbPDG$pr?=${J1?(5(i6}HBw5jvjayY}VAE7O)i=%@j`gp^oVsJ?^!Yn6yKb3p z_z?s^iHXWJni{0#m>r}gRoKMmob60HJ}#B~BDyH$&^InssBZ71^r*Ts0Z%8gj1o(p*;h5)m_X@`A{U7sTbtuc3 zA<8R2%y8%h6eY0tpeS*Al2Kx8kyok&MG0ZEd@C6DUs1BfOM}G2UwDUy^bI8cUd;?L znnG5Qy=@sE_Hi|CZ`CaQsGY_PZhkDgoh#MjMSE_iqVV2ycl6NwJMF)6Wb!vGc1l43 z3z7V1_)%myAgR$IZ2R8>AtteCh>T1YnFXDB#euO`KW0xTV-%xEzhf!-w-o2CHED%Rl4++0lhb3mhDf!Ozy;3s9^EnX z`+&UguUJ9eoi2u8H9btF&~wbD&;u#ubx#zuyEZ|S{1OYG=qKeXPSWe0pjlt6VUzhm z5wZW0%_%}#9*s-qLhj(Z9=>Y%{ZOMlJX^g`zjtCRoyyg8NA4_Y#)Y(c5T497zXHYv zkVPBC@zx9e9??#whb}$M8WG~rjVz!2&qe{wS#$ujL8+ZkvMimr?IlKP>q-OjeB0jm zv#T)4>xs80>Bo+ur>FsOcPXIR$h7oNk!5B@Y_TTV!p|$2Ghe5*TG#g85L-7x4qQoE zwJS0lW`bh_nyZ_qlLZ`LR?33-8sd^iWtp~BCG>{j_S)u8IL~VgSE@2P@{YA;Tz_D> z%kuzK-bm}+{vJI^9+)Hk(MTxw%n||!O2CMjw0?ah|6vy;f6C;Ii#t~kIy-`?aP%}t znjopLGilE{oaXA(57asOuD)?)@|G!sN8s|{z@GEo<_25k&ys*^WRRlGN$M<`+m$qVuNRaF&kyD}*WSmE58uFRqp?f25>kQ^l} z&ZaR(874afDqQ1FZTx!(352tDnb^s(T)i4UAxq5t7KEi5?4Hc=N3M zvlFS3dCwIVDy@(6jI7ew9;D{yC?Rq#@Q8K3!vB$4jADE!>w)Ijd9Nq}KaNPnVo5v^ zrqRQCNN$-&K(m(_N-+4IA>^|PY(L~%!o5so;yqo-T}bF}KftNF5~ahES9X%VR3VUL zD=C}`qSEx8#@vy%9ImRJHD|2_fB3dcL)9qlM~gc;_-&v5IHZolFaIAc-ss?xM8}QH zJwfO#N<-yS9QE$B!c;#&1^;vQLg5Y*nx5#jx)L!pRL--OyJsYaT3m=}RGe6;{)Ij; zSHoa;ZT%dhJFQ^95`tW8-x?g=Q+gm)1dpzVp^-YvnMItw^5fw@|HokGfu<2*b|i!4 zBB=a@6f91UgQUu1(oW=aLZLg9JV}%aXd_c`VSk()-pFe517v`FDIO`G-BPZi&`eH; zqXAM#e(bJdQ*Zbu>T>vD)94D#UQe6?B8iev!xO`-7jA{kNLTlr0(dz-uwqL1_Ovh63sH-%Tj;X&2nB;}e(c#9KS4q6a=+NZK?OV%pB~-0# zmzvH66ioDIe$76_vZA^NiK9SIN@rf^Bwo^gPV~Wy%%w$EOiA*Dq(%YR{~b2T2A7Bq zo7NjP0`KR+^)7C$>)(I#QQS2xx@3a{Y7jSLk(vfQPO8dE14cd-Yp*ySwxT5WZZltN z%x5%iL+Z<)LgGaxe@gWI?<|7ouLhy!FcSM}Re+^5%x_Hn%br7)7Atp~C)R-!DlRvj zdekcC_KEvJOndq)EfhKGFgTy5R^k&hFm(FR@ab9QtzYFm!5d^5-XO~ek?i&ZJZpfY zgW;XMX9SYY&l8YzN-GPf;9wjrjYTm-q;IIwhwb_X8$f4F55fs1MMkyHn zR=D*&N5J&^Cpx(P9^BV<+0%W4oZjWFwvu|ozoJ!Uq+#V>79V{c_E zv*D&w`;&oR#1aVFIQVt~t?`tlmF7iXQA;;CY_Rk~RECd82d6Gso)k$|T} z-jc^;NQX_hRdH{aGzSIar=l@vAG>HRl9(UWXS_J<1t$X+#@<10+YB7#a_~z+XQa?W zD%Q6l9U@e0lhRjZwxNT=2e7E&P~JJh8MiM)V(4ho)ahshsc(7?XUXPH>f})p-2Z?Z z2J})7oh*F%Vuc66^jCu}r;P5UvG+q0m3!^`;L`kRoEtf|Zuuxc^pexoQyr{CssB3E zn-&)`0QpA=>t@kwVI~+6*w;7%CvLUfit7!+)R-{WTv<{8oAm%?GR$)FnZeu+KM!O_ z!R9b|UMT0aw!Y(d;6?I*|6xnq2{zhF--4M)r+oRne4z)tPBB(ah3k>0*#M3y-*&Q4 z>aB}(HKUoBWqk;W^9U~*!{VsJQ>gEpkKVJ4fE&lF{tmwZNt7-@>D{v z?=d#dluTHkwDN3hjE6;s6Nfi1EqERJ$lB6a7#(4-9UM!`fT}JL)+w8QImy6-NAa4Y z_jl&>2|qulP7VH#*Y&pNs}A>}!?L=;?{IsrYJffXw}y5vEkqX|+wD(%yu`wherj^-tzua8EjPJTo?h_GwtLr@koeXsF4K$Hu}yHwN2k4Fb8}8r zXGp|ZRJf0|d1JwAi+{+ud6KKKHYvey?&@2h%QSP$xarQKy_c9`>g8R>3iP$KXxQYK zX}94(ep0jSzCC zH<@#9b68`V@OWiBc4Q2;bG2!9Eo0_yjHhm>-N%gD3D- zeA+b8M{ihOFUGT1^E6&yH+@> zXr|hr(=^MV6kxEmBlsfpurd@%L?u(dd5`1VSAg=?jG^ur#ZuZDFXh<70qc=xXM^6E z+f#38kcskOwoyUd+l>0#?shTrUeoVqia(G(OuLZrDZ7S% zW6asSb}M-P#rBBUdFSG~;}Nb;{)53C3-ibCt@XU$>=Sp3L#uo3r}uAT8KOVtS-)(e zhBP@5%sFHdKE*J51Ky)Ff56`rX*}eqic8X0W=)KU0)CGc_qW?vf1APoA`ZAmlXF041eLwI^G zZ5TrT_vbGvg9em9SyTNLq_)ej+joPzpTA-~G_NC5hntR1!rmq4ks5)eoGygcKLv*` zHy$MRtz)3Fdd&xB+n$wvJ`t1?;su$D4|awgI8-Z7gQxI*m><9Lvj*Dt2zBa}fSYK!iwB*0MM4{(sj^z6({#g~%!ESz0ScuV##FX2s_x0KcQ@#2y z^4fl;gNHE7_>|`C&YksAPCasd+cGl(DMIP|yLKB=Ms3REwtu{KHxSW_^cIe&!3B-b z*#zdp+f`k5v*($<|AO zYP*C0vDlBlkJZ1`7nlKjalYN$K(+2RCtYp{6L)5kb8R9?tDq(=>uZeIB{4C_twsm{ zu$FS9{NwHkGXdL2-{G3Roj8(8y~ zjUSk8W3vg_PqgiA4L>eNmJd@8QBL-Gf+DC6fWUma=@f>l{*3n*8I}*Dr~0(@jgR

*V=!V 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

0b)@hh(+OYZr`e-s9`Pz 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 HGSq?q3Q-lU literal 0 HcmV?d00001