From 52c4ebf92572ea09a22450e842d16bcf66c43031 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Tue, 12 Jan 2021 21:11:59 +0530 Subject: [PATCH 01/30] Initial commit: nilearn-style reporting --- pypreprocess/external/tempita/_tempita.py | 5 +- pypreprocess/nipype_preproc_spm_utils.py | 71 ++++++-- pypreprocess/reporting/base_reporter.py | 76 +++++++++ pypreprocess/reporting/check_preprocessing.py | 63 ++++++- pypreprocess/reporting/preproc_reporter.py | 129 +++++++++++---- .../nilearn_report_template.html | 154 ++++++++++++++++++ pypreprocess/subject_data.py | 32 +++- 7 files changed, 463 insertions(+), 67 deletions(-) create mode 100644 pypreprocess/reporting/template_reports/nilearn_report_template.html diff --git a/pypreprocess/external/tempita/_tempita.py b/pypreprocess/external/tempita/_tempita.py index c5ca5c98..16cb5e75 100644 --- a/pypreprocess/external/tempita/_tempita.py +++ b/pypreprocess/external/tempita/_tempita.py @@ -34,6 +34,7 @@ def foo(bar): import re import sys import cgi +from html import escape try: from urllib import quote as url_quote except ImportError: # Py3 @@ -440,10 +441,10 @@ def html_quote(value, force=True): if not isinstance(value, basestring_): value = coerce_text(value) if sys.version >= "3" and isinstance(value, bytes): - value = cgi.escape(value.decode('latin1'), 1) + value = escape(value.decode('latin1'), 1) value = value.encode('latin1') else: - value = cgi.escape(value, 1) + value = escape(value, 1) if sys.version < "3": if is_unicode(value): value = value.encode('ascii', 'xmlcharrefreplace') diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index a09a86c2..b85f8b2f 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -29,7 +29,7 @@ from .subject_data import SubjectData from .reporting.base_reporter import ( ResultsGallery, ProgressReport, copy_web_conf_files, - get_module_source_code, dict_to_html_ul) + get_module_source_code, dict_to_html_ul,NilearnReport) from .reporting.preproc_reporter import ( _set_templates, generate_preproc_undergone_docstring, get_dataset_report_log_html_template, @@ -41,6 +41,9 @@ _do_subject_coregister as _pp_do_subject_coregister, _do_subject_smooth as _pp_do_subject_smooth) +from nilearn.plotting.html_document import HTMLDocument +from .reporting.preproc_reporter import generate_tsdiffana_thumbnail + # configure SPM EPI_TEMPLATE = SPM_DIR = SPM_T1_TEMPLATE = T1_TEMPLATE = None GM_TEMPLATE = WM_TEMPLATE = CSF_TEMPLATE = None @@ -239,7 +242,8 @@ def _do_subject_slice_timing(subject_data, TR, TA=None, spm_dir=None, def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, caching=True, report=True, software="spm", spm_dir=None, matlab_exec=None, spm_mcr=None, - hardlink_output=True, **kwargs): + hardlink_output=True,nilearn_report=None + , **kwargs): """ Wrapper for running spm.Realign with optional reporting. @@ -377,7 +381,8 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, # generate realignment thumbs if report: - subject_data.generate_realignment_thumbnails() + subject_data.generate_realignment_thumbnails( + nilearn_report=nilearn_report) return subject_data.sanitize() @@ -385,8 +390,8 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, matlab_exec=None, spm_mcr=None, coreg_anat_to_func=False, caching=True, - report=True, software="spm", hardlink_output=True, - **kwargs): + report=True, software="spm", hardlink_output=True + ,nilearn_report=None,**kwargs): """Wrapper for running spm.Coregister with optional reporting. If subject_data has a `results_gallery` attribute, then QA thumbnails will @@ -551,7 +556,8 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, # generate coregistration thumbs if report: - subject_data.generate_coregistration_thumbnails() + subject_data.generate_coregistration_thumbnails( + nilearn_report=nilearn_report) return subject_data.sanitize() @@ -559,7 +565,7 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, matlab_exec=None, spm_mcr=None, normalize=False, caching=True, report=True, software="spm", - hardlink_output=True): + hardlink_output=True,nilearn_report=None): """ Wrapper for running spm.Segment with optional reporting. @@ -691,7 +697,7 @@ def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, # generate segmentation thumbs if report: - subject_data.generate_segmentation_thumbnails() + subject_data.generate_segmentation_thumbnails(nilearn_report=nilearn_report) return subject_data.sanitize() @@ -702,7 +708,9 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, anat_write_voxel_sizes=[1, 1, 1], report=True, software="spm", hardlink_output=True, smooth_software="spm", epi_template=None, - t1_template=None, coregister=True, **kwargs): + t1_template=None, coregister=True + , nilearn_report=None + , **kwargs): """ Wrapper for running spm.Segment with optional reporting. @@ -924,13 +932,15 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, # generate thumbnails if report: - subject_data.generate_normalization_thumbnails() + subject_data.generate_normalization_thumbnails( + nilearn_report=nilearn_report) # explicit smoothing if np.sum(fwhm) + np.sum(anat_fwhm) > 0: subject_data = _do_subject_smooth( subject_data, fwhm, anat_fwhm=anat_fwhm, caching=caching, - report=report, software=smooth_software) + report=report, software=smooth_software + ,nilearn_report=nilearn_report) # commit output files if hardlink_output: subject_data.hardlink_output_files() @@ -940,7 +950,8 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, def _do_subject_smooth(subject_data, fwhm, anat_fwhm=None, spm_dir=None, matlab_exec=None, spm_mcr=None, caching=True, - software="spm", report=True, hardlink_output=True): + software="spm", report=True, hardlink_output=True, + nilearn_report=None): """ Wrapper for running spm.Smooth with optional reporting. @@ -1211,6 +1222,7 @@ def do_subject_preproc( preproc_undergone=None, prepreproc_undergone="", caching=True, + nilearn_report=True, **kwargs ): """ @@ -1360,6 +1372,10 @@ def do_subject_preproc( preproc_undergone=preproc_undergone, tsdiffana=tsdiffana) + if nilearn_report: + nilearn_report = NilearnReport() + nilearn_report.preproc_undergone=preproc_undergone + ############################# # Slice-Timing Correction ############################# @@ -1387,7 +1403,7 @@ def do_subject_preproc( register_to_mean=register_to_mean, report=report, hardlink_output=hardlink_output, - software=realign_software, + software=realign_software, nilearn_report=nilearn_report, **kwargs.get("interface_realign", {})) # handle failed node @@ -1406,6 +1422,7 @@ def do_subject_preproc( report=report, hardlink_output=hardlink_output, software=coregister_software, + nilearn_report=nilearn_report, **kwargs.get("interface_coregister", {})) # handle failed node @@ -1419,7 +1436,7 @@ def do_subject_preproc( if segment: subject_data = _do_subject_segment( subject_data, caching=caching, normalize=normalize, report=report, - hardlink_output=hardlink_output) + hardlink_output=hardlink_output,nilearn_report=nilearn_report) # handle failed node if subject_data.failed: @@ -1439,7 +1456,7 @@ def do_subject_preproc( smooth_software=smooth_software, epi_template=epi_template, t1_template=t1_template, - coregister=coregister, + coregister=coregister,nilearn_report=nilearn_report, **kwargs.get("interface_normalize", {})) # handle failed node @@ -1456,7 +1473,8 @@ def do_subject_preproc( caching=caching, report=report, hardlink_output=hardlink_output, - software=smooth_software) + software=smooth_software, + nilearn_report=nilearn_report) # handle failed node if subject_data.failed: @@ -1471,6 +1489,27 @@ def do_subject_preproc( if report and not dartel: subject_data.finalize_report(last_stage=last_stage) + if nilearn_report not in [False, None]: + + if tsdiffana: + generate_tsdiffana_thumbnail( + subject_data.func, subject_data.session_ids + , subject_data.subject_id + , output_dir=subject_data.reports_output_dir + , nilearn_report=nilearn_report) + + html_outfile = os.path.join(subject_data.output_dir, 'nilearn_report.html') + nilearn_out_obj = os.path.join(subject_data.output_dir, 'nilearn_report_components') + + HTML_report = HTMLDocument(nilearn_report.create_report()) + HTML_report.save_as_html(html_outfile) + print('Nilearn-style report created') + + out_file = open(nilearn_out_obj, 'w') + out_file.write('{}'.format(nilearn_report)) + out_file.write('\n\n{}'.format(list(nilearn_report.keys()))) + out_file.close() + # return preprocessed subject_data return subject_data.sanitize() diff --git a/pypreprocess/reporting/base_reporter.py b/pypreprocess/reporting/base_reporter.py index 00794301..20533737 100644 --- a/pypreprocess/reporting/base_reporter.py +++ b/pypreprocess/reporting/base_reporter.py @@ -13,6 +13,9 @@ import numpy as np from ..external.tempita import HTMLTemplate, bunch +import string + + # find package path ROOT_DIR = os.path.split(os.path.abspath(__file__))[0] @@ -283,6 +286,79 @@ def commit_thumbnails(self, thumbnails, id=None): fd.write(self.raw) fd.close() +class NilearnReport(dict): + """ + Nilearn-style reporting. + """ + + def __setitem__(self, key, item): + self.__dict__[key] = item + + def __getitem__(self, key): + return self.__dict__[key] + + def __repr__(self): + return repr(self.__dict__) + + def __len__(self): + return len(self.__dict__) + + def __delitem__(self, key): + del self.__dict__[key] + + def clear(self): + return self.__dict__.clear() + + def copy(self): + return self.__dict__.copy() + + def has_key(self, k): + return k in self.__dict__ + + def update(self, *args, **kwargs): + return self.__dict__.update(*args, **kwargs) + + def keys(self): + return self.__dict__.keys() + + def values(self): + return self.__dict__.values() + + def items(self): + return self.__dict__.items() + + def pop(self, *args): + return self.__dict__.pop(*args) + + def __cmp__(self, dict_): + return self.__cmp__(self.__dict__, dict_) + + def __contains__(self, item): + return item in self.__dict__ + + def __iter__(self): + return iter(self.__dict__) + + def __unicode__(self): + return unicode(repr(self.__dict__)) + + def create_report(self): + + HTML_TEMPLATE_ROOT_PATH = os.path.join(os.path.dirname(__file__), + 'template_reports') + + html_template_path = os.path.join(HTML_TEMPLATE_ROOT_PATH, + 'nilearn_report_template.html') + + with open(html_template_path) as html_file_obj: + html_template_text = html_file_obj.read() + + nilearn_report_template = string.Template(html_template_text) + + nilearn_report_template = nilearn_report_template.safe_substitute(**self.__dict__) + + return nilearn_report_template + def commit_subject_thumnbail_to_parent_gallery(thumbnail, subject_id, parent_results_gallery): diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index 6b764059..d93ceba7 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -14,8 +14,33 @@ from ..io_utils import load_vols EPS = np.finfo(float).eps +import string +from nilearn.reporting.utils import figure_to_svg_quoted -def plot_spm_motion_parameters(parameter_file, title=None, close=False): +def _plot_to_svg(plot): + """ + Creates an SVG image as a data URL + from a Matplotlib Axes or Figure object. + + Parameters + ---------- + plot: Matplotlib Axes or Figure object + Contains the plot information. + + Returns + ------- + url_plot_svg: String + SVG Image Data URL + """ + try: + return figure_to_svg_quoted(plot) + except AttributeError: + return figure_to_svg_quoted(plot.figure) + + +def plot_spm_motion_parameters(parameter_file, lengths + , title=None, output_filename=None, close=False + , nilearn_report=False): """ Plot motion parameters obtained with SPM software Parameters @@ -40,14 +65,28 @@ def plot_spm_motion_parameters(parameter_file, title=None, close=False): # do plotting plt.figure() plt.plot(motion) + + aux = 0. + for l in lengths[:-1]: + pl.axvline(aux + l, linestyle="--", c="k") + aux += l + if not title is None: plt.title(title) plt.legend(('TransX', 'TransY', 'TransZ', 'RotX', 'RotY', 'RotZ'), loc="upper left", ncol=2) plt.xlabel('time(scans)') plt.ylabel('Estimated motion (mm/degrees)') - if close: - plt.close() + + if nilearn_report not in [False,None]: + fig = plt.gcf() + svg_plot = _plot_to_svg(fig) + return svg_plot + + if not output_filename is None: + plt.savefig(output_filename, bbox_inches="tight", dpi=200) + if close: + plt.close() def compute_cv(data, mask_array=None): @@ -66,7 +105,8 @@ def plot_registration(reference_img, coregistered_img, cut_coords=None, display_mode='ortho', cmap=None, close=False, - output_filename=None): + output_filename=None, + nilearn_report=False): """Plots a coregistered source as bg/contrast for the reference image Parameters @@ -113,6 +153,11 @@ def plot_registration(reference_img, coregistered_img, # misc _slicer.title(title, size=12, color='w', alpha=0) + if nilearn_report not in [False,None]: + fig = plt.gcf() + svg_plot = _plot_to_svg(fig) + return svg_plot + if not output_filename is None: try: plt.savefig(output_filename, dpi=200, bbox_inches='tight', @@ -127,7 +172,8 @@ def plot_registration(reference_img, coregistered_img, def plot_segmentation( img, gm_filename, wm_filename=None, csf_filename=None, output_filename=None, cut_coords=None, display_mode='ortho', - cmap=None, title='GM + WM + CSF segmentation', close=False): + cmap=None, title='GM + WM + CSF segmentation', close=False, + nilearn_report=False): """ Plot a contour mapping of the GM, WM, and CSF of a subject's anatomical. @@ -171,9 +217,16 @@ def plot_segmentation( # misc _slicer.title(title, size=12, color='w', alpha=0) + + if nilearn_report not in [False,None]: + fig = plt.gcf() + svg_plot = _plot_to_svg(fig) + return svg_plot + if not output_filename is None: plt.savefig(output_filename, bbox_inches='tight', dpi=200, facecolor="k", edgecolor="k") if close: plt.close() + diff --git a/pypreprocess/reporting/preproc_reporter.py b/pypreprocess/reporting/preproc_reporter.py index e93e2b88..0b025551 100644 --- a/pypreprocess/reporting/preproc_reporter.py +++ b/pypreprocess/reporting/preproc_reporter.py @@ -37,13 +37,36 @@ PYPREPROCESS_URL, DARTEL_URL, ROOT_DIR, commit_subject_thumnbail_to_parent_gallery, get_dataset_report_log_html_template, - copy_web_conf_files) + copy_web_conf_files, + NilearnReport) +import matplotlib.pyplot as plt +from nilearn.plotting.html_document import HTMLDocument +from nilearn.reporting.utils import figure_to_svg_quoted # misc SPM_DIR = _configure_spm() EPI_TEMPLATE = GM_TEMPLATE = T1_TEMPLATE = WM_TEMPLATE = CSF_TEMPLATE = None +def _plot_to_svg(plot): + """ + Creates an SVG image as a data URL + from a Matplotlib Axes or Figure object. + + Parameters + ---------- + plot: Matplotlib Axes or Figure object + Contains the plot information. + + Returns + ------- + url_plot_svg: String + SVG Image Data URL + """ + try: + return figure_to_svg_quoted(plot) + except AttributeError: + return figure_to_svg_quoted(plot.figure) def _set_templates(spm_dir=SPM_DIR): """ @@ -421,7 +444,8 @@ def get_nipype_report(nipype_report_filename): def generate_registration_thumbnails( target, source, procedure_name, output_dir, tooltip=None, - execution_log_html_filename=None, results_gallery=None): + execution_log_html_filename=None, results_gallery=None, + nilearn_report=None): """ Generates QA thumbnails post-registration. @@ -462,8 +486,9 @@ def generate_registration_thumbnails( outline = os.path.join(output_dir, "%s_on_%s_outline.png" % (target[1], source[1])) - qa_mem.cache(plot_registration)( - target[0], source[0], output_filename=outline, close=True, + svg_outline = qa_mem.cache(plot_registration)( + target[0], source[0], output_filename=outline + , close=True, nilearn_report=nilearn_report, title="Outline of %s on %s" % (target[1], source[1])) # create thumbnail @@ -476,6 +501,10 @@ def generate_registration_thumbnails( results_gallery.commit_thumbnails(thumbnail) + if nilearn_report not in [False,None]: + nilearn_report['{}_{}_outline'.format(target[1], source[1]) + ]=svg_outline + # plot outline (edge map) of the normalized image # on the SPM MNI template source, target = (target, source) @@ -485,13 +514,15 @@ def generate_registration_thumbnails( source[1])) outline_axial = os.path.join( output_dir, "%s_on_%s_outline_axial.png" % (target[1], source[1])) - qa_mem.cache(plot_registration)( + svg_outline_axial = qa_mem.cache(plot_registration)( target[0], source[0], output_filename=outline_axial, close=True, - display_mode='z', title="Outline of %s on %s" % (target[1], - source[1])) + display_mode='z', nilearn_report=nilearn_report, + title="Outline of %s on %s" % (target[1],source[1])) + output['axial'] = outline_axial - qa_mem.cache(plot_registration)( - target[0], source[0], output_filename=outline, close=True, + svg_outline = qa_mem.cache(plot_registration)( + target[0], source[0], output_filename=outline + , close=True, nilearn_report=nilearn_report, title="Outline of %s on %s" % (target[1], source[1])) # create thumbnail @@ -503,12 +534,19 @@ def generate_registration_thumbnails( thumbnail.description = thumb_desc results_gallery.commit_thumbnails(thumbnail) + if nilearn_report not in [False,None]: + nilearn_report['{}_{}_outline'.format(target[1], source[1]) + ]=svg_outline + nilearn_report['{}_{}_outline_axial'.format(target[1], source[1]) + ]=svg_outline_axial + return output def generate_normalization_thumbnails( normalized_files, output_dir, brain="EPI", tooltip=None, - execution_log_html_filename=None, results_gallery=None): + execution_log_html_filename=None, results_gallery=None, + nilearn_report=None): """Generate thumbnails after spatial normalization or subject Parameters @@ -535,12 +573,14 @@ def generate_normalization_thumbnails( (T1_TEMPLATE, 'template'), (normalized, brain), "Normalization of %s" % brain, output_dir, execution_log_html_filename=execution_log_html_filename, - results_gallery=results_gallery, tooltip=tooltip) + results_gallery=results_gallery, tooltip=tooltip, + nilearn_report=nilearn_report) def generate_coregistration_thumbnails( target, source, output_dir, execution_log_html_filename=None, - results_gallery=None, tooltip=None, comment=True): + results_gallery=None, tooltip=None, comment=True + , nilearn_report=None): """ Generates QA thumbnails post-coregistration. @@ -565,14 +605,15 @@ def generate_coregistration_thumbnails( return generate_registration_thumbnails( target, source, "Coregistration %s" % comments, output_dir, execution_log_html_filename=execution_log_html_filename, - results_gallery=results_gallery, tooltip=tooltip) + results_gallery=results_gallery, tooltip=tooltip + , nilearn_report=nilearn_report) def generate_segmentation_thumbnails( normalized_files, output_dir, subject_gm_file=None, subject_wm_file=None, subject_csf_file=None, only_native=False, brain='func', comments="", execution_log_html_filename=None, - cmap=None, tooltip=None, results_gallery=None): + cmap=None, tooltip=None, results_gallery=None, nilearn_report=None): """Generates thumbnails after indirect normalization (segmentation + normalization) @@ -624,7 +665,7 @@ def generate_segmentation_thumbnails( thumb_desc += (" (see execution " "log)") % (os.path.basename( execution_log_html_filename)) - _brain = "(%s) %s" % (comments, brain) if comments else brain + _brain = "%s_%s" % (comments, brain) if comments else brain # plot contours of template compartments on subject's brain if not only_native: @@ -634,16 +675,16 @@ def generate_segmentation_thumbnails( template_compartments_contours_axial = os.path.join( output_dir, "template_compartments_contours_on_%s_axial.png" % _brain) - qa_mem.cache(plot_segmentation)( + svg_template_compartments_contours_axial = qa_mem.cache(plot_segmentation)( normalized_file, GM_TEMPLATE, wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, display_mode='z', cmap=cmap, output_filename=template_compartments_contours_axial, - title="template TPMs", close=True) - qa_mem.cache(plot_segmentation)( + nilearn_report=nilearn_report,title="template TPMs", close=True) + svg_template_compartments_contours = qa_mem.cache(plot_segmentation)( normalized_file, gm_filename=GM_TEMPLATE, wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, output_filename=template_compartments_contours, - cmap=cmap, close=True, + cmap=cmap, close=True, nilearn_report=nilearn_report, title=("Template GM, WM, and CSF TPM contours on " "subject's %s") % _brain) @@ -659,6 +700,12 @@ def generate_segmentation_thumbnails( results_gallery.commit_thumbnails(thumbnail) + if nilearn_report not in [False,None]: + nilearn_report['{}_template_compartments_contours'.format(_brain) + ]=svg_template_compartments_contours + nilearn_report['{}_template_compartments_contours_axial'.format(_brain) + ]=svg_template_compartments_contours_axial + output['axial'] = template_compartments_contours_axial # plot contours of subject's compartments on subject's brain @@ -670,22 +717,23 @@ def generate_segmentation_thumbnails( output_dir, "subject_tpms_contours_on_subject_%s_axial.png" % _brain) - qa_mem.cache(plot_segmentation)( + svg_subject_compartments_contours_axial = qa_mem.cache(plot_segmentation)( normalized_file, subject_gm_file, wm_filename=subject_wm_file, csf_filename=subject_csf_file, display_mode='z', cmap=cmap, output_filename=subject_compartments_contours_axial, - close=True, title="subject TPMs") + nilearn_report=nilearn_report, close=True, title="subject TPMs") title_prefix = "Subject's GM" if subject_wm_file: title_prefix += ", WM" if subject_csf_file: title_prefix += ", and CSF" - qa_mem.cache(plot_segmentation)( + + svg_subject_compartments_contours = qa_mem.cache(plot_segmentation)( normalized_file, subject_gm_file, wm_filename=subject_wm_file, csf_filename=subject_csf_file, cmap=cmap, close=True, output_filename=subject_compartments_contours, - title=("%s TPM contours on " + nilearn_report=nilearn_report, title=("%s TPM contours on " "subject's %s") % (title_prefix, _brain)) # create thumbnail @@ -700,6 +748,12 @@ def generate_segmentation_thumbnails( results_gallery.commit_thumbnails(thumbnail) + if nilearn_report not in [False,None]: + nilearn_report['{}_subject_compartments_contours'.format(_brain) + ]=svg_subject_compartments_contours + nilearn_report['{}_subject_compartments_contours_axial'.format(_brain) + ]=svg_subject_compartments_contours_axial + if only_native: output['axial'] = subject_compartments_contours_axial @@ -708,7 +762,7 @@ def generate_segmentation_thumbnails( def generate_tsdiffana_thumbnail(image_files, sessions, subject_id, output_dir, results_gallery=None, - tooltips=None): + tooltips=None, nilearn_report=None): """Generate tsdiffana thumbnails Parameters @@ -741,9 +795,15 @@ def generate_tsdiffana_thumbnail(image_files, sessions, subject_id, output_dir, "tsdiffana_plot_{0}.png") output_filenames = [output_filename_template.format(i) for i in range(len(figures))] + + cnt = 0 for fig, output_filename in zip(figures, output_filenames): - fig.savefig(output_filename, bbox_inches="tight", dpi=200) - pl.close(fig) + if nilearn_report not in [False,None]: + nilearn_report['ts_diff_plots_{}'.format(cnt)]=_plot_to_svg(fig) + else: + fig.savefig(output_filename, bbox_inches="tight", dpi=200) + pl.close(fig) + cnt+=1 if tooltips is None: tooltips = [None] * len(output_filename) @@ -767,7 +827,8 @@ def generate_tsdiffana_thumbnail(image_files, sessions, subject_id, def generate_realignment_thumbnails( estimated_motion, output_dir, sessions=None, tooltip=None, - execution_log_html_filename=None, results_gallery=None): + execution_log_html_filename=None, results_gallery=None + , nilearn_report=None): """Function generates thumbnails for realignment parameters.""" sessions = [1] if sessions is None else sessions if isinstance(estimated_motion, str): @@ -783,15 +844,10 @@ def generate_realignment_thumbnails( lengths = [len(each) for each in tmp] estimated_motion = np.vstack(tmp) rp_plot = os.path.join(output_dir, 'rp_plot.png') - plot_spm_motion_parameters( - estimated_motion, + svg_rp_plot = plot_spm_motion_parameters(parameter_file=estimated_motion + ,output_filename=rp_plot, lengths=lengths + , close=True, nilearn_report=nilearn_report, title="Plot of Estimated motion for %d sessions" % len(sessions)) - aux = 0. - for l in lengths[:-1]: - pl.axvline(aux + l, linestyle="--", c="k") - aux += l - pl.savefig(rp_plot, bbox_inches="tight", dpi=200) - pl.close() # create thumbnail if results_gallery: @@ -807,6 +863,9 @@ def generate_realignment_thumbnails( results_gallery.commit_thumbnails(thumbnail) output['rp_plot'] = rp_plot + if nilearn_report not in [False,None]: + nilearn_report['rp_plot']=svg_rp_plot + return output diff --git a/pypreprocess/reporting/template_reports/nilearn_report_template.html b/pypreprocess/reporting/template_reports/nilearn_report_template.html new file mode 100644 index 00000000..8ebebb98 --- /dev/null +++ b/pypreprocess/reporting/template_reports/nilearn_report_template.html @@ -0,0 +1,154 @@ + + + + + + ${page_title} + + + + + + +

Preprocessing steps:

+ ${preproc_undergone} + +

anatomical_image_subject_compartments_contours

+ + +

anatomical_image_subject_compartments_contours_axial

+ + + +

mean_functional_image_subject_compartments_contours

+ + +

mean_functional_image_subject_compartments_contours_axial

+ + + +

(warped) anatomical_image_subject_compartments_contours

+ + + +

(warped) anatomical_image_template_compartments_contours_axial

+ + + +

(warped) anatomical_image_subject_compartments_contours

+ + + +

(warped) anatomical_image_subject_compartments_contours_axial

+ + +

template_anatomical_image_outline

+ + +

anatomical_image_template_outline

+ + +

anatomical_image_template_outline_axial

+ + +

(warped) mean_functional_image_template_compartments_contours

+ + +

(warped) mean_functional_image_template_compartments_contours_axial

+ + +

(warped) mean_functional_image_subject_compartments_contours

+ + +

(warped) mean_functional_image_subject_compartments_contours_axial

+ + +

template_mean_functional_image_outline

+ + +

mean_functional_image_template_outline

+ + +

mean_functional_image_template_outline

+ + +

mean_functional_image_anatomical_image_outline

+ + +

mean_functional_image_anatomical_image_outline_axial

+ + +

anatomical_image_mean_functional_image_outline

+ + +

rp_plot

+ + +

ts_diff_plots

+ + + + + + + +
+ Built using Nilearn. + Source code on GitHub. + File bugs & feature requests + here. +
+ + diff --git a/pypreprocess/subject_data.py b/pypreprocess/subject_data.py index 27fa9d4a..6c17c1ae 100644 --- a/pypreprocess/subject_data.py +++ b/pypreprocess/subject_data.py @@ -606,6 +606,14 @@ def init_report(self, parent_results_gallery=None, fd.write(str(main_html)) fd.close() + # def init_nil_report(self,preproc_undergone=None): + + # self.nil_report_output_dir = os.path.join(self.output_dir, "nil_report") + # if not os.path.exists(self.nil_report_output_dir): + # os.makedirs(self.nil_report_output_dir) + + # self. + def finalize_report(self, parent_results_gallery=None, last_stage=False): """ Finalizes the business of reporting. @@ -658,7 +666,8 @@ def reporting_enabled(self): """ return hasattr(self, 'results_gallery') - def generate_realignment_thumbnails(self, log=True, nipype=True): + def generate_realignment_thumbnails(self, log=True, nipype=True + , nilearn_report=None): """ Invoked to generate post-realignment thumbnails. @@ -689,12 +698,14 @@ def generate_realignment_thumbnails(self, log=True, nipype=True): self.reports_output_dir, sessions=self.session_ids, execution_log_html_filename=execution_log_html if log else None, tooltip=mc_tooltip, - results_gallery=self.results_gallery) + results_gallery=self.results_gallery + ,nilearn_report=nilearn_report) self.final_thumbnail.img.src = thumbs['rp_plot'] def generate_coregistration_thumbnails(self, coreg_func_to_anat=True, log=True, comment=True, - nipype=True): + nipype=True,nilearn_report=None + ): """ Invoked to generate post-coregistration thumbnails. @@ -733,10 +744,12 @@ def generate_coregistration_thumbnails(self, coreg_func_to_anat=True, self.reports_output_dir, execution_log_html_filename=execution_log_html if log else None, results_gallery=self.results_gallery, - comment=comment, tooltip=reg_tooltip) + comment=comment, tooltip=reg_tooltip + , nilearn_report=nilearn_report) self.final_thumbnail.img.src = thumbs['axial'] - def generate_segmentation_thumbnails(self, log=True, nipype=True): + def generate_segmentation_thumbnails(self, log=True, nipype=True, + nilearn_report=None): """ Invoked to generate post-segmentation thumbnails. @@ -780,11 +793,12 @@ def generate_segmentation_thumbnails(self, log=True, nipype=True): cmap=cmap, brain=brain_name, only_native=True, execution_log_html_filename=execution_log_html if log else None, results_gallery=self.results_gallery, - tooltip=segment_tooltip) + tooltip=segment_tooltip, nilearn_report=nilearn_report) if 'func' in brain_name: self.final_thumbnail.img.src = thumbs['axial'] - def generate_normalization_thumbnails(self, log=True, nipype=True): + def generate_normalization_thumbnails(self, log=True, nipype=True + ,nilearn_report=None): """ Invoked to generate post-normalization thumbnails. @@ -818,7 +832,7 @@ def generate_normalization_thumbnails(self, log=True, nipype=True): warped_tpms["mwcsf"], "Segment", self.reports_output_dir) if log else None, results_gallery=self.results_gallery, - tooltip=segment_tooltip) + tooltip=segment_tooltip,nilearn_report=nilearn_report) if 'func' in brain_name or not self.func: self.final_thumbnail.img.src = thumbs['axial'] @@ -842,7 +856,7 @@ def generate_normalization_thumbnails(self, log=True, nipype=True): brain, self.reports_output_dir, brain=brain_name, execution_log_html_filename=execution_log_html if log else None, results_gallery=self.results_gallery, - tooltip=reg_tooltip) + tooltip=reg_tooltip,nilearn_report=nilearn_report) if not segmented and ("func" in brain_name or not self.func): self.final_thumbnail.img.src = thumbs['axial'] From 987331ffbd2d360c76bfbb2c9d7626ed47ba6782 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Fri, 15 Jan 2021 13:26:28 +0530 Subject: [PATCH 02/30] FIX: minor fixes. --- pypreprocess/nipype_preproc_spm_utils.py | 4 ++-- pypreprocess/reporting/check_preprocessing.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index b85f8b2f..2a587843 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -1506,8 +1506,8 @@ def do_subject_preproc( print('Nilearn-style report created') out_file = open(nilearn_out_obj, 'w') - out_file.write('{}'.format(nilearn_report)) - out_file.write('\n\n{}'.format(list(nilearn_report.keys()))) + # out_file.write('{}'.format(nilearn_report)) + out_file.write('{}'.format(list(nilearn_report.keys()))) out_file.close() # return preprocessed subject_data diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index d93ceba7..90de1100 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -81,12 +81,14 @@ def plot_spm_motion_parameters(parameter_file, lengths if nilearn_report not in [False,None]: fig = plt.gcf() svg_plot = _plot_to_svg(fig) - return svg_plot if not output_filename is None: plt.savefig(output_filename, bbox_inches="tight", dpi=200) if close: plt.close() + svg_plot = None + + return svg_plot def compute_cv(data, mask_array=None): @@ -156,7 +158,6 @@ def plot_registration(reference_img, coregistered_img, if nilearn_report not in [False,None]: fig = plt.gcf() svg_plot = _plot_to_svg(fig) - return svg_plot if not output_filename is None: try: @@ -167,7 +168,9 @@ def plot_registration(reference_img, coregistered_img, except AttributeError: # XXX TODO: handle this case!! pass + svg_plot = None + return svg_plot def plot_segmentation( img, gm_filename, wm_filename=None, csf_filename=None, @@ -221,7 +224,6 @@ def plot_segmentation( if nilearn_report not in [False,None]: fig = plt.gcf() svg_plot = _plot_to_svg(fig) - return svg_plot if not output_filename is None: plt.savefig(output_filename, bbox_inches='tight', dpi=200, @@ -229,4 +231,7 @@ def plot_segmentation( edgecolor="k") if close: plt.close() + + svg_plot = None + return svg_plot \ No newline at end of file From d651b68bd0b11123c03f63d89180ec4fab383b4e Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Mon, 18 Jan 2021 13:45:08 +0530 Subject: [PATCH 03/30] UPDATE: Independent new reporting. --- pypreprocess/nipype_preproc_spm_utils.py | 74 ++- pypreprocess/reporting/nilearn_reporting.py | 627 ++++++++++++++++++ .../nilearn_report_template.html | 148 +---- .../template_reports/report_sub_template.html | 2 + 4 files changed, 688 insertions(+), 163 deletions(-) create mode 100644 pypreprocess/reporting/nilearn_reporting.py create mode 100644 pypreprocess/reporting/template_reports/report_sub_template.html diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index 2a587843..b489bd5a 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -43,6 +43,7 @@ from nilearn.plotting.html_document import HTMLDocument from .reporting.preproc_reporter import generate_tsdiffana_thumbnail +from .reporting.nilearn_reporting import * # configure SPM EPI_TEMPLATE = SPM_DIR = SPM_T1_TEMPLATE = T1_TEMPLATE = None @@ -381,8 +382,16 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, # generate realignment thumbs if report: - subject_data.generate_realignment_thumbnails( - nilearn_report=nilearn_report) + subject_data.generate_realignment_thumbnails() + + if nilearn_report not in [False,None]: + rp_plot = generate_realignment_report( + subject_data=subject_data, + estimated_motion=subject_data.realignment_parameters, + output_dir=subject_data.output_dir, + nilearn_report=nilearn_report + ) + nilearn_report['all_components'].append(rp_plot) return subject_data.sanitize() @@ -556,8 +565,14 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, # generate coregistration thumbs if report: - subject_data.generate_coregistration_thumbnails( + subject_data.generate_coregistration_thumbnails() + + if nilearn_report not in [False,None]: + correg_plot = generate_corregistration_report( + subject_data=subject_data, + output_dir=subject_data.output_dir, nilearn_report=nilearn_report) + nilearn_report['all_components'].append(correg_plot) return subject_data.sanitize() @@ -697,7 +712,17 @@ def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, # generate segmentation thumbs if report: - subject_data.generate_segmentation_thumbnails(nilearn_report=nilearn_report) + subject_data.generate_segmentation_thumbnails() + + if nilearn_report not in [False,None]: + seg_plot = generate_segmentation_report( + subject_data=subject_data, + output_dir=subject_data.output_dir, + subject_gm_file=getattr(subject_data, 'gm', None), + subject_wm_file=getattr(subject_data, 'wm', None), + subject_csf_file=getattr(subject_data, 'csf', None), + only_native=True,nilearn_report=nilearn_report) + nilearn_report['all_components'].append(seg_plot) return subject_data.sanitize() @@ -932,15 +957,20 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, # generate thumbnails if report: - subject_data.generate_normalization_thumbnails( + subject_data.generate_normalization_thumbnails() + + if nilearn_report not in [False,None]: + norm_plot = generate_normalization_report( + subject_data=subject_data, + output_dir=subject_data.output_dir, nilearn_report=nilearn_report) + nilearn_report['all_components'].append(norm_plot) # explicit smoothing if np.sum(fwhm) + np.sum(anat_fwhm) > 0: subject_data = _do_subject_smooth( subject_data, fwhm, anat_fwhm=anat_fwhm, caching=caching, - report=report, software=smooth_software - ,nilearn_report=nilearn_report) + report=report, software=smooth_software) # commit output files if hardlink_output: subject_data.hardlink_output_files() @@ -1373,8 +1403,23 @@ def do_subject_preproc( tsdiffana=tsdiffana) if nilearn_report: + preproc_undergone = generate_preproc_undergone_docstring( + dcm2nii=subject_data.isdicom, + deleteorient=deleteorient, + slice_timing=slice_timing, + realign=realign, + coregister=coregister, + segment=segment, + normalize=normalize, + fwhm=fwhm, anat_fwhm=anat_fwhm, + dartel=dartel, + coreg_func_to_anat=not coreg_anat_to_func, + prepreproc_undergone=prepreproc_undergone, + has_func=subject_data.func + ) nilearn_report = NilearnReport() - nilearn_report.preproc_undergone=preproc_undergone + nilearn_report['preproc_undergone']=preproc_undergone + nilearn_report['all_components']=[] ############################# # Slice-Timing Correction @@ -1492,24 +1537,17 @@ def do_subject_preproc( if nilearn_report not in [False, None]: if tsdiffana: - generate_tsdiffana_thumbnail( + tdsdiffana_plot = generate_tsdiffana_report( subject_data.func, subject_data.session_ids , subject_data.subject_id - , output_dir=subject_data.reports_output_dir - , nilearn_report=nilearn_report) + , output_dir=subject_data.output_dir) + nilearn_report['all_components'].append(tdsdiffana_plot) html_outfile = os.path.join(subject_data.output_dir, 'nilearn_report.html') - nilearn_out_obj = os.path.join(subject_data.output_dir, 'nilearn_report_components') - HTML_report = HTMLDocument(nilearn_report.create_report()) HTML_report.save_as_html(html_outfile) print('Nilearn-style report created') - out_file = open(nilearn_out_obj, 'w') - # out_file.write('{}'.format(nilearn_report)) - out_file.write('{}'.format(list(nilearn_report.keys()))) - out_file.close() - # return preprocessed subject_data return subject_data.sanitize() diff --git a/pypreprocess/reporting/nilearn_reporting.py b/pypreprocess/reporting/nilearn_reporting.py new file mode 100644 index 00000000..a540094a --- /dev/null +++ b/pypreprocess/reporting/nilearn_reporting.py @@ -0,0 +1,627 @@ +import string +import os +from nilearn.reporting.utils import figure_to_svg_quoted +from matplotlib.pyplot import cm +import joblib +from joblib import Memory +import numpy as np +from .check_preprocessing import * +from ..time_diff import plot_tsdiffs, multi_session_time_slice_diffs +from ..io_utils import compute_mean_3D_image +from ..configure_spm import _configure_spm, _get_version_spm + +# from pypreprocess.subject_data import * + +HTML_TEMPLATE_ROOT_PATH = os.path.join(os.path.dirname(__file__), + 'template_reports') +SPM_DIR = _configure_spm() +# EPI_TEMPLATE = GM_TEMPLATE = T1_TEMPLATE = WM_TEMPLATE = CSF_TEMPLATE = None + +def _set_templates(spm_dir=SPM_DIR): + """ + Sets paths of templates (T1, GM, WM, etc.), so that post-segmenation, + etc. reporting works well. + + """ + global EPI_TEMPLATE, T1_TEMPLATE, GM_TEMPLATE, WM_TEMPLATE, CSF_TEMPLATE + + spm_version = _get_version_spm(SPM_DIR) + + # Set the tpm and template paths according to SPM version + if spm_version == 'spm12': + template_path = 'toolbox/OldNorm' + tpm_path = 'toolbox/OldSeg' + else: + template_path = 'templates' + tpm_path = 'tpm' + + # configure template images + EPI_TEMPLATE = os.path.join(SPM_DIR, template_path, 'EPI.nii') + SPM_T1_TEMPLATE = os.path.join(SPM_DIR, template_path, 'T1.nii') + T1_TEMPLATE = "/usr/share/data/fsl-mni152-templates/avg152T1.nii" + if not os.path.isfile(T1_TEMPLATE): + T1_TEMPLATE += '.gz' + if not os.path.exists(T1_TEMPLATE): + T1_TEMPLATE = SPM_T1_TEMPLATE + GM_TEMPLATE = os.path.join(SPM_DIR, tpm_path, 'grey.nii') + WM_TEMPLATE = os.path.join(SPM_DIR, tpm_path, 'white.nii') + CSF_TEMPLATE = os.path.join(SPM_DIR, tpm_path, 'csf.nii') + +def embed_in_HTML(html_template_file,components_to_embed): + + """ Embeds components in a given HTML template """ + + html_template_path = os.path.join(HTML_TEMPLATE_ROOT_PATH, + html_template_file) + with open(html_template_path) as html_file_obj: + html_template_text = html_file_obj.read() + string_template = string.Template(html_template_text) + + string_text = string_template.safe_substitute(**components_to_embed) + + return string_text + +class NilearnReport(dict): + """ + Dictionary for holding components for Nilearn-style report. + """ + + def __setitem__(self, key, item): + self.__dict__[key] = item + + def __getitem__(self, key): + return self.__dict__[key] + + def __repr__(self): + return repr(self.__dict__) + + def __len__(self): + return len(self.__dict__) + + def __delitem__(self, key): + del self.__dict__[key] + + def clear(self): + return self.__dict__.clear() + + def copy(self): + return self.__dict__.copy() + + def has_key(self, k): + return k in self.__dict__ + + def update(self, *args, **kwargs): + return self.__dict__.update(*args, **kwargs) + + def keys(self): + return self.__dict__.keys() + + def values(self): + return self.__dict__.values() + + def items(self): + return self.__dict__.items() + + def pop(self, *args): + return self.__dict__.pop(*args) + + def __cmp__(self, dict_): + return self.__cmp__(self.__dict__, dict_) + + def __contains__(self, item): + return item in self.__dict__ + + def __iter__(self): + return iter(self.__dict__) + + def __unicode__(self): + return unicode(repr(self.__dict__)) + + def create_report(self): + + self.__dict__['all_components'] = '\n'.join( + self.__dict__['all_components']) + + nilearn_report_template = embed_in_HTML( + 'nilearn_report_template.html', self.__dict__) + + return nilearn_report_template + + +def _plot_to_svg(plot): + """ + Creates an SVG image as a data URL + from a Matplotlib Axes or Figure object. + + Parameters + ---------- + plot: Matplotlib Axes or Figure object + Contains the plot information. + + Returns + ------- + url_plot_svg: String + SVG Image Data URL + """ + try: + return figure_to_svg_quoted(plot) + except AttributeError: + return figure_to_svg_quoted(plot.figure) + + +def generate_realignment_report(subject_data,estimated_motion, output_dir + , tooltip=None, execution_log_html_filename=None + , nilearn_report=None): + + """ Creates plots associated with realignment + and returns it as an SVG url. """ + + subject_data._set_session_ids() + if not hasattr(subject_data, 'realignment_parameters'): + raise ValueError("'realignment_parameters' attribute not set!") + + for_substitution = {} + + sessions = [1] if subject_data.session_ids is None else subject_data.session_ids + if isinstance(estimated_motion, str): + estimated_motion = [estimated_motion] + tmp = [] + for x in estimated_motion: + if isinstance(x, str): + x = np.loadtxt(x) + tmp.append(x) + lengths = [len(each) for each in tmp] + estimated_motion = np.vstack(tmp) + + for_substitution['plot'] = plot_spm_motion_parameters( + parameter_file=estimated_motion + , lengths=lengths, close=True, nilearn_report=nilearn_report, + title="Plot of Estimated motion for %d sessions" % len(sessions)) + for_substitution['heading'] = "Plot of Estimated motion for %d sessions" % len(sessions) + + rp_plot_text = embed_in_HTML('report_sub_template.html' + ,for_substitution) + + return rp_plot_text + +def generate_registration_report(target, source, procedure_name, + output_dir, execution_log_html_filename=None, nilearn_report=None): + + """ Plots target's outline on source image and returns them + as SVG url embedded in HTML. """ + + reg_plot = [] + for_substitution = {} + + # prepare for smart caching + qa_cache_dir = os.path.join(output_dir, "QA") + if not os.path.exists(qa_cache_dir): + os.makedirs(qa_cache_dir) + qa_mem = joblib.Memory(cachedir=qa_cache_dir, verbose=5) + + # plot outline (edge map) of template on the + # normalized image + for_substitution['heading'] = procedure_name + for_substitution['plot'] = qa_mem.cache(plot_registration)( + target[0], source[0] + , close=True, nilearn_report=nilearn_report, + title="Outline of %s on %s" % (target[1], source[1])) + reg_plot_text = embed_in_HTML('report_sub_template.html' + ,for_substitution) + reg_plot.append(reg_plot_text) + + # plot outline (edge map) of the normalized image + # on the SPM MNI template + source, target = (target, source) + for_substitution['plot'] = qa_mem.cache(plot_registration)( + target[0], source[0], close=True, nilearn_report=nilearn_report, + title="Outline of %s on %s" % (target[1], source[1])) + for_substitution['heading'] = "" + reg_plot_text = embed_in_HTML('report_sub_template.html' + ,for_substitution) + reg_plot.append(reg_plot_text) + + return '\n'.join(reg_plot) + + +def generate_corregistration_report(subject_data, output_dir + , coreg_func_to_anat=True, execution_log_html_filename=None + , tooltip=None, comment=True, nilearn_report=None): + + """ Creates plots associated with corregistration + and returns them as SVG url embedded in HTML. + Calls generate_registration_plot. """ + + subject_data._set_session_ids() + + if subject_data.anat is None: + print("Subject 'anat' field is None; nothing to do") + return + + src, ref = subject_data.func, subject_data.anat + src_brain, ref_brain = "mean_functional_image", "anatomical_image" + if not coreg_func_to_anat: + src, ref = ref, src + src_brain, ref_brain = ref_brain, src_brain + + comments = " %s == > %s" % (src_brain, ref_brain) + return generate_registration_report((ref, ref_brain) + , (src, src_brain), "Coregistration %s" % comments, + output_dir, nilearn_report=nilearn_report) + + +def generate_segmentation_report(subject_data, output_dir + , subject_gm_file=None, subject_wm_file=None, subject_csf_file=None + , comment="", only_native=False, tooltip=None + , execution_log_html_filename=None, nilearn_report=None): + + """ Creates plots associated with segmentation + and returns them as SVG url embedded in HTML. """ + _set_templates() + + seg_plot = [] + for_substitution = {} + + subject_data._set_session_ids() + + segmented = False + for item in ['gm', 'wm', 'csf']: + if hasattr(subject_data, item): + segmented = True + break + if not segmented: + return + + for brain_name, brain, cmap in zip( + ['anatomical_image', 'mean_functional_image'], + [subject_data.anat, subject_data.func], + [cm.gray, cm.nipy_spectral]): + if not brain: + continue + + if isinstance(brain, str): + brain = brain + else: + mean_normalized_file = os.path.join(output_dir, + "%s.nii" % brain_name) + compute_mean_3D_image(brain, + output_filename=mean_normalized_file) + brain = mean_normalized_file + + # prepare for smart caching + qa_cache_dir = os.path.join(output_dir, "QA") + if not os.path.exists(qa_cache_dir): + os.makedirs(qa_cache_dir) + qa_mem = joblib.Memory(cachedir=qa_cache_dir, verbose=5) + + _brain_name = "%s_%s" % (comment, brain_name) + for_substitution['heading'] = "Segmentation of %s " % _brain_name + + # plot contours of template compartments on subject's brain + if not only_native: + for_substitution['plot']=qa_mem.cache(plot_segmentation)( + brain, gm_filename=GM_TEMPLATE, + wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, + cmap=cmap, close=True, nilearn_report=nilearn_report, + title=("Template GM, WM, and CSF TPM contours on " + "subject's %s") % _brain_name) + + seg_plot_text = embed_in_HTML('report_sub_template.html' + ,for_substitution) + seg_plot.append(seg_plot_text) + + # plot contours of subject's compartments on subject's brain + if subject_gm_file: + title_prefix = "Subject's GM" + if subject_wm_file: + title_prefix += ", WM" + if subject_csf_file: + title_prefix += ", and CSF" + + for_substitution['plot'] = qa_mem.cache(plot_segmentation)( + brain, subject_gm_file, wm_filename=subject_wm_file, + csf_filename=subject_csf_file, cmap=cmap, close=True, + nilearn_report=nilearn_report, title=("%s TPM contours on " + "subject's %s") % (title_prefix, _brain_name)) + if not only_native: + for_substitution['heading'] = "" + + seg_plot_text = embed_in_HTML('report_sub_template.html' + ,for_substitution) + seg_plot.append(seg_plot_text) + + return '\n'.join(seg_plot) + +def generate_normalization_report(subject_data, output_dir + , tooltip=None, execution_log_html_filename=None + , nilearn_report=None): + + """ Creates plots associated with normalization + and returns them as SVG url embedded in HTML. + Calls generate_segmentation_report + and generate_registration_report. """ + + norm_plot = [] + subject_data._set_session_ids() + + warped_tpms = dict( + (tpm, getattr(subject_data, tpm, None)) + for tpm in ["mwgm", "mwwm", "mwcsf"]) + segmented = warped_tpms.values().count(None) < len(warped_tpms) + + if segmented: + norm_plot.append(generate_segmentation_report( + subject_data=subject_data, + output_dir=subject_data.output_dir, + subject_gm_file=warped_tpms["mwgm"], + subject_wm_file=warped_tpms["mwwm"], + subject_csf_file=warped_tpms["mwcsf"], + comment="warped",nilearn_report=nilearn_report)) + + for brain_name, brain, cmap in zip( + ['anatomical_image', 'mean_functional_image'], + [subject_data.anat, subject_data.func], + [cm.gray, cm.nipy_spectral]): + if not brain: + continue + + if isinstance(brain, str): + normalized = brain + else: + mean_normalized_img = compute_mean_3D_image(brain) + normalized = mean_normalized_img + + norm_plot.append(generate_registration_report( + (T1_TEMPLATE, 'template'), (normalized, brain_name), + "Normalization of %s" % brain_name, output_dir, + nilearn_report=nilearn_report)) + + return '\n'.join(norm_plot) + +def generate_tsdiffana_report(image_files, sessions, subject_id, + output_dir, tooltips=None): + + """ Creates plots associated with tsdiffana + and returns them as SVG url embedded in HTML. """ + + tsdiffana_plot = [] + for_substitution = {} + # plot figures + qa_cache_dir = os.path.join(output_dir, "QA") + if not os.path.exists(qa_cache_dir): + os.makedirs(qa_cache_dir) + qa_mem = joblib.Memory(cachedir=qa_cache_dir, verbose=5) + results = qa_mem.cache(multi_session_time_slice_diffs)(image_files) + axes = plot_tsdiffs(results, use_same_figure=False) + figures = [ax.get_figure() for ax in axes] + heading_template = "tsdiffana plot {0}" + headings = [heading_template.format(i) for i in range(len(figures))] + + for fig, head in zip(figures, headings): + for_substitution['plot'] =_plot_to_svg(fig) + for_substitution['heading'] = head + tsdiffana_plot_text = embed_in_HTML('report_sub_template.html' + ,for_substitution) + tsdiffana_plot.append(tsdiffana_plot_text) + + return '\n'.join(tsdiffana_plot) + + +# def generate_preproc_undergone_docstring( +# prepreproc_undergone="", +# tools_used=None, +# dcm2nii=False, +# deleteorient=False, +# fwhm=None, anat_fwhm=None, +# bet=False, +# slice_timing=False, +# realign=False, +# coregister=False, +# coreg_func_to_anat=False, +# segment=False, +# normalize=False, +# func_write_voxel_sizes=None, +# anat_write_voxel_sizes=None, +# dartel=False, +# additional_preproc_undergone="", +# command_line=None, +# details_filename=None, +# has_func=True, +# ): +# """ +# Generates a brief description of the pipeline used in the preprocessing. + +# Parameters +# ---------- +# command_line: string, optional (None) +# exact command-line typed at the terminal to run the underlying +# preprocessing (useful if someone were to reproduce your results) + +# """ +# fwhm = sanitize_fwhm(fwhm) +# anat_fwhm = sanitize_fwhm(anat_fwhm) +# if dartel: +# normalize = False +# segment = False + +# # which tools were used ? +# if tools_used is None: +# tools_used = ( +# 'All preprocessing was done using pypreprocess,' +# ' a collection of python scripts and modules for ' +# 'preprocessing functional and anatomical MRI data.' % ( +# PYPREPROCESS_URL)) +# preproc_undergone = "

%s

" % tools_used + +# # what was actually typed at the command line ? +# if not command_line is None: +# preproc_undergone += "Command-line: %s
" % command_line +# preproc_undergone += ( +# "
For each subject, the following preprocessing steps have " +# "been done:") + +# preproc_undergone += "
    " +# if prepreproc_undergone: +# preproc_undergone += "
  • %s
  • " % prepreproc_undergone +# if dcm2nii: +# preproc_undergone += ( +# "
  • " +# "dcm2nii has been used to convert input images from DICOM to nifti" +# " format" +# "
  • ") +# if deleteorient: +# preproc_undergone += ( +# "
  • " +# "Orientation-specific meta-data in the image headers have " +# "been suspected as garbage and stripped-off to prevent severe " +# "mis-registration problems." +# "
  • ") +# if bet: +# preproc_undergone += ( +# "
  • " +# "Brain extraction has been applied to strip-off the skull" +# " and other non-brain tissues. This prevents later " +# "registration problems like the skull been (mis-)aligned " +# "unto the cortical surface, " +# "etc.
  • ") +# if slice_timing: +# preproc_undergone += ( +# "
  • " +# "Slice-Timing Correction (STC) has been done to interpolate the " +# "BOLD signal in time, so that in the sequel we can safely pretend" +# " all 3D volumes within a TR (Repetition Time) were " +# "acquired simultaneously, an crucial assumption for any further " +# "analysis of the data (GLM, ICA, etc.). " +# "
  • " +# ) +# if realign: +# preproc_undergone += ( +# "
  • " +# "Motion correction has been done so as to estimate, and then " +# "correct for, subject's head motion." +# "
  • " +# ) +# if coregister: +# preproc_undergone += "
  • " +# if coreg_func_to_anat: +# preproc_undergone += ( +# "The subject's functional images have been coregistered " +# "to their anatomical image." +# ) +# else: +# preproc_undergone += ( +# "The subject's anatomical image has been coregistered " +# "against their functional images.") +# preproc_undergone += ( +# " Coregistration is important as it allows: (1) segmentation of " +# "the functional via segmentation of the anatomical brain; " +# "(2) inter-subject registration via inter-anatomical registration," +# " a trick referred to as 'Indirect Normalization'; " +# "(3) ROIs to be defined on the anatomy, making it " +# "possible for activation maps to be projected and appreciated" +# " thereupon." +# "
  • ") +# if segment: +# preproc_undergone += ( +# "
  • " +# "Tissue Segmentation has been employed to segment the " +# "anatomical image into GM, WM, and CSF compartments, using " +# "template TPMs (Tissue Probability Maps).
  • ") +# if normalize: +# if segment: +# if has_func: +# salt = (" The same deformations have been " +# 'applied to the functional images.') +# else: salt = "" +# preproc_undergone += ( +# "
  • " +# "The segmented anatomical image has been warped " +# "into the MNI template space by applying the deformations " +# "learnt during segmentation.%s
  • " % salt) +# else: +# if coregister: +# preproc_undergone += ( +# "
  • " +# "Deformations from native to standard space have been " +# "learnt on the anatomically brain. These deformations " +# "have been used to warp the functional and anatomical " +# "images into standard space.
  • ") +# else: +# preproc_undergone += ( +# "
  • " +# "The functional images have been warped from native to " +# "standard space via classical normalization.
  • ") +# if dartel: +# preproc_undergone += ( +# "
  • " +# "Group/Inter-subject Normalization has been done using the " +# "SPM8 DARTEL to warp subject brains into " +# "MNI space. " +# "The idea is to register images by computing a “flow" +# " field” which can then be “exponentiated" +# "” to generate both forward and backward deformation" +# "s. Processing begins with the “import” " +# "step. This involves taking the parameter files " +# "produced by the segmentation (NewSegment), and writing " +# "out rigidly " +# "transformed versions of the tissue class images, " +# "such that they are in as close alignment as possible with" +# " the tissue probability maps.   " +# "The next step is the registration itself. This involves " +# "the simultaneous registration of e.g. GM with GM, " +# "WM with WM and 1-(GM+WM) with 1-(GM+WM) (when needed, the" +# " 1- (GM+WM) class is generated implicitly, so there " +# "is no need to include this class yourself). This " +# "procedure begins by creating a mean of all the images, " +# "which is used as an initial template. Deformations " +# "from this template to each of the individual images " +# "are computed, and the template is then re-generated" +# " by applying the inverses of the deformations to " +# "the images and averaging. This procedure is repeated a " +# "number of times.  Finally, warped " +# "versions of the images (or other images that are in " +# "alignment with them) can be generated. " +# "
  • ") % DARTEL_URL +# if normalize or dartel: +# if (not func_write_voxel_sizes is None or +# not anat_write_voxel_sizes is None): +# preproc_undergone += "
  • " +# sep = "" +# if not func_write_voxel_sizes is None: +# preproc_undergone += ( +# "Output functional images have been re-written with voxel " +# "size %smm x %smm x %smm.") % tuple( +# func_write_voxel_sizes) +# sep = " " +# if not anat_write_voxel_sizes is None: +# preproc_undergone += ( +# "%sThe output anatomical image has been re-written with " +# "voxel " +# "size %smm x %smm x %smm.") % tuple([sep] + list( +# anat_write_voxel_sizes)) +# preproc_undergone += "
  • " + +# if additional_preproc_undergone: +# preproc_undergone += additional_preproc_undergone +# if np.sum(fwhm) > 0 and has_func: +# preproc_undergone += ( +# "
  • " +# "The functional images have been " +# "smoothed with a %smm x %smm x %smm " +# "Gaussian kernel.
  • ") % tuple(fwhm) +# if np.sum(anat_fwhm) > 0: +# preproc_undergone += ( +# "
  • " +# "The anatomical image has been " +# "smoothed with a %smm x %smm x %smm " +# "Gaussian kernel.") % tuple(anat_fwhm) +# if segment: +# preproc_undergone += ( +# " Warped TPMs have been smoothed with the same kernel.") +# if not details_filename is None: +# preproc_undergone += ( +# " See complete configuration used for preprocessing" +# " here") % os.path.basename(details_filename) +# preproc_undergone += "
" + +# return preproc_undergone \ No newline at end of file diff --git a/pypreprocess/reporting/template_reports/nilearn_report_template.html b/pypreprocess/reporting/template_reports/nilearn_report_template.html index 8ebebb98..fc55efa6 100644 --- a/pypreprocess/reporting/template_reports/nilearn_report_template.html +++ b/pypreprocess/reporting/template_reports/nilearn_report_template.html @@ -1,154 +1,12 @@ - - - - ${page_title} - - - - -

Preprocessing steps:

+

Preprocessing steps:

${preproc_undergone} -

anatomical_image_subject_compartments_contours

- - -

anatomical_image_subject_compartments_contours_axial

- - - -

mean_functional_image_subject_compartments_contours

- - -

mean_functional_image_subject_compartments_contours_axial

- - - -

(warped) anatomical_image_subject_compartments_contours

- - - -

(warped) anatomical_image_template_compartments_contours_axial

- - - -

(warped) anatomical_image_subject_compartments_contours

- - - -

(warped) anatomical_image_subject_compartments_contours_axial

- - -

template_anatomical_image_outline

- - -

anatomical_image_template_outline

- - -

anatomical_image_template_outline_axial

- - -

(warped) mean_functional_image_template_compartments_contours

- - -

(warped) mean_functional_image_template_compartments_contours_axial

- - -

(warped) mean_functional_image_subject_compartments_contours

- - -

(warped) mean_functional_image_subject_compartments_contours_axial

- - -

template_mean_functional_image_outline

- - -

mean_functional_image_template_outline

- - -

mean_functional_image_template_outline

- - -

mean_functional_image_anatomical_image_outline

- - -

mean_functional_image_anatomical_image_outline_axial

- - -

anatomical_image_mean_functional_image_outline

- - -

rp_plot

- - -

ts_diff_plots

- - - - - - +

Visualisation for each step:

+ ${all_components} -
- Built using Nilearn. - Source code on GitHub. - File bugs & feature requests - here. -
diff --git a/pypreprocess/reporting/template_reports/report_sub_template.html b/pypreprocess/reporting/template_reports/report_sub_template.html new file mode 100644 index 00000000..12366a6a --- /dev/null +++ b/pypreprocess/reporting/template_reports/report_sub_template.html @@ -0,0 +1,2 @@ +

${heading}

+ \ No newline at end of file From 9a6c29fd9254e18ed83341f2d2a08c40239519d9 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Wed, 20 Jan 2021 12:36:32 +0530 Subject: [PATCH 04/30] Minor fixes --- pypreprocess/nipype_preproc_spm_utils.py | 12 +- pypreprocess/reporting/base_reporter.py | 74 --- pypreprocess/reporting/check_preprocessing.py | 35 +- pypreprocess/reporting/nilearn_reporting.py | 512 ++++++++---------- pypreprocess/reporting/preproc_reporter.py | 35 +- 5 files changed, 245 insertions(+), 423 deletions(-) diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index b489bd5a..764265ba 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -42,7 +42,6 @@ _do_subject_smooth as _pp_do_subject_smooth) from nilearn.plotting.html_document import HTMLDocument -from .reporting.preproc_reporter import generate_tsdiffana_thumbnail from .reporting.nilearn_reporting import * # configure SPM @@ -1403,7 +1402,7 @@ def do_subject_preproc( tsdiffana=tsdiffana) if nilearn_report: - preproc_undergone = generate_preproc_undergone_docstring( + preproc_undergone = generate_preproc_steps_docstring( dcm2nii=subject_data.isdicom, deleteorient=deleteorient, slice_timing=slice_timing, @@ -1417,7 +1416,7 @@ def do_subject_preproc( prepreproc_undergone=prepreproc_undergone, has_func=subject_data.func ) - nilearn_report = NilearnReport() + nilearn_report = {} nilearn_report['preproc_undergone']=preproc_undergone nilearn_report['all_components']=[] @@ -1543,11 +1542,8 @@ def do_subject_preproc( , output_dir=subject_data.output_dir) nilearn_report['all_components'].append(tdsdiffana_plot) - html_outfile = os.path.join(subject_data.output_dir, 'nilearn_report.html') - HTML_report = HTMLDocument(nilearn_report.create_report()) - HTML_report.save_as_html(html_outfile) - print('Nilearn-style report created') - + create_report(nilearn_report,subject_data.output_dir) + # return preprocessed subject_data return subject_data.sanitize() diff --git a/pypreprocess/reporting/base_reporter.py b/pypreprocess/reporting/base_reporter.py index 20533737..8c08d47b 100644 --- a/pypreprocess/reporting/base_reporter.py +++ b/pypreprocess/reporting/base_reporter.py @@ -286,80 +286,6 @@ def commit_thumbnails(self, thumbnails, id=None): fd.write(self.raw) fd.close() -class NilearnReport(dict): - """ - Nilearn-style reporting. - """ - - def __setitem__(self, key, item): - self.__dict__[key] = item - - def __getitem__(self, key): - return self.__dict__[key] - - def __repr__(self): - return repr(self.__dict__) - - def __len__(self): - return len(self.__dict__) - - def __delitem__(self, key): - del self.__dict__[key] - - def clear(self): - return self.__dict__.clear() - - def copy(self): - return self.__dict__.copy() - - def has_key(self, k): - return k in self.__dict__ - - def update(self, *args, **kwargs): - return self.__dict__.update(*args, **kwargs) - - def keys(self): - return self.__dict__.keys() - - def values(self): - return self.__dict__.values() - - def items(self): - return self.__dict__.items() - - def pop(self, *args): - return self.__dict__.pop(*args) - - def __cmp__(self, dict_): - return self.__cmp__(self.__dict__, dict_) - - def __contains__(self, item): - return item in self.__dict__ - - def __iter__(self): - return iter(self.__dict__) - - def __unicode__(self): - return unicode(repr(self.__dict__)) - - def create_report(self): - - HTML_TEMPLATE_ROOT_PATH = os.path.join(os.path.dirname(__file__), - 'template_reports') - - html_template_path = os.path.join(HTML_TEMPLATE_ROOT_PATH, - 'nilearn_report_template.html') - - with open(html_template_path) as html_file_obj: - html_template_text = html_file_obj.read() - - nilearn_report_template = string.Template(html_template_text) - - nilearn_report_template = nilearn_report_template.safe_substitute(**self.__dict__) - - return nilearn_report_template - - def commit_subject_thumnbail_to_parent_gallery(thumbnail, subject_id, parent_results_gallery): """Commit thumbnail (summary of subject_report) to parent results gallery, diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index 90de1100..7c899d74 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -15,28 +15,7 @@ EPS = np.finfo(float).eps import string -from nilearn.reporting.utils import figure_to_svg_quoted - -def _plot_to_svg(plot): - """ - Creates an SVG image as a data URL - from a Matplotlib Axes or Figure object. - - Parameters - ---------- - plot: Matplotlib Axes or Figure object - Contains the plot information. - - Returns - ------- - url_plot_svg: String - SVG Image Data URL - """ - try: - return figure_to_svg_quoted(plot) - except AttributeError: - return figure_to_svg_quoted(plot.figure) - +from .nilearn_reporting import _plot_to_svg def plot_spm_motion_parameters(parameter_file, lengths , title=None, output_filename=None, close=False @@ -81,12 +60,13 @@ def plot_spm_motion_parameters(parameter_file, lengths if nilearn_report not in [False,None]: fig = plt.gcf() svg_plot = _plot_to_svg(fig) - + else: + svg_plot = None + if not output_filename is None: plt.savefig(output_filename, bbox_inches="tight", dpi=200) if close: plt.close() - svg_plot = None return svg_plot @@ -158,6 +138,8 @@ def plot_registration(reference_img, coregistered_img, if nilearn_report not in [False,None]: fig = plt.gcf() svg_plot = _plot_to_svg(fig) + else: + svg_plot = None if not output_filename is None: try: @@ -168,7 +150,6 @@ def plot_registration(reference_img, coregistered_img, except AttributeError: # XXX TODO: handle this case!! pass - svg_plot = None return svg_plot @@ -224,6 +205,8 @@ def plot_segmentation( if nilearn_report not in [False,None]: fig = plt.gcf() svg_plot = _plot_to_svg(fig) + else: + svg_plot = None if not output_filename is None: plt.savefig(output_filename, bbox_inches='tight', dpi=200, @@ -232,6 +215,4 @@ def plot_segmentation( if close: plt.close() - svg_plot = None - return svg_plot \ No newline at end of file diff --git a/pypreprocess/reporting/nilearn_reporting.py b/pypreprocess/reporting/nilearn_reporting.py index a540094a..3d241b13 100644 --- a/pypreprocess/reporting/nilearn_reporting.py +++ b/pypreprocess/reporting/nilearn_reporting.py @@ -7,10 +7,10 @@ import numpy as np from .check_preprocessing import * from ..time_diff import plot_tsdiffs, multi_session_time_slice_diffs -from ..io_utils import compute_mean_3D_image +from ..io_utils import compute_mean_3D_image, sanitize_fwhm from ..configure_spm import _configure_spm, _get_version_spm +from nilearn.plotting.html_document import HTMLDocument -# from pypreprocess.subject_data import * HTML_TEMPLATE_ROOT_PATH = os.path.join(os.path.dirname(__file__), 'template_reports') @@ -61,71 +61,20 @@ def embed_in_HTML(html_template_file,components_to_embed): return string_text -class NilearnReport(dict): - """ - Dictionary for holding components for Nilearn-style report. - """ - - def __setitem__(self, key, item): - self.__dict__[key] = item - - def __getitem__(self, key): - return self.__dict__[key] - - def __repr__(self): - return repr(self.__dict__) - - def __len__(self): - return len(self.__dict__) - - def __delitem__(self, key): - del self.__dict__[key] - - def clear(self): - return self.__dict__.clear() - - def copy(self): - return self.__dict__.copy() - - def has_key(self, k): - return k in self.__dict__ - - def update(self, *args, **kwargs): - return self.__dict__.update(*args, **kwargs) - - def keys(self): - return self.__dict__.keys() - - def values(self): - return self.__dict__.values() - - def items(self): - return self.__dict__.items() - - def pop(self, *args): - return self.__dict__.pop(*args) - def __cmp__(self, dict_): - return self.__cmp__(self.__dict__, dict_) +def create_report(nilearn_report, output_dir, filename='nilearn_report.html'): - def __contains__(self, item): - return item in self.__dict__ + html_outfile = os.path.join(output_dir, 'nilearn_report.html') - def __iter__(self): - return iter(self.__dict__) + nilearn_report['all_components'] = '\n'.join( + nilearn_report['all_components']) + nilearn_report_text = embed_in_HTML( + 'nilearn_report_template.html', nilearn_report) + nilearn_report_HTML = HTMLDocument(nilearn_report_text) - def __unicode__(self): - return unicode(repr(self.__dict__)) + nilearn_report_HTML.save_as_html(html_outfile) - def create_report(self): - - self.__dict__['all_components'] = '\n'.join( - self.__dict__['all_components']) - - nilearn_report_template = embed_in_HTML( - 'nilearn_report_template.html', self.__dict__) - - return nilearn_report_template + return 'Nilearn-style report created: {}'.format(html_outfile) def _plot_to_svg(plot): @@ -386,12 +335,13 @@ def generate_tsdiffana_report(image_files, sessions, subject_id, tsdiffana_plot = [] for_substitution = {} - # plot figures + qa_cache_dir = os.path.join(output_dir, "QA") if not os.path.exists(qa_cache_dir): os.makedirs(qa_cache_dir) qa_mem = joblib.Memory(cachedir=qa_cache_dir, verbose=5) results = qa_mem.cache(multi_session_time_slice_diffs)(image_files) + # plot figures axes = plot_tsdiffs(results, use_same_figure=False) figures = [ax.get_figure() for ax in axes] heading_template = "tsdiffana plot {0}" @@ -407,221 +357,221 @@ def generate_tsdiffana_report(image_files, sessions, subject_id, return '\n'.join(tsdiffana_plot) -# def generate_preproc_undergone_docstring( -# prepreproc_undergone="", -# tools_used=None, -# dcm2nii=False, -# deleteorient=False, -# fwhm=None, anat_fwhm=None, -# bet=False, -# slice_timing=False, -# realign=False, -# coregister=False, -# coreg_func_to_anat=False, -# segment=False, -# normalize=False, -# func_write_voxel_sizes=None, -# anat_write_voxel_sizes=None, -# dartel=False, -# additional_preproc_undergone="", -# command_line=None, -# details_filename=None, -# has_func=True, -# ): -# """ -# Generates a brief description of the pipeline used in the preprocessing. - -# Parameters -# ---------- -# command_line: string, optional (None) -# exact command-line typed at the terminal to run the underlying -# preprocessing (useful if someone were to reproduce your results) - -# """ -# fwhm = sanitize_fwhm(fwhm) -# anat_fwhm = sanitize_fwhm(anat_fwhm) -# if dartel: -# normalize = False -# segment = False - -# # which tools were used ? -# if tools_used is None: -# tools_used = ( -# 'All preprocessing was done using pypreprocess,' -# ' a collection of python scripts and modules for ' -# 'preprocessing functional and anatomical MRI data.' % ( -# PYPREPROCESS_URL)) -# preproc_undergone = "

%s

" % tools_used - -# # what was actually typed at the command line ? -# if not command_line is None: -# preproc_undergone += "Command-line: %s
" % command_line -# preproc_undergone += ( -# "
For each subject, the following preprocessing steps have " -# "been done:") - -# preproc_undergone += "
    " -# if prepreproc_undergone: -# preproc_undergone += "
  • %s
  • " % prepreproc_undergone -# if dcm2nii: -# preproc_undergone += ( -# "
  • " -# "dcm2nii has been used to convert input images from DICOM to nifti" -# " format" -# "
  • ") -# if deleteorient: -# preproc_undergone += ( -# "
  • " -# "Orientation-specific meta-data in the image headers have " -# "been suspected as garbage and stripped-off to prevent severe " -# "mis-registration problems." -# "
  • ") -# if bet: -# preproc_undergone += ( -# "
  • " -# "Brain extraction has been applied to strip-off the skull" -# " and other non-brain tissues. This prevents later " -# "registration problems like the skull been (mis-)aligned " -# "unto the cortical surface, " -# "etc.
  • ") -# if slice_timing: -# preproc_undergone += ( -# "
  • " -# "Slice-Timing Correction (STC) has been done to interpolate the " -# "BOLD signal in time, so that in the sequel we can safely pretend" -# " all 3D volumes within a TR (Repetition Time) were " -# "acquired simultaneously, an crucial assumption for any further " -# "analysis of the data (GLM, ICA, etc.). " -# "
  • " -# ) -# if realign: -# preproc_undergone += ( -# "
  • " -# "Motion correction has been done so as to estimate, and then " -# "correct for, subject's head motion." -# "
  • " -# ) -# if coregister: -# preproc_undergone += "
  • " -# if coreg_func_to_anat: -# preproc_undergone += ( -# "The subject's functional images have been coregistered " -# "to their anatomical image." -# ) -# else: -# preproc_undergone += ( -# "The subject's anatomical image has been coregistered " -# "against their functional images.") -# preproc_undergone += ( -# " Coregistration is important as it allows: (1) segmentation of " -# "the functional via segmentation of the anatomical brain; " -# "(2) inter-subject registration via inter-anatomical registration," -# " a trick referred to as 'Indirect Normalization'; " -# "(3) ROIs to be defined on the anatomy, making it " -# "possible for activation maps to be projected and appreciated" -# " thereupon." -# "
  • ") -# if segment: -# preproc_undergone += ( -# "
  • " -# "Tissue Segmentation has been employed to segment the " -# "anatomical image into GM, WM, and CSF compartments, using " -# "template TPMs (Tissue Probability Maps).
  • ") -# if normalize: -# if segment: -# if has_func: -# salt = (" The same deformations have been " -# 'applied to the functional images.') -# else: salt = "" -# preproc_undergone += ( -# "
  • " -# "The segmented anatomical image has been warped " -# "into the MNI template space by applying the deformations " -# "learnt during segmentation.%s
  • " % salt) -# else: -# if coregister: -# preproc_undergone += ( -# "
  • " -# "Deformations from native to standard space have been " -# "learnt on the anatomically brain. These deformations " -# "have been used to warp the functional and anatomical " -# "images into standard space.
  • ") -# else: -# preproc_undergone += ( -# "
  • " -# "The functional images have been warped from native to " -# "standard space via classical normalization.
  • ") -# if dartel: -# preproc_undergone += ( -# "
  • " -# "Group/Inter-subject Normalization has been done using the " -# "SPM8 DARTEL to warp subject brains into " -# "MNI space. " -# "The idea is to register images by computing a “flow" -# " field” which can then be “exponentiated" -# "” to generate both forward and backward deformation" -# "s. Processing begins with the “import” " -# "step. This involves taking the parameter files " -# "produced by the segmentation (NewSegment), and writing " -# "out rigidly " -# "transformed versions of the tissue class images, " -# "such that they are in as close alignment as possible with" -# " the tissue probability maps.   " -# "The next step is the registration itself. This involves " -# "the simultaneous registration of e.g. GM with GM, " -# "WM with WM and 1-(GM+WM) with 1-(GM+WM) (when needed, the" -# " 1- (GM+WM) class is generated implicitly, so there " -# "is no need to include this class yourself). This " -# "procedure begins by creating a mean of all the images, " -# "which is used as an initial template. Deformations " -# "from this template to each of the individual images " -# "are computed, and the template is then re-generated" -# " by applying the inverses of the deformations to " -# "the images and averaging. This procedure is repeated a " -# "number of times.  Finally, warped " -# "versions of the images (or other images that are in " -# "alignment with them) can be generated. " -# "
  • ") % DARTEL_URL -# if normalize or dartel: -# if (not func_write_voxel_sizes is None or -# not anat_write_voxel_sizes is None): -# preproc_undergone += "
  • " -# sep = "" -# if not func_write_voxel_sizes is None: -# preproc_undergone += ( -# "Output functional images have been re-written with voxel " -# "size %smm x %smm x %smm.") % tuple( -# func_write_voxel_sizes) -# sep = " " -# if not anat_write_voxel_sizes is None: -# preproc_undergone += ( -# "%sThe output anatomical image has been re-written with " -# "voxel " -# "size %smm x %smm x %smm.") % tuple([sep] + list( -# anat_write_voxel_sizes)) -# preproc_undergone += "
  • " - -# if additional_preproc_undergone: -# preproc_undergone += additional_preproc_undergone -# if np.sum(fwhm) > 0 and has_func: -# preproc_undergone += ( -# "
  • " -# "The functional images have been " -# "smoothed with a %smm x %smm x %smm " -# "Gaussian kernel.
  • ") % tuple(fwhm) -# if np.sum(anat_fwhm) > 0: -# preproc_undergone += ( -# "
  • " -# "The anatomical image has been " -# "smoothed with a %smm x %smm x %smm " -# "Gaussian kernel.") % tuple(anat_fwhm) -# if segment: -# preproc_undergone += ( -# " Warped TPMs have been smoothed with the same kernel.") -# if not details_filename is None: -# preproc_undergone += ( -# " See complete configuration used for preprocessing" -# " here") % os.path.basename(details_filename) -# preproc_undergone += "
" - -# return preproc_undergone \ No newline at end of file +def generate_preproc_steps_docstring( + prepreproc_undergone="", + tools_used=None, + dcm2nii=False, + deleteorient=False, + fwhm=None, anat_fwhm=None, + bet=False, + slice_timing=False, + realign=False, + coregister=False, + coreg_func_to_anat=False, + segment=False, + normalize=False, + func_write_voxel_sizes=None, + anat_write_voxel_sizes=None, + dartel=False, + additional_preproc_undergone="", + command_line=None, + details_filename=None, + has_func=True, + ): + """ + Generates a brief description of the pipeline used in the preprocessing. + + Parameters + ---------- + command_line: string, optional (None) + exact command-line typed at the terminal to run the underlying + preprocessing (useful if someone were to reproduce your results) + + """ + fwhm = sanitize_fwhm(fwhm) + anat_fwhm = sanitize_fwhm(anat_fwhm) + if dartel: + normalize = False + segment = False + + # which tools were used ? + if tools_used is None: + tools_used = ( + 'All preprocessing was done using pypreprocess,' + ' a collection of python scripts and modules for ' + 'preprocessing functional and anatomical MRI data.' % ( + PYPREPROCESS_URL)) + preproc_undergone = "

%s

" % tools_used + + # what was actually typed at the command line ? + if not command_line is None: + preproc_undergone += "Command-line: %s
" % command_line + preproc_undergone += ( + "
For each subject, the following preprocessing steps have " + "been done:") + + preproc_undergone += "
    " + if prepreproc_undergone: + preproc_undergone += "
  • %s
  • " % prepreproc_undergone + if dcm2nii: + preproc_undergone += ( + "
  • " + "dcm2nii has been used to convert input images from DICOM to nifti" + " format" + "
  • ") + if deleteorient: + preproc_undergone += ( + "
  • " + "Orientation-specific meta-data in the image headers have " + "been suspected as garbage and stripped-off to prevent severe " + "mis-registration problems." + "
  • ") + if bet: + preproc_undergone += ( + "
  • " + "Brain extraction has been applied to strip-off the skull" + " and other non-brain tissues. This prevents later " + "registration problems like the skull been (mis-)aligned " + "unto the cortical surface, " + "etc.
  • ") + if slice_timing: + preproc_undergone += ( + "
  • " + "Slice-Timing Correction (STC) has been done to interpolate the " + "BOLD signal in time, so that in the sequel we can safely pretend" + " all 3D volumes within a TR (Repetition Time) were " + "acquired simultaneously, an crucial assumption for any further " + "analysis of the data (GLM, ICA, etc.). " + "
  • " + ) + if realign: + preproc_undergone += ( + "
  • " + "Motion correction has been done so as to estimate, and then " + "correct for, subject's head motion." + "
  • " + ) + if coregister: + preproc_undergone += "
  • " + if coreg_func_to_anat: + preproc_undergone += ( + "The subject's functional images have been coregistered " + "to their anatomical image." + ) + else: + preproc_undergone += ( + "The subject's anatomical image has been coregistered " + "against their functional images.") + preproc_undergone += ( + " Coregistration is important as it allows: (1) segmentation of " + "the functional via segmentation of the anatomical brain; " + "(2) inter-subject registration via inter-anatomical registration," + " a trick referred to as 'Indirect Normalization'; " + "(3) ROIs to be defined on the anatomy, making it " + "possible for activation maps to be projected and appreciated" + " thereupon." + "
  • ") + if segment: + preproc_undergone += ( + "
  • " + "Tissue Segmentation has been employed to segment the " + "anatomical image into GM, WM, and CSF compartments, using " + "template TPMs (Tissue Probability Maps).
  • ") + if normalize: + if segment: + if has_func: + salt = (" The same deformations have been " + 'applied to the functional images.') + else: salt = "" + preproc_undergone += ( + "
  • " + "The segmented anatomical image has been warped " + "into the MNI template space by applying the deformations " + "learnt during segmentation.%s
  • " % salt) + else: + if coregister: + preproc_undergone += ( + "
  • " + "Deformations from native to standard space have been " + "learnt on the anatomically brain. These deformations " + "have been used to warp the functional and anatomical " + "images into standard space.
  • ") + else: + preproc_undergone += ( + "
  • " + "The functional images have been warped from native to " + "standard space via classical normalization.
  • ") + if dartel: + preproc_undergone += ( + "
  • " + "Group/Inter-subject Normalization has been done using the " + "SPM8 DARTEL to warp subject brains into " + "MNI space. " + "The idea is to register images by computing a “flow" + " field” which can then be “exponentiated" + "” to generate both forward and backward deformation" + "s. Processing begins with the “import” " + "step. This involves taking the parameter files " + "produced by the segmentation (NewSegment), and writing " + "out rigidly " + "transformed versions of the tissue class images, " + "such that they are in as close alignment as possible with" + " the tissue probability maps.   " + "The next step is the registration itself. This involves " + "the simultaneous registration of e.g. GM with GM, " + "WM with WM and 1-(GM+WM) with 1-(GM+WM) (when needed, the" + " 1- (GM+WM) class is generated implicitly, so there " + "is no need to include this class yourself). This " + "procedure begins by creating a mean of all the images, " + "which is used as an initial template. Deformations " + "from this template to each of the individual images " + "are computed, and the template is then re-generated" + " by applying the inverses of the deformations to " + "the images and averaging. This procedure is repeated a " + "number of times.  Finally, warped " + "versions of the images (or other images that are in " + "alignment with them) can be generated. " + "
  • ") % DARTEL_URL + if normalize or dartel: + if (not func_write_voxel_sizes is None or + not anat_write_voxel_sizes is None): + preproc_undergone += "
  • " + sep = "" + if not func_write_voxel_sizes is None: + preproc_undergone += ( + "Output functional images have been re-written with voxel " + "size %smm x %smm x %smm.") % tuple( + func_write_voxel_sizes) + sep = " " + if not anat_write_voxel_sizes is None: + preproc_undergone += ( + "%sThe output anatomical image has been re-written with " + "voxel " + "size %smm x %smm x %smm.") % tuple([sep] + list( + anat_write_voxel_sizes)) + preproc_undergone += "
  • " + + if additional_preproc_undergone: + preproc_undergone += additional_preproc_undergone + if np.sum(fwhm) > 0 and has_func: + preproc_undergone += ( + "
  • " + "The functional images have been " + "smoothed with a %smm x %smm x %smm " + "Gaussian kernel.
  • ") % tuple(fwhm) + if np.sum(anat_fwhm) > 0: + preproc_undergone += ( + "
  • " + "The anatomical image has been " + "smoothed with a %smm x %smm x %smm " + "Gaussian kernel.") % tuple(anat_fwhm) + if segment: + preproc_undergone += ( + " Warped TPMs have been smoothed with the same kernel.") + if not details_filename is None: + preproc_undergone += ( + " See complete configuration used for preprocessing" + " here") % os.path.basename(details_filename) + preproc_undergone += "
" + + return preproc_undergone \ No newline at end of file diff --git a/pypreprocess/reporting/preproc_reporter.py b/pypreprocess/reporting/preproc_reporter.py index 0b025551..5cab6bbf 100644 --- a/pypreprocess/reporting/preproc_reporter.py +++ b/pypreprocess/reporting/preproc_reporter.py @@ -37,8 +37,7 @@ PYPREPROCESS_URL, DARTEL_URL, ROOT_DIR, commit_subject_thumnbail_to_parent_gallery, get_dataset_report_log_html_template, - copy_web_conf_files, - NilearnReport) + copy_web_conf_files) import matplotlib.pyplot as plt from nilearn.plotting.html_document import HTMLDocument from nilearn.reporting.utils import figure_to_svg_quoted @@ -501,10 +500,6 @@ def generate_registration_thumbnails( results_gallery.commit_thumbnails(thumbnail) - if nilearn_report not in [False,None]: - nilearn_report['{}_{}_outline'.format(target[1], source[1]) - ]=svg_outline - # plot outline (edge map) of the normalized image # on the SPM MNI template source, target = (target, source) @@ -532,13 +527,7 @@ def generate_registration_thumbnails( thumbnail.img = img( src=os.path.basename(outline), height="250px") thumbnail.description = thumb_desc - results_gallery.commit_thumbnails(thumbnail) - - if nilearn_report not in [False,None]: - nilearn_report['{}_{}_outline'.format(target[1], source[1]) - ]=svg_outline - nilearn_report['{}_{}_outline_axial'.format(target[1], source[1]) - ]=svg_outline_axial + results_gallery.commit_thumbnails(thumbnail) return output @@ -700,12 +689,6 @@ def generate_segmentation_thumbnails( results_gallery.commit_thumbnails(thumbnail) - if nilearn_report not in [False,None]: - nilearn_report['{}_template_compartments_contours'.format(_brain) - ]=svg_template_compartments_contours - nilearn_report['{}_template_compartments_contours_axial'.format(_brain) - ]=svg_template_compartments_contours_axial - output['axial'] = template_compartments_contours_axial # plot contours of subject's compartments on subject's brain @@ -748,12 +731,6 @@ def generate_segmentation_thumbnails( results_gallery.commit_thumbnails(thumbnail) - if nilearn_report not in [False,None]: - nilearn_report['{}_subject_compartments_contours'.format(_brain) - ]=svg_subject_compartments_contours - nilearn_report['{}_subject_compartments_contours_axial'.format(_brain) - ]=svg_subject_compartments_contours_axial - if only_native: output['axial'] = subject_compartments_contours_axial @@ -796,14 +773,9 @@ def generate_tsdiffana_thumbnail(image_files, sessions, subject_id, output_filenames = [output_filename_template.format(i) for i in range(len(figures))] - cnt = 0 for fig, output_filename in zip(figures, output_filenames): - if nilearn_report not in [False,None]: - nilearn_report['ts_diff_plots_{}'.format(cnt)]=_plot_to_svg(fig) - else: fig.savefig(output_filename, bbox_inches="tight", dpi=200) pl.close(fig) - cnt+=1 if tooltips is None: tooltips = [None] * len(output_filename) @@ -863,9 +835,6 @@ def generate_realignment_thumbnails( results_gallery.commit_thumbnails(thumbnail) output['rp_plot'] = rp_plot - if nilearn_report not in [False,None]: - nilearn_report['rp_plot']=svg_rp_plot - return output From 38fc05f148f3bd04bb0619f5f976d361408da008 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Wed, 20 Jan 2021 12:46:13 +0530 Subject: [PATCH 05/30] Minor fixes. --- pypreprocess/nipype_preproc_spm_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index 764265ba..6b840071 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -29,7 +29,7 @@ from .subject_data import SubjectData from .reporting.base_reporter import ( ResultsGallery, ProgressReport, copy_web_conf_files, - get_module_source_code, dict_to_html_ul,NilearnReport) + get_module_source_code, dict_to_html_ul) from .reporting.preproc_reporter import ( _set_templates, generate_preproc_undergone_docstring, get_dataset_report_log_html_template, @@ -1543,7 +1543,7 @@ def do_subject_preproc( nilearn_report['all_components'].append(tdsdiffana_plot) create_report(nilearn_report,subject_data.output_dir) - + # return preprocessed subject_data return subject_data.sanitize() From e1afdadc3d5beecc9ee39de155488635b44bb1ed Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Wed, 20 Jan 2021 13:07:19 +0530 Subject: [PATCH 06/30] FIX: Circular dependencies --- pypreprocess/reporting/check_preprocessing.py | 2 +- pypreprocess/reporting/nilearn_reporting.py | 31 +++++-------------- 2 files changed, 8 insertions(+), 25 deletions(-) diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index 7c899d74..bcfc17da 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -15,7 +15,7 @@ EPS = np.finfo(float).eps import string -from .nilearn_reporting import _plot_to_svg +from nilearn.reporting.glm_reporter import _plot_to_svg def plot_spm_motion_parameters(parameter_file, lengths , title=None, output_filename=None, close=False diff --git a/pypreprocess/reporting/nilearn_reporting.py b/pypreprocess/reporting/nilearn_reporting.py index 3d241b13..dcb6723e 100644 --- a/pypreprocess/reporting/nilearn_reporting.py +++ b/pypreprocess/reporting/nilearn_reporting.py @@ -1,21 +1,25 @@ import string import os -from nilearn.reporting.utils import figure_to_svg_quoted +from nilearn.reporting.glm_reporter import _plot_to_svg from matplotlib.pyplot import cm import joblib from joblib import Memory import numpy as np -from .check_preprocessing import * +from .check_preprocessing import (plot_registration, + plot_segmentation, + plot_spm_motion_parameters) from ..time_diff import plot_tsdiffs, multi_session_time_slice_diffs from ..io_utils import compute_mean_3D_image, sanitize_fwhm from ..configure_spm import _configure_spm, _get_version_spm from nilearn.plotting.html_document import HTMLDocument +PYPREPROCESS_URL = "https://github.com/neurospin/pypreprocess" +DARTEL_URL = ("http://www.fil.ion.ucl.ac.uk/spm/software/spm8/" + "SPM8_Release_Notes.pdf") HTML_TEMPLATE_ROOT_PATH = os.path.join(os.path.dirname(__file__), 'template_reports') SPM_DIR = _configure_spm() -# EPI_TEMPLATE = GM_TEMPLATE = T1_TEMPLATE = WM_TEMPLATE = CSF_TEMPLATE = None def _set_templates(spm_dir=SPM_DIR): """ @@ -75,27 +79,6 @@ def create_report(nilearn_report, output_dir, filename='nilearn_report.html'): nilearn_report_HTML.save_as_html(html_outfile) return 'Nilearn-style report created: {}'.format(html_outfile) - - -def _plot_to_svg(plot): - """ - Creates an SVG image as a data URL - from a Matplotlib Axes or Figure object. - - Parameters - ---------- - plot: Matplotlib Axes or Figure object - Contains the plot information. - - Returns - ------- - url_plot_svg: String - SVG Image Data URL - """ - try: - return figure_to_svg_quoted(plot) - except AttributeError: - return figure_to_svg_quoted(plot.figure) def generate_realignment_report(subject_data,estimated_motion, output_dir From 4c018b85e5baa733267ea6317ef0b2eafaf650b6 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Thu, 28 Jan 2021 10:22:46 +0530 Subject: [PATCH 07/30] ADD: Log reporting and modular reports for each step. --- pypreprocess/nipype_preproc_spm_utils.py | 13 +- pypreprocess/reporting/nilearn_reporting.py | 223 +++++++++++++++--- .../template_reports/log_sub_template.html | 2 + .../template_reports/log_template.html | 1 + .../template_reports/report_sub_template.html | 2 +- 5 files changed, 208 insertions(+), 33 deletions(-) create mode 100644 pypreprocess/reporting/template_reports/log_sub_template.html create mode 100644 pypreprocess/reporting/template_reports/log_template.html diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index 6b840071..12d2aad4 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -384,13 +384,14 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, subject_data.generate_realignment_thumbnails() if nilearn_report not in [False,None]: - rp_plot = generate_realignment_report( + rp_plot, rp_log = generate_realignment_report( subject_data=subject_data, estimated_motion=subject_data.realignment_parameters, output_dir=subject_data.output_dir, nilearn_report=nilearn_report ) nilearn_report['all_components'].append(rp_plot) + nilearn_report['log'].append(rp_log) return subject_data.sanitize() @@ -567,11 +568,12 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, subject_data.generate_coregistration_thumbnails() if nilearn_report not in [False,None]: - correg_plot = generate_corregistration_report( + correg_plot, correg_log = generate_corregistration_report( subject_data=subject_data, output_dir=subject_data.output_dir, nilearn_report=nilearn_report) nilearn_report['all_components'].append(correg_plot) + nilearn_report['log'].append(correg_log) return subject_data.sanitize() @@ -714,7 +716,7 @@ def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, subject_data.generate_segmentation_thumbnails() if nilearn_report not in [False,None]: - seg_plot = generate_segmentation_report( + seg_plot, seg_log = generate_segmentation_report( subject_data=subject_data, output_dir=subject_data.output_dir, subject_gm_file=getattr(subject_data, 'gm', None), @@ -722,6 +724,7 @@ def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, subject_csf_file=getattr(subject_data, 'csf', None), only_native=True,nilearn_report=nilearn_report) nilearn_report['all_components'].append(seg_plot) + nilearn_report['log'].append(seg_log) return subject_data.sanitize() @@ -959,11 +962,12 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, subject_data.generate_normalization_thumbnails() if nilearn_report not in [False,None]: - norm_plot = generate_normalization_report( + norm_plot, norm_log = generate_normalization_report( subject_data=subject_data, output_dir=subject_data.output_dir, nilearn_report=nilearn_report) nilearn_report['all_components'].append(norm_plot) + nilearn_report['log'].append(norm_log) # explicit smoothing if np.sum(fwhm) + np.sum(anat_fwhm) > 0: @@ -1419,6 +1423,7 @@ def do_subject_preproc( nilearn_report = {} nilearn_report['preproc_undergone']=preproc_undergone nilearn_report['all_components']=[] + nilearn_report['log']=[] ############################# # Slice-Timing Correction diff --git a/pypreprocess/reporting/nilearn_reporting.py b/pypreprocess/reporting/nilearn_reporting.py index dcb6723e..d092a77b 100644 --- a/pypreprocess/reporting/nilearn_reporting.py +++ b/pypreprocess/reporting/nilearn_reporting.py @@ -63,27 +63,51 @@ def embed_in_HTML(html_template_file,components_to_embed): string_text = string_template.safe_substitute(**components_to_embed) + html_file_obj.close() + return string_text -def create_report(nilearn_report, output_dir, filename='nilearn_report.html'): +# def add_report_component(to_add,output_dir,filename='nilearn_report'): + +# html_outfile = os.path.join(output_dir, '{}.html'.format(filename)) + +# with open(html_outfile) as html_file_obj: +# html = html_file_obj.read() +# html_file_obj.close() + +# html = Soup(html) +# html.find('body').append(to_add) - html_outfile = os.path.join(output_dir, 'nilearn_report.html') +# html = HTMLDocument(str(html)) +# html.save_as_html(html_outfile) - nilearn_report['all_components'] = '\n'.join( + +def create_report(nilearn_report, output_dir, log=True, + filename='nilearn_report'): + + # create report HTML with all the figures + html_outfile = os.path.join(output_dir, '{}.html'.format(filename)) + nilearn_report['all_components'] = ''.join( nilearn_report['all_components']) - nilearn_report_text = embed_in_HTML( - 'nilearn_report_template.html', nilearn_report) + nilearn_report_text = embed_in_HTML('nilearn_report_template.html' + , nilearn_report) nilearn_report_HTML = HTMLDocument(nilearn_report_text) - nilearn_report_HTML.save_as_html(html_outfile) - return 'Nilearn-style report created: {}'.format(html_outfile) - + if log: + # create a separate HTML with all the logs + log_outfile = os.path.join(output_dir, '{}_log.html'.format(filename)) + nilearn_report['log'] = '
'.join(nilearn_report['log']) + log_text = embed_in_HTML('log_template.html', nilearn_report) + log_HTML = HTMLDocument(log_text) + log_HTML.save_as_html(log_outfile) + + print('Nilearn-style report created: {}'.format(html_outfile)) + def generate_realignment_report(subject_data,estimated_motion, output_dir - , tooltip=None, execution_log_html_filename=None - , nilearn_report=None): + , tooltip=None, log=True, nilearn_report=None): """ Creates plots associated with realignment and returns it as an SVG url. """ @@ -109,15 +133,26 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir parameter_file=estimated_motion , lengths=lengths, close=True, nilearn_report=nilearn_report, title="Plot of Estimated motion for %d sessions" % len(sessions)) - for_substitution['heading'] = "Plot of Estimated motion for %d sessions" % len(sessions) - + for_substitution['heading'] = "Motion Correction" rp_plot_text = embed_in_HTML('report_sub_template.html' ,for_substitution) - return rp_plot_text + if log: + for_substitution['id_link'] = for_substitution['heading'].replace(" ", "_") + for_substitution['log'] = get_log_text(subject_data.func) + for_substitution['log_link'] = "file:///"+os.path.join(output_dir + , 'nilearn_report_log.html#' + )+for_substitution['id_link'] + rp_log_text = embed_in_HTML('log_sub_template.html' + ,for_substitution) + else: + rp_log_text = None + + return rp_plot_text, rp_log_text + def generate_registration_report(target, source, procedure_name, - output_dir, execution_log_html_filename=None, nilearn_report=None): + output_dir, nilearn_report=None): """ Plots target's outline on source image and returns them as SVG url embedded in HTML. """ @@ -157,8 +192,8 @@ def generate_registration_report(target, source, procedure_name, def generate_corregistration_report(subject_data, output_dir - , coreg_func_to_anat=True, execution_log_html_filename=None - , tooltip=None, comment=True, nilearn_report=None): + , coreg_func_to_anat=True, log=True, tooltip=None + , nilearn_report=None): """ Creates plots associated with corregistration and returns them as SVG url embedded in HTML. @@ -176,16 +211,31 @@ def generate_corregistration_report(subject_data, output_dir src, ref = ref, src src_brain, ref_brain = ref_brain, src_brain - comments = " %s == > %s" % (src_brain, ref_brain) + heading = "Corregistration %s == > %s" % (src_brain, ref_brain) + + for_substitution = {} + + if log: + for_substitution['heading'] = heading + for_substitution['id_link'] = heading.replace(" ", "_") + for_substitution['log'] = get_log_text(src) + for_substitution['log_link'] = "file:///"+os.path.join(output_dir + , 'nilearn_report_log.html#' + )+heading + log_text = embed_in_HTML('log_sub_template.html' + ,for_substitution) + else: + log_text = None + return generate_registration_report((ref, ref_brain) - , (src, src_brain), "Coregistration %s" % comments, - output_dir, nilearn_report=nilearn_report) + , (src, src_brain), heading, output_dir + , nilearn_report=nilearn_report), log_text def generate_segmentation_report(subject_data, output_dir , subject_gm_file=None, subject_wm_file=None, subject_csf_file=None , comment="", only_native=False, tooltip=None - , execution_log_html_filename=None, nilearn_report=None): + , log=True, nilearn_report=None): """ Creates plots associated with segmentation and returns them as SVG url embedded in HTML. """ @@ -204,6 +254,20 @@ def generate_segmentation_report(subject_data, output_dir if not segmented: return + if log: + for_substitution['heading'] = "Segmentation" + for_substitution['id_link'] = for_substitution['heading'] + for_substitution['log'] = get_log_text(getattr(subject_data + , 'gm') or getattr(subject_data + , 'wm') or getattr(subject_data, 'csf')) + for_substitution['log_link'] = "file:///"+os.path.join(output_dir + , 'nilearn_report_log.html#' + )+for_substitution['heading'] + log_text = embed_in_HTML('log_sub_template.html' + ,for_substitution) + else: + log_text = None + for brain_name, brain, cmap in zip( ['anatomical_image', 'mean_functional_image'], [subject_data.anat, subject_data.func], @@ -262,17 +326,19 @@ def generate_segmentation_report(subject_data, output_dir ,for_substitution) seg_plot.append(seg_plot_text) - return '\n'.join(seg_plot) + if log: + return '\n'.join(seg_plot), log_text + else: + return '\n'.join(seg_plot) def generate_normalization_report(subject_data, output_dir - , tooltip=None, execution_log_html_filename=None - , nilearn_report=None): + , tooltip=None, log=True, nilearn_report=None): """ Creates plots associated with normalization and returns them as SVG url embedded in HTML. Calls generate_segmentation_report and generate_registration_report. """ - + _set_templates() norm_plot = [] subject_data._set_session_ids() @@ -288,7 +354,8 @@ def generate_normalization_report(subject_data, output_dir subject_gm_file=warped_tpms["mwgm"], subject_wm_file=warped_tpms["mwwm"], subject_csf_file=warped_tpms["mwcsf"], - comment="warped",nilearn_report=nilearn_report)) + comment="warped",log=False, + nilearn_report=nilearn_report)) for brain_name, brain, cmap in zip( ['anatomical_image', 'mean_functional_image'], @@ -297,6 +364,22 @@ def generate_normalization_report(subject_data, output_dir if not brain: continue + if log: + for_substitution = {} + for_substitution['heading'] = "Normalization of %s" % brain_name + for_substitution['id_link'] = for_substitution['heading'].replace( + " ", "_") + for_substitution['log'] = get_log_text(getattr(subject_data + , 'gm') or getattr(subject_data + , 'wm') or getattr(subject_data, 'csf')) + for_substitution['log_link'] = "file:///"+os.path.join(output_dir + , 'nilearn_report_log.html#' + )+for_substitution['heading'] + log_text = embed_in_HTML('log_sub_template.html' + ,for_substitution) + else: + log_text = None + if isinstance(brain, str): normalized = brain else: @@ -305,10 +388,12 @@ def generate_normalization_report(subject_data, output_dir norm_plot.append(generate_registration_report( (T1_TEMPLATE, 'template'), (normalized, brain_name), - "Normalization of %s" % brain_name, output_dir, + for_substitution['heading'], output_dir, nilearn_report=nilearn_report)) - return '\n'.join(norm_plot) + print(len(norm_plot)) + print([type(i) for i in norm_plot]) + return '\n'.join(norm_plot), log_text def generate_tsdiffana_report(image_files, sessions, subject_id, output_dir, tooltips=None): @@ -557,4 +642,86 @@ def generate_preproc_steps_docstring( " here") % os.path.basename(details_filename) preproc_undergone += "" - return preproc_undergone \ No newline at end of file + return preproc_undergone + +def get_log_text(nipype_output_files): + + execution_log = get_nipype_report(get_nipype_report_filename( + nipype_output_files)) + return execution_log + + +def get_nipype_report_filename(output_files_or_dir): + if isinstance(output_files_or_dir, str): + if os.path.isdir(output_files_or_dir): + return os.path.join(output_files_or_dir, + "_report/report.rst") + elif os.path.isfile(output_files_or_dir): + return get_nipype_report_filename( + os.path.dirname(output_files_or_dir)) + else: + raise OSError( + "%s is neither a file nor directory!" % output_files_or_dir) + else: + # assuming list-like type + return get_nipype_report_filename(output_files_or_dir[0]) + + +def get_nipype_report(nipype_report_filename): + if isinstance(nipype_report_filename, str): + if os.path.isfile(nipype_report_filename): + nipype_report_filenames = [nipype_report_filename] + else: + nipype_report_filenames = [] + else: + nipype_report_filenames = nipype_report_filename + + output = [] + for nipype_report_filename in nipype_report_filenames: + if os.path.exists(nipype_report_filename): + nipype_report = nipype2htmlreport( + nipype_report_filename) + output.append(nipype_report) + + output = "
".join(output) + + return output + + +def nipype2htmlreport(nipype_report_filename): + """ + Converts a nipype.caching report (.rst) to html. + + """ + with open(nipype_report_filename, 'r') as fd: + return lines2breaks(fd.readlines()) + +def lines2breaks(lines, delimiter="\n", number_lines=False): + """ + Converts line breaks to HTML breaks, adding `pre` tags as necessary. + + Parameters + ---------- + lines: string delimited by delimiter, or else list of strings + lines to format into HTML format + + delimiter: string (default '\n') + new-line delimiter, can be (escape) characters like '\n', '\r', + '\r\n', '\t', etc. + + number_lines: boolean (default False) + if false, then output will be line-numbered + + Returns + ------- + HTML-formatted string + """ + if isinstance(lines, str): + lines = lines.split(delimiter) + if not number_lines: + lines = ["%s" % line for line in lines] + output = "
%s
" % "".join(lines) + else: + lines = ["
  • %s
  • " % line for line in lines] + output = "
      " + "".join(lines) + "
    " + return output \ No newline at end of file diff --git a/pypreprocess/reporting/template_reports/log_sub_template.html b/pypreprocess/reporting/template_reports/log_sub_template.html new file mode 100644 index 00000000..fee26a30 --- /dev/null +++ b/pypreprocess/reporting/template_reports/log_sub_template.html @@ -0,0 +1,2 @@ +

    ${heading}

    +${log} \ No newline at end of file diff --git a/pypreprocess/reporting/template_reports/log_template.html b/pypreprocess/reporting/template_reports/log_template.html new file mode 100644 index 00000000..4dc4de94 --- /dev/null +++ b/pypreprocess/reporting/template_reports/log_template.html @@ -0,0 +1 @@ +${log} \ No newline at end of file diff --git a/pypreprocess/reporting/template_reports/report_sub_template.html b/pypreprocess/reporting/template_reports/report_sub_template.html index 12366a6a..5628e19d 100644 --- a/pypreprocess/reporting/template_reports/report_sub_template.html +++ b/pypreprocess/reporting/template_reports/report_sub_template.html @@ -1,2 +1,2 @@ -

    ${heading}

    +

    ${heading} (see log)

    \ No newline at end of file From c31ab495e6ca6602b97d598a1be9ff80477a0cd6 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Sun, 7 Feb 2021 13:48:47 +0530 Subject: [PATCH 08/30] FIX: log links and heavy final reports --- pypreprocess/reporting/check_preprocessing.py | 18 +++++- pypreprocess/reporting/nilearn_reporting.py | 58 ++++++++++++------- .../template_reports/log_link_template.html | 1 + .../template_reports/report_sub_template.html | 4 +- 4 files changed, 55 insertions(+), 26 deletions(-) create mode 100644 pypreprocess/reporting/template_reports/log_link_template.html diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index bcfc17da..0fbc01d3 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -15,7 +15,16 @@ EPS = np.finfo(float).eps import string -from nilearn.reporting.glm_reporter import _plot_to_svg +from io import StringIO + + +def _plot_to_svg(figV,dpi=300): + + with StringIO() as bufferV: + figV.savefig(bufferV, format='svg', dpi=dpi) + figV_encoded = bufferV.getvalue() + + return figV_encoded def plot_spm_motion_parameters(parameter_file, lengths , title=None, output_filename=None, close=False @@ -47,7 +56,7 @@ def plot_spm_motion_parameters(parameter_file, lengths aux = 0. for l in lengths[:-1]: - pl.axvline(aux + l, linestyle="--", c="k") + plt.axvline(aux + l, linestyle="--", c="k") aux += l if not title is None: @@ -59,6 +68,7 @@ def plot_spm_motion_parameters(parameter_file, lengths if nilearn_report not in [False,None]: fig = plt.gcf() + fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None @@ -137,6 +147,7 @@ def plot_registration(reference_img, coregistered_img, if nilearn_report not in [False,None]: fig = plt.gcf() + fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None @@ -204,6 +215,7 @@ def plot_segmentation( if nilearn_report not in [False,None]: fig = plt.gcf() + fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None @@ -215,4 +227,4 @@ def plot_segmentation( if close: plt.close() - return svg_plot \ No newline at end of file + return svg_plot diff --git a/pypreprocess/reporting/nilearn_reporting.py b/pypreprocess/reporting/nilearn_reporting.py index d092a77b..d83aea14 100644 --- a/pypreprocess/reporting/nilearn_reporting.py +++ b/pypreprocess/reporting/nilearn_reporting.py @@ -1,13 +1,13 @@ import string import os -from nilearn.reporting.glm_reporter import _plot_to_svg from matplotlib.pyplot import cm import joblib from joblib import Memory import numpy as np from .check_preprocessing import (plot_registration, plot_segmentation, - plot_spm_motion_parameters) + plot_spm_motion_parameters, + _plot_to_svg) from ..time_diff import plot_tsdiffs, multi_session_time_slice_diffs from ..io_utils import compute_mean_3D_image, sanitize_fwhm from ..configure_spm import _configure_spm, _get_version_spm @@ -134,8 +134,6 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir , lengths=lengths, close=True, nilearn_report=nilearn_report, title="Plot of Estimated motion for %d sessions" % len(sessions)) for_substitution['heading'] = "Motion Correction" - rp_plot_text = embed_in_HTML('report_sub_template.html' - ,for_substitution) if log: for_substitution['id_link'] = for_substitution['heading'].replace(" ", "_") @@ -148,17 +146,22 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir else: rp_log_text = None + log_link_text = embed_in_HTML('log_link_template.html',for_substitution) + + for_substitution['heading'] = for_substitution['heading']+' '+log_link_text + rp_plot_text = embed_in_HTML('report_sub_template.html',for_substitution) + + return rp_plot_text, rp_log_text -def generate_registration_report(target, source, procedure_name, - output_dir, nilearn_report=None): +def generate_registration_report(target, source, output_dir, + for_substitution, nilearn_report=None): """ Plots target's outline on source image and returns them as SVG url embedded in HTML. """ reg_plot = [] - for_substitution = {} # prepare for smart caching qa_cache_dir = os.path.join(output_dir, "QA") @@ -168,7 +171,10 @@ def generate_registration_report(target, source, procedure_name, # plot outline (edge map) of template on the # normalized image - for_substitution['heading'] = procedure_name + log_link_text = embed_in_HTML('log_link_template.html' + ,for_substitution) + for_substitution['heading'] += ' '+log_link_text + for_substitution['plot'] = qa_mem.cache(plot_registration)( target[0], source[0] , close=True, nilearn_report=nilearn_report, @@ -221,14 +227,14 @@ def generate_corregistration_report(subject_data, output_dir for_substitution['log'] = get_log_text(src) for_substitution['log_link'] = "file:///"+os.path.join(output_dir , 'nilearn_report_log.html#' - )+heading + )+for_substitution['id_link'] log_text = embed_in_HTML('log_sub_template.html' ,for_substitution) else: log_text = None return generate_registration_report((ref, ref_brain) - , (src, src_brain), heading, output_dir + , (src, src_brain), output_dir, for_substitution , nilearn_report=nilearn_report), log_text @@ -267,6 +273,9 @@ def generate_segmentation_report(subject_data, output_dir ,for_substitution) else: log_text = None + for_substitution['log_link'] = "file:///"+os.path.join(output_dir + , 'nilearn_report_log.html#' + )+"Segmentation" for brain_name, brain, cmap in zip( ['anatomical_image', 'mean_functional_image'], @@ -302,6 +311,9 @@ def generate_segmentation_report(subject_data, output_dir title=("Template GM, WM, and CSF TPM contours on " "subject's %s") % _brain_name) + log_link_text = embed_in_HTML('log_link_template.html' + ,for_substitution) + for_substitution['heading'] += ' '+log_link_text seg_plot_text = embed_in_HTML('report_sub_template.html' ,for_substitution) seg_plot.append(seg_plot_text) @@ -319,6 +331,9 @@ def generate_segmentation_report(subject_data, output_dir csf_filename=subject_csf_file, cmap=cmap, close=True, nilearn_report=nilearn_report, title=("%s TPM contours on " "subject's %s") % (title_prefix, _brain_name)) + log_link_text = embed_in_HTML('log_link_template.html' + ,for_substitution) + for_substitution['heading'] += ' '+log_link_text if not only_native: for_substitution['heading'] = "" @@ -340,6 +355,7 @@ def generate_normalization_report(subject_data, output_dir and generate_registration_report. """ _set_templates() norm_plot = [] + logs = [] subject_data._set_session_ids() warped_tpms = dict( @@ -348,14 +364,16 @@ def generate_normalization_report(subject_data, output_dir segmented = warped_tpms.values().count(None) < len(warped_tpms) if segmented: - norm_plot.append(generate_segmentation_report( + plot_text = generate_segmentation_report( subject_data=subject_data, output_dir=subject_data.output_dir, subject_gm_file=warped_tpms["mwgm"], subject_wm_file=warped_tpms["mwwm"], subject_csf_file=warped_tpms["mwcsf"], comment="warped",log=False, - nilearn_report=nilearn_report)) + nilearn_report=nilearn_report) + norm_plot.append(plot_text) + # logs.append(log_text) for brain_name, brain, cmap in zip( ['anatomical_image', 'mean_functional_image'], @@ -369,17 +387,17 @@ def generate_normalization_report(subject_data, output_dir for_substitution['heading'] = "Normalization of %s" % brain_name for_substitution['id_link'] = for_substitution['heading'].replace( " ", "_") - for_substitution['log'] = get_log_text(getattr(subject_data - , 'gm') or getattr(subject_data - , 'wm') or getattr(subject_data, 'csf')) + for_substitution['log'] = get_log_text(brain) for_substitution['log_link'] = "file:///"+os.path.join(output_dir , 'nilearn_report_log.html#' - )+for_substitution['heading'] + )+for_substitution['id_link'] log_text = embed_in_HTML('log_sub_template.html' ,for_substitution) else: log_text = None + logs.append(log_text) + if isinstance(brain, str): normalized = brain else: @@ -388,12 +406,9 @@ def generate_normalization_report(subject_data, output_dir norm_plot.append(generate_registration_report( (T1_TEMPLATE, 'template'), (normalized, brain_name), - for_substitution['heading'], output_dir, - nilearn_report=nilearn_report)) + output_dir, for_substitution, nilearn_report=nilearn_report)) - print(len(norm_plot)) - print([type(i) for i in norm_plot]) - return '\n'.join(norm_plot), log_text + return '\n'.join(norm_plot), '
    '.join(logs) def generate_tsdiffana_report(image_files, sessions, subject_id, output_dir, tooltips=None): @@ -416,6 +431,7 @@ def generate_tsdiffana_report(image_files, sessions, subject_id, headings = [heading_template.format(i) for i in range(len(figures))] for fig, head in zip(figures, headings): + fig.set_rasterized(True) for_substitution['plot'] =_plot_to_svg(fig) for_substitution['heading'] = head tsdiffana_plot_text = embed_in_HTML('report_sub_template.html' diff --git a/pypreprocess/reporting/template_reports/log_link_template.html b/pypreprocess/reporting/template_reports/log_link_template.html new file mode 100644 index 00000000..93de7fe9 --- /dev/null +++ b/pypreprocess/reporting/template_reports/log_link_template.html @@ -0,0 +1 @@ +(see log) \ No newline at end of file diff --git a/pypreprocess/reporting/template_reports/report_sub_template.html b/pypreprocess/reporting/template_reports/report_sub_template.html index 5628e19d..e2f353d7 100644 --- a/pypreprocess/reporting/template_reports/report_sub_template.html +++ b/pypreprocess/reporting/template_reports/report_sub_template.html @@ -1,2 +1,2 @@ -

    ${heading} (see log)

    - \ No newline at end of file +

    ${heading}

    +${plot} \ No newline at end of file From d96057fdb8a7b06e2b5a882d234a39fa2fdbbf7d Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Sun, 7 Feb 2021 19:45:59 +0530 Subject: [PATCH 09/30] ADD: real-time update --- pypreprocess/nipype_preproc_spm_utils.py | 111 ++++++++------- pypreprocess/reporting/check_preprocessing.py | 12 +- pypreprocess/reporting/nilearn_reporting.py | 129 ++++++++++++------ .../nilearn_report_template.html | 9 +- .../template_reports/report_sub_template.html | 4 +- 5 files changed, 165 insertions(+), 100 deletions(-) diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index 12d2aad4..9017c857 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -242,7 +242,7 @@ def _do_subject_slice_timing(subject_data, TR, TA=None, spm_dir=None, def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, caching=True, report=True, software="spm", spm_dir=None, matlab_exec=None, spm_mcr=None, - hardlink_output=True,nilearn_report=None + hardlink_output=True,report_path=None,log_path=None , **kwargs): """ Wrapper for running spm.Realign with optional reporting. @@ -383,15 +383,14 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, if report: subject_data.generate_realignment_thumbnails() - if nilearn_report not in [False,None]: + if report_path not in [False,None]: rp_plot, rp_log = generate_realignment_report( subject_data=subject_data, estimated_motion=subject_data.realignment_parameters, output_dir=subject_data.output_dir, - nilearn_report=nilearn_report + report_path=report_path ) - nilearn_report['all_components'].append(rp_plot) - nilearn_report['log'].append(rp_log) + add_component(rp_plot,report_path,rp_log,log_path) return subject_data.sanitize() @@ -400,7 +399,7 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, matlab_exec=None, spm_mcr=None, coreg_anat_to_func=False, caching=True, report=True, software="spm", hardlink_output=True - ,nilearn_report=None,**kwargs): + ,report_path=None,log_path=None,**kwargs): """Wrapper for running spm.Coregister with optional reporting. If subject_data has a `results_gallery` attribute, then QA thumbnails will @@ -567,13 +566,12 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, if report: subject_data.generate_coregistration_thumbnails() - if nilearn_report not in [False,None]: + if report_path not in [False,None]: correg_plot, correg_log = generate_corregistration_report( subject_data=subject_data, output_dir=subject_data.output_dir, - nilearn_report=nilearn_report) - nilearn_report['all_components'].append(correg_plot) - nilearn_report['log'].append(correg_log) + report_path=report_path) + add_component(correg_plot,report_path,correg_log,log_path) return subject_data.sanitize() @@ -581,7 +579,7 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, matlab_exec=None, spm_mcr=None, normalize=False, caching=True, report=True, software="spm", - hardlink_output=True,nilearn_report=None): + hardlink_output=True,report_path=None,log_path=None): """ Wrapper for running spm.Segment with optional reporting. @@ -715,16 +713,15 @@ def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, if report: subject_data.generate_segmentation_thumbnails() - if nilearn_report not in [False,None]: + if report_path not in [False,None]: seg_plot, seg_log = generate_segmentation_report( subject_data=subject_data, output_dir=subject_data.output_dir, subject_gm_file=getattr(subject_data, 'gm', None), subject_wm_file=getattr(subject_data, 'wm', None), subject_csf_file=getattr(subject_data, 'csf', None), - only_native=True,nilearn_report=nilearn_report) - nilearn_report['all_components'].append(seg_plot) - nilearn_report['log'].append(seg_log) + only_native=True,report_path=report_path) + add_component(seg_plot,report_path,seg_log,log_path) return subject_data.sanitize() @@ -736,7 +733,7 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, software="spm", hardlink_output=True, smooth_software="spm", epi_template=None, t1_template=None, coregister=True - , nilearn_report=None + ,report_path=None,log_path=None , **kwargs): """ Wrapper for running spm.Segment with optional reporting. @@ -961,13 +958,12 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, if report: subject_data.generate_normalization_thumbnails() - if nilearn_report not in [False,None]: + if report_path not in [False,None]: norm_plot, norm_log = generate_normalization_report( subject_data=subject_data, output_dir=subject_data.output_dir, - nilearn_report=nilearn_report) - nilearn_report['all_components'].append(norm_plot) - nilearn_report['log'].append(norm_log) + report_path=report_path) + add_component(norm_plot,report_path,norm_log,log_path) # explicit smoothing if np.sum(fwhm) + np.sum(anat_fwhm) > 0: @@ -1406,24 +1402,41 @@ def do_subject_preproc( tsdiffana=tsdiffana) if nilearn_report: - preproc_undergone = generate_preproc_steps_docstring( - dcm2nii=subject_data.isdicom, - deleteorient=deleteorient, - slice_timing=slice_timing, - realign=realign, - coregister=coregister, - segment=segment, - normalize=normalize, - fwhm=fwhm, anat_fwhm=anat_fwhm, - dartel=dartel, - coreg_func_to_anat=not coreg_anat_to_func, - prepreproc_undergone=prepreproc_undergone, - has_func=subject_data.func - ) - nilearn_report = {} - nilearn_report['preproc_undergone']=preproc_undergone - nilearn_report['all_components']=[] - nilearn_report['log']=[] + + report_path,log_path = initialize_report(subject_data.output_dir, + dcm2nii=subject_data.isdicom, + deleteorient=deleteorient, + slice_timing=slice_timing, + realign=realign, + coregister=coregister, + segment=segment, + normalize=normalize, + fwhm=fwhm, anat_fwhm=anat_fwhm, + dartel=dartel, + coreg_func_to_anat=not coreg_anat_to_func, + prepreproc_undergone=prepreproc_undergone, + has_func=subject_data.func + ) + + + # preproc_undergone = generate_preproc_steps_docstring( + # dcm2nii=subject_data.isdicom, + # deleteorient=deleteorient, + # slice_timing=slice_timing, + # realign=realign, + # coregister=coregister, + # segment=segment, + # normalize=normalize, + # fwhm=fwhm, anat_fwhm=anat_fwhm, + # dartel=dartel, + # coreg_func_to_anat=not coreg_anat_to_func, + # prepreproc_undergone=prepreproc_undergone, + # has_func=subject_data.func + # ) + # nilearn_report = {} + # nilearn_report['preproc_undergone']=preproc_undergone + # nilearn_report['all_components']=[] + # nilearn_report['log']=[] ############################# # Slice-Timing Correction @@ -1452,7 +1465,8 @@ def do_subject_preproc( register_to_mean=register_to_mean, report=report, hardlink_output=hardlink_output, - software=realign_software, nilearn_report=nilearn_report, + software=realign_software, + report_path=report_path,log_path=log_path, **kwargs.get("interface_realign", {})) # handle failed node @@ -1471,7 +1485,7 @@ def do_subject_preproc( report=report, hardlink_output=hardlink_output, software=coregister_software, - nilearn_report=nilearn_report, + report_path=report_path,log_path=log_path, **kwargs.get("interface_coregister", {})) # handle failed node @@ -1485,7 +1499,9 @@ def do_subject_preproc( if segment: subject_data = _do_subject_segment( subject_data, caching=caching, normalize=normalize, report=report, - hardlink_output=hardlink_output,nilearn_report=nilearn_report) + hardlink_output=hardlink_output,report_path=report_path, + log_path=log_path) + # handle failed node if subject_data.failed: @@ -1505,7 +1521,8 @@ def do_subject_preproc( smooth_software=smooth_software, epi_template=epi_template, t1_template=t1_template, - coregister=coregister,nilearn_report=nilearn_report, + coregister=coregister,report_path=report_path, + log_path=log_path, **kwargs.get("interface_normalize", {})) # handle failed node @@ -1522,8 +1539,8 @@ def do_subject_preproc( caching=caching, report=report, hardlink_output=hardlink_output, - software=smooth_software, - nilearn_report=nilearn_report) + software=smooth_software + ) # handle failed node if subject_data.failed: @@ -1545,11 +1562,11 @@ def do_subject_preproc( subject_data.func, subject_data.session_ids , subject_data.subject_id , output_dir=subject_data.output_dir) - nilearn_report['all_components'].append(tdsdiffana_plot) - create_report(nilearn_report,subject_data.output_dir) + add_component(tdsdiffana_plot,report_path) + + finalize_report(report_path,log_path) - # return preprocessed subject_data return subject_data.sanitize() diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index 0fbc01d3..5ee9bab8 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -28,7 +28,7 @@ def _plot_to_svg(figV,dpi=300): def plot_spm_motion_parameters(parameter_file, lengths , title=None, output_filename=None, close=False - , nilearn_report=False): + , report_path=None): """ Plot motion parameters obtained with SPM software Parameters @@ -66,7 +66,7 @@ def plot_spm_motion_parameters(parameter_file, lengths plt.xlabel('time(scans)') plt.ylabel('Estimated motion (mm/degrees)') - if nilearn_report not in [False,None]: + if report_path not in [False,None]: fig = plt.gcf() fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) @@ -98,7 +98,7 @@ def plot_registration(reference_img, coregistered_img, display_mode='ortho', cmap=None, close=False, output_filename=None, - nilearn_report=False): + report_path=None): """Plots a coregistered source as bg/contrast for the reference image Parameters @@ -145,7 +145,7 @@ def plot_registration(reference_img, coregistered_img, # misc _slicer.title(title, size=12, color='w', alpha=0) - if nilearn_report not in [False,None]: + if report_path not in [False,None]: fig = plt.gcf() fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) @@ -168,7 +168,7 @@ def plot_segmentation( img, gm_filename, wm_filename=None, csf_filename=None, output_filename=None, cut_coords=None, display_mode='ortho', cmap=None, title='GM + WM + CSF segmentation', close=False, - nilearn_report=False): + report_path=None): """ Plot a contour mapping of the GM, WM, and CSF of a subject's anatomical. @@ -213,7 +213,7 @@ def plot_segmentation( # misc _slicer.title(title, size=12, color='w', alpha=0) - if nilearn_report not in [False,None]: + if report_path not in [False,None]: fig = plt.gcf() fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) diff --git a/pypreprocess/reporting/nilearn_reporting.py b/pypreprocess/reporting/nilearn_reporting.py index d83aea14..b73bc136 100644 --- a/pypreprocess/reporting/nilearn_reporting.py +++ b/pypreprocess/reporting/nilearn_reporting.py @@ -13,6 +13,7 @@ from ..configure_spm import _configure_spm, _get_version_spm from nilearn.plotting.html_document import HTMLDocument + PYPREPROCESS_URL = "https://github.com/neurospin/pypreprocess" DARTEL_URL = ("http://www.fil.ion.ucl.ac.uk/spm/software/spm8/" "SPM8_Release_Notes.pdf") @@ -68,46 +69,92 @@ def embed_in_HTML(html_template_file,components_to_embed): return string_text -# def add_report_component(to_add,output_dir,filename='nilearn_report'): +def initialize_report(output_dir, + log=True, + filename='nilearn_report', + prepreproc_undergone="", + dcm2nii=False, + deleteorient=False, + fwhm=None, anat_fwhm=None, + slice_timing=False, + realign=False, + coregister=False, + coreg_func_to_anat=False, + segment=False, + normalize=False, + dartel=False, + command_line=None, + has_func=True + ): + + report_outfile = os.path.join(output_dir, '{}.html'.format(filename)) + + report_dict = {} + report_dict['preproc_undergone'] = generate_preproc_steps_docstring( + dcm2nii=dcm2nii, + deleteorient=deleteorient, + slice_timing=slice_timing, + realign=realign, + coregister=coregister, + segment=segment, + normalize=normalize, + fwhm=fwhm, anat_fwhm=anat_fwhm, + dartel=dartel, + coreg_func_to_anat=coreg_func_to_anat, + prepreproc_undergone=prepreproc_undergone, + has_func=has_func + ) + + report_text = embed_in_HTML('nilearn_report_template.html', report_dict) + report_HTML = HTMLDocument(report_text).save_as_html(report_outfile) -# html_outfile = os.path.join(output_dir, '{}.html'.format(filename)) + if log: + # create a separate HTML with all the logs + log_outfile = os.path.join(output_dir, '{}_log.html'.format(filename)) + log_HTML = HTMLDocument("").save_as_html(log_outfile) + return report_outfile,log_outfile + else: + return report_outfile,None -# with open(html_outfile) as html_file_obj: -# html = html_file_obj.read() -# html_file_obj.close() +def add_component(to_add_report,html_report_path,to_add_log=None,html_log_path=None): -# html = Soup(html) -# html.find('body').append(to_add) + html_file_obj = open(html_report_path, 'a') + html_file_obj.write(to_add_report) + html_file_obj.close() -# html = HTMLDocument(str(html)) -# html.save_as_html(html_outfile) + if html_log_path is not None: + html_file_obj = open(html_log_path, 'a') + html_file_obj.write('
    '+to_add_log) + html_file_obj.close() -def create_report(nilearn_report, output_dir, log=True, - filename='nilearn_report'): - # create report HTML with all the figures - html_outfile = os.path.join(output_dir, '{}.html'.format(filename)) - nilearn_report['all_components'] = ''.join( - nilearn_report['all_components']) - nilearn_report_text = embed_in_HTML('nilearn_report_template.html' - , nilearn_report) - nilearn_report_HTML = HTMLDocument(nilearn_report_text) - nilearn_report_HTML.save_as_html(html_outfile) +def finalize_report(html_report_path,html_log_path=None): - if log: - # create a separate HTML with all the logs - log_outfile = os.path.join(output_dir, '{}_log.html'.format(filename)) - nilearn_report['log'] = '
    '.join(nilearn_report['log']) - log_text = embed_in_HTML('log_template.html', nilearn_report) - log_HTML = HTMLDocument(log_text) - log_HTML.save_as_html(log_outfile) + html_file_obj = open(html_report_path, 'r') + lines = html_file_obj.readlines() + lines[6] = "

    Done!

    " + del lines[3] + + with open(html_report_path, 'w') as html_file_obj: + for line in lines: + html_file_obj.write(line) + + html_file_obj = open(html_report_path, 'a') + html_file_obj.write("\n") + html_file_obj.close() + + if html_log_path is not None: + + html_file_obj = open(html_log_path, 'a') + html_file_obj.write("\n") + html_file_obj.close() - print('Nilearn-style report created: {}'.format(html_outfile)) + print('Nilearn-style report created: {}'.format(html_report_path )) def generate_realignment_report(subject_data,estimated_motion, output_dir - , tooltip=None, log=True, nilearn_report=None): + , tooltip=None, log=True, report_path=None): """ Creates plots associated with realignment and returns it as an SVG url. """ @@ -131,7 +178,7 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir for_substitution['plot'] = plot_spm_motion_parameters( parameter_file=estimated_motion - , lengths=lengths, close=True, nilearn_report=nilearn_report, + , lengths=lengths, close=True, report_path=report_path, title="Plot of Estimated motion for %d sessions" % len(sessions)) for_substitution['heading'] = "Motion Correction" @@ -156,7 +203,7 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir def generate_registration_report(target, source, output_dir, - for_substitution, nilearn_report=None): + for_substitution, report_path=None): """ Plots target's outline on source image and returns them as SVG url embedded in HTML. """ @@ -177,7 +224,7 @@ def generate_registration_report(target, source, output_dir, for_substitution['plot'] = qa_mem.cache(plot_registration)( target[0], source[0] - , close=True, nilearn_report=nilearn_report, + , close=True, report_path=report_path, title="Outline of %s on %s" % (target[1], source[1])) reg_plot_text = embed_in_HTML('report_sub_template.html' ,for_substitution) @@ -187,7 +234,7 @@ def generate_registration_report(target, source, output_dir, # on the SPM MNI template source, target = (target, source) for_substitution['plot'] = qa_mem.cache(plot_registration)( - target[0], source[0], close=True, nilearn_report=nilearn_report, + target[0], source[0], close=True, report_path=report_path, title="Outline of %s on %s" % (target[1], source[1])) for_substitution['heading'] = "" reg_plot_text = embed_in_HTML('report_sub_template.html' @@ -199,7 +246,7 @@ def generate_registration_report(target, source, output_dir, def generate_corregistration_report(subject_data, output_dir , coreg_func_to_anat=True, log=True, tooltip=None - , nilearn_report=None): + , report_path=None): """ Creates plots associated with corregistration and returns them as SVG url embedded in HTML. @@ -235,13 +282,13 @@ def generate_corregistration_report(subject_data, output_dir return generate_registration_report((ref, ref_brain) , (src, src_brain), output_dir, for_substitution - , nilearn_report=nilearn_report), log_text + , report_path=report_path), log_text def generate_segmentation_report(subject_data, output_dir , subject_gm_file=None, subject_wm_file=None, subject_csf_file=None , comment="", only_native=False, tooltip=None - , log=True, nilearn_report=None): + , log=True, report_path=None): """ Creates plots associated with segmentation and returns them as SVG url embedded in HTML. """ @@ -307,7 +354,7 @@ def generate_segmentation_report(subject_data, output_dir for_substitution['plot']=qa_mem.cache(plot_segmentation)( brain, gm_filename=GM_TEMPLATE, wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, - cmap=cmap, close=True, nilearn_report=nilearn_report, + cmap=cmap, close=True, report_path=report_path, title=("Template GM, WM, and CSF TPM contours on " "subject's %s") % _brain_name) @@ -329,7 +376,7 @@ def generate_segmentation_report(subject_data, output_dir for_substitution['plot'] = qa_mem.cache(plot_segmentation)( brain, subject_gm_file, wm_filename=subject_wm_file, csf_filename=subject_csf_file, cmap=cmap, close=True, - nilearn_report=nilearn_report, title=("%s TPM contours on " + report_path=report_path, title=("%s TPM contours on " "subject's %s") % (title_prefix, _brain_name)) log_link_text = embed_in_HTML('log_link_template.html' ,for_substitution) @@ -347,7 +394,7 @@ def generate_segmentation_report(subject_data, output_dir return '\n'.join(seg_plot) def generate_normalization_report(subject_data, output_dir - , tooltip=None, log=True, nilearn_report=None): + , tooltip=None, log=True, report_path=None): """ Creates plots associated with normalization and returns them as SVG url embedded in HTML. @@ -371,7 +418,7 @@ def generate_normalization_report(subject_data, output_dir subject_wm_file=warped_tpms["mwwm"], subject_csf_file=warped_tpms["mwcsf"], comment="warped",log=False, - nilearn_report=nilearn_report) + report_path=report_path) norm_plot.append(plot_text) # logs.append(log_text) @@ -406,7 +453,7 @@ def generate_normalization_report(subject_data, output_dir norm_plot.append(generate_registration_report( (T1_TEMPLATE, 'template'), (normalized, brain_name), - output_dir, for_substitution, nilearn_report=nilearn_report)) + output_dir, for_substitution, report_path=report_path)) return '\n'.join(norm_plot), '
    '.join(logs) @@ -460,7 +507,7 @@ def generate_preproc_steps_docstring( additional_preproc_undergone="", command_line=None, details_filename=None, - has_func=True, + has_func=True ): """ Generates a brief description of the pipeline used in the preprocessing. diff --git a/pypreprocess/reporting/template_reports/nilearn_report_template.html b/pypreprocess/reporting/template_reports/nilearn_report_template.html index fc55efa6..5439e1f0 100644 --- a/pypreprocess/reporting/template_reports/nilearn_report_template.html +++ b/pypreprocess/reporting/template_reports/nilearn_report_template.html @@ -1,12 +1,11 @@ + + + - +

    Still Running!

    Preprocessing steps:

    ${preproc_undergone}

    Visualisation for each step:

    - ${all_components} - - - diff --git a/pypreprocess/reporting/template_reports/report_sub_template.html b/pypreprocess/reporting/template_reports/report_sub_template.html index e2f353d7..bc769f88 100644 --- a/pypreprocess/reporting/template_reports/report_sub_template.html +++ b/pypreprocess/reporting/template_reports/report_sub_template.html @@ -1,2 +1,4 @@ +

    ${heading}

    -${plot} \ No newline at end of file +${plot} +
    \ No newline at end of file From da3621cd8aaf247abd1087dcf53fe05e9d8bf25f Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Mon, 8 Feb 2021 14:01:35 +0530 Subject: [PATCH 10/30] FIX: Circle CI errors for old reporting tests --- pypreprocess/nipype_preproc_spm_utils.py | 25 +------ pypreprocess/reporting/preproc_reporter.py | 80 +++++++--------------- pypreprocess/subject_data.py | 24 +++---- 3 files changed, 37 insertions(+), 92 deletions(-) diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index 9017c857..029ea328 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -1402,7 +1402,6 @@ def do_subject_preproc( tsdiffana=tsdiffana) if nilearn_report: - report_path,log_path = initialize_report(subject_data.output_dir, dcm2nii=subject_data.isdicom, deleteorient=deleteorient, @@ -1417,26 +1416,8 @@ def do_subject_preproc( prepreproc_undergone=prepreproc_undergone, has_func=subject_data.func ) - - - # preproc_undergone = generate_preproc_steps_docstring( - # dcm2nii=subject_data.isdicom, - # deleteorient=deleteorient, - # slice_timing=slice_timing, - # realign=realign, - # coregister=coregister, - # segment=segment, - # normalize=normalize, - # fwhm=fwhm, anat_fwhm=anat_fwhm, - # dartel=dartel, - # coreg_func_to_anat=not coreg_anat_to_func, - # prepreproc_undergone=prepreproc_undergone, - # has_func=subject_data.func - # ) - # nilearn_report = {} - # nilearn_report['preproc_undergone']=preproc_undergone - # nilearn_report['all_components']=[] - # nilearn_report['log']=[] + else: + report_path,log_path = None, None ############################# # Slice-Timing Correction @@ -1555,7 +1536,7 @@ def do_subject_preproc( if report and not dartel: subject_data.finalize_report(last_stage=last_stage) - if nilearn_report not in [False, None]: + if nilearn_report: if tsdiffana: tdsdiffana_plot = generate_tsdiffana_report( diff --git a/pypreprocess/reporting/preproc_reporter.py b/pypreprocess/reporting/preproc_reporter.py index 5cab6bbf..b7059755 100644 --- a/pypreprocess/reporting/preproc_reporter.py +++ b/pypreprocess/reporting/preproc_reporter.py @@ -39,33 +39,12 @@ get_dataset_report_log_html_template, copy_web_conf_files) import matplotlib.pyplot as plt -from nilearn.plotting.html_document import HTMLDocument -from nilearn.reporting.utils import figure_to_svg_quoted # misc SPM_DIR = _configure_spm() EPI_TEMPLATE = GM_TEMPLATE = T1_TEMPLATE = WM_TEMPLATE = CSF_TEMPLATE = None -def _plot_to_svg(plot): - """ - Creates an SVG image as a data URL - from a Matplotlib Axes or Figure object. - - Parameters - ---------- - plot: Matplotlib Axes or Figure object - Contains the plot information. - - Returns - ------- - url_plot_svg: String - SVG Image Data URL - """ - try: - return figure_to_svg_quoted(plot) - except AttributeError: - return figure_to_svg_quoted(plot.figure) def _set_templates(spm_dir=SPM_DIR): """ @@ -443,8 +422,7 @@ def get_nipype_report(nipype_report_filename): def generate_registration_thumbnails( target, source, procedure_name, output_dir, tooltip=None, - execution_log_html_filename=None, results_gallery=None, - nilearn_report=None): + execution_log_html_filename=None, results_gallery=None): """ Generates QA thumbnails post-registration. @@ -485,10 +463,9 @@ def generate_registration_thumbnails( outline = os.path.join(output_dir, "%s_on_%s_outline.png" % (target[1], source[1])) - svg_outline = qa_mem.cache(plot_registration)( + qa_mem.cache(plot_registration)( target[0], source[0], output_filename=outline - , close=True, nilearn_report=nilearn_report, - title="Outline of %s on %s" % (target[1], source[1])) + , close=True,title="Outline of %s on %s" % (target[1], source[1])) # create thumbnail if results_gallery: @@ -509,15 +486,14 @@ def generate_registration_thumbnails( source[1])) outline_axial = os.path.join( output_dir, "%s_on_%s_outline_axial.png" % (target[1], source[1])) - svg_outline_axial = qa_mem.cache(plot_registration)( + qa_mem.cache(plot_registration)( target[0], source[0], output_filename=outline_axial, close=True, - display_mode='z', nilearn_report=nilearn_report, - title="Outline of %s on %s" % (target[1],source[1])) + display_mode='z',title="Outline of %s on %s" % (target[1],source[1])) output['axial'] = outline_axial - svg_outline = qa_mem.cache(plot_registration)( + qa_mem.cache(plot_registration)( target[0], source[0], output_filename=outline - , close=True, nilearn_report=nilearn_report, + , close=True, title="Outline of %s on %s" % (target[1], source[1])) # create thumbnail @@ -534,8 +510,7 @@ def generate_registration_thumbnails( def generate_normalization_thumbnails( normalized_files, output_dir, brain="EPI", tooltip=None, - execution_log_html_filename=None, results_gallery=None, - nilearn_report=None): + execution_log_html_filename=None, results_gallery=None): """Generate thumbnails after spatial normalization or subject Parameters @@ -562,14 +537,12 @@ def generate_normalization_thumbnails( (T1_TEMPLATE, 'template'), (normalized, brain), "Normalization of %s" % brain, output_dir, execution_log_html_filename=execution_log_html_filename, - results_gallery=results_gallery, tooltip=tooltip, - nilearn_report=nilearn_report) + results_gallery=results_gallery, tooltip=tooltip) def generate_coregistration_thumbnails( target, source, output_dir, execution_log_html_filename=None, - results_gallery=None, tooltip=None, comment=True - , nilearn_report=None): + results_gallery=None, tooltip=None, comment=True): """ Generates QA thumbnails post-coregistration. @@ -594,15 +567,14 @@ def generate_coregistration_thumbnails( return generate_registration_thumbnails( target, source, "Coregistration %s" % comments, output_dir, execution_log_html_filename=execution_log_html_filename, - results_gallery=results_gallery, tooltip=tooltip - , nilearn_report=nilearn_report) + results_gallery=results_gallery, tooltip=tooltip) def generate_segmentation_thumbnails( normalized_files, output_dir, subject_gm_file=None, subject_wm_file=None, subject_csf_file=None, only_native=False, brain='func', comments="", execution_log_html_filename=None, - cmap=None, tooltip=None, results_gallery=None, nilearn_report=None): + cmap=None, tooltip=None, results_gallery=None): """Generates thumbnails after indirect normalization (segmentation + normalization) @@ -664,16 +636,16 @@ def generate_segmentation_thumbnails( template_compartments_contours_axial = os.path.join( output_dir, "template_compartments_contours_on_%s_axial.png" % _brain) - svg_template_compartments_contours_axial = qa_mem.cache(plot_segmentation)( + qa_mem.cache(plot_segmentation)( normalized_file, GM_TEMPLATE, wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, display_mode='z', cmap=cmap, - output_filename=template_compartments_contours_axial, - nilearn_report=nilearn_report,title="template TPMs", close=True) - svg_template_compartments_contours = qa_mem.cache(plot_segmentation)( + output_filename=template_compartments_contours_axial + ,title="template TPMs", close=True) + qa_mem.cache(plot_segmentation)( normalized_file, gm_filename=GM_TEMPLATE, wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, output_filename=template_compartments_contours, - cmap=cmap, close=True, nilearn_report=nilearn_report, + cmap=cmap, close=True, title=("Template GM, WM, and CSF TPM contours on " "subject's %s") % _brain) @@ -700,11 +672,10 @@ def generate_segmentation_thumbnails( output_dir, "subject_tpms_contours_on_subject_%s_axial.png" % _brain) - svg_subject_compartments_contours_axial = qa_mem.cache(plot_segmentation)( + qa_mem.cache(plot_segmentation)( normalized_file, subject_gm_file, wm_filename=subject_wm_file, csf_filename=subject_csf_file, display_mode='z', cmap=cmap, - output_filename=subject_compartments_contours_axial, - nilearn_report=nilearn_report, close=True, title="subject TPMs") + output_filename=subject_compartments_contours_axial, close=True, title="subject TPMs") title_prefix = "Subject's GM" if subject_wm_file: @@ -712,11 +683,11 @@ def generate_segmentation_thumbnails( if subject_csf_file: title_prefix += ", and CSF" - svg_subject_compartments_contours = qa_mem.cache(plot_segmentation)( + qa_mem.cache(plot_segmentation)( normalized_file, subject_gm_file, wm_filename=subject_wm_file, csf_filename=subject_csf_file, cmap=cmap, close=True, output_filename=subject_compartments_contours, - nilearn_report=nilearn_report, title=("%s TPM contours on " + title=("%s TPM contours on " "subject's %s") % (title_prefix, _brain)) # create thumbnail @@ -739,7 +710,7 @@ def generate_segmentation_thumbnails( def generate_tsdiffana_thumbnail(image_files, sessions, subject_id, output_dir, results_gallery=None, - tooltips=None, nilearn_report=None): + tooltips=None): """Generate tsdiffana thumbnails Parameters @@ -799,8 +770,7 @@ def generate_tsdiffana_thumbnail(image_files, sessions, subject_id, def generate_realignment_thumbnails( estimated_motion, output_dir, sessions=None, tooltip=None, - execution_log_html_filename=None, results_gallery=None - , nilearn_report=None): + execution_log_html_filename=None, results_gallery=None): """Function generates thumbnails for realignment parameters.""" sessions = [1] if sessions is None else sessions if isinstance(estimated_motion, str): @@ -816,9 +786,9 @@ def generate_realignment_thumbnails( lengths = [len(each) for each in tmp] estimated_motion = np.vstack(tmp) rp_plot = os.path.join(output_dir, 'rp_plot.png') - svg_rp_plot = plot_spm_motion_parameters(parameter_file=estimated_motion + plot_spm_motion_parameters(parameter_file=estimated_motion ,output_filename=rp_plot, lengths=lengths - , close=True, nilearn_report=nilearn_report, + , close=True, title="Plot of Estimated motion for %d sessions" % len(sessions)) # create thumbnail diff --git a/pypreprocess/subject_data.py b/pypreprocess/subject_data.py index 6c17c1ae..065eba34 100644 --- a/pypreprocess/subject_data.py +++ b/pypreprocess/subject_data.py @@ -666,8 +666,7 @@ def reporting_enabled(self): """ return hasattr(self, 'results_gallery') - def generate_realignment_thumbnails(self, log=True, nipype=True - , nilearn_report=None): + def generate_realignment_thumbnails(self, log=True, nipype=True): """ Invoked to generate post-realignment thumbnails. @@ -698,14 +697,12 @@ def generate_realignment_thumbnails(self, log=True, nipype=True self.reports_output_dir, sessions=self.session_ids, execution_log_html_filename=execution_log_html if log else None, tooltip=mc_tooltip, - results_gallery=self.results_gallery - ,nilearn_report=nilearn_report) + results_gallery=self.results_gallery) self.final_thumbnail.img.src = thumbs['rp_plot'] def generate_coregistration_thumbnails(self, coreg_func_to_anat=True, log=True, comment=True, - nipype=True,nilearn_report=None - ): + nipype=True): """ Invoked to generate post-coregistration thumbnails. @@ -744,12 +741,10 @@ def generate_coregistration_thumbnails(self, coreg_func_to_anat=True, self.reports_output_dir, execution_log_html_filename=execution_log_html if log else None, results_gallery=self.results_gallery, - comment=comment, tooltip=reg_tooltip - , nilearn_report=nilearn_report) + comment=comment, tooltip=reg_tooltip) self.final_thumbnail.img.src = thumbs['axial'] - def generate_segmentation_thumbnails(self, log=True, nipype=True, - nilearn_report=None): + def generate_segmentation_thumbnails(self, log=True, nipype=True): """ Invoked to generate post-segmentation thumbnails. @@ -793,12 +788,11 @@ def generate_segmentation_thumbnails(self, log=True, nipype=True, cmap=cmap, brain=brain_name, only_native=True, execution_log_html_filename=execution_log_html if log else None, results_gallery=self.results_gallery, - tooltip=segment_tooltip, nilearn_report=nilearn_report) + tooltip=segment_tooltip) if 'func' in brain_name: self.final_thumbnail.img.src = thumbs['axial'] - def generate_normalization_thumbnails(self, log=True, nipype=True - ,nilearn_report=None): + def generate_normalization_thumbnails(self, log=True, nipype=True): """ Invoked to generate post-normalization thumbnails. @@ -832,7 +826,7 @@ def generate_normalization_thumbnails(self, log=True, nipype=True warped_tpms["mwcsf"], "Segment", self.reports_output_dir) if log else None, results_gallery=self.results_gallery, - tooltip=segment_tooltip,nilearn_report=nilearn_report) + tooltip=segment_tooltip) if 'func' in brain_name or not self.func: self.final_thumbnail.img.src = thumbs['axial'] @@ -856,7 +850,7 @@ def generate_normalization_thumbnails(self, log=True, nipype=True brain, self.reports_output_dir, brain=brain_name, execution_log_html_filename=execution_log_html if log else None, results_gallery=self.results_gallery, - tooltip=reg_tooltip,nilearn_report=nilearn_report) + tooltip=reg_tooltip) if not segmented and ("func" in brain_name or not self.func): self.final_thumbnail.img.src = thumbs['axial'] From f9d21ba3486dbfa7fed74479b07618d15ad45dec Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Mon, 8 Feb 2021 16:29:37 +0530 Subject: [PATCH 11/30] FIX(?): Travis CI --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 77948890..219c92f8 100755 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ matrix: - name: "Python 3.5 latest package versions" python: "3.5" env: DISTRIB="travisci" PYTHON_VERSION="3.5" - NUMPY_VERSION="*" SCIPY_VERSION="*" PANDAS_VERSION="*" + NUMPY_VERSION="*" SCIPY_VERSION="1.5.4" PANDAS_VERSION="*" SCIKIT_LEARN_VERSION="*" MATPLOTLIB_VERSION="*" COVERAGE="true" JOBLIB_VERSION="*" NIPYPE_VERSION="*" NILEARN_VERSION="*" NETWORKX_VERSION="*" CONFIGOBJ_VERSION="*" PYTEST_VERSION="4.1.0" From e68d1e52e8a57f7a57d7ef3f47083f06ce269a1d Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Mon, 8 Feb 2021 16:34:34 +0530 Subject: [PATCH 12/30] FIX(?): Travis CI --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 219c92f8..33b5cb16 100755 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ matrix: - name: "Python 3.5 latest package versions" python: "3.5" env: DISTRIB="travisci" PYTHON_VERSION="3.5" - NUMPY_VERSION="*" SCIPY_VERSION="1.5.4" PANDAS_VERSION="*" + NUMPY_VERSION="*" SCIPY_VERSION="*" PANDAS_VERSION="*" SCIKIT_LEARN_VERSION="*" MATPLOTLIB_VERSION="*" COVERAGE="true" JOBLIB_VERSION="*" NIPYPE_VERSION="*" NILEARN_VERSION="*" NETWORKX_VERSION="*" CONFIGOBJ_VERSION="*" PYTEST_VERSION="4.1.0" @@ -34,7 +34,7 @@ matrix: - name: "Python 3.7 latest package versions" python: "3.7" env: DISTRIB="travisci" PYTHON_VERSION="3.7" - NUMPY_VERSION="*" SCIPY_VERSION="*" PANDAS_VERSION="*" + NUMPY_VERSION="*" SCIPY_VERSION="1.5.4" PANDAS_VERSION="*" SCIKIT_LEARN_VERSION="*" MATPLOTLIB_VERSION="*" COVERAGE="true" JOBLIB_VERSION="*" NIPYPE_VERSION="*" PYTEST_VERSION="4.3.0" NILEARN_VERSION="*" NETWORKX_VERSION="*" CONFIGOBJ_VERSION="*" @@ -42,7 +42,7 @@ matrix: - name: "Python 3.7 pre-release checks" python: "3.7" env: DISTRIB="travisci" PIP_FLAGS="--pre" COVERAGE="true" - NUMPY_VERSION="*" SCIPY_VERSION="*" PANDAS_VERSION="*" + NUMPY_VERSION="*" SCIPY_VERSION="1.5.4" PANDAS_VERSION="*" SCIKIT_LEARN_VERSION="*" JOBLIB_VERSION="*" NIPYPE_VERSION="*" NILEARN_VERSION="*" NETWORKX_VERSION="*" MATPLOTLIB_VERSION="*" CONFIGOBJ_VERSION="*" PYTEST_VERSION="4.3.0" From 2c8dface46e09d435be8a307d041afb58da12463 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Sat, 20 Feb 2021 01:37:00 +0530 Subject: [PATCH 13/30] ADD: improved aesthetics and information in new reports --- pypreprocess/nipype_preproc_spm_utils.py | 1 + pypreprocess/reporting/check_preprocessing.py | 24 +++--- pypreprocess/reporting/nilearn_reporting.py | 73 +++++++++++++++---- .../nilearn_report_template.html | 13 +++- .../template_reports/report_sub_template.html | 5 +- 5 files changed, 83 insertions(+), 33 deletions(-) diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index 029ea328..0dcec99e 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -1403,6 +1403,7 @@ def do_subject_preproc( if nilearn_report: report_path,log_path = initialize_report(subject_data.output_dir, + subject_name=subject_data.subject_id, dcm2nii=subject_data.isdicom, deleteorient=deleteorient, slice_timing=slice_timing, diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index 5ee9bab8..ad8111e5 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -14,17 +14,19 @@ from ..io_utils import load_vols EPS = np.finfo(float).eps -import string -from io import StringIO +import io +import base64 +import urllib.parse - -def _plot_to_svg(figV,dpi=300): +def _plot_to_svg(fig,dpi=300): - with StringIO() as bufferV: - figV.savefig(bufferV, format='svg', dpi=dpi) - figV_encoded = bufferV.getvalue() + with io.BytesIO() as io_buffer: + fig.savefig( + io_buffer, format="svg", facecolor="white", edgecolor="white", + dpi=dpi + ) + return urllib.parse.quote(io_buffer.getvalue().decode("utf-8")) - return figV_encoded def plot_spm_motion_parameters(parameter_file, lengths , title=None, output_filename=None, close=False @@ -68,7 +70,7 @@ def plot_spm_motion_parameters(parameter_file, lengths if report_path not in [False,None]: fig = plt.gcf() - fig.set_rasterized(True) + # fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None @@ -147,7 +149,7 @@ def plot_registration(reference_img, coregistered_img, if report_path not in [False,None]: fig = plt.gcf() - fig.set_rasterized(True) + # fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None @@ -215,7 +217,7 @@ def plot_segmentation( if report_path not in [False,None]: fig = plt.gcf() - fig.set_rasterized(True) + # fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None diff --git a/pypreprocess/reporting/nilearn_reporting.py b/pypreprocess/reporting/nilearn_reporting.py index b73bc136..1fe7cce8 100644 --- a/pypreprocess/reporting/nilearn_reporting.py +++ b/pypreprocess/reporting/nilearn_reporting.py @@ -1,4 +1,5 @@ import string +from time import gmtime, strftime import os from matplotlib.pyplot import cm import joblib @@ -70,6 +71,7 @@ def embed_in_HTML(html_template_file,components_to_embed): def initialize_report(output_dir, + subject_name='Subject', log=True, filename='nilearn_report', prepreproc_undergone="", @@ -104,7 +106,9 @@ def initialize_report(output_dir, prepreproc_undergone=prepreproc_undergone, has_func=has_func ) - + report_dict['subject_name'] = subject_name + report_dict['start_time'] = strftime("%d-%b-%Y %H:%M:%S", gmtime()) + report_dict['end_time'] = "STILL RUNNING..." report_text = embed_in_HTML('nilearn_report_template.html', report_dict) report_HTML = HTMLDocument(report_text).save_as_html(report_outfile) @@ -123,17 +127,17 @@ def add_component(to_add_report,html_report_path,to_add_log=None,html_log_path=N html_file_obj.close() if html_log_path is not None: - - html_file_obj = open(html_log_path, 'a') - html_file_obj.write('
    '+to_add_log) - html_file_obj.close() + html_file_obj = open(html_log_path, 'a') + html_file_obj.write('
    '+to_add_log) + html_file_obj.close() def finalize_report(html_report_path,html_log_path=None): html_file_obj = open(html_report_path, 'r') lines = html_file_obj.readlines() - lines[6] = "

    Done!

    " + end_time = strftime("%d-%b-%Y %H:%M:%S", gmtime()) + lines[8] = "

    End time: {}

    ".format(end_time) del lines[3] with open(html_report_path, 'w') as html_file_obj: @@ -145,10 +149,9 @@ def finalize_report(html_report_path,html_log_path=None): html_file_obj.close() if html_log_path is not None: - - html_file_obj = open(html_log_path, 'a') - html_file_obj.write("\n") - html_file_obj.close() + html_file_obj = open(html_log_path, 'a') + html_file_obj.write("\n") + html_file_obj.close() print('Nilearn-style report created: {}'.format(html_report_path )) @@ -181,6 +184,11 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir , lengths=lengths, close=True, report_path=report_path, title="Plot of Estimated motion for %d sessions" % len(sessions)) for_substitution['heading'] = "Motion Correction" + for_substitution['tooltip'] = "Motion parameters estimated during \ + motion-correction. If motion is less than half a voxel,\ + it's generally OK. Moreover, it's recommended\ + to include these estimated motion parameters as confounds \ + (nuissance regressors) in the the GLM." if log: for_substitution['id_link'] = for_substitution['heading'].replace(" ", "_") @@ -198,7 +206,6 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir for_substitution['heading'] = for_substitution['heading']+' '+log_link_text rp_plot_text = embed_in_HTML('report_sub_template.html',for_substitution) - return rp_plot_text, rp_log_text @@ -221,7 +228,15 @@ def generate_registration_report(target, source, output_dir, log_link_text = embed_in_HTML('log_link_template.html' ,for_substitution) for_substitution['heading'] += ' '+log_link_text - + for_substitution['tooltip'] = "The red contours should match the background\ + image well. Otherwise, something might have\ + gone wrong. Typically things that can go\ + wrong include: lesions\ + (missing brain tissue); bad orientation\ + headers; non-brain tissue in anatomical\ + image, etc. In rare cases, it might be that\ + the registration algorithm simply didn't\ + succeed." for_substitution['plot'] = qa_mem.cache(plot_registration)( target[0], source[0] , close=True, report_path=report_path, @@ -237,6 +252,7 @@ def generate_registration_report(target, source, output_dir, target[0], source[0], close=True, report_path=report_path, title="Outline of %s on %s" % (target[1], source[1])) for_substitution['heading'] = "" + for_substitution['tooltip'] = "" reg_plot_text = embed_in_HTML('report_sub_template.html' ,for_substitution) reg_plot.append(reg_plot_text) @@ -267,7 +283,7 @@ def generate_corregistration_report(subject_data, output_dir heading = "Corregistration %s == > %s" % (src_brain, ref_brain) for_substitution = {} - + if log: for_substitution['heading'] = heading for_substitution['id_link'] = heading.replace(" ", "_") @@ -348,7 +364,15 @@ def generate_segmentation_report(subject_data, output_dir _brain_name = "%s_%s" % (comment, brain_name) for_substitution['heading'] = "Segmentation of %s " % _brain_name - + for_substitution['tooltip'] = "Acronyms: TPM means Tissue Probability\ + Map; GM means Grey-Matter; WM means White-Matter; CSF means\ + Cerebro-Spinal Fuild. The TPM contours shoud match the\ + background image well. Otherwise, something might have gone\ + wrong. Typically things that can go wrong include: lesions\ + (missing brain tissue); bad orientation headers; non-brain\ + tissue in anatomical image (i.e needs brain extraction), etc.\ + In rare cases, it might be that the segmentation algorithm\ + simply didn't succeed." # plot contours of template compartments on subject's brain if not only_native: for_substitution['plot']=qa_mem.cache(plot_segmentation)( @@ -383,6 +407,7 @@ def generate_segmentation_report(subject_data, output_dir for_substitution['heading'] += ' '+log_link_text if not only_native: for_substitution['heading'] = "" + for_substitution['tooltip'] = "" seg_plot_text = embed_in_HTML('report_sub_template.html' ,for_substitution) @@ -476,11 +501,27 @@ def generate_tsdiffana_report(image_files, sessions, subject_id, figures = [ax.get_figure() for ax in axes] heading_template = "tsdiffana plot {0}" headings = [heading_template.format(i) for i in range(len(figures))] - - for fig, head in zip(figures, headings): + tooltips = ["(Squared) differences across sequential volumes. A large\ + value indicates an artifact that occurred during the slice\ + acquisition, possibly related to motion.", "Average signal over each\ + volume. A large drop / peak (e.g. 1%) w.r.t the mean level indicates\ + an artefact. For example, there are usually large values peaks in\ + the first few slices due to T2 relaxation effects, and these slices\ + are usually adviced to be discarded.", "Variance index per slice.\ + Note that acquisition artifacts can be slice-specific. Look at the\ + data if there is a peak somewhere.", "Scaled variance per slice\ + indicates slices where artifacts occur. A slice/time with large\ + variance should be eyeballed.", "Large variations should be confined\ + to vascular structures or ventricles. Large variations around the\ + brain indicate residual motion effects.", "Large variations should\ + be confined to vascular structures or ventricles. Large variations\ + around the brain indicate (uncorrected) motion effects."] + + for fig, head, tip in zip(figures, headings, tooltips): fig.set_rasterized(True) for_substitution['plot'] =_plot_to_svg(fig) for_substitution['heading'] = head + for_substitution['tooltip'] = tip tsdiffana_plot_text = embed_in_HTML('report_sub_template.html' ,for_substitution) tsdiffana_plot.append(tsdiffana_plot_text) diff --git a/pypreprocess/reporting/template_reports/nilearn_report_template.html b/pypreprocess/reporting/template_reports/nilearn_report_template.html index 5439e1f0..413dd1e1 100644 --- a/pypreprocess/reporting/template_reports/nilearn_report_template.html +++ b/pypreprocess/reporting/template_reports/nilearn_report_template.html @@ -4,8 +4,15 @@ -

    Still Running!

    +

    Pypreprocess report for ${subject_name}

    +

    Start time: ${start_time}

    +

    ${end_time}

    +

    Preprocessing steps:

    ${preproc_undergone} - -

    Visualisation for each step:

    +

    References

    +
      +
    • Russel A. Poldrack et al. Handbook of Functional MRI Data Analysis
    • +
    +
    +

    Visualisation for each step:

    \ No newline at end of file diff --git a/pypreprocess/reporting/template_reports/report_sub_template.html b/pypreprocess/reporting/template_reports/report_sub_template.html index bc769f88..f0977ba6 100644 --- a/pypreprocess/reporting/template_reports/report_sub_template.html +++ b/pypreprocess/reporting/template_reports/report_sub_template.html @@ -1,4 +1,3 @@ -

    ${heading}

    -${plot} -
    \ No newline at end of file +

    ${tooltip}

    + \ No newline at end of file From d1fd620247cb5ff429534e27f04cf1a02eb477d3 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Sat, 20 Feb 2021 01:43:56 +0530 Subject: [PATCH 14/30] ADD: sample new reports --- .../sample_new_report/nilearn_report.html | 69 + .../sample_new_report/nilearn_report_log.html | 1165 +++++++++++++++++ 2 files changed, 1234 insertions(+) create mode 100644 examples/sample_new_report/nilearn_report.html create mode 100644 examples/sample_new_report/nilearn_report_log.html diff --git a/examples/sample_new_report/nilearn_report.html b/examples/sample_new_report/nilearn_report.html new file mode 100644 index 00000000..1c4fbf6e --- /dev/null +++ b/examples/sample_new_report/nilearn_report.html @@ -0,0 +1,69 @@ + + + + + +

    Pypreprocess report for subj1

    +

    Start time: 19-Feb-2021 19:51:25

    +

    End time: 19-Feb-2021 19:53:06


    +

    Preprocessing steps:

    +

    All preprocessing was done using pypreprocess, a collection of python scripts and modules for preprocessing functional and anatomical MRI data.


    For each subject, the following preprocessing steps have been done:
    • Motion correction has been done so as to estimate, and then correct for, subject's head motion.
    • The subject's functional images have been coregistered to their anatomical image. Coregistration is important as it allows: (1) segmentation of the functional via segmentation of the anatomical brain; (2) inter-subject registration via inter-anatomical registration, a trick referred to as 'Indirect Normalization'; (3) ROIs to be defined on the anatomy, making it possible for activation maps to be projected and appreciated thereupon.
    • Tissue Segmentation has been employed to segment the anatomical image into GM, WM, and CSF compartments, using template TPMs (Tissue Probability Maps).
    • The segmented anatomical image has been warped into the MNI template space by applying the deformations learnt during segmentation. The same deformations have been applied to the functional images.
    +

    References

    +
      +
    • Russel A. Poldrack et al. Handbook of Functional MRI Data Analysis
    • +
    +
    +

    Visualisation for each step:

    Motion Correction (see log)

    +

    Motion parameters estimated during motion-correction. If motion is less than half a voxel, it's generally OK. Moreover, it's recommended to include these estimated motion parameters as confounds (nuissance regressors) in the the GLM.

    +

    Corregistration mean_functional_image == > anatomical_image (see log)

    +

    The red contours should match the background image well. Otherwise, something might have gone wrong. Typically things that can go wrong include: lesions (missing brain tissue); bad orientation headers; non-brain tissue in anatomical image, etc. In rare cases, it might be that the registration algorithm simply didn't succeed.

    + +

    +

    +

    Segmentation of _anatomical_image (see log)

    +

    Acronyms: TPM means Tissue Probability Map; GM means Grey-Matter; WM means White-Matter; CSF means Cerebro-Spinal Fuild. The TPM contours shoud match the background image well. Otherwise, something might have gone wrong. Typically things that can go wrong include: lesions (missing brain tissue); bad orientation headers; non-brain tissue in anatomical image (i.e needs brain extraction), etc. In rare cases, it might be that the segmentation algorithm simply didn't succeed.

    + +

    Segmentation of _mean_functional_image (see log)

    +

    Acronyms: TPM means Tissue Probability Map; GM means Grey-Matter; WM means White-Matter; CSF means Cerebro-Spinal Fuild. The TPM contours shoud match the background image well. Otherwise, something might have gone wrong. Typically things that can go wrong include: lesions (missing brain tissue); bad orientation headers; non-brain tissue in anatomical image (i.e needs brain extraction), etc. In rare cases, it might be that the segmentation algorithm simply didn't succeed.

    +

    Segmentation of warped_anatomical_image (see log)

    +

    Acronyms: TPM means Tissue Probability Map; GM means Grey-Matter; WM means White-Matter; CSF means Cerebro-Spinal Fuild. The TPM contours shoud match the background image well. Otherwise, something might have gone wrong. Typically things that can go wrong include: lesions (missing brain tissue); bad orientation headers; non-brain tissue in anatomical image (i.e needs brain extraction), etc. In rare cases, it might be that the segmentation algorithm simply didn't succeed.

    + +

    +

    + +

    Segmentation of warped_mean_functional_image (see log)

    +

    Acronyms: TPM means Tissue Probability Map; GM means Grey-Matter; WM means White-Matter; CSF means Cerebro-Spinal Fuild. The TPM contours shoud match the background image well. Otherwise, something might have gone wrong. Typically things that can go wrong include: lesions (missing brain tissue); bad orientation headers; non-brain tissue in anatomical image (i.e needs brain extraction), etc. In rare cases, it might be that the segmentation algorithm simply didn't succeed.

    + +

    +

    + +

    Normalization of anatomical_image (see log)

    +

    The red contours should match the background image well. Otherwise, something might have gone wrong. Typically things that can go wrong include: lesions (missing brain tissue); bad orientation headers; non-brain tissue in anatomical image, etc. In rare cases, it might be that the registration algorithm simply didn't succeed.

    + +

    +

    + +

    Normalization of mean_functional_image (see log)

    +

    The red contours should match the background image well. Otherwise, something might have gone wrong. Typically things that can go wrong include: lesions (missing brain tissue); bad orientation headers; non-brain tissue in anatomical image, etc. In rare cases, it might be that the registration algorithm simply didn't succeed.

    + +

    +

    +

    tsdiffana plot 0

    +

    (Squared) differences across sequential volumes. A large value indicates an artifact that occurred during the slice acquisition, possibly related to motion.

    + +

    tsdiffana plot 1

    +

    Average signal over each volume. A large drop / peak (e.g. 1%) w.r.t the mean level indicates an artefact. For example, there are usually large values peaks in the first few slices due to T2 relaxation effects, and these slices are usually adviced to be discarded.

    + +

    tsdiffana plot 2

    +

    Variance index per slice. Note that acquisition artifacts can be slice-specific. Look at the data if there is a peak somewhere.

    + +

    tsdiffana plot 3

    +

    Scaled variance per slice indicates slices where artifacts occur. A slice/time with large variance should be eyeballed.

    + +

    tsdiffana plot 4

    +

    Large variations should be confined to vascular structures or ventricles. Large variations around the brain indicate residual motion effects.

    + +

    tsdiffana plot 5

    +

    Large variations should be confined to vascular structures or ventricles. Large variations around the brain indicate (uncorrected) motion effects.

    + + \ No newline at end of file diff --git a/examples/sample_new_report/nilearn_report_log.html b/examples/sample_new_report/nilearn_report_log.html new file mode 100644 index 00000000..5997fa19 --- /dev/null +++ b/examples/sample_new_report/nilearn_report_log.html @@ -0,0 +1,1165 @@ +

    Motion Correction

    +
    Node: spm
    +=========
    +
    +
    + Hierarchy : c7cf099bae0f1d9847e476a473476de5
    + Exec ID : c7cf099bae0f1d9847e476a473476de5
    +
    +
    +Original Inputs
    +---------------
    +
    +
    +* fwhm : 
    +* in_files : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Realign/c7cf099bae0f1d9847e476a473476de5/bold.nii']
    +* interp : 
    +* jobtype : estwrite
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* out_prefix : r
    +* paths : 
    +* quality : 
    +* register_to_mean : True
    +* separation : 
    +* use_mcr : True
    +* use_v8struct : True
    +* weight_img : 
    +* wrap : 
    +* write_interp : 
    +* write_mask : 
    +* write_which : [2, 1]
    +* write_wrap : 
    +
    +
    +Execution Inputs
    +----------------
    +
    +
    +* fwhm : 
    +* in_files : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Realign/c7cf099bae0f1d9847e476a473476de5/bold.nii']
    +* interp : 
    +* jobtype : estwrite
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* out_prefix : r
    +* paths : 
    +* quality : 
    +* register_to_mean : True
    +* separation : 
    +* use_mcr : True
    +* use_v8struct : True
    +* weight_img : 
    +* wrap : 
    +* write_interp : 
    +* write_mask : 
    +* write_which : [2, 1]
    +* write_wrap : 
    +
    +
    +Execution Outputs
    +-----------------
    +
    +
    +* mean_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Realign/c7cf099bae0f1d9847e476a473476de5/meanbold.nii
    +* modified_in_files : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Realign/c7cf099bae0f1d9847e476a473476de5/bold.nii
    +* realigned_files : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Realign/c7cf099bae0f1d9847e476a473476de5/rbold.nii
    +* realignment_parameters : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Realign/c7cf099bae0f1d9847e476a473476de5/rp_bold.txt
    +
    +
    +Runtime info
    +------------
    +
    +
    +* duration : 764.984012
    +* hostname : machine
    +* prev_wd : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* working_dir : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Realign/c7cf099bae0f1d9847e476a473476de5
    +
    +
    +Terminal output
    +~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Terminal - standard output
    +~~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + ------------------------------------------
    +Setting up environment variables
    +---
    +LD_LIBRARY_PATH is .:/home/himanshu/opt/spm12/spm12/../mcr/v97/runtime/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/bin/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/os/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/opengl/lib/glnxa64
    +SPM12, version 7771 (standalone)
    +MATLAB, version 9.7.0.1296695 (R2019b) Update 4
    + ___  ____  __  __                                            
    +/ __)(  _ \(  \/  )                                           
    +\__ \ )___/ )    (   Statistical Parametric Mapping           
    +(___/(__)  (_/\/\_)  SPM12 - https://www.fil.ion.ucl.ac.uk/spm/
    +
    +Executing spm_jobman at 08-Feb-2021 13:34:56:
    +-----------------------------------------------------------------------------------------------------
    +MATLAB Version: 9.7.0.1296695 (R2019b) Update 4
    +MATLAB License Number: unknown
    +Operating System: Linux 5.8.0-41-generic #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021 x86_64
    +Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
    +-----------------------------------------------------------------------------------------------------
    +MATLAB                                                Version 9.7         (R2019b)
    +MATLAB Compiler                                       Version 7.1         (R2019b)
    +SPM version: SPM12 Release: 7771
    +SPM path: /home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/spm.m
    +
    +
    +------------------------------------------------------------------------
    +08-Feb-2021 13:34:59 - Running job #1
    +------------------------------------------------------------------------
    +08-Feb-2021 13:34:59 - Running 'Realign: Estimate & Reslice'
    +
    +SPM12: spm_realign (v7141)                         13:34:59 - 08/02/2021
    +========================================================================
    +Completed                               :          13:39:15 - 08/02/2021
    +
    +SPM12: spm_reslice (v7141)                         13:39:15 - 08/02/2021
    +========================================================================
    +Completed                               :          13:41:32 - 08/02/2021
    +08-Feb-2021 13:41:33 - Done    'Realign: Estimate & Reslice'
    +08-Feb-2021 13:41:33 - Done
    +
    +
    +
    +------------------------------------------------------------------------
    +08-Feb-2021 13:41:35 - Running job #1
    +------------------------------------------------------------------------
    +08-Feb-2021 13:41:35 - Running 'Realign: Estimate & Reslice'
    +
    +SPM12: spm_realign (v7141)                         13:41:35 - 08/02/2021
    +========================================================================
    +Completed                               :          13:44:58 - 08/02/2021
    +
    +SPM12: spm_reslice (v7141)                         13:44:58 - 08/02/2021
    +========================================================================
    +Completed                               :          13:47:30 - 08/02/2021
    +08-Feb-2021 13:47:30 - Done    'Realign: Estimate & Reslice'
    +08-Feb-2021 13:47:30 - Done
    +
    +Bye for now...
    +
    +
    +
    +Terminal - standard error
    +~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Environment
    +~~~~~~~~~~~
    +
    +
    +* COLORTERM : truecolor
    +* DBUS_SESSION_BUS_ADDRESS : unix:path=/run/user/1000/bus
    +* DESKTOP_SESSION : ubuntu
    +* DISPLAY : :0
    +* GDMSESSION : ubuntu
    +* GNOME_DESKTOP_SESSION_ID : this-is-deprecated
    +* GNOME_SHELL_SESSION_MODE : ubuntu
    +* GNOME_TERMINAL_SCREEN : /org/gnome/Terminal/screen/7c209c64_7529_474d_9245_5ff163016df2
    +* GNOME_TERMINAL_SERVICE : :1.102
    +* GPG_AGENT_INFO : /run/user/1000/gnupg/S.gpg-agent:0:1
    +* GTK_MODULES : gail:atk-bridge
    +* HOME : /home/himanshu
    +* IM_CONFIG_PHASE : 1
    +* INFOPATH : /usr/local/texlive/2020/texmf-dist/doc/info:
    +* INVOCATION_ID : 12cc06baefc34cada06c58914a65073b
    +* JOURNAL_STREAM : 8:42977
    +* KMP_DUPLICATE_LIB_OK : True
    +* KMP_INIT_AT_FORK : FALSE
    +* LANG : en_IN
    +* LANGUAGE : en_IN:en
    +* LESSCLOSE : /usr/bin/lesspipe %s %s
    +* LESSOPEN : | /usr/bin/lesspipe %s
    +* LOGNAME : himanshu
    +* LS_COLORS : rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
    +* MANAGERPID : 1341
    +* MANPATH : /usr/local/texlive/2020/texmf-dist/doc/man:
    +* OLDPWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/pypreprocess
    +* PATH : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin:/usr/local/texlive/2020/bin/x86_64-linux:/home/himanshu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    +* PS1 : (ibcpy) \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
    +* PWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* QT_ACCESSIBILITY : 1
    +* QT_IM_MODULE : ibus
    +* SESSION_MANAGER : local/machine:@/tmp/.ICE-unix/1601,unix/machine:/tmp/.ICE-unix/1601
    +* SHELL : /bin/bash
    +* SHLVL : 1
    +* SSH_AGENT_PID : 1545
    +* SSH_AUTH_SOCK : /run/user/1000/keyring/ssh
    +* TERM : xterm-256color
    +* USER : himanshu
    +* USERNAME : himanshu
    +* VIRTUAL_ENV : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy
    +* VTE_VERSION : 6003
    +* WINDOWPATH : 2
    +* XAUTHORITY : /run/user/1000/gdm/Xauthority
    +* XDG_CONFIG_DIRS : /etc/xdg/xdg-ubuntu:/etc/xdg
    +* XDG_CURRENT_DESKTOP : ubuntu:GNOME
    +* XDG_DATA_DIRS : /usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
    +* XDG_MENU_PREFIX : gnome-
    +* XDG_RUNTIME_DIR : /run/user/1000
    +* XDG_SESSION_CLASS : user
    +* XDG_SESSION_DESKTOP : ubuntu
    +* XDG_SESSION_TYPE : x11
    +* XMODIFIERS : @im=ibus
    +* _ : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin/python
    +
    +

    Corregistration mean_functional_image == > anatomical_image

    +
    Node: spm
    +=========
    +
    +
    + Hierarchy : f155d3c289f2ab9aabe514914b63c9f5
    + Exec ID : f155d3c289f2ab9aabe514914b63c9f5
    +
    +
    +Original Inputs
    +---------------
    +
    +
    +* apply_to_files : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5/rbold.nii']
    +* cost_function : 
    +* fwhm : 
    +* jobtype : estimate
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* out_prefix : r
    +* paths : 
    +* separation : 
    +* source : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5/meanbold.nii']
    +* target : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5/anat.nii
    +* tolerance : 
    +* use_mcr : True
    +* use_v8struct : True
    +* write_interp : 
    +* write_mask : 
    +* write_wrap : 
    +
    +
    +Execution Inputs
    +----------------
    +
    +
    +* apply_to_files : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5/rbold.nii']
    +* cost_function : 
    +* fwhm : 
    +* jobtype : estimate
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* out_prefix : r
    +* paths : 
    +* separation : 
    +* source : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5/meanbold.nii']
    +* target : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5/anat.nii
    +* tolerance : 
    +* use_mcr : True
    +* use_v8struct : True
    +* write_interp : 
    +* write_mask : 
    +* write_wrap : 
    +
    +
    +Execution Outputs
    +-----------------
    +
    +
    +* coregistered_files : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5/rbold.nii
    +* coregistered_source : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5/meanbold.nii
    +
    +
    +Runtime info
    +------------
    +
    +
    +* duration : 65.090562
    +* hostname : machine
    +* prev_wd : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* working_dir : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Coregister/f155d3c289f2ab9aabe514914b63c9f5
    +
    +
    +Terminal output
    +~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Terminal - standard output
    +~~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + ------------------------------------------
    +Setting up environment variables
    +---
    +LD_LIBRARY_PATH is .:/home/himanshu/opt/spm12/spm12/../mcr/v97/runtime/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/bin/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/os/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/opengl/lib/glnxa64
    +SPM12, version 7771 (standalone)
    +MATLAB, version 9.7.0.1296695 (R2019b) Update 4
    + ___  ____  __  __                                            
    +/ __)(  _ \(  \/  )                                           
    +\__ \ )___/ )    (   Statistical Parametric Mapping           
    +(___/(__)  (_/\/\_)  SPM12 - https://www.fil.ion.ucl.ac.uk/spm/
    +
    +Executing spm_jobman at 11-Feb-2021 14:18:08:
    +-----------------------------------------------------------------------------------------------------
    +MATLAB Version: 9.7.0.1296695 (R2019b) Update 4
    +MATLAB License Number: unknown
    +Operating System: Linux 5.8.0-41-generic #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021 x86_64
    +Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
    +-----------------------------------------------------------------------------------------------------
    +MATLAB                                                Version 9.7         (R2019b)
    +MATLAB Compiler                                       Version 7.1         (R2019b)
    +SPM version: SPM12 Release: 7771
    +SPM path: /home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/spm.m
    +Item estimate: No field(s) named
    +roptions
    +
    +
    +------------------------------------------------------------------------
    +11-Feb-2021 14:18:11 - Running job #1
    +------------------------------------------------------------------------
    +11-Feb-2021 14:18:11 - Running 'Coregister: Estimate'
    +
    +SPM12: spm_coreg (v7320)                           14:18:11 - 11/02/2021
    +========================================================================
    +Completed                               :          14:18:18 - 11/02/2021
    +11-Feb-2021 14:18:34 - Done    'Coregister: Estimate'
    +11-Feb-2021 14:18:34 - Done
    +
    +Item estimate: No field(s) named
    +roptions
    +
    +
    +------------------------------------------------------------------------
    +11-Feb-2021 14:18:35 - Running job #1
    +------------------------------------------------------------------------
    +11-Feb-2021 14:18:35 - Running 'Coregister: Estimate'
    +
    +SPM12: spm_coreg (v7320)                           14:18:35 - 11/02/2021
    +========================================================================
    +Completed                               :          14:18:45 - 11/02/2021
    +11-Feb-2021 14:19:00 - Done    'Coregister: Estimate'
    +11-Feb-2021 14:19:00 - Done
    +
    +Bye for now...
    +
    +
    +
    +Terminal - standard error
    +~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Environment
    +~~~~~~~~~~~
    +
    +
    +* APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL : true
    +* CHROME_DESKTOP : code-url-handler.desktop
    +* COLORTERM : truecolor
    +* DBUS_SESSION_BUS_ADDRESS : unix:path=/run/user/1000/bus
    +* DESKTOP_SESSION : ubuntu
    +* DISPLAY : :0
    +* GDMSESSION : ubuntu
    +* GIT_ASKPASS : /usr/share/code/resources/app/extensions/git/dist/askpass.sh
    +* GNOME_DESKTOP_SESSION_ID : this-is-deprecated
    +* GNOME_SHELL_SESSION_MODE : ubuntu
    +* GNOME_TERMINAL_SCREEN : /org/gnome/Terminal/screen/6d05f38b_7bd7_4720_8c85_a8b78c00e796
    +* GNOME_TERMINAL_SERVICE : :1.101
    +* GPG_AGENT_INFO : /run/user/1000/gnupg/S.gpg-agent:0:1
    +* GTK_MODULES : gail:atk-bridge
    +* HOME : /home/himanshu
    +* IM_CONFIG_PHASE : 1
    +* INFOPATH : /usr/local/texlive/2020/texmf-dist/doc/info:/usr/local/texlive/2020/texmf-dist/doc/info:
    +* INVOCATION_ID : 455d053550004ce4a63c8dd67e6fc76c
    +* JOURNAL_STREAM : 8:46571
    +* KMP_DUPLICATE_LIB_OK : True
    +* KMP_INIT_AT_FORK : FALSE
    +* LANG : en_GB.UTF-8
    +* LANGUAGE : en_IN:en
    +* LESSCLOSE : /usr/bin/lesspipe %s %s
    +* LESSOPEN : | /usr/bin/lesspipe %s
    +* LOGNAME : himanshu
    +* LS_COLORS : rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
    +* MANAGERPID : 1376
    +* MANPATH : /usr/local/texlive/2020/texmf-dist/doc/man:/usr/local/texlive/2020/texmf-dist/doc/man:
    +* OLDPWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/pypreprocess
    +* ORIGINAL_XDG_CURRENT_DESKTOP : ubuntu:GNOME
    +* PATH : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin:/usr/local/texlive/2020/bin/x86_64-linux:/usr/local/texlive/2020/bin/x86_64-linux:/home/himanshu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    +* PS1 : (ibcpy) \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
    +* PWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* QT_ACCESSIBILITY : 1
    +* QT_IM_MODULE : ibus
    +* SESSION_MANAGER : local/machine:@/tmp/.ICE-unix/1605,unix/machine:/tmp/.ICE-unix/1605
    +* SHELL : /bin/bash
    +* SHLVL : 2
    +* SSH_AGENT_PID : 1559
    +* SSH_AUTH_SOCK : /run/user/1000/keyring/ssh
    +* TERM : xterm-256color
    +* TERM_PROGRAM : vscode
    +* TERM_PROGRAM_VERSION : 1.53.1
    +* USER : himanshu
    +* USERNAME : himanshu
    +* VIRTUAL_ENV : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy
    +* VSCODE_GIT_ASKPASS_MAIN : /usr/share/code/resources/app/extensions/git/dist/askpass-main.js
    +* VSCODE_GIT_ASKPASS_NODE : /usr/share/code/code
    +* VSCODE_GIT_IPC_HANDLE : /run/user/1000/vscode-git-6bb11fa054.sock
    +* VTE_VERSION : 6003
    +* WINDOWPATH : 2
    +* XAUTHORITY : /run/user/1000/gdm/Xauthority
    +* XDG_CONFIG_DIRS : /etc/xdg/xdg-ubuntu:/etc/xdg
    +* XDG_CURRENT_DESKTOP : Unity
    +* XDG_DATA_DIRS : /usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
    +* XDG_MENU_PREFIX : gnome-
    +* XDG_RUNTIME_DIR : /run/user/1000
    +* XDG_SESSION_CLASS : user
    +* XDG_SESSION_DESKTOP : ubuntu
    +* XDG_SESSION_TYPE : x11
    +* XMODIFIERS : @im=ibus
    +* _ : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin/python
    +
    +

    Segmentation

    +
    Node: spm
    +=========
    +
    +
    + Hierarchy : 63edc8eb84a19e57f9aa6f86c461256d
    + Exec ID : 63edc8eb84a19e57f9aa6f86c461256d
    +
    +
    +Original Inputs
    +---------------
    +
    +
    +* affine_regularization : 
    +* bias_fwhm : 
    +* bias_regularization : 
    +* clean_masks : 
    +* csf_output_type : [True, True, True]
    +* data : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/anat.nii']
    +* gaussians_per_class : 
    +* gm_output_type : [True, True, True]
    +* mask_image : 
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* paths : 
    +* sampling_distance : 
    +* save_bias_corrected : 
    +* tissue_prob_maps : ['/home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/toolbox/OldSeg/grey.nii', '/home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/toolbox/OldSeg/white.nii', '/home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/toolbox/OldSeg/csf.nii']
    +* use_mcr : True
    +* use_v8struct : True
    +* warp_frequency_cutoff : 
    +* warping_regularization : 
    +* wm_output_type : [True, True, True]
    +
    +
    +Execution Inputs
    +----------------
    +
    +
    +* affine_regularization : 
    +* bias_fwhm : 
    +* bias_regularization : 
    +* clean_masks : 
    +* csf_output_type : [True, True, True]
    +* data : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/anat.nii']
    +* gaussians_per_class : 
    +* gm_output_type : [True, True, True]
    +* mask_image : 
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* paths : 
    +* sampling_distance : 
    +* save_bias_corrected : 
    +* tissue_prob_maps : ['/home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/toolbox/OldSeg/grey.nii', '/home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/toolbox/OldSeg/white.nii', '/home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/toolbox/OldSeg/csf.nii']
    +* use_mcr : True
    +* use_v8struct : True
    +* warp_frequency_cutoff : 
    +* warping_regularization : 
    +* wm_output_type : [True, True, True]
    +
    +
    +Execution Outputs
    +-----------------
    +
    +
    +* bias_corrected_image : 
    +* inverse_transformation_mat : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/anat_seg_inv_sn.mat
    +* modulated_csf_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/mwc3anat.nii
    +* modulated_gm_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/mwc1anat.nii
    +* modulated_input_image : 
    +* modulated_wm_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/mwc2anat.nii
    +* native_csf_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/c3anat.nii
    +* native_gm_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/c1anat.nii
    +* native_wm_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/c2anat.nii
    +* normalized_csf_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/wc3anat.nii
    +* normalized_gm_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/wc1anat.nii
    +* normalized_wm_image : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/wc2anat.nii
    +* transformation_mat : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d/anat_seg_sn.mat
    +
    +
    +Runtime info
    +------------
    +
    +
    +* duration : 118.807916
    +* hostname : machine
    +* prev_wd : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* working_dir : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Segment/63edc8eb84a19e57f9aa6f86c461256d
    +
    +
    +Terminal output
    +~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Terminal - standard output
    +~~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + ------------------------------------------
    +Setting up environment variables
    +---
    +LD_LIBRARY_PATH is .:/home/himanshu/opt/spm12/spm12/../mcr/v97/runtime/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/bin/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/os/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/opengl/lib/glnxa64
    +SPM12, version 7771 (standalone)
    +MATLAB, version 9.7.0.1296695 (R2019b) Update 4
    + ___  ____  __  __                                            
    +/ __)(  _ \(  \/  )                                           
    +\__ \ )___/ )    (   Statistical Parametric Mapping           
    +(___/(__)  (_/\/\_)  SPM12 - https://www.fil.ion.ucl.ac.uk/spm/
    +
    +Executing spm_jobman at 11-Feb-2021 14:19:56:
    +-----------------------------------------------------------------------------------------------------
    +MATLAB Version: 9.7.0.1296695 (R2019b) Update 4
    +MATLAB License Number: unknown
    +Operating System: Linux 5.8.0-41-generic #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021 x86_64
    +Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
    +-----------------------------------------------------------------------------------------------------
    +MATLAB                                                Version 9.7         (R2019b)
    +MATLAB Compiler                                       Version 7.1         (R2019b)
    +SPM version: SPM12 Release: 7771
    +SPM path: /home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/spm.m
    +
    +
    +------------------------------------------------------------------------
    +11-Feb-2021 14:19:59 - Running job #1
    +------------------------------------------------------------------------
    +11-Feb-2021 14:19:59 - Running 'Old Segment'
    +
    +SPM12: spm_preproc (v4916)                         14:19:59 - 11/02/2021
    +========================================================================
    +Completed                               :          14:20:31 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:20:49 - 11/02/2021
    +========================================================================
    +Completed                               :          14:20:50 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:20:50 - 11/02/2021
    +========================================================================
    +Completed                               :          14:20:50 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:20:50 - 11/02/2021
    +========================================================================
    +Completed                               :          14:20:51 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:20:51 - 11/02/2021
    +========================================================================
    +Completed                               :          14:20:51 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:20:51 - 11/02/2021
    +========================================================================
    +Completed                               :          14:20:52 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:20:52 - 11/02/2021
    +========================================================================
    +Completed                               :          14:20:52 - 11/02/2021
    +11-Feb-2021 14:20:52 - Done    'Old Segment'
    +11-Feb-2021 14:20:52 - Done
    +
    +
    +
    +------------------------------------------------------------------------
    +11-Feb-2021 14:20:53 - Running job #1
    +------------------------------------------------------------------------
    +11-Feb-2021 14:20:53 - Running 'Old Segment'
    +
    +SPM12: spm_preproc (v4916)                         14:20:53 - 11/02/2021
    +========================================================================
    +Completed                               :          14:21:23 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:21:39 - 11/02/2021
    +========================================================================
    +Completed                               :          14:21:40 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:21:40 - 11/02/2021
    +========================================================================
    +Completed                               :          14:21:40 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:21:40 - 11/02/2021
    +========================================================================
    +Completed                               :          14:21:41 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:21:41 - 11/02/2021
    +========================================================================
    +Completed                               :          14:21:41 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:21:42 - 11/02/2021
    +========================================================================
    +Completed                               :          14:21:42 - 11/02/2021
    +
    +SPM12: spm_write_sn (v4878)                        14:21:42 - 11/02/2021
    +========================================================================
    +Completed                               :          14:21:43 - 11/02/2021
    +11-Feb-2021 14:21:43 - Done    'Old Segment'
    +11-Feb-2021 14:21:43 - Done
    +
    +Bye for now...
    +
    +
    +
    +Terminal - standard error
    +~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Environment
    +~~~~~~~~~~~
    +
    +
    +* APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL : true
    +* CHROME_DESKTOP : code-url-handler.desktop
    +* COLORTERM : truecolor
    +* DBUS_SESSION_BUS_ADDRESS : unix:path=/run/user/1000/bus
    +* DESKTOP_SESSION : ubuntu
    +* DISPLAY : :0
    +* GDMSESSION : ubuntu
    +* GIT_ASKPASS : /usr/share/code/resources/app/extensions/git/dist/askpass.sh
    +* GNOME_DESKTOP_SESSION_ID : this-is-deprecated
    +* GNOME_SHELL_SESSION_MODE : ubuntu
    +* GNOME_TERMINAL_SCREEN : /org/gnome/Terminal/screen/6d05f38b_7bd7_4720_8c85_a8b78c00e796
    +* GNOME_TERMINAL_SERVICE : :1.101
    +* GPG_AGENT_INFO : /run/user/1000/gnupg/S.gpg-agent:0:1
    +* GTK_MODULES : gail:atk-bridge
    +* HOME : /home/himanshu
    +* IM_CONFIG_PHASE : 1
    +* INFOPATH : /usr/local/texlive/2020/texmf-dist/doc/info:/usr/local/texlive/2020/texmf-dist/doc/info:
    +* INVOCATION_ID : 455d053550004ce4a63c8dd67e6fc76c
    +* JOURNAL_STREAM : 8:46571
    +* KMP_DUPLICATE_LIB_OK : True
    +* KMP_INIT_AT_FORK : FALSE
    +* LANG : en_GB.UTF-8
    +* LANGUAGE : en_IN:en
    +* LESSCLOSE : /usr/bin/lesspipe %s %s
    +* LESSOPEN : | /usr/bin/lesspipe %s
    +* LOGNAME : himanshu
    +* LS_COLORS : rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
    +* MANAGERPID : 1376
    +* MANPATH : /usr/local/texlive/2020/texmf-dist/doc/man:/usr/local/texlive/2020/texmf-dist/doc/man:
    +* OLDPWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/pypreprocess
    +* ORIGINAL_XDG_CURRENT_DESKTOP : ubuntu:GNOME
    +* PATH : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin:/usr/local/texlive/2020/bin/x86_64-linux:/usr/local/texlive/2020/bin/x86_64-linux:/home/himanshu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    +* PS1 : (ibcpy) \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
    +* PWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* QT_ACCESSIBILITY : 1
    +* QT_IM_MODULE : ibus
    +* SESSION_MANAGER : local/machine:@/tmp/.ICE-unix/1605,unix/machine:/tmp/.ICE-unix/1605
    +* SHELL : /bin/bash
    +* SHLVL : 2
    +* SSH_AGENT_PID : 1559
    +* SSH_AUTH_SOCK : /run/user/1000/keyring/ssh
    +* TERM : xterm-256color
    +* TERM_PROGRAM : vscode
    +* TERM_PROGRAM_VERSION : 1.53.1
    +* USER : himanshu
    +* USERNAME : himanshu
    +* VIRTUAL_ENV : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy
    +* VSCODE_GIT_ASKPASS_MAIN : /usr/share/code/resources/app/extensions/git/dist/askpass-main.js
    +* VSCODE_GIT_ASKPASS_NODE : /usr/share/code/code
    +* VSCODE_GIT_IPC_HANDLE : /run/user/1000/vscode-git-6bb11fa054.sock
    +* VTE_VERSION : 6003
    +* WINDOWPATH : 2
    +* XAUTHORITY : /run/user/1000/gdm/Xauthority
    +* XDG_CONFIG_DIRS : /etc/xdg/xdg-ubuntu:/etc/xdg
    +* XDG_CURRENT_DESKTOP : Unity
    +* XDG_DATA_DIRS : /usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
    +* XDG_MENU_PREFIX : gnome-
    +* XDG_RUNTIME_DIR : /run/user/1000
    +* XDG_SESSION_CLASS : user
    +* XDG_SESSION_DESKTOP : ubuntu
    +* XDG_SESSION_TYPE : x11
    +* XMODIFIERS : @im=ibus
    +* _ : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin/python
    +
    +

    Normalization of anatomical_image

    +
    Node: spm
    +=========
    +
    +
    + Hierarchy : f3792463455f815074236b25867b200f
    + Exec ID : f3792463455f815074236b25867b200f
    +
    +
    +Original Inputs
    +---------------
    +
    +
    +* DCT_period_cutoff : 
    +* affine_regularization_type : 
    +* apply_to_files : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/f3792463455f815074236b25867b200f/anat.nii']
    +* jobtype : write
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* nonlinear_iterations : 
    +* nonlinear_regularization : 
    +* out_prefix : w
    +* parameter_file : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/f3792463455f815074236b25867b200f/anat_seg_sn.mat
    +* paths : 
    +* source : 
    +* source_image_smoothing : 
    +* source_weight : 
    +* template : 
    +* template_image_smoothing : 
    +* template_weight : 
    +* use_mcr : True
    +* use_v8struct : True
    +* write_bounding_box : [[-78.0, -112.0, -50.0], [78.0, 76.0, 85.0]]
    +* write_interp : 1
    +* write_preserve : 
    +* write_voxel_sizes : [1.2000000476837158, 0.9375, 0.9375]
    +* write_wrap : 
    +
    +
    +Execution Inputs
    +----------------
    +
    +
    +* DCT_period_cutoff : 
    +* affine_regularization_type : 
    +* apply_to_files : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/f3792463455f815074236b25867b200f/anat.nii']
    +* jobtype : write
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* nonlinear_iterations : 
    +* nonlinear_regularization : 
    +* out_prefix : w
    +* parameter_file : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/f3792463455f815074236b25867b200f/anat_seg_sn.mat
    +* paths : 
    +* source : 
    +* source_image_smoothing : 
    +* source_weight : 
    +* template : 
    +* template_image_smoothing : 
    +* template_weight : 
    +* use_mcr : True
    +* use_v8struct : True
    +* write_bounding_box : [[-78.0, -112.0, -50.0], [78.0, 76.0, 85.0]]
    +* write_interp : 1
    +* write_preserve : 
    +* write_voxel_sizes : [1.2000000476837158, 0.9375, 0.9375]
    +* write_wrap : 
    +
    +
    +Execution Outputs
    +-----------------
    +
    +
    +* normalization_parameters : 
    +* normalized_files : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/f3792463455f815074236b25867b200f/wanat.nii
    +* normalized_source : 
    +
    +
    +Runtime info
    +------------
    +
    +
    +* duration : 19.029302
    +* hostname : machine
    +* prev_wd : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* working_dir : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/f3792463455f815074236b25867b200f
    +
    +
    +Terminal output
    +~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Terminal - standard output
    +~~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + ------------------------------------------
    +Setting up environment variables
    +---
    +LD_LIBRARY_PATH is .:/home/himanshu/opt/spm12/spm12/../mcr/v97/runtime/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/bin/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/os/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/opengl/lib/glnxa64
    +SPM12, version 7771 (standalone)
    +MATLAB, version 9.7.0.1296695 (R2019b) Update 4
    + ___  ____  __  __                                            
    +/ __)(  _ \(  \/  )                                           
    +\__ \ )___/ )    (   Statistical Parametric Mapping           
    +(___/(__)  (_/\/\_)  SPM12 - https://www.fil.ion.ucl.ac.uk/spm/
    +
    +Executing spm_jobman at 11-Feb-2021 14:22:39:
    +-----------------------------------------------------------------------------------------------------
    +MATLAB Version: 9.7.0.1296695 (R2019b) Update 4
    +MATLAB License Number: unknown
    +Operating System: Linux 5.8.0-41-generic #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021 x86_64
    +Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
    +-----------------------------------------------------------------------------------------------------
    +MATLAB                                                Version 9.7         (R2019b)
    +MATLAB Compiler                                       Version 7.1         (R2019b)
    +SPM version: SPM12 Release: 7771
    +SPM path: /home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/spm.m
    +Conversion Normalise:Write -> Old Normalise:Write
    +
    +
    +------------------------------------------------------------------------
    +11-Feb-2021 14:22:42 - Running job #1
    +------------------------------------------------------------------------
    +11-Feb-2021 14:22:42 - Running 'Old Normalise: Write'
    +
    +SPM12: spm_write_sn (v4878)                        14:22:42 - 11/02/2021
    +========================================================================
    +Completed                               :          14:22:43 - 11/02/2021
    +11-Feb-2021 14:22:43 - Done    'Old Normalise: Write'
    +11-Feb-2021 14:22:43 - Done
    +
    +Conversion Normalise:Write -> Old Normalise:Write
    +
    +
    +------------------------------------------------------------------------
    +11-Feb-2021 14:22:44 - Running job #1
    +------------------------------------------------------------------------
    +11-Feb-2021 14:22:44 - Running 'Old Normalise: Write'
    +
    +SPM12: spm_write_sn (v4878)                        14:22:44 - 11/02/2021
    +========================================================================
    +Completed                               :          14:22:45 - 11/02/2021
    +11-Feb-2021 14:22:45 - Done    'Old Normalise: Write'
    +11-Feb-2021 14:22:45 - Done
    +
    +Bye for now...
    +
    +
    +
    +Terminal - standard error
    +~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Environment
    +~~~~~~~~~~~
    +
    +
    +* APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL : true
    +* CHROME_DESKTOP : code-url-handler.desktop
    +* COLORTERM : truecolor
    +* DBUS_SESSION_BUS_ADDRESS : unix:path=/run/user/1000/bus
    +* DESKTOP_SESSION : ubuntu
    +* DISPLAY : :0
    +* GDMSESSION : ubuntu
    +* GIT_ASKPASS : /usr/share/code/resources/app/extensions/git/dist/askpass.sh
    +* GNOME_DESKTOP_SESSION_ID : this-is-deprecated
    +* GNOME_SHELL_SESSION_MODE : ubuntu
    +* GNOME_TERMINAL_SCREEN : /org/gnome/Terminal/screen/6d05f38b_7bd7_4720_8c85_a8b78c00e796
    +* GNOME_TERMINAL_SERVICE : :1.101
    +* GPG_AGENT_INFO : /run/user/1000/gnupg/S.gpg-agent:0:1
    +* GTK_MODULES : gail:atk-bridge
    +* HOME : /home/himanshu
    +* IM_CONFIG_PHASE : 1
    +* INFOPATH : /usr/local/texlive/2020/texmf-dist/doc/info:/usr/local/texlive/2020/texmf-dist/doc/info:
    +* INVOCATION_ID : 455d053550004ce4a63c8dd67e6fc76c
    +* JOURNAL_STREAM : 8:46571
    +* KMP_DUPLICATE_LIB_OK : True
    +* KMP_INIT_AT_FORK : FALSE
    +* LANG : en_GB.UTF-8
    +* LANGUAGE : en_IN:en
    +* LESSCLOSE : /usr/bin/lesspipe %s %s
    +* LESSOPEN : | /usr/bin/lesspipe %s
    +* LOGNAME : himanshu
    +* LS_COLORS : rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
    +* MANAGERPID : 1376
    +* MANPATH : /usr/local/texlive/2020/texmf-dist/doc/man:/usr/local/texlive/2020/texmf-dist/doc/man:
    +* OLDPWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/pypreprocess
    +* ORIGINAL_XDG_CURRENT_DESKTOP : ubuntu:GNOME
    +* PATH : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin:/usr/local/texlive/2020/bin/x86_64-linux:/usr/local/texlive/2020/bin/x86_64-linux:/home/himanshu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    +* PS1 : (ibcpy) \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
    +* PWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* QT_ACCESSIBILITY : 1
    +* QT_IM_MODULE : ibus
    +* SESSION_MANAGER : local/machine:@/tmp/.ICE-unix/1605,unix/machine:/tmp/.ICE-unix/1605
    +* SHELL : /bin/bash
    +* SHLVL : 2
    +* SSH_AGENT_PID : 1559
    +* SSH_AUTH_SOCK : /run/user/1000/keyring/ssh
    +* TERM : xterm-256color
    +* TERM_PROGRAM : vscode
    +* TERM_PROGRAM_VERSION : 1.53.1
    +* USER : himanshu
    +* USERNAME : himanshu
    +* VIRTUAL_ENV : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy
    +* VSCODE_GIT_ASKPASS_MAIN : /usr/share/code/resources/app/extensions/git/dist/askpass-main.js
    +* VSCODE_GIT_ASKPASS_NODE : /usr/share/code/code
    +* VSCODE_GIT_IPC_HANDLE : /run/user/1000/vscode-git-6bb11fa054.sock
    +* VTE_VERSION : 6003
    +* WINDOWPATH : 2
    +* XAUTHORITY : /run/user/1000/gdm/Xauthority
    +* XDG_CONFIG_DIRS : /etc/xdg/xdg-ubuntu:/etc/xdg
    +* XDG_CURRENT_DESKTOP : Unity
    +* XDG_DATA_DIRS : /usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
    +* XDG_MENU_PREFIX : gnome-
    +* XDG_RUNTIME_DIR : /run/user/1000
    +* XDG_SESSION_CLASS : user
    +* XDG_SESSION_DESKTOP : ubuntu
    +* XDG_SESSION_TYPE : x11
    +* XMODIFIERS : @im=ibus
    +* _ : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin/python
    +
    +

    Normalization of mean_functional_image

    +
    Node: spm
    +=========
    +
    +
    + Hierarchy : 7bf0ff39c43852fc193e29b2e04063d2
    + Exec ID : 7bf0ff39c43852fc193e29b2e04063d2
    +
    +
    +Original Inputs
    +---------------
    +
    +
    +* DCT_period_cutoff : 
    +* affine_regularization_type : 
    +* apply_to_files : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/7bf0ff39c43852fc193e29b2e04063d2/rbold.nii']
    +* jobtype : write
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* nonlinear_iterations : 
    +* nonlinear_regularization : 
    +* out_prefix : w
    +* parameter_file : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/7bf0ff39c43852fc193e29b2e04063d2/anat_seg_sn.mat
    +* paths : 
    +* source : 
    +* source_image_smoothing : 
    +* source_weight : 
    +* template : 
    +* template_image_smoothing : 
    +* template_weight : 
    +* use_mcr : True
    +* use_v8struct : True
    +* write_bounding_box : [[-78.0, -112.0, -50.0], [78.0, 76.0, 85.0]]
    +* write_interp : 1
    +* write_preserve : 
    +* write_voxel_sizes : [3.499999761581421, 3.75, 3.75]
    +* write_wrap : 
    +
    +
    +Execution Inputs
    +----------------
    +
    +
    +* DCT_period_cutoff : 
    +* affine_regularization_type : 
    +* apply_to_files : ['/home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/7bf0ff39c43852fc193e29b2e04063d2/rbold.nii']
    +* jobtype : write
    +* matlab_cmd : /home/himanshu/opt/spm12/spm12.sh batch
    +* mfile : True
    +* nonlinear_iterations : 
    +* nonlinear_regularization : 
    +* out_prefix : w
    +* parameter_file : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/7bf0ff39c43852fc193e29b2e04063d2/anat_seg_sn.mat
    +* paths : 
    +* source : 
    +* source_image_smoothing : 
    +* source_weight : 
    +* template : 
    +* template_image_smoothing : 
    +* template_weight : 
    +* use_mcr : True
    +* use_v8struct : True
    +* write_bounding_box : [[-78.0, -112.0, -50.0], [78.0, 76.0, 85.0]]
    +* write_interp : 1
    +* write_preserve : 
    +* write_voxel_sizes : [3.499999761581421, 3.75, 3.75]
    +* write_wrap : 
    +
    +
    +Execution Outputs
    +-----------------
    +
    +
    +* normalization_parameters : 
    +* normalized_files : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/7bf0ff39c43852fc193e29b2e04063d2/wrbold.nii
    +* normalized_source : 
    +
    +
    +Runtime info
    +------------
    +
    +
    +* duration : 123.012402
    +* hostname : machine
    +* prev_wd : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* working_dir : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/test-outputs/test_old/subj1/cache_dir/nipype_mem/nipype-interfaces-spm-preprocess-Normalize/7bf0ff39c43852fc193e29b2e04063d2
    +
    +
    +Terminal output
    +~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Terminal - standard output
    +~~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + ------------------------------------------
    +Setting up environment variables
    +---
    +LD_LIBRARY_PATH is .:/home/himanshu/opt/spm12/spm12/../mcr/v97/runtime/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/bin/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/os/glnxa64:/home/himanshu/opt/spm12/spm12/../mcr/v97/sys/opengl/lib/glnxa64
    +SPM12, version 7771 (standalone)
    +MATLAB, version 9.7.0.1296695 (R2019b) Update 4
    + ___  ____  __  __                                            
    +/ __)(  _ \(  \/  )                                           
    +\__ \ )___/ )    (   Statistical Parametric Mapping           
    +(___/(__)  (_/\/\_)  SPM12 - https://www.fil.ion.ucl.ac.uk/spm/
    +
    +Executing spm_jobman at 11-Feb-2021 14:23:00:
    +-----------------------------------------------------------------------------------------------------
    +MATLAB Version: 9.7.0.1296695 (R2019b) Update 4
    +MATLAB License Number: unknown
    +Operating System: Linux 5.8.0-41-generic #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021 x86_64
    +Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
    +-----------------------------------------------------------------------------------------------------
    +MATLAB                                                Version 9.7         (R2019b)
    +MATLAB Compiler                                       Version 7.1         (R2019b)
    +SPM version: SPM12 Release: 7771
    +SPM path: /home/himanshu/opt/spm12/spm12/spm12_mcr/spm12/spm12/spm.m
    +Conversion Normalise:Write -> Old Normalise:Write
    +
    +
    +------------------------------------------------------------------------
    +11-Feb-2021 14:23:04 - Running job #1
    +------------------------------------------------------------------------
    +11-Feb-2021 14:23:04 - Running 'Old Normalise: Write'
    +
    +SPM12: spm_write_sn (v4878)                        14:23:04 - 11/02/2021
    +========================================================================
    +Completed                               :          14:23:55 - 11/02/2021
    +11-Feb-2021 14:23:56 - Done    'Old Normalise: Write'
    +11-Feb-2021 14:23:56 - Done
    +
    +Conversion Normalise:Write -> Old Normalise:Write
    +
    +
    +------------------------------------------------------------------------
    +11-Feb-2021 14:23:57 - Running job #1
    +------------------------------------------------------------------------
    +11-Feb-2021 14:23:57 - Running 'Old Normalise: Write'
    +
    +SPM12: spm_write_sn (v4878)                        14:23:57 - 11/02/2021
    +========================================================================
    +Completed                               :          14:24:50 - 11/02/2021
    +11-Feb-2021 14:24:51 - Done    'Old Normalise: Write'
    +11-Feb-2021 14:24:51 - Done
    +
    +Bye for now...
    +
    +
    +
    +Terminal - standard error
    +~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    +
    + 
    +
    +
    +Environment
    +~~~~~~~~~~~
    +
    +
    +* APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL : true
    +* CHROME_DESKTOP : code-url-handler.desktop
    +* COLORTERM : truecolor
    +* DBUS_SESSION_BUS_ADDRESS : unix:path=/run/user/1000/bus
    +* DESKTOP_SESSION : ubuntu
    +* DISPLAY : :0
    +* GDMSESSION : ubuntu
    +* GIT_ASKPASS : /usr/share/code/resources/app/extensions/git/dist/askpass.sh
    +* GNOME_DESKTOP_SESSION_ID : this-is-deprecated
    +* GNOME_SHELL_SESSION_MODE : ubuntu
    +* GNOME_TERMINAL_SCREEN : /org/gnome/Terminal/screen/6d05f38b_7bd7_4720_8c85_a8b78c00e796
    +* GNOME_TERMINAL_SERVICE : :1.101
    +* GPG_AGENT_INFO : /run/user/1000/gnupg/S.gpg-agent:0:1
    +* GTK_MODULES : gail:atk-bridge
    +* HOME : /home/himanshu
    +* IM_CONFIG_PHASE : 1
    +* INFOPATH : /usr/local/texlive/2020/texmf-dist/doc/info:/usr/local/texlive/2020/texmf-dist/doc/info:
    +* INVOCATION_ID : 455d053550004ce4a63c8dd67e6fc76c
    +* JOURNAL_STREAM : 8:46571
    +* KMP_DUPLICATE_LIB_OK : True
    +* KMP_INIT_AT_FORK : FALSE
    +* LANG : en_GB.UTF-8
    +* LANGUAGE : en_IN:en
    +* LESSCLOSE : /usr/bin/lesspipe %s %s
    +* LESSOPEN : | /usr/bin/lesspipe %s
    +* LOGNAME : himanshu
    +* LS_COLORS : rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
    +* MANAGERPID : 1376
    +* MANPATH : /usr/local/texlive/2020/texmf-dist/doc/man:/usr/local/texlive/2020/texmf-dist/doc/man:
    +* OLDPWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work/pypreprocess
    +* ORIGINAL_XDG_CURRENT_DESKTOP : ubuntu:GNOME
    +* PATH : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin:/usr/local/texlive/2020/bin/x86_64-linux:/usr/local/texlive/2020/bin/x86_64-linux:/home/himanshu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    +* PS1 : (ibcpy) \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
    +* PWD : /home/himanshu/Desktop/1-IBC-INRIA/x-working/reporting-work
    +* QT_ACCESSIBILITY : 1
    +* QT_IM_MODULE : ibus
    +* SESSION_MANAGER : local/machine:@/tmp/.ICE-unix/1605,unix/machine:/tmp/.ICE-unix/1605
    +* SHELL : /bin/bash
    +* SHLVL : 2
    +* SSH_AGENT_PID : 1559
    +* SSH_AUTH_SOCK : /run/user/1000/keyring/ssh
    +* TERM : xterm-256color
    +* TERM_PROGRAM : vscode
    +* TERM_PROGRAM_VERSION : 1.53.1
    +* USER : himanshu
    +* USERNAME : himanshu
    +* VIRTUAL_ENV : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy
    +* VSCODE_GIT_ASKPASS_MAIN : /usr/share/code/resources/app/extensions/git/dist/askpass-main.js
    +* VSCODE_GIT_ASKPASS_NODE : /usr/share/code/code
    +* VSCODE_GIT_IPC_HANDLE : /run/user/1000/vscode-git-6bb11fa054.sock
    +* VTE_VERSION : 6003
    +* WINDOWPATH : 2
    +* XAUTHORITY : /run/user/1000/gdm/Xauthority
    +* XDG_CONFIG_DIRS : /etc/xdg/xdg-ubuntu:/etc/xdg
    +* XDG_CURRENT_DESKTOP : Unity
    +* XDG_DATA_DIRS : /usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
    +* XDG_MENU_PREFIX : gnome-
    +* XDG_RUNTIME_DIR : /run/user/1000
    +* XDG_SESSION_CLASS : user
    +* XDG_SESSION_DESKTOP : ubuntu
    +* XDG_SESSION_TYPE : x11
    +* XMODIFIERS : @im=ibus
    +* _ : /home/himanshu/Desktop/1-IBC-INRIA/ibcpy/bin/python
    +
    +
    + \ No newline at end of file From 9378e0d7096ed2860b075a1a15d2218f04e5b541 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Tue, 23 Feb 2021 13:28:43 +0530 Subject: [PATCH 15/30] FIX: Bertrand's review comments --- pypreprocess/nipype_preproc_spm_utils.py | 67 +++++----- pypreprocess/reporting/check_preprocessing.py | 25 ++-- pypreprocess/reporting/nilearn_reporting.py | 126 +++++++++--------- pypreprocess/reporting/preproc_reporter.py | 27 ++-- pypreprocess/subject_data.py | 8 -- 5 files changed, 117 insertions(+), 136 deletions(-) diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index 0dcec99e..cb0acb0f 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -42,7 +42,12 @@ _do_subject_smooth as _pp_do_subject_smooth) from nilearn.plotting.html_document import HTMLDocument -from .reporting.nilearn_reporting import * +from .reporting.nilearn_reporting import (embed_in_HTML, + initialize_report, add_component, finalize_report, + generate_realignment_report, generate_registration_report, + generate_corregistration_report, generate_segmentation_report, + generate_normalization_report, generate_tsdiffana_report, + generate_preproc_steps_docstring) # configure SPM EPI_TEMPLATE = SPM_DIR = SPM_T1_TEMPLATE = T1_TEMPLATE = None @@ -242,8 +247,8 @@ def _do_subject_slice_timing(subject_data, TR, TA=None, spm_dir=None, def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, caching=True, report=True, software="spm", spm_dir=None, matlab_exec=None, spm_mcr=None, - hardlink_output=True,report_path=None,log_path=None - , **kwargs): + hardlink_output=True, report_path=None, + log_path=None, **kwargs): """ Wrapper for running spm.Realign with optional reporting. @@ -383,14 +388,13 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, if report: subject_data.generate_realignment_thumbnails() - if report_path not in [False,None]: + if report_path not in [False, None]: rp_plot, rp_log = generate_realignment_report( subject_data=subject_data, estimated_motion=subject_data.realignment_parameters, output_dir=subject_data.output_dir, - report_path=report_path - ) - add_component(rp_plot,report_path,rp_log,log_path) + report_path=report_path) + add_component(rp_plot, report_path, rp_log,log_path) return subject_data.sanitize() @@ -398,8 +402,8 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, matlab_exec=None, spm_mcr=None, coreg_anat_to_func=False, caching=True, - report=True, software="spm", hardlink_output=True - ,report_path=None,log_path=None,**kwargs): + report=True, software="spm", hardlink_output=True, + report_path=None, log_path=None, **kwargs): """Wrapper for running spm.Coregister with optional reporting. If subject_data has a `results_gallery` attribute, then QA thumbnails will @@ -466,7 +470,7 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, return _pp_do_subject_coregister( subject_data, reslice=reslice, coreg_func_to_anat=not coreg_anat_to_func, report=report, - caching=caching,) + caching=caching) # sanitize software choice if not software in ["spm", "fsl"]: @@ -566,12 +570,12 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, if report: subject_data.generate_coregistration_thumbnails() - if report_path not in [False,None]: + if report_path not in [False, None]: correg_plot, correg_log = generate_corregistration_report( subject_data=subject_data, output_dir=subject_data.output_dir, report_path=report_path) - add_component(correg_plot,report_path,correg_log,log_path) + add_component(correg_plot, report_path, correg_log, log_path) return subject_data.sanitize() @@ -579,7 +583,7 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, matlab_exec=None, spm_mcr=None, normalize=False, caching=True, report=True, software="spm", - hardlink_output=True,report_path=None,log_path=None): + hardlink_output=True, report_path=None, log_path=None): """ Wrapper for running spm.Segment with optional reporting. @@ -713,15 +717,15 @@ def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, if report: subject_data.generate_segmentation_thumbnails() - if report_path not in [False,None]: + if report_path not in [False, None]: seg_plot, seg_log = generate_segmentation_report( subject_data=subject_data, output_dir=subject_data.output_dir, subject_gm_file=getattr(subject_data, 'gm', None), subject_wm_file=getattr(subject_data, 'wm', None), subject_csf_file=getattr(subject_data, 'csf', None), - only_native=True,report_path=report_path) - add_component(seg_plot,report_path,seg_log,log_path) + only_native=True, report_path=report_path) + add_component(seg_plot, report_path, seg_log, log_path) return subject_data.sanitize() @@ -732,9 +736,8 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, anat_write_voxel_sizes=[1, 1, 1], report=True, software="spm", hardlink_output=True, smooth_software="spm", epi_template=None, - t1_template=None, coregister=True - ,report_path=None,log_path=None - , **kwargs): + t1_template=None, coregister=True, + report_path=None, log_path=None, **kwargs): """ Wrapper for running spm.Segment with optional reporting. @@ -958,12 +961,12 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, if report: subject_data.generate_normalization_thumbnails() - if report_path not in [False,None]: + if report_path not in [False, None]: norm_plot, norm_log = generate_normalization_report( subject_data=subject_data, output_dir=subject_data.output_dir, report_path=report_path) - add_component(norm_plot,report_path,norm_log,log_path) + add_component(norm_plot, report_path, norm_log, log_path) # explicit smoothing if np.sum(fwhm) + np.sum(anat_fwhm) > 0: @@ -979,8 +982,7 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, def _do_subject_smooth(subject_data, fwhm, anat_fwhm=None, spm_dir=None, matlab_exec=None, spm_mcr=None, caching=True, - software="spm", report=True, hardlink_output=True, - nilearn_report=None): + software="spm", report=True, hardlink_output=True): """ Wrapper for running spm.Smooth with optional reporting. @@ -1402,7 +1404,7 @@ def do_subject_preproc( tsdiffana=tsdiffana) if nilearn_report: - report_path,log_path = initialize_report(subject_data.output_dir, + report_path, log_path = initialize_report(subject_data.output_dir, subject_name=subject_data.subject_id, dcm2nii=subject_data.isdicom, deleteorient=deleteorient, @@ -1415,10 +1417,9 @@ def do_subject_preproc( dartel=dartel, coreg_func_to_anat=not coreg_anat_to_func, prepreproc_undergone=prepreproc_undergone, - has_func=subject_data.func - ) + has_func=subject_data.func) else: - report_path,log_path = None, None + report_path, log_path = None, None ############################# # Slice-Timing Correction @@ -1448,7 +1449,7 @@ def do_subject_preproc( report=report, hardlink_output=hardlink_output, software=realign_software, - report_path=report_path,log_path=log_path, + report_path=report_path, log_path=log_path, **kwargs.get("interface_realign", {})) # handle failed node @@ -1467,7 +1468,7 @@ def do_subject_preproc( report=report, hardlink_output=hardlink_output, software=coregister_software, - report_path=report_path,log_path=log_path, + report_path=report_path, log_path=log_path, **kwargs.get("interface_coregister", {})) # handle failed node @@ -1481,7 +1482,7 @@ def do_subject_preproc( if segment: subject_data = _do_subject_segment( subject_data, caching=caching, normalize=normalize, report=report, - hardlink_output=hardlink_output,report_path=report_path, + hardlink_output=hardlink_output, report_path=report_path, log_path=log_path) @@ -1541,9 +1542,9 @@ def do_subject_preproc( if tsdiffana: tdsdiffana_plot = generate_tsdiffana_report( - subject_data.func, subject_data.session_ids - , subject_data.subject_id - , output_dir=subject_data.output_dir) + subject_data.func, subject_data.session_ids, + subject_data.subject_id, + output_dir=subject_data.output_dir) add_component(tdsdiffana_plot,report_path) diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index ad8111e5..760c1346 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -18,19 +18,18 @@ import base64 import urllib.parse -def _plot_to_svg(fig,dpi=300): +def _plot_to_svg(fig, dpi=300): with io.BytesIO() as io_buffer: fig.savefig( - io_buffer, format="svg", facecolor="white", edgecolor="white", - dpi=dpi - ) + io_buffer, format="svg", facecolor="white", + edgecolor="white", dpi=dpi) return urllib.parse.quote(io_buffer.getvalue().decode("utf-8")) -def plot_spm_motion_parameters(parameter_file, lengths - , title=None, output_filename=None, close=False - , report_path=None): +def plot_spm_motion_parameters(parameter_file, lengths, + title=None, output_filename=None, + close=False, report_path=None): """ Plot motion parameters obtained with SPM software Parameters @@ -68,9 +67,8 @@ def plot_spm_motion_parameters(parameter_file, lengths plt.xlabel('time(scans)') plt.ylabel('Estimated motion (mm/degrees)') - if report_path not in [False,None]: + if report_path not in [False, None]: fig = plt.gcf() - # fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None @@ -147,9 +145,8 @@ def plot_registration(reference_img, coregistered_img, # misc _slicer.title(title, size=12, color='w', alpha=0) - if report_path not in [False,None]: + if report_path not in [False, None]: fig = plt.gcf() - # fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None @@ -215,17 +212,15 @@ def plot_segmentation( # misc _slicer.title(title, size=12, color='w', alpha=0) - if report_path not in [False,None]: + if report_path not in [False, None]: fig = plt.gcf() - # fig.set_rasterized(True) svg_plot = _plot_to_svg(fig) else: svg_plot = None if not output_filename is None: plt.savefig(output_filename, bbox_inches='tight', dpi=200, - facecolor="k", - edgecolor="k") + facecolor="k", edgecolor="k") if close: plt.close() diff --git a/pypreprocess/reporting/nilearn_reporting.py b/pypreprocess/reporting/nilearn_reporting.py index 1fe7cce8..8040615d 100644 --- a/pypreprocess/reporting/nilearn_reporting.py +++ b/pypreprocess/reporting/nilearn_reporting.py @@ -116,11 +116,12 @@ def initialize_report(output_dir, # create a separate HTML with all the logs log_outfile = os.path.join(output_dir, '{}_log.html'.format(filename)) log_HTML = HTMLDocument("").save_as_html(log_outfile) - return report_outfile,log_outfile + return report_outfile, log_outfile else: - return report_outfile,None + return report_outfile, None -def add_component(to_add_report,html_report_path,to_add_log=None,html_log_path=None): +def add_component(to_add_report, html_report_path, + to_add_log=None, html_log_path=None): html_file_obj = open(html_report_path, 'a') html_file_obj.write(to_add_report) @@ -132,7 +133,7 @@ def add_component(to_add_report,html_report_path,to_add_log=None,html_log_path=N html_file_obj.close() -def finalize_report(html_report_path,html_log_path=None): +def finalize_report(html_report_path, html_log_path=None): html_file_obj = open(html_report_path, 'r') lines = html_file_obj.readlines() @@ -156,8 +157,8 @@ def finalize_report(html_report_path,html_log_path=None): print('Nilearn-style report created: {}'.format(html_report_path )) -def generate_realignment_report(subject_data,estimated_motion, output_dir - , tooltip=None, log=True, report_path=None): +def generate_realignment_report(subject_data, estimated_motion, output_dir, + tooltip=None, log=True, report_path=None): """ Creates plots associated with realignment and returns it as an SVG url. """ @@ -180,8 +181,8 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir estimated_motion = np.vstack(tmp) for_substitution['plot'] = plot_spm_motion_parameters( - parameter_file=estimated_motion - , lengths=lengths, close=True, report_path=report_path, + parameter_file=estimated_motion, lengths=lengths, + close=True, report_path=report_path, title="Plot of Estimated motion for %d sessions" % len(sessions)) for_substitution['heading'] = "Motion Correction" for_substitution['tooltip'] = "Motion parameters estimated during \ @@ -193,24 +194,24 @@ def generate_realignment_report(subject_data,estimated_motion, output_dir if log: for_substitution['id_link'] = for_substitution['heading'].replace(" ", "_") for_substitution['log'] = get_log_text(subject_data.func) - for_substitution['log_link'] = "file:///"+os.path.join(output_dir - , 'nilearn_report_log.html#' + for_substitution['log_link'] = "file:///"+os.path.join(output_dir, + 'nilearn_report_log.html#' )+for_substitution['id_link'] - rp_log_text = embed_in_HTML('log_sub_template.html' - ,for_substitution) + rp_log_text = embed_in_HTML('log_sub_template.html', + for_substitution) else: rp_log_text = None log_link_text = embed_in_HTML('log_link_template.html',for_substitution) for_substitution['heading'] = for_substitution['heading']+' '+log_link_text - rp_plot_text = embed_in_HTML('report_sub_template.html',for_substitution) + rp_plot_text = embed_in_HTML('report_sub_template.html', for_substitution) return rp_plot_text, rp_log_text def generate_registration_report(target, source, output_dir, - for_substitution, report_path=None): + for_substitution, report_path=None): """ Plots target's outline on source image and returns them as SVG url embedded in HTML. """ @@ -225,8 +226,8 @@ def generate_registration_report(target, source, output_dir, # plot outline (edge map) of template on the # normalized image - log_link_text = embed_in_HTML('log_link_template.html' - ,for_substitution) + log_link_text = embed_in_HTML('log_link_template.html', + for_substitution) for_substitution['heading'] += ' '+log_link_text for_substitution['tooltip'] = "The red contours should match the background\ image well. Otherwise, something might have\ @@ -238,11 +239,10 @@ def generate_registration_report(target, source, output_dir, the registration algorithm simply didn't\ succeed." for_substitution['plot'] = qa_mem.cache(plot_registration)( - target[0], source[0] - , close=True, report_path=report_path, + target[0], source[0], close=True, report_path=report_path, title="Outline of %s on %s" % (target[1], source[1])) - reg_plot_text = embed_in_HTML('report_sub_template.html' - ,for_substitution) + reg_plot_text = embed_in_HTML('report_sub_template.html', + for_substitution) reg_plot.append(reg_plot_text) # plot outline (edge map) of the normalized image @@ -253,16 +253,16 @@ def generate_registration_report(target, source, output_dir, title="Outline of %s on %s" % (target[1], source[1])) for_substitution['heading'] = "" for_substitution['tooltip'] = "" - reg_plot_text = embed_in_HTML('report_sub_template.html' - ,for_substitution) + reg_plot_text = embed_in_HTML('report_sub_template.html', + for_substitution) reg_plot.append(reg_plot_text) return '\n'.join(reg_plot) -def generate_corregistration_report(subject_data, output_dir - , coreg_func_to_anat=True, log=True, tooltip=None - , report_path=None): +def generate_corregistration_report(subject_data, output_dir, + coreg_func_to_anat=True, log=True, + tooltip=None, report_path=None): """ Creates plots associated with corregistration and returns them as SVG url embedded in HTML. @@ -288,23 +288,23 @@ def generate_corregistration_report(subject_data, output_dir for_substitution['heading'] = heading for_substitution['id_link'] = heading.replace(" ", "_") for_substitution['log'] = get_log_text(src) - for_substitution['log_link'] = "file:///"+os.path.join(output_dir - , 'nilearn_report_log.html#' + for_substitution['log_link'] = 'file:///'+os.path.join(output_dir, + 'nilearn_report_log.html#' )+for_substitution['id_link'] - log_text = embed_in_HTML('log_sub_template.html' - ,for_substitution) + log_text = embed_in_HTML('log_sub_template.html', + for_substitution) else: log_text = None - return generate_registration_report((ref, ref_brain) - , (src, src_brain), output_dir, for_substitution - , report_path=report_path), log_text + return generate_registration_report((ref, ref_brain), + (src, src_brain), output_dir, for_substitution, + report_path=report_path), log_text -def generate_segmentation_report(subject_data, output_dir - , subject_gm_file=None, subject_wm_file=None, subject_csf_file=None - , comment="", only_native=False, tooltip=None - , log=True, report_path=None): +def generate_segmentation_report(subject_data, output_dir, + subject_gm_file=None, subject_wm_file=None, subject_csf_file=None, + comment="", only_native=False, tooltip=None, + log=True, report_path=None): """ Creates plots associated with segmentation and returns them as SVG url embedded in HTML. """ @@ -324,21 +324,20 @@ def generate_segmentation_report(subject_data, output_dir return if log: - for_substitution['heading'] = "Segmentation" + for_substitution['heading'] = 'Segmentation' for_substitution['id_link'] = for_substitution['heading'] - for_substitution['log'] = get_log_text(getattr(subject_data - , 'gm') or getattr(subject_data - , 'wm') or getattr(subject_data, 'csf')) - for_substitution['log_link'] = "file:///"+os.path.join(output_dir - , 'nilearn_report_log.html#' + for_substitution['log'] = get_log_text(getattr(subject_data, + 'gm') or getattr(subject_data, + 'wm') or getattr(subject_data, 'csf')) + for_substitution['log_link'] = 'file:///'+os.path.join(output_dir, + 'nilearn_report_log.html#' )+for_substitution['heading'] - log_text = embed_in_HTML('log_sub_template.html' - ,for_substitution) + log_text = embed_in_HTML('log_sub_template.html',for_substitution) else: log_text = None - for_substitution['log_link'] = "file:///"+os.path.join(output_dir - , 'nilearn_report_log.html#' - )+"Segmentation" + for_substitution['log_link'] = 'file:///'+os.path.join(output_dir, + 'nilearn_report_log.html#' + )+'Segmentation' for brain_name, brain, cmap in zip( ['anatomical_image', 'mean_functional_image'], @@ -382,11 +381,11 @@ def generate_segmentation_report(subject_data, output_dir title=("Template GM, WM, and CSF TPM contours on " "subject's %s") % _brain_name) - log_link_text = embed_in_HTML('log_link_template.html' - ,for_substitution) + log_link_text = embed_in_HTML('log_link_template.html', + for_substitution) for_substitution['heading'] += ' '+log_link_text - seg_plot_text = embed_in_HTML('report_sub_template.html' - ,for_substitution) + seg_plot_text = embed_in_HTML('report_sub_template.html', + for_substitution) seg_plot.append(seg_plot_text) # plot contours of subject's compartments on subject's brain @@ -402,15 +401,15 @@ def generate_segmentation_report(subject_data, output_dir csf_filename=subject_csf_file, cmap=cmap, close=True, report_path=report_path, title=("%s TPM contours on " "subject's %s") % (title_prefix, _brain_name)) - log_link_text = embed_in_HTML('log_link_template.html' - ,for_substitution) + log_link_text = embed_in_HTML('log_link_template.html', + for_substitution) for_substitution['heading'] += ' '+log_link_text if not only_native: for_substitution['heading'] = "" for_substitution['tooltip'] = "" - seg_plot_text = embed_in_HTML('report_sub_template.html' - ,for_substitution) + seg_plot_text = embed_in_HTML('report_sub_template.html', + for_substitution) seg_plot.append(seg_plot_text) if log: @@ -418,8 +417,8 @@ def generate_segmentation_report(subject_data, output_dir else: return '\n'.join(seg_plot) -def generate_normalization_report(subject_data, output_dir - , tooltip=None, log=True, report_path=None): +def generate_normalization_report(subject_data, output_dir, tooltip=None, + log=True, report_path=None): """ Creates plots associated with normalization and returns them as SVG url embedded in HTML. @@ -445,8 +444,7 @@ def generate_normalization_report(subject_data, output_dir comment="warped",log=False, report_path=report_path) norm_plot.append(plot_text) - # logs.append(log_text) - + for brain_name, brain, cmap in zip( ['anatomical_image', 'mean_functional_image'], [subject_data.anat, subject_data.func], @@ -460,11 +458,11 @@ def generate_normalization_report(subject_data, output_dir for_substitution['id_link'] = for_substitution['heading'].replace( " ", "_") for_substitution['log'] = get_log_text(brain) - for_substitution['log_link'] = "file:///"+os.path.join(output_dir + for_substitution['log_link'] = 'file:///'+os.path.join(output_dir , 'nilearn_report_log.html#' )+for_substitution['id_link'] - log_text = embed_in_HTML('log_sub_template.html' - ,for_substitution) + log_text = embed_in_HTML('log_sub_template.html', + for_substitution) else: log_text = None @@ -522,8 +520,8 @@ def generate_tsdiffana_report(image_files, sessions, subject_id, for_substitution['plot'] =_plot_to_svg(fig) for_substitution['heading'] = head for_substitution['tooltip'] = tip - tsdiffana_plot_text = embed_in_HTML('report_sub_template.html' - ,for_substitution) + tsdiffana_plot_text = embed_in_HTML('report_sub_template.html', + for_substitution) tsdiffana_plot.append(tsdiffana_plot_text) return '\n'.join(tsdiffana_plot) diff --git a/pypreprocess/reporting/preproc_reporter.py b/pypreprocess/reporting/preproc_reporter.py index b7059755..d84c55cb 100644 --- a/pypreprocess/reporting/preproc_reporter.py +++ b/pypreprocess/reporting/preproc_reporter.py @@ -464,8 +464,8 @@ def generate_registration_thumbnails( "%s_on_%s_outline.png" % (target[1], source[1])) qa_mem.cache(plot_registration)( - target[0], source[0], output_filename=outline - , close=True,title="Outline of %s on %s" % (target[1], source[1])) + target[0], source[0], output_filename=outline, + close=True, title="Outline of %s on %s" % (target[1], source[1])) # create thumbnail if results_gallery: @@ -481,19 +481,16 @@ def generate_registration_thumbnails( # on the SPM MNI template source, target = (target, source) outline = os.path.join( - output_dir, - "%s_on_%s_outline.png" % (target[1], - source[1])) + output_dir, "%s_on_%s_outline.png" % (target[1], source[1])) outline_axial = os.path.join( output_dir, "%s_on_%s_outline_axial.png" % (target[1], source[1])) qa_mem.cache(plot_registration)( target[0], source[0], output_filename=outline_axial, close=True, - display_mode='z',title="Outline of %s on %s" % (target[1],source[1])) + display_mode='z', title="Outline of %s on %s" % (target[1],source[1])) output['axial'] = outline_axial qa_mem.cache(plot_registration)( - target[0], source[0], output_filename=outline - , close=True, + target[0], source[0], output_filename=outline, close=True, title="Outline of %s on %s" % (target[1], source[1])) # create thumbnail @@ -639,8 +636,8 @@ def generate_segmentation_thumbnails( qa_mem.cache(plot_segmentation)( normalized_file, GM_TEMPLATE, wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, display_mode='z', cmap=cmap, - output_filename=template_compartments_contours_axial - ,title="template TPMs", close=True) + output_filename=template_compartments_contours_axial, + title="template TPMs", close=True) qa_mem.cache(plot_segmentation)( normalized_file, gm_filename=GM_TEMPLATE, wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, @@ -786,10 +783,9 @@ def generate_realignment_thumbnails( lengths = [len(each) for each in tmp] estimated_motion = np.vstack(tmp) rp_plot = os.path.join(output_dir, 'rp_plot.png') - plot_spm_motion_parameters(parameter_file=estimated_motion - ,output_filename=rp_plot, lengths=lengths - , close=True, - title="Plot of Estimated motion for %d sessions" % len(sessions)) + plot_spm_motion_parameters(parameter_file=estimated_motion, + output_filename=rp_plot, lengths=lengths, close=True, + title="Plot of Estimated motion for %d sessions" % len(sessions)) # create thumbnail if results_gallery: @@ -957,8 +953,7 @@ def finalize_report(): coreg_func_to_anat=func_to_anat, segment=did_segment, normalize=did_normalize, - additional_preproc_undergone=additional_preproc_undergone, - ) + additional_preproc_undergone=additional_preproc_undergone) report_log_filename = os.path.join( output_dir, 'report_log.html') diff --git a/pypreprocess/subject_data.py b/pypreprocess/subject_data.py index 065eba34..27fa9d4a 100644 --- a/pypreprocess/subject_data.py +++ b/pypreprocess/subject_data.py @@ -606,14 +606,6 @@ def init_report(self, parent_results_gallery=None, fd.write(str(main_html)) fd.close() - # def init_nil_report(self,preproc_undergone=None): - - # self.nil_report_output_dir = os.path.join(self.output_dir, "nil_report") - # if not os.path.exists(self.nil_report_output_dir): - # os.makedirs(self.nil_report_output_dir) - - # self. - def finalize_report(self, parent_results_gallery=None, last_stage=False): """ Finalizes the business of reporting. From 3410b0dc695f3bcf115d2778e862c6b247c92241 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Tue, 23 Feb 2021 19:15:26 +0530 Subject: [PATCH 16/30] FIX: cut-off tsdiffana y-axis labels --- pypreprocess/reporting/check_preprocessing.py | 2 ++ pypreprocess/reporting/preproc_reporter.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pypreprocess/reporting/check_preprocessing.py b/pypreprocess/reporting/check_preprocessing.py index 760c1346..dec1ef25 100644 --- a/pypreprocess/reporting/check_preprocessing.py +++ b/pypreprocess/reporting/check_preprocessing.py @@ -21,6 +21,8 @@ def _plot_to_svg(fig, dpi=300): with io.BytesIO() as io_buffer: + + fig.tight_layout(pad=0.4) fig.savefig( io_buffer, format="svg", facecolor="white", edgecolor="white", dpi=dpi) diff --git a/pypreprocess/reporting/preproc_reporter.py b/pypreprocess/reporting/preproc_reporter.py index d84c55cb..a7a0f023 100644 --- a/pypreprocess/reporting/preproc_reporter.py +++ b/pypreprocess/reporting/preproc_reporter.py @@ -486,7 +486,7 @@ def generate_registration_thumbnails( output_dir, "%s_on_%s_outline_axial.png" % (target[1], source[1])) qa_mem.cache(plot_registration)( target[0], source[0], output_filename=outline_axial, close=True, - display_mode='z', title="Outline of %s on %s" % (target[1],source[1])) + display_mode='z', title="Outline of %s on %s" % (target[1], source[1])) output['axial'] = outline_axial qa_mem.cache(plot_registration)( From be6201b279c212d730c08346187f2621d52bf2c5 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Tue, 23 Feb 2021 19:27:06 +0530 Subject: [PATCH 17/30] FIX: Nicolas's travis fixes --- pypreprocess/coreg.py | 4 ++++ pypreprocess/io_utils.py | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/pypreprocess/coreg.py b/pypreprocess/coreg.py index f2b781d1..c5786e10 100644 --- a/pypreprocess/coreg.py +++ b/pypreprocess/coreg.py @@ -60,10 +60,14 @@ def compute_similarity_from_jhist(jh, fwhm=None, cost_fun='nmi'): krn1 = centered_smoothing_kernel(fwhm[0], np.linspace(-1 * lim[0], lim[0], num=2 * lim[0])) + # Pad with zero to get odd length + krn1 = np.append(krn1, 0) krn1 = krn1 / np.sum(krn1) krn2 = centered_smoothing_kernel(fwhm[1], np.linspace(-1 * lim[1], lim[1], num=2 * lim[1])) + # Pad with zero to get odd length + krn2 = np.append(krn2, 0) krn2 = krn2 / np.sum(krn2) # smooth the histogram with kern1 x kern2 diff --git a/pypreprocess/io_utils.py b/pypreprocess/io_utils.py index 2b1d9cc2..f7fac50c 100644 --- a/pypreprocess/io_utils.py +++ b/pypreprocess/io_utils.py @@ -262,6 +262,11 @@ def is_3D(image): if isinstance(image, str): image = nibabel.load(image) + if os.path.exists(image): + image = nibabel.load(image) + else: + raise FileNotFoundError("File {} not found.".format( + image)) elif isinstance(image, list): image = nibabel.concat_images(image, check_affines=False From 8672b788ab361bbbb850a7291d58c40481ee8d16 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Tue, 23 Feb 2021 19:28:48 +0530 Subject: [PATCH 18/30] FIX: back to latest scipy version --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 33b5cb16..77948890 100755 --- a/.travis.yml +++ b/.travis.yml @@ -34,7 +34,7 @@ matrix: - name: "Python 3.7 latest package versions" python: "3.7" env: DISTRIB="travisci" PYTHON_VERSION="3.7" - NUMPY_VERSION="*" SCIPY_VERSION="1.5.4" PANDAS_VERSION="*" + NUMPY_VERSION="*" SCIPY_VERSION="*" PANDAS_VERSION="*" SCIKIT_LEARN_VERSION="*" MATPLOTLIB_VERSION="*" COVERAGE="true" JOBLIB_VERSION="*" NIPYPE_VERSION="*" PYTEST_VERSION="4.3.0" NILEARN_VERSION="*" NETWORKX_VERSION="*" CONFIGOBJ_VERSION="*" @@ -42,7 +42,7 @@ matrix: - name: "Python 3.7 pre-release checks" python: "3.7" env: DISTRIB="travisci" PIP_FLAGS="--pre" COVERAGE="true" - NUMPY_VERSION="*" SCIPY_VERSION="1.5.4" PANDAS_VERSION="*" + NUMPY_VERSION="*" SCIPY_VERSION="*" PANDAS_VERSION="*" SCIKIT_LEARN_VERSION="*" JOBLIB_VERSION="*" NIPYPE_VERSION="*" NILEARN_VERSION="*" NETWORKX_VERSION="*" MATPLOTLIB_VERSION="*" CONFIGOBJ_VERSION="*" PYTEST_VERSION="4.3.0" From 15a2c7838c77613a2b8cdbca4a65229bcc8adcd7 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Tue, 23 Feb 2021 19:44:03 +0530 Subject: [PATCH 19/30] minor fix --- pypreprocess/io_utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pypreprocess/io_utils.py b/pypreprocess/io_utils.py index f7fac50c..b081f663 100644 --- a/pypreprocess/io_utils.py +++ b/pypreprocess/io_utils.py @@ -261,7 +261,6 @@ def is_3D(image): """Check whether image is 3D""" if isinstance(image, str): - image = nibabel.load(image) if os.path.exists(image): image = nibabel.load(image) else: From d4a2e7b27a915062aeff99dae1aead4456328c69 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Fri, 12 Mar 2021 18:07:10 +0100 Subject: [PATCH 20/30] highlight sub-sections --- .../reporting/template_reports/report_sub_template.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pypreprocess/reporting/template_reports/report_sub_template.html b/pypreprocess/reporting/template_reports/report_sub_template.html index f0977ba6..a68e91c0 100644 --- a/pypreprocess/reporting/template_reports/report_sub_template.html +++ b/pypreprocess/reporting/template_reports/report_sub_template.html @@ -1,3 +1,3 @@ -

    ${heading}

    +

    ${heading}

    ${tooltip}

    - \ No newline at end of file + From fe7870dbf81161ff0b634387d79d5c84a0f5b8a6 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Sat, 13 Mar 2021 17:08:56 +0100 Subject: [PATCH 21/30] Old reporting removal: cleaned subject_data.py --- pypreprocess/subject_data.py | 419 ----------------------------------- 1 file changed, 419 deletions(-) diff --git a/pypreprocess/subject_data.py b/pypreprocess/subject_data.py index 27fa9d4a..dc3cbe39 100644 --- a/pypreprocess/subject_data.py +++ b/pypreprocess/subject_data.py @@ -17,65 +17,6 @@ nii2niigz as do_nii2niigz, isdicom, delete_orientation, hard_link, get_shape, is_4D, is_3D, get_basenames, is_niimg) -from .reporting.base_reporter import ( - commit_subject_thumnbail_to_parent_gallery, - ResultsGallery, Thumbnail, a, img, copy_web_conf_files, - ProgressReport, get_subject_report_html_template, - get_subject_report_preproc_html_template, copy_failed_png) - -from .reporting.preproc_reporter import (generate_tsdiffana_thumbnail, - generate_realignment_thumbnails, - generate_coregistration_thumbnails, - generate_normalization_thumbnails, - generate_segmentation_thumbnails, - make_nipype_execution_log_html) - - -# tooltips for thumbnails in report pages -mc_tooltip = ("Motion parameters estimated during motion-" - "correction. If motion is less than half a " - "voxel, it's generally OK. Moreover, it's " - "recommended to include these estimated motion " - "parameters as confounds (nuissance regressors) " - "in the the GLM.") -segment_acronyms = ("Acronyms: TPM means Tissue Probability Map; GM means " - "Grey-Matter;" - " WM means White-Matter; CSF means Cerebro-Spinal Fuild") -reg_tooltip = ("The red contours should" - " match the background image well. Otherwise, something might" - " have gone wrong. Typically things that can go wrong include: " - "lesions (missing brain tissue); bad orientation headers; " - "non-brain tissue in anatomical image, etc. In rare cases, it " - "might be that the registration algorithm simply didn't " - "succeed.") -segment_tooltip = ("%s. The TPM contours shoud match the background image " - "well. Otherwise, something might have gone wrong. " - "Typically things that can go wrong include: " - "lesions (missing brain tissue); bad orientation headers; " - "non-brain tissue in anatomical image (i.e needs brain " - "extraction), etc. In rare cases, it might be that the" - " segmentation algorithm simply didn't succeed." % ( - segment_acronyms)) -tsdiffana_tooltips = [ - ("(Squared) differences across sequential volumes. " - "A large value indicates an artifact that occurred during the " - "slice acquisition, possibly related to motion."), - ("Average signal over each volume. A large drop / peak (e.g. 1%)" - " w.r.t the mean level indicates an artefact. For example, there are " - " usually large values peaks in the first few slices due to T2 " - " relaxation effects, and these slices are usually adviced to be " - "discarded."), - ("Variance index per slice. Note that acquisition artifacts can be slice" - "-specific. Look at the data if there is a peak somewhere."), - ("Scaled variance per slice indicates slices where artifacts occur." - " A slice/time with large variance should be eyeballed."), - ("Large variations should be confined to vascular structures " - "or ventricles. Large variations around the brain indicate" - " residual motion effects."), - ("Large variations should be confined to vascular structures or" - " ventricles. Large variations around the brain indicate (uncorrected)" - " motion effects.")] - class SubjectData(object): """ @@ -521,368 +462,8 @@ def hardlink_output_files(self, final=False): if final: setattr(self, item, tmp) - def init_report(self, parent_results_gallery=None, - tsdiffana=True, preproc_undergone=None): - """ - This method is invoked to initialize the reports factory for the - subject. It configures everything necessary for latter reporting: - copies the custom .css, .js, etc. files, generates markup for - the report pages (report.html, report_log.html, report_preproc.html, - etc.), etc. - - Parameters - ---------- - parent_results_gallery: reporting.base_reporter.ResultsGallery instance - - tsdiffana: bool, optional - if set, six figures are added to characterize differences between - consecutive time points in the times series for artefact detection - preproc_undergone: list of strings, - list of processing steps performed - - """ - # misc - self._set_session_ids() - if not self.func: - tsdiffana = False - - # make sure output_dir is OK - self._sanitize_output_dirs() - - # misc for reporting - self.reports_output_dir = os.path.join(self.output_dir, "reports") - if not os.path.exists(self.reports_output_dir): - os.makedirs(self.reports_output_dir) - self.report = True - self.results_gallery = None - self.parent_results_gallery = parent_results_gallery - self.tsdiffana = tsdiffana - - # report filenames - self.report_log_filename = os.path.join( - self.reports_output_dir, 'report_log.html') - self.report_preproc_filename = os.path.join( - self.reports_output_dir, 'report_preproc.html') - self.report_filename = os.path.join(self.reports_output_dir, - 'report.html') - - # clean report files - open(self.report_log_filename, 'w').close() - open(self.report_preproc_filename, 'w').close() - open(self.report_filename, 'w').close() - - # initialize results gallery - loader_filename = os.path.join(self.reports_output_dir, - "results_loader.php") - self.results_gallery = ResultsGallery( - loader_filename=loader_filename, - title="Report for subject %s" % self.subject_id) - - # final thumbnail most representative of this subject's QA - self.final_thumbnail = Thumbnail() - self.final_thumbnail.a = a( - href=self.report_preproc_filename) - self.final_thumbnail.img = img(src=None) - self.final_thumbnail.description = self.subject_id - - # copy web stuff to subject output dir - copy_web_conf_files(self.reports_output_dir) - - # initialize progress bar - self.progress_logger = ProgressReport( - self.report_log_filename, - other_watched_files=[self.report_preproc_filename]) - - # html markup - preproc = get_subject_report_preproc_html_template( - results=self.results_gallery, start_time=time.ctime(), - preproc_undergone=preproc_undergone, subject_id=self.subject_id) - main_html = get_subject_report_html_template( - start_time=time.ctime(), subject_id=self.subject_id) - with open(self.report_preproc_filename, 'w') as fd: - fd.write(str(preproc)) - fd.close() - with open(self.report_filename, 'w') as fd: - fd.write(str(main_html)) - fd.close() - - def finalize_report(self, parent_results_gallery=None, last_stage=False): - """ - Finalizes the business of reporting. - - """ - # misc - self._set_session_ids() - if not self.reporting_enabled(): - return - if parent_results_gallery is None: - parent_results_gallery = self.parent_results_gallery - - # generate failure thumbnail - if self.failed: - copy_failed_png(self.reports_output_dir) - self.final_thumbnail.img.src = 'failed.png' - self.final_thumbnail.description += ( - ' (failed preprocessing)') - else: - # generate tsdiffana plots - if self.tsdiffana: - generate_tsdiffana_thumbnail( - self.func, self.session_ids, self.subject_id, - self.reports_output_dir, tooltips=tsdiffana_tooltips, - results_gallery=self.results_gallery) - - # shut down all watched report pages - self.progress_logger.finish_all() - - # shut down everything in reports_output_dir - if last_stage: - self.progress_logger.finish_dir(self.reports_output_dir) - - # commit final thumbnail into parent's results gallery - if parent_results_gallery is not None: - commit_subject_thumnbail_to_parent_gallery( - self.final_thumbnail, self.subject_id, parent_results_gallery) - - print("\r\nPreproc report for subject %s written to %s" - " .\r\n" % (self.subject_id, - self.report_preproc_filename)) - def __getitem__(self, key): return self.__dict__[key] - def reporting_enabled(self): - """ - Determines whether reporting is enabled for this subject - - """ - return hasattr(self, 'results_gallery') - - def generate_realignment_thumbnails(self, log=True, nipype=True): - """ - Invoked to generate post-realignment thumbnails. - - """ - # misc - self._set_session_ids() - if not hasattr(self, 'realignment_parameters'): - raise ValueError("'realignment_parameters' attribute not set!") - if not self.reporting_enabled(): - self.init_report() - - # log execution - if log: - execution_log_html = None - if nipype: - execution_log_html = make_nipype_execution_log_html( - self.func, "Motion_Correction", - self.reports_output_dir) - self.progress_logger.log( - "Motion Correction
    ") - if execution_log_html: - self.progress_logger.log(open(execution_log_html).read()) - self.progress_logger.log('
    ') - - # generate thumbnails proper - thumbs = generate_realignment_thumbnails( - getattr(self, 'realignment_parameters'), - self.reports_output_dir, sessions=self.session_ids, - execution_log_html_filename=execution_log_html if log - else None, tooltip=mc_tooltip, - results_gallery=self.results_gallery) - self.final_thumbnail.img.src = thumbs['rp_plot'] - - def generate_coregistration_thumbnails(self, coreg_func_to_anat=True, - log=True, comment=True, - nipype=True): - """ - Invoked to generate post-coregistration thumbnails. - - """ - # misc - self._set_session_ids() - if self.anat is None: - print("Subject 'anat' field is None; nothing to do") - return - - # misc - if not self.reporting_enabled(): - self.init_report() - src, ref = self.func, self.anat - src_brain, ref_brain = "mean_functional_image", "anatomical_image" - if not coreg_func_to_anat: - src, ref = ref, src - src_brain, ref_brain = ref_brain, src_brain - - # log execution - if log: - execution_log_html = None - if nipype: - execution_log_html = make_nipype_execution_log_html( - src, "Coregister", - self.reports_output_dir) - self.progress_logger.log( - "Coregistration
    ") - if execution_log_html: - self.progress_logger.log(open(execution_log_html).read()) - self.progress_logger.log('
    ') - - # generate thumbs proper - thumbs = generate_coregistration_thumbnails( - (ref, ref_brain), (src, src_brain), - self.reports_output_dir, - execution_log_html_filename=execution_log_html if log - else None, results_gallery=self.results_gallery, - comment=comment, tooltip=reg_tooltip) - self.final_thumbnail.img.src = thumbs['axial'] - - def generate_segmentation_thumbnails(self, log=True, nipype=True): - """ - Invoked to generate post-segmentation thumbnails. - - """ - # misc - self._set_session_ids() - segmented = False - for item in ['gm', 'wm', 'csf']: - if hasattr(self, item): - segmented = True - break - if not segmented: - return - if not self.reporting_enabled(): - self.init_report() - - # log execution - if log: - execution_log_html = None - if nipype: - execution_log_html = make_nipype_execution_log_html( - getattr(self, 'gm') or getattr(self, 'wm') or getattr( - self, 'csf'), "Segment", self.reports_output_dir) - self.progress_logger.log( - "Segmentation
    ") - if execution_log_html: - self.progress_logger.log(open(execution_log_html).read()) - self.progress_logger.log('
    ') - - # generate thumbnails proper - for brain_name, brain, cmap in zip( - ['anatomical_image', 'mean_functional_image'], - [self.anat, self.func], [cm.gray, cm.nipy_spectral]): - if not brain: - continue - thumbs = generate_segmentation_thumbnails( - brain, self.reports_output_dir, - subject_gm_file=getattr(self, 'gm', None), - subject_wm_file=getattr(self, 'wm', None), - subject_csf_file=getattr(self, 'csf', None), - cmap=cmap, brain=brain_name, only_native=True, - execution_log_html_filename=execution_log_html if log - else None, results_gallery=self.results_gallery, - tooltip=segment_tooltip) - if 'func' in brain_name: - self.final_thumbnail.img.src = thumbs['axial'] - - def generate_normalization_thumbnails(self, log=True, nipype=True): - """ - Invoked to generate post-normalization thumbnails. - - """ - # misc - self._set_session_ids() - if not self.reporting_enabled(): - self.init_report() - warped_tpms = dict( - (tpm, getattr(self, tpm, None)) - for tpm in ["mwgm", "mwwm", "mwcsf"]) - segmented = warped_tpms.values().count(None) < len(warped_tpms) - - # generate thumbnails proper - for brain_name, brain, cmap in zip( - ['anatomical_image', 'mean_functional_image'], - [self.anat, self.func], [cm.gray, cm.nipy_spectral]): - if not brain: - continue - - # generate segmentation thumbs - if segmented: - thumbs = generate_segmentation_thumbnails( - brain, self.reports_output_dir, - subject_gm_file=warped_tpms["mwgm"], - subject_wm_file=warped_tpms["mwwm"], - subject_csf_file=warped_tpms["mwcsf"], - cmap=cmap, brain=brain_name, comments="warped", - execution_log_html_filename=make_nipype_execution_log_html( - warped_tpms["mwgm"] or warped_tpms["mwwm"] or - warped_tpms["mwcsf"], - "Segment", self.reports_output_dir) if log else None, - results_gallery=self.results_gallery, - tooltip=segment_tooltip) - if 'func' in brain_name or not self.func: - self.final_thumbnail.img.src = thumbs['axial'] - - # log execution - if log: - execution_log_html = None - if nipype: - execution_log_html = make_nipype_execution_log_html( - brain, "Normalization", self.reports_output_dir, - brain_name) - self.progress_logger.log( - "Normalization of %s
    " % brain_name) - if execution_log_html: - text = open(execution_log_html).read() - if "normalized_files" in text or "warped_files" in text: - self.progress_logger.log(text) - self.progress_logger.log('
    ') - - # generate normalization thumbs proper - thumbs = generate_normalization_thumbnails( - brain, self.reports_output_dir, brain=brain_name, - execution_log_html_filename=execution_log_html if log - else None, results_gallery=self.results_gallery, - tooltip=reg_tooltip) - if not segmented and ("func" in brain_name or not self.func): - self.final_thumbnail.img.src = thumbs['axial'] - - def generate_smooth_thumbnails(self): - """ - Generate thumbnails post-smoothing. - """ - # misc - if self.func is None: return - if not self.reporting_enabled(): - self.init_report() - - # log execution - title = "func smooth" - execution_log_html = make_nipype_execution_log_html( - self.func, title, self.reports_output_dir) - self.progress_logger.log( - "%s
    " % title) - text = open(execution_log_html).read() - if "smoothed_files" in text: - self.progress_logger.log(text) - self.progress_logger.log('
    ') - - def generate_report(self): - """ - Method invoked to generate all reports in one-go. This is useful - for generating reports out-side the preproc logic: simply populate - the func, anat (optionally realignment_params, gm, wm, csf, etc.) - fields and then fire this method. - - """ - # misc - self._set_items() - self.sanitize() - - # report proper - self.generate_realignment_thumbnails(log=False) - self.generate_coregistration_thumbnails(log=False, comment=False) - self.generate_normalization_thumbnails(log=False) - self.finalize_report(last_stage=True) - def __repr__(self): return repr(self.__dict__) From 5bc6fcac29d66be3183f51e0e5c8f8c8156f9ac9 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Sat, 13 Mar 2021 17:34:04 +0100 Subject: [PATCH 22/30] Old reporting removal: deleted main modules and implementation --- pypreprocess/nipype_preproc_spm_utils.py | 209 +--- pypreprocess/reporting/base_reporter.py | 646 ----------- pypreprocess/reporting/preproc_reporter.py | 1128 -------------------- 3 files changed, 20 insertions(+), 1963 deletions(-) delete mode 100644 pypreprocess/reporting/base_reporter.py delete mode 100644 pypreprocess/reporting/preproc_reporter.py diff --git a/pypreprocess/nipype_preproc_spm_utils.py b/pypreprocess/nipype_preproc_spm_utils.py index cb0acb0f..6c08af8a 100644 --- a/pypreprocess/nipype_preproc_spm_utils.py +++ b/pypreprocess/nipype_preproc_spm_utils.py @@ -27,14 +27,6 @@ load_vols, ravel_filenames, unravel_filenames, get_vox_dims, niigz2nii, resample_img, compute_output_voxel_size, sanitize_fwhm) from .subject_data import SubjectData -from .reporting.base_reporter import ( - ResultsGallery, ProgressReport, copy_web_conf_files, - get_module_source_code, dict_to_html_ul) -from .reporting.preproc_reporter import ( - _set_templates, generate_preproc_undergone_docstring, - get_dataset_report_log_html_template, - get_dataset_report_preproc_html_template, - get_dataset_report_html_template) from .purepython_preproc_utils import ( _do_subject_slice_timing as _pp_do_subject_slice_timing, _do_subject_realign as _pp_do_subject_realign, @@ -42,7 +34,7 @@ _do_subject_smooth as _pp_do_subject_smooth) from nilearn.plotting.html_document import HTMLDocument -from .reporting.nilearn_reporting import (embed_in_HTML, +from .reporting.nilearn_reporting import (_set_templates,embed_in_HTML, initialize_report, add_component, finalize_report, generate_realignment_report, generate_registration_report, generate_corregistration_report, generate_segmentation_report, @@ -144,7 +136,7 @@ def _do_subject_slice_timing(subject_data, TR, TA=None, spm_dir=None, matlab_exec=None, spm_mcr=None, ref_slice=1, slice_order="ascending", interleaved=False, caching=True, software="spm", - hardlink_output=True, report=True, **kwargs): + hardlink_output=True, **kwargs): """ Slice-Timing Correction. @@ -245,7 +237,7 @@ def _do_subject_slice_timing(subject_data, TR, TA=None, spm_dir=None, def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, - caching=True, report=True, software="spm", + caching=True, software="spm", spm_dir=None, matlab_exec=None, spm_mcr=None, hardlink_output=True, report_path=None, log_path=None, **kwargs): @@ -384,10 +376,6 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, if hardlink_output: subject_data.hardlink_output_files() - # generate realignment thumbs - if report: - subject_data.generate_realignment_thumbnails() - if report_path not in [False, None]: rp_plot, rp_log = generate_realignment_report( subject_data=subject_data, @@ -402,7 +390,7 @@ def _do_subject_realign(subject_data, reslice=False, register_to_mean=False, def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, matlab_exec=None, spm_mcr=None, coreg_anat_to_func=False, caching=True, - report=True, software="spm", hardlink_output=True, + software="spm", hardlink_output=True, report_path=None, log_path=None, **kwargs): """Wrapper for running spm.Coregister with optional reporting. @@ -566,10 +554,6 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, if hardlink_output: subject_data.hardlink_output_files() - # generate coregistration thumbs - if report: - subject_data.generate_coregistration_thumbnails() - if report_path not in [False, None]: correg_plot, correg_log = generate_corregistration_report( subject_data=subject_data, @@ -582,7 +566,7 @@ def _do_subject_coregister(subject_data, reslice=False, spm_dir=None, def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, matlab_exec=None, spm_mcr=None, normalize=False, - caching=True, report=True, software="spm", + caching=True, software="spm", hardlink_output=True, report_path=None, log_path=None): """ Wrapper for running spm.Segment with optional reporting. @@ -713,10 +697,6 @@ def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, if hardlink_output: subject_data.hardlink_output_files() - # generate segmentation thumbs - if report: - subject_data.generate_segmentation_thumbnails() - if report_path not in [False, None]: seg_plot, seg_log = generate_segmentation_report( subject_data=subject_data, @@ -733,7 +713,7 @@ def _do_subject_segment(subject_data, output_modulated_tpms=True, spm_dir=None, def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, spm_dir=None, matlab_exec=None, spm_mcr=None, func_write_voxel_sizes=[3, 3, 3], - anat_write_voxel_sizes=[1, 1, 1], report=True, + anat_write_voxel_sizes=[1, 1, 1], software="spm", hardlink_output=True, smooth_software="spm", epi_template=None, t1_template=None, coregister=True, @@ -957,10 +937,6 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, # commit output files if hardlink_output: subject_data.hardlink_output_files() - # generate thumbnails - if report: - subject_data.generate_normalization_thumbnails() - if report_path not in [False, None]: norm_plot, norm_log = generate_normalization_report( subject_data=subject_data, @@ -972,7 +948,7 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, if np.sum(fwhm) + np.sum(anat_fwhm) > 0: subject_data = _do_subject_smooth( subject_data, fwhm, anat_fwhm=anat_fwhm, caching=caching, - report=report, software=smooth_software) + software=smooth_software) # commit output files if hardlink_output: subject_data.hardlink_output_files() @@ -982,7 +958,7 @@ def _do_subject_normalize(subject_data, fwhm=0., anat_fwhm=0., caching=True, def _do_subject_smooth(subject_data, fwhm, anat_fwhm=None, spm_dir=None, matlab_exec=None, spm_mcr=None, caching=True, - software="spm", report=True, hardlink_output=True): + software="spm", hardlink_output=True): """ Wrapper for running spm.Smooth with optional reporting. @@ -1081,9 +1057,6 @@ def _do_subject_smooth(subject_data, fwhm, anat_fwhm=None, spm_dir=None, # commit output files if hardlink_output: subject_data.hardlink_output_files() - # reporting - if report: subject_data.generate_smooth_thumbnails() - return subject_data.sanitize() @@ -1096,7 +1069,6 @@ def _do_subject_dartelnorm2mni(subject_data, anat_fwhm=0., output_modulated_tpms=False, caching=True, - report=True, parent_results_gallery=None, last_stage=True, func_write_voxel_sizes=None, @@ -1200,20 +1172,11 @@ def _do_subject_dartelnorm2mni(subject_data, # smooth func if np.sum(fwhm) > 0: subject_data = _do_subject_smooth( - subject_data, fwhm, caching=caching, report=report) + subject_data, fwhm, caching=caching) # hardlink output files if hardlink_output: subject_data.hardlink_output_files() - if report: - # generate normalization thumbnails - subject_data.generate_normalization_thumbnails() - - # finalize - subject_data.finalize_report( - parent_results_gallery=parent_results_gallery, - last_stage=last_stage) - return subject_data.sanitize() @@ -1246,7 +1209,6 @@ def do_subject_preproc( anat_write_voxel_sizes=None, smooth_software="spm", hardlink_output=True, - report=True, tsdiffana=True, parent_results_gallery=None, last_stage=True, @@ -1380,29 +1342,6 @@ def do_subject_preproc( # the EPI template to MNI segment = (not subject_data.anat is None) and segment - # get ready for reporting - if report: - # generate explanation of preproc steps undergone by subject - preproc_undergone = generate_preproc_undergone_docstring( - dcm2nii=subject_data.isdicom, - deleteorient=deleteorient, - slice_timing=slice_timing, - realign=realign, - coregister=coregister, - segment=segment, - normalize=normalize, - fwhm=fwhm, anat_fwhm=anat_fwhm, - dartel=dartel, - coreg_func_to_anat=not coreg_anat_to_func, - prepreproc_undergone=prepreproc_undergone, - has_func=subject_data.func - ) - - # initialize report factory - subject_data.init_report(parent_results_gallery=parent_results_gallery, - preproc_undergone=preproc_undergone, - tsdiffana=tsdiffana) - if nilearn_report: report_path, log_path = initialize_report(subject_data.output_dir, subject_name=subject_data.subject_id, @@ -1427,15 +1366,14 @@ def do_subject_preproc( if slice_timing: subject_data = _do_subject_slice_timing( subject_data, TR, caching=caching, ref_slice=ref_slice, - TA=TA, slice_order=slice_order, interleaved=interleaved, - report=report, # post-stc reporting bugs like hell! + TA=TA, slice_order=slice_order, interleaved=interleaved, # post-stc reporting bugs like hell! software=slice_timing_software, hardlink_output=hardlink_output, **kwargs.get("interface_slice_timing", {})) # handle failed node if subject_data.failed: - subject_data.finalize_report(last_stage=last_stage) + print("Slice time correction failed") return subject_data ####################### @@ -1446,7 +1384,6 @@ def do_subject_preproc( subject_data, caching=caching, reslice=realign_reslice, register_to_mean=register_to_mean, - report=report, hardlink_output=hardlink_output, software=realign_software, report_path=report_path, log_path=log_path, @@ -1454,7 +1391,7 @@ def do_subject_preproc( # handle failed node if subject_data.failed: - subject_data.finalize_report(last_stage=last_stage) + print("Realigment failed") return subject_data ################################################################## @@ -1465,7 +1402,6 @@ def do_subject_preproc( subject_data, caching=caching, coreg_anat_to_func=coreg_anat_to_func, reslice=coregister_reslice, - report=report, hardlink_output=hardlink_output, software=coregister_software, report_path=report_path, log_path=log_path, @@ -1473,7 +1409,7 @@ def do_subject_preproc( # handle failed node if subject_data.failed: - subject_data.finalize_report(last_stage=last_stage) + print("Corregistration failed") return subject_data ##################################### @@ -1481,14 +1417,13 @@ def do_subject_preproc( ##################################### if segment: subject_data = _do_subject_segment( - subject_data, caching=caching, normalize=normalize, report=report, + subject_data, caching=caching, normalize=normalize, hardlink_output=hardlink_output, report_path=report_path, log_path=log_path) - # handle failed node if subject_data.failed: - subject_data.finalize_report(last_stage=last_stage) + print("Segmentation of anatomical image failed") return subject_data ########################## @@ -1499,7 +1434,7 @@ def do_subject_preproc( subject_data, fwhm, anat_fwhm=anat_fwhm, func_write_voxel_sizes=func_write_voxel_sizes, anat_write_voxel_sizes=anat_write_voxel_sizes, - caching=caching, report=report, + caching=caching, hardlink_output=hardlink_output, smooth_software=smooth_software, epi_template=epi_template, @@ -1510,7 +1445,7 @@ def do_subject_preproc( # handle failed node if subject_data.failed: - subject_data.finalize_report(last_stage=last_stage) + print("Spatial normalization failed") return subject_data ######################################### @@ -1520,14 +1455,13 @@ def do_subject_preproc( subject_data = _do_subject_smooth(subject_data, fwhm, anat_fwhm=anat_fwhm, caching=caching, - report=report, hardlink_output=hardlink_output, software=smooth_software ) # handle failed node if subject_data.failed: - subject_data.finalize_report(last_stage=last_stage) + print("Smoothing without spatial normalization failed") return subject_data # hard-link node output files @@ -1535,11 +1469,7 @@ def do_subject_preproc( if hardlink_output: subject_data.hardlink_output_files(final=True) - if report and not dartel: - subject_data.finalize_report(last_stage=last_stage) - if nilearn_report: - if tsdiffana: tdsdiffana_plot = generate_tsdiffana_report( subject_data.func, subject_data.session_ids, @@ -1555,7 +1485,7 @@ def do_subject_preproc( def _do_subjects_newsegment( subjects, output_dir, spm_dir=None, matlab_exec=None, - spm_mcr=None, fwhm=0, anat_fwhm=0., n_jobs=-1, report=True, + spm_mcr=None, fwhm=0, anat_fwhm=0., n_jobs=-1, func_write_voxel_sizes=None, anat_write_voxel_sizes=None, output_modulated_tpms=False, parent_results_gallery=None, do_dartel=True, **kwargs): @@ -1593,9 +1523,6 @@ def _do_subjects_newsegment( sd.csf = newsegment_result.outputs.native_class_images[2][j] sd.nipype_results['newsegment'] = newsegment_result - # generate segmentation thumbs - if report: - sd.generate_segmentation_thumbnails() if not do_dartel: return subjects @@ -1620,7 +1547,6 @@ def _do_subjects_newsegment( delayed( _do_subject_dartelnorm2mni)( subject_data, - report=report, parent_results_gallery=parent_results_gallery, fwhm=fwhm, anat_fwhm=anat_fwhm, func_write_voxel_sizes=func_write_voxel_sizes, @@ -1720,7 +1646,6 @@ def do_subjects_preproc(subject_factory, session_ids=None, **preproc_params): scratch = output_dir if "scratch" in preproc_params: scratch = preproc_params.pop("scratch") - report = preproc_params.get("report", True) dataset_id = preproc_params.get('dataset_id', None) dataset_description = preproc_params.get('dataset_description', None) shutdown_reloaders = preproc_params.get('shutdown_reloaders', True) @@ -1778,99 +1703,6 @@ def do_subjects_preproc(subject_factory, session_ids=None, **preproc_params): subject_data.output_dir = os.path.join(output_dir, subject_data.subject_id) - # generate html report (for QA) as desired - parent_results_gallery = None - if report: - # what exactly was typed at the command-line (terminal) ? - command_line = "python %s" % " ".join(sys.argv) - - # copy web stuff to output_dir - copy_web_conf_files(output_dir) - - report_log_filename = os.path.join(output_dir, 'report_log.html') - report_preproc_filename = os.path.join( - output_dir, 'report_preproc.html') - report_filename = os.path.join(output_dir, 'report.html') - - # get caller module handle from stack-frame - user_script_name = sys.argv[0] - user_source_code = get_module_source_code( - user_script_name) - - # scrape complete configuration used for preprocessing - if preproc_details is None: - preproc_details = "" - frame = inspect.currentframe() - args, _, _, values = inspect.getargvalues(frame) - preproc_func_name = inspect.getframeinfo(frame)[2] - preproc_details += ("Function %s(...) was invoked by " - "the script" - " %s with the following arguments:" - ) % (preproc_func_name, user_script_name) - args_dict = dict((arg, values[arg]) - for arg in args if arg not in [ - "dataset_description", - "report_filename", "report", - "tsdiffana", "shutdown_reloaders", - "subjects"]) - args_dict['output_dir'] = output_dir - preproc_details += dict_to_html_ul(args_dict) - details_filename = os.path.join(output_dir, "preproc_details.html") - open(details_filename, "w").write("
    %s
    " % preproc_details) - - # initialize results gallery - loader_filename = os.path.join(output_dir, "results_loader.php") - parent_results_gallery = ResultsGallery( - loader_filename=loader_filename, refresh_timeout=30) - - # initialize progress bar - progress_logger = ProgressReport( - report_log_filename, - other_watched_files=[report_filename, report_preproc_filename]) - - # html markup - log = get_dataset_report_log_html_template( - start_time=time.ctime()) - preproc = get_dataset_report_preproc_html_template( - results=parent_results_gallery, start_time=time.ctime(), - dataset_description=dataset_description, - source_code=user_source_code, - source_script_name=user_script_name) - main_html = get_dataset_report_html_template( - results=parent_results_gallery, start_time=time.ctime(), - dataset_id=dataset_id) - with open(report_log_filename, 'w') as fd: - fd.write(str(log)) - fd.close() - with open(report_preproc_filename, 'w') as fd: - fd.write(str(preproc)) - fd.close() - with open(report_filename, 'w') as fd: - fd.write(str(main_html)) - fd.close() - preproc_params['parent_results_gallery'] = parent_results_gallery - - # log command line - progress_logger.log("Command line
    ") - progress_logger.log("%s" % command_line) - progress_logger.log("
    ") - - # log environ variables - progress_logger.log("Environ Variables
    ") - progress_logger.log( - "
      " + "".join(["
    • %s: %s
    • " % (item, value) - for item, value in os.environ.items()]) - + "

    ") - - def finalize_report(): - if not report: - return - progress_logger.finish(report_preproc_filename) - if shutdown_reloaders: - print("Finishing %s..." % output_dir) - progress_logger.finish_dir(output_dir) - print("\r\n\tHTML report written to %s" % report_preproc_filename) - normalize = preproc_params.get("normalize", True) # don't yet segment nor normalize if dartel enabled @@ -1902,7 +1734,7 @@ def finalize_report(): preproc_params["hardlink_output"] = True for param in preproc_params.keys(): if param not in ["fwhm", "anat_fwhm", "func_write_voxel_sizes", - "anat_write_voxel_sizes", "caching", "report", + "anat_write_voxel_sizes", "caching", "hardlink_output", "smooth_software"]: preproc_params.pop(param) subjects = Parallel(n_jobs=n_jobs)(delayed(_do_subject_normalize)( @@ -1911,5 +1743,4 @@ def finalize_report(): for subject_data in subjects: subject_data.hardlink_output_files(final=True) - finalize_report() return subjects diff --git a/pypreprocess/reporting/base_reporter.py b/pypreprocess/reporting/base_reporter.py deleted file mode 100644 index 8c08d47b..00000000 --- a/pypreprocess/reporting/base_reporter.py +++ /dev/null @@ -1,646 +0,0 @@ -""" -Basic utilities (functions, classes) for the reporting business -""" -# Author: Elvis DOHMATOB - -import os -import re -import glob -import shutil -import time -import matplotlib as mpl -import pylab as pl -import numpy as np -from ..external.tempita import HTMLTemplate, bunch - -import string - - -# find package path -ROOT_DIR = os.path.split(os.path.abspath(__file__))[0] - -# find package path -ROOT_DIR = os.path.split(os.path.abspath(__file__))[0] - -# MISC -NIPY_URL = "http://nipy.sourceforge.net/nipy/stable/index.html" -SPM8_URL = "http://www.fil.ion.ucl.ac.uk/spm/software/spm8/" -PYPREPROCESS_URL = "https://github.com/neurospin/pypreprocess" -DARTEL_URL = ("http://www.fil.ion.ucl.ac.uk/spm/software/spm8/" - "SPM8_Release_Notes.pdf") -NIPYPE_URL = "http://nipy.sourceforge.net/nipype/" -NISTATS_URL = "https://github.com/nistats/nistats" - -def lines2breaks(lines, delimiter="\n", number_lines=False): - """ - Converts line breaks to HTML breaks, adding `pre` tags as necessary. - - Parameters - ---------- - lines: string delimited by delimiter, or else list of strings - lines to format into HTML format - - delimiter: string (default '\n') - new-line delimiter, can be (escape) characters like '\n', '\r', - '\r\n', '\t', etc. - - number_lines: boolean (default False) - if false, then output will be line-numbered - - Returns - ------- - HTML-formatted string - """ - if isinstance(lines, str): - lines = lines.split(delimiter) - if not number_lines: - lines = ["%s" % line for line in lines] - output = "
    %s
    " % "".join(lines) - else: - lines = ["
  • %s
  • " % line for line in lines] - output = "
      " + "".join(lines) + "
    " - return output - - -def dict_to_html_ul(mydict): - """Function converts dict to an HTML ul element. - - Parameters - ---------- - mydict: dict-like object - dict (could be dict of any things), perhaps of dicts) to - convert to HTML ul - - Returns - ------- - String, ul element - """ - - def make_li(stuff): - # handle dict type - if isinstance(stuff, dict): - val = "
      " - for _k, _v in stuff.items(): - if not _v is None: - val += "
    • %s: %s
    • " % (_k, make_li(_v)) - val += "
    " - # handle tuple type - elif isinstance(stuff, tuple): - return '
    • %s
    ' % tuple(stuff) - # handle array-like type type - elif isinstance(stuff, list) or hasattr(stuff, "__iter__"): - return '
    • %s
    ' % list(stuff) - else: - # XXX handle other bundled types which are not necessarily - # dict-like!!! - val = str(stuff) - return val - - if isinstance(mydict, str): - return mydict - elif isinstance(mydict, list): - return make_li(mydict) - elif isinstance(mydict, dict): - html_ul = "" - for k, v in mydict.items(): - if not v is None: - html_ul += "
  • %s: %s
  • " % (k, make_li(v)) - html_ul += "" - else: - raise TypeError( - "Input type must be string, list, or dict, got %s" % mydict) - return html_ul - - -def get_module_source_code(mod): - """Function retrieved the source code of a module. - - Parameters - ---------- - - mod: string or `module` handle - existing filename of module, module handle - - Returns - ------- - string, line-numbered HTML-formated code-block - - """ - if isinstance(mod, str): - filename = mod - elif isinstance(mod, type(os)): - filename = mod.__file__ - with open(filename, 'r') as fd: - lines = fd.read() - return lines2breaks(lines, number_lines=True) - - -def get_gallery_html_markup(): - """ - Function to generate markup for the contents of a
    - type html element. - """ - - return HTMLTemplate( - """ -{{for thumbnail in thumbnails}} -
    - - - -
    {{thumbnail.description | html}}
    -
    -{{endfor}} -""") - - -class _HTMLElement(bunch): - """ - Parameters - ---------- - All parameters must be specified in 'param=value' style. These can be any - HTML anchor parameter. Below we document only the compulsary paremters. - - Parameters - ---------- - **kwargs: dict-like - param-value dict of attributes for this HTML elemnt. - - """ - _compulsary_params = [] - - def __init__(self, **kwargs): - - bunch.__init__(self, **kwargs) - - for param in self._compulsary_params: - if not param in kwargs: - raise ValueError( - "Need to specify '%s' parameter for HTML %s" % ( - param, self.__class__.__name__)) - - -class a(_HTMLElement): - """ - HTML anchor element. - - Parameters - ---------- - **kwargs: dict-like - param-value dict of attributes for this HTML anchor element. - """ - - # _compulsary_params = ['href'] - - def __init__(self, **kwargs): - _HTMLElement.__init__(self, **kwargs) - - -class img(_HTMLElement): - """ - HTML image element. - - Parameters - ---------- - **kwargs: dict-like - param-value dict of attributes for this HTML image element. Compulsary - parameter-values are: - - src: string - src the image - href: string - href of the image - """ - def __init__(self, **kwargs): - _HTMLElement.__init__(self, **kwargs) - - -class Thumbnail(_HTMLElement): - """ - HTML thumbnail. - - Parameters - ---------- - tooltip: string, optional (default None) - Text for tooltip to be popped-up when the image is hovered. - - **kwargs: dict-like - param-value dict of attributes for this HTML image element. Comulsary - parameter-values are: - - description: string - description of the thumbnail - a: a `object` - HTML anchor `a` object for the thumbnail - img: img `object` - HTML image `img` object for the thumbnail - """ - def __init__(self, tooltip=None, **kwargs): - _HTMLElement.__init__(self, tooltip=tooltip, - **kwargs) - - -class ResultsGallery(object): - """ - Gallery of results (summarized by thumbnails). - """ - - def __init__(self, loader_filename, - refresh_timeout=30, # time between successive refreshs - title='Results', description=None): - self.loader_filename = loader_filename - self.refresh_timeout = refresh_timeout - self.title = title - self.description = description - - # start with a clean slate - if os.path.isfile(self.loader_filename): - os.remove(self.loader_filename) - - # touch loader file - fd = open(self.loader_filename, 'a') - fd.close() - - def commit_results_from_filename(self, filename): - with open(filename) as fd: - divs = fd.read() - fd.close() - loader_fd = open(self.loader_filename, 'a') - loader_fd.write(divs) - loader_fd.close() - - def commit_thumbnails(self, thumbnails, id=None): - # sanitize thumbnail - if not type(thumbnails) is list: - thumbnails = [thumbnails] - - for thumbnail in thumbnails: - thumbnail.description = dict_to_html_ul(thumbnail.description) - - self.raw = get_gallery_html_markup().substitute(thumbnails=thumbnails) - - fd = open(self.loader_filename, 'a') - fd.write(self.raw) - fd.close() - -def commit_subject_thumnbail_to_parent_gallery(thumbnail, subject_id, - parent_results_gallery): - """Commit thumbnail (summary of subject_report) to parent results gallery, - correcting attrs of the embedded img object as necessary. - - Parameters - ---------- - thumbnail: Thumbnail instance - thumbnail to be committed - - subject_id: string - subject_id for subject under inspection - - result_gallery: ResultsGallery instance (optional) - gallery to which thumbnail will be committed - """ - # sanitize thumbnail - assert hasattr(thumbnail, 'img') - assert not thumbnail.img is None - - # resize thumbnail - thumbnail.img.height = "250px" - - if thumbnail.img.src: - thumbnail.img.src = os.path.join(subject_id, "reports", - os.path.basename(thumbnail.img.src)) - if thumbnail.a.href: - thumbnail.a.href = os.path.join(subject_id, "reports", - os.path.basename(thumbnail.a.href)) - - # commit thumbnail to parent's gallery - parent_results_gallery.commit_thumbnails(thumbnail) - - -class ProgressReport(object): - """Class encapsulating functionality for logging arbitrary html stubs - to report pages, modifying pages dynamically (like disabling automatic - releads, etc.) - """ - - def __init__(self, log_filename=None, other_watched_files=None): - """Constructor - - Parameters - ---------- - log_filename: string (optional, default None) - filename to which html stubs will be logged - - other_watched_files: list or similar iterable (optional, default []) - files watched by the progress reporter; for example whenever the - `finish_all` method is invoked, all watched files are disabled for - automatic reloading thenceforth - """ - if other_watched_files is None: - other_watched_files = [] - self.log_filename = log_filename - if not self.log_filename is None: - open(self.log_filename, 'a').close() - self.watched_files = [] - self.watch_files(other_watched_files) - - def watch_files(self, filenames): - for filename in filenames: - self.watch_file(filename) - - def log(self, msg): - """Logs an html-formated stub to the report file. - - Parameters - ---------- - msg: string - message to log. - """ - if self.log_filename is None: - return - with open(self.log_filename, 'a') as ofd: - ofd.write(msg + "
    ") - - def finish(self, filename): - """Stops the automatic reloading (by the browser, etc.) of a given - report page. - - Parameters - ---------- - filename: - file URL of page to stop re-loading - """ - - with open(filename, 'r') as i_fd: - content = i_fd.read() - i_fd.close() - - # prevent pages from reloaded automaticall henceforth - meta_reloader = "" - content = re.sub(meta_reloader, "", content) - - old_state = ("STILL RUNNING .." - ".") - new_state = "Ended: %s" % pretty_time() - new_content = content.replace(old_state, new_state) - with open(filename, 'w') as o_fd: - o_fd.write(new_content) - o_fd.close() - - def _finish_files(self, filenames): - for filename in filenames: - self.finish(filename) - - def finish_all(self, filenames=None): - """Stops the automatic re-loading of watched pages. - - Parameters - ---------- - filenames: string or list of strings - filename(s) pointing to page(s) to stop automatic releading. - """ - filenames = [] if filenames is None else filenames - self._finish_files(self.watched_files + filenames) - - def finish_dir(self, dirname, filename_wildcat="*.html"): - """'Finishes' all pages (html, etc., files) in a given directory. - - Parameters - ---------- - dirname: string - name of existing directory to 'finish' - - filename: string (optional, default "*.html") - wildcat defining files to 'finish' (useful for globbing) in dirname - """ - - self._finish_files( - glob.glob(os.path.join(dirname, filename_wildcat))) - - def watch_file(self, filename): - """Specifies (yet another) file to be watched. - - Parameters - ---------- - filename: string - existing filename - """ - assert isinstance(filename, str) - self.watched_files.append(filename) - - -def make_standalone_colorbar(cmap, vmin, vmax, colorbar_outfile=None): - """Plots a stand-alone colorbar. - - Parameters - ---------- - cmap: some colormap object (like pylab.cm.hot, - nilearn.plotting.cm.cold_hot, etc.) - colormap to use in plotting colorbar - vmin: float - param passed to `mpl.colors.Normalize` - - vmax: float - param passed to `mpl.colors.Normalize` - - colorbar_outfil: string (optional, default None) - outputfile for plotted colorbar - """ - vmin, vmax = min(vmin, vmax), max(vmin, vmax) - fig = pl.figure(figsize=(6, 1)) - ax = fig.add_axes([0.05, 0.4, 0.9, 0.5]) - norm = mpl.colors.Normalize(vmin=vmin, vmax=vmax) - cb = mpl.colorbar.ColorbarBase(ax, cmap=cmap, - norm=norm, - orientation='horizontal') - - # save colorbar - pl.savefig(colorbar_outfile, bbox_inches='tight') - pl.close() - - return cb - - -def get_cut_coords(map3d, n_axials=12, delta_z_axis=3): - """ - Heuristically computes optimal cut_coords for plot_map(...) call. - - Parameters - ---------- - map3d: 3D array - the data under consideration - n_axials: int, optional (default 12) - number of axials in the plot - delta_z_axis: int, optional (default 3) - z-axis spacing - - Returns - ------- - cut_coords: 1D array of length n_axials - the computed cut_coords - - """ - z_axis_max = np.unravel_index( - np.abs(map3d).argmax(), map3d.shape)[2] - z_axis_min = np.unravel_index( - (-np.abs(map3d)).argmin(), map3d.shape)[2] - z_axis_min, z_axis_max = (min(z_axis_min, z_axis_max), - max(z_axis_max, z_axis_min)) - z_axis_min = min(z_axis_min, z_axis_max - delta_z_axis * n_axials) - cut_coords = np.linspace(z_axis_min, z_axis_max, n_axials) - return cut_coords - - -def compute_vmin_vmax(map3d): - """ - Computes vmin and vmax params for plot_map. - """ - vmax = max(map3d.max(), -map3d.min()) - vmin = -vmax - return vmin, vmax - - -def _get_template(template_file, **kwargs): - with open(template_file) as fd: - _text = fd.read() - fd.close() - return HTMLTemplate(_text).substitute(**kwargs) - - -def get_subject_report_log_html_template(**kwargs): - """Returns html template (string) for subject log report. - """ - return _get_template(os.path.join(ROOT_DIR, 'template_reports', - 'subject_report_log_template.tmpl.html'), - **kwargs) - - -def get_subject_report_html_template(**kwargs): - """Returns html tamplate (string) for subject report (page de garde). - """ - return _get_template(os.path.join(ROOT_DIR, 'template_reports', - 'subject_report_template.tmpl.html'), - **kwargs) - - -def get_subject_report_preproc_html_template(**kwargs): - """Returns html template (string) for subject preproc report page. - """ - return _get_template(os.path.join( - ROOT_DIR, 'template_reports', - 'subject_report_preproc_template.tmpl.html'), **kwargs) - - -def get_subject_report_stats_html_template(**kwargs): - """Returns html template (string) for subject stats report page. - """ - return _get_template(os.path.join( - ROOT_DIR, 'template_reports', - 'subject_report_stats_template.tmpl.html'), **kwargs) - - -def get_ica_html_template(**kwargs): - """Returns html template (string) for subject stats report page - """ - return _get_template(os.path.join( - ROOT_DIR, 'template_reports', - 'ica_report_template.tmpl.html'), **kwargs) - - -def get_dataset_report_html_template(**kwargs): - """Returns html template (string) for dataset report page (page de garde). - """ - - return _get_template(os.path.join(ROOT_DIR, 'template_reports', - 'dataset_report_template.tmpl.html'), - **kwargs) - - -def get_dataset_report_preproc_html_template(**kwargs): - """Returns html template (string) for dataset preproc report page. - """ - return _get_template(os.path.join( - ROOT_DIR, 'template_reports', - 'dataset_report_preproc_template.tmpl.html'), **kwargs) - - -def get_dataset_report_stats_html_template(**kwargs): - """Returns html template (string) for dataset stats report page - - """ - return _get_template(os.path.join( - ROOT_DIR, 'template_reports', - 'dataset_report_stats_template.tmpl.html'), **kwargs) - - -def get_dataset_report_log_html_template(**kwargs): - """Returns html template (string) for dataset log report page. - - """ - return _get_template(os.path.join( - ROOT_DIR, 'template_reports', - 'dataset_report_log_template.tmpl.html'), **kwargs) - - -def copy_failed_png(output_dir): - """ - Copies failed.png image to output_dir. - """ - - shutil.copy(os.path.join(ROOT_DIR, "images/failed.png"), - output_dir) - - -def copy_web_conf_files(output_dir): - """Function to copy css, js, icon files to given directory. - - """ - - def _copy_web_conf_file_ext(src_dir_basename, extentions, ignore=None): - if ignore is None: - ignore = [] - if isinstance(ignore, str): - ignore = [ignore] - - for ext in extentions: - for src in glob.glob(os.path.join( - ROOT_DIR, "%s/*%s" % (src_dir_basename, ext))): - # skip failed.png image (see issue #30) - if src.endswith("failed.png"): - continue - shutil.copy(src, output_dir) - - # copy js stuff - _copy_web_conf_file_ext("js", ['.js']) - - # copy css stuf - _copy_web_conf_file_ext("css", ['.css']) - - # copy icons - _copy_web_conf_file_ext("icons", ['.jpg', '.jpeg', '.png', '.gif']) - - # copy images - _copy_web_conf_file_ext("images", ['.jpg', '.jpeg', '.png', '.gif']) - - -def copy_report_files(src, dst): - """Backs-up report files (*.html, *.js, etc.) from src to dst. - - """ - if not os.path.exists(dst): - os.makedirs(dst) - for ext in ["css", "html", "js", "php", "png", "jpeg", - "jpg", "gif", "json"]: - for x in glob.glob(os.path.join(src, "*.%s" % ext)): - shutil.copy(x, dst) - - -def pretty_time(): - """ - Returns currenct time in the format: hh:mm:ss ddd mmm yyyy. - - """ - return " ".join([time.ctime().split(" ")[i] for i in [3, 0, 2, 1, 4]]) diff --git a/pypreprocess/reporting/preproc_reporter.py b/pypreprocess/reporting/preproc_reporter.py deleted file mode 100644 index a7a0f023..00000000 --- a/pypreprocess/reporting/preproc_reporter.py +++ /dev/null @@ -1,1128 +0,0 @@ -""" -:Module: reporter -:Synopsis: utility module for report generation business -:Author: dohmatob elvis dopgima - -""" - -import os -import glob -import re -import shutil -import subprocess -import time -import json -import matplotlib -import numpy as np -import pylab as pl -import nibabel -from distutils.version import LooseVersion -import joblib -from .check_preprocessing import (plot_registration, - plot_segmentation, - plot_spm_motion_parameters) -from ..time_diff import plot_tsdiffs, multi_session_time_slice_diffs -from ..io_utils import compute_mean_3D_image, is_niimg, sanitize_fwhm -from ..configure_spm import _configure_spm, _get_version_spm -from .base_reporter import (Thumbnail, - ResultsGallery, - ProgressReport, - a, - img, - lines2breaks, - get_dataset_report_html_template, - get_dataset_report_preproc_html_template, - get_subject_report_html_template, - get_subject_report_preproc_html_template, - PYPREPROCESS_URL, DARTEL_URL, ROOT_DIR, - commit_subject_thumnbail_to_parent_gallery, - get_dataset_report_log_html_template, - copy_web_conf_files) -import matplotlib.pyplot as plt - - -# misc -SPM_DIR = _configure_spm() -EPI_TEMPLATE = GM_TEMPLATE = T1_TEMPLATE = WM_TEMPLATE = CSF_TEMPLATE = None - - -def _set_templates(spm_dir=SPM_DIR): - """ - Sets paths of templates (T1, GM, WM, etc.), so that post-segmenation, - etc. reporting works well. - - """ - global EPI_TEMPLATE, T1_TEMPLATE, GM_TEMPLATE, WM_TEMPLATE, CSF_TEMPLATE - - spm_version = _get_version_spm(SPM_DIR) - - # Set the tpm and template paths according to SPM version - if spm_version == 'spm12': - template_path = 'toolbox/OldNorm' - tpm_path = 'toolbox/OldSeg' - else: - template_path = 'templates' - tpm_path = 'tpm' - - # configure template images - EPI_TEMPLATE = os.path.join(SPM_DIR, template_path, 'EPI.nii') - SPM_T1_TEMPLATE = os.path.join(SPM_DIR, template_path, 'T1.nii') - T1_TEMPLATE = "/usr/share/data/fsl-mni152-templates/avg152T1.nii" - if not os.path.isfile(T1_TEMPLATE): - T1_TEMPLATE += '.gz' - if not os.path.exists(T1_TEMPLATE): - T1_TEMPLATE = SPM_T1_TEMPLATE - GM_TEMPLATE = os.path.join(SPM_DIR, tpm_path, 'grey.nii') - WM_TEMPLATE = os.path.join(SPM_DIR, tpm_path, 'white.nii') - CSF_TEMPLATE = os.path.join(SPM_DIR, tpm_path, 'csf.nii') - -# extention of web-related files (increment this as we support more -# and more file extensions for web business) -WEBBY_EXTENSION_PATTERN = ".*\.(?:png|jpeg|html|php|css|txt|rst|js|gif)$" - - -def get_nipype_report_filename( - output_files_or_dir): - if isinstance(output_files_or_dir, str): - if os.path.isdir(output_files_or_dir): - return os.path.join(output_files_or_dir, - "_report/report.rst") - elif os.path.isfile(output_files_or_dir): - return get_nipype_report_filename( - os.path.dirname(output_files_or_dir)) - else: - raise OSError( - "%s is neither a file nor directory!" % output_files_or_dir) - else: - # assuming list-like type - return get_nipype_report_filename(output_files_or_dir[0]) - - -def generate_preproc_undergone_docstring( - prepreproc_undergone="", - tools_used=None, - dcm2nii=False, - deleteorient=False, - fwhm=None, anat_fwhm=None, - bet=False, - slice_timing=False, - realign=False, - coregister=False, - coreg_func_to_anat=False, - segment=False, - normalize=False, - func_write_voxel_sizes=None, - anat_write_voxel_sizes=None, - dartel=False, - additional_preproc_undergone="", - command_line=None, - details_filename=None, - has_func=True, - ): - """ - Generates a brief description of the pipeline used in the preprocessing. - - Parameters - ---------- - command_line: string, optional (None) - exact command-line typed at the terminal to run the underlying - preprocessing (useful if someone were to reproduce your results) - - """ - fwhm = sanitize_fwhm(fwhm) - anat_fwhm = sanitize_fwhm(anat_fwhm) - if dartel: - normalize = False - segment = False - - # which tools were used ? - if tools_used is None: - tools_used = ( - 'All preprocessing was done using pypreprocess,' - ' a collection of python scripts and modules for ' - 'preprocessing functional and anatomical MRI data.' % ( - PYPREPROCESS_URL)) - preproc_undergone = "

    %s

    " % tools_used - - # what was actually typed at the command line ? - if not command_line is None: - preproc_undergone += "Command-line: %s
    " % command_line - preproc_undergone += ( - "
    For each subject, the following preprocessing steps have " - "been done:") - - preproc_undergone += "
      " - if prepreproc_undergone: - preproc_undergone += "
    • %s
    • " % prepreproc_undergone - if dcm2nii: - preproc_undergone += ( - "
    • " - "dcm2nii has been used to convert input images from DICOM to nifti" - " format" - "
    • ") - if deleteorient: - preproc_undergone += ( - "
    • " - "Orientation-specific meta-data in the image headers have " - "been suspected as garbage and stripped-off to prevent severe " - "mis-registration problems." - "
    • ") - if bet: - preproc_undergone += ( - "
    • " - "Brain extraction has been applied to strip-off the skull" - " and other non-brain tissues. This prevents later " - "registration problems like the skull been (mis-)aligned " - "unto the cortical surface, " - "etc.
    • ") - if slice_timing: - preproc_undergone += ( - "
    • " - "Slice-Timing Correction (STC) has been done to interpolate the " - "BOLD signal in time, so that in the sequel we can safely pretend" - " all 3D volumes within a TR (Repetition Time) were " - "acquired simultaneously, an crucial assumption for any further " - "analysis of the data (GLM, ICA, etc.). " - "
    • " - ) - if realign: - preproc_undergone += ( - "
    • " - "Motion correction has been done so as to estimate, and then " - "correct for, subject's head motion." - "
    • " - ) - if coregister: - preproc_undergone += "
    • " - if coreg_func_to_anat: - preproc_undergone += ( - "The subject's functional images have been coregistered " - "to their anatomical image." - ) - else: - preproc_undergone += ( - "The subject's anatomical image has been coregistered " - "against their functional images.") - preproc_undergone += ( - " Coregistration is important as it allows: (1) segmentation of " - "the functional via segmentation of the anatomical brain; " - "(2) inter-subject registration via inter-anatomical registration," - " a trick referred to as 'Indirect Normalization'; " - "(3) ROIs to be defined on the anatomy, making it " - "possible for activation maps to be projected and appreciated" - " thereupon." - "
    • ") - if segment: - preproc_undergone += ( - "
    • " - "Tissue Segmentation has been employed to segment the " - "anatomical image into GM, WM, and CSF compartments, using " - "template TPMs (Tissue Probability Maps).
    • ") - if normalize: - if segment: - if has_func: - salt = (" The same deformations have been " - 'applied to the functional images.') - else: salt = "" - preproc_undergone += ( - "
    • " - "The segmented anatomical image has been warped " - "into the MNI template space by applying the deformations " - "learnt during segmentation.%s
    • " % salt) - else: - if coregister: - preproc_undergone += ( - "
    • " - "Deformations from native to standard space have been " - "learnt on the anatomically brain. These deformations " - "have been used to warp the functional and anatomical " - "images into standard space.
    • ") - else: - preproc_undergone += ( - "
    • " - "The functional images have been warped from native to " - "standard space via classical normalization.
    • ") - if dartel: - preproc_undergone += ( - "
    • " - "Group/Inter-subject Normalization has been done using the " - "SPM8 DARTEL to warp subject brains into " - "MNI space. " - "The idea is to register images by computing a “flow" - " field” which can then be “exponentiated" - "” to generate both forward and backward deformation" - "s. Processing begins with the “import” " - "step. This involves taking the parameter files " - "produced by the segmentation (NewSegment), and writing " - "out rigidly " - "transformed versions of the tissue class images, " - "such that they are in as close alignment as possible with" - " the tissue probability maps.   " - "The next step is the registration itself. This involves " - "the simultaneous registration of e.g. GM with GM, " - "WM with WM and 1-(GM+WM) with 1-(GM+WM) (when needed, the" - " 1- (GM+WM) class is generated implicitly, so there " - "is no need to include this class yourself). This " - "procedure begins by creating a mean of all the images, " - "which is used as an initial template. Deformations " - "from this template to each of the individual images " - "are computed, and the template is then re-generated" - " by applying the inverses of the deformations to " - "the images and averaging. This procedure is repeated a " - "number of times.  Finally, warped " - "versions of the images (or other images that are in " - "alignment with them) can be generated. " - "
    • ") % DARTEL_URL - if normalize or dartel: - if (not func_write_voxel_sizes is None or - not anat_write_voxel_sizes is None): - preproc_undergone += "
    • " - sep = "" - if not func_write_voxel_sizes is None: - preproc_undergone += ( - "Output functional images have been re-written with voxel " - "size %smm x %smm x %smm.") % tuple( - func_write_voxel_sizes) - sep = " " - if not anat_write_voxel_sizes is None: - preproc_undergone += ( - "%sThe output anatomical image has been re-written with " - "voxel " - "size %smm x %smm x %smm.") % tuple([sep] + list( - anat_write_voxel_sizes)) - preproc_undergone += "
    • " - - if additional_preproc_undergone: - preproc_undergone += additional_preproc_undergone - if np.sum(fwhm) > 0 and has_func: - preproc_undergone += ( - "
    • " - "The functional images have been " - "smoothed with a %smm x %smm x %smm " - "Gaussian kernel.
    • ") % tuple(fwhm) - if np.sum(anat_fwhm) > 0: - preproc_undergone += ( - "
    • " - "The anatomical image has been " - "smoothed with a %smm x %smm x %smm " - "Gaussian kernel.") % tuple(anat_fwhm) - if segment: - preproc_undergone += ( - " Warped TPMs have been smoothed with the same kernel.") - if not details_filename is None: - preproc_undergone += ( - " See complete configuration used for preprocessing" - " here") % os.path.basename(details_filename) - preproc_undergone += "
    " - - return preproc_undergone - - -def del_empty_dirs(s_dir): - """ - Recursively deletes all empty subdirs fo given dir. - - Parameters - ========== - s_dir: string - directory under inspection - - """ - b_empty = True - for s_target in os.listdir(s_dir): - s_path = os.path.join(s_dir, s_target) - if os.path.isdir(s_path): - if not del_empty_dirs(s_path): - b_empty = False - else: - b_empty = False - if b_empty: - print('deleting: %s' % s_dir) - shutil.rmtree(s_dir) - - return b_empty - - -def export_report(src, tag="", make_archive=True): - """ - Exports a report (html, php, etc. files) , ignoring data - files like *.nii, etc. - - Parameters - ========== - src: string - directory contain report - - make_archive: bool (optional) - should the final report dir (dst) be archived ? - - """ - - def check_extension(f): - return re.match(WEBBY_EXTENSION_PATTERN, f) - - def ignore_these(folder, files): - return [f for f in files if \ - (os.path.isfile( - os.path.join(folder, f)) and not check_extension(f))] - - # sanity - dst = os.path.join(src, "frozen_report_%s" % tag) - - if os.path.exists(dst): - # print("Removing old %s." % dst) - # shutil.rmtree(dst) - pass - - # copy hierarchy - print("Copying files directory structure from %s to %s" % (src, dst)) - shutil.copytree(src, dst, ignore=ignore_these) - print("+++++++Done.") - - # zip the results (dst) - if make_archive: - dst_archive = dst + ".zip" - print("Writing archive %s .." % dst_archive) - print(subprocess.check_output( - 'cd %s; zip -r %s %s; cd -' % (os.path.dirname(dst), - os.path.basename(dst_archive), - os.path.basename(dst)))) - print("+++++++Done.") - - -def nipype2htmlreport(nipype_report_filename): - """ - Converts a nipype.caching report (.rst) to html. - - """ - with open(nipype_report_filename, 'r') as fd: - return lines2breaks(fd.readlines()) - - -def get_nipype_report(nipype_report_filename): - if isinstance(nipype_report_filename, str): - if os.path.isfile(nipype_report_filename): - nipype_report_filenames = [nipype_report_filename] - else: - nipype_report_filenames = [] - else: - nipype_report_filenames = nipype_report_filename - - output = [] - for nipype_report_filename in nipype_report_filenames: - if os.path.exists(nipype_report_filename): - nipype_report = nipype2htmlreport( - nipype_report_filename) - output.append(nipype_report) - - output = "
    ".join(output) - - return output - - -def generate_registration_thumbnails( - target, source, procedure_name, output_dir, tooltip=None, - execution_log_html_filename=None, results_gallery=None): - """ - Generates QA thumbnails post-registration. - - Parameters - ---------- - target: tuple of length 2 - target[0]: string - path to reference image used in the registration - target[1]: string - short name (e.g 'anat', 'epi', 'MNI', etc.) for the - reference image - source: tuple of length 2 - source[0]: string - path to source image - source[1]: string - short name (e.g 'anat', 'epi', 'MNI', etc.) for the - source image - procedure_name: string - name of, or short comments on, the registration procedure used - (e.g 'anat ==> func', etc.) - - """ - output = {} - - # prepare for smart caching - qa_cache_dir = os.path.join(output_dir, "QA") - if not os.path.exists(qa_cache_dir): - os.makedirs(qa_cache_dir) - qa_mem = joblib.Memory(cachedir=qa_cache_dir, verbose=5) - - thumb_desc = procedure_name - if execution_log_html_filename: - thumb_desc += " (see execution log)" % ( - os.path.basename(execution_log_html_filename)) - - # plot outline (edge map) of template on the - # normalized image - outline = os.path.join(output_dir, - "%s_on_%s_outline.png" % (target[1], source[1])) - - qa_mem.cache(plot_registration)( - target[0], source[0], output_filename=outline, - close=True, title="Outline of %s on %s" % (target[1], source[1])) - - # create thumbnail - if results_gallery: - thumbnail = Thumbnail(tooltip=tooltip) - thumbnail.a = a(href=os.path.basename(outline)) - thumbnail.img = img( - src=os.path.basename(outline), height="250px") - thumbnail.description = thumb_desc - - results_gallery.commit_thumbnails(thumbnail) - - # plot outline (edge map) of the normalized image - # on the SPM MNI template - source, target = (target, source) - outline = os.path.join( - output_dir, "%s_on_%s_outline.png" % (target[1], source[1])) - outline_axial = os.path.join( - output_dir, "%s_on_%s_outline_axial.png" % (target[1], source[1])) - qa_mem.cache(plot_registration)( - target[0], source[0], output_filename=outline_axial, close=True, - display_mode='z', title="Outline of %s on %s" % (target[1], source[1])) - - output['axial'] = outline_axial - qa_mem.cache(plot_registration)( - target[0], source[0], output_filename=outline, close=True, - title="Outline of %s on %s" % (target[1], source[1])) - - # create thumbnail - if results_gallery: - thumbnail = Thumbnail(tooltip=tooltip) - thumbnail.a = a(href=os.path.basename(outline)) - thumbnail.img = img( - src=os.path.basename(outline), height="250px") - thumbnail.description = thumb_desc - results_gallery.commit_thumbnails(thumbnail) - - return output - - -def generate_normalization_thumbnails( - normalized_files, output_dir, brain="EPI", tooltip=None, - execution_log_html_filename=None, results_gallery=None): - """Generate thumbnails after spatial normalization or subject - - Parameters - ---------- - normalized_files: list - paths to normalized images (3Ds or 4Ds) - - output_dir: string - dir to which all output will be written - - brain: string (optional) - a short comment/tag like 'epi', or 'anat' - - result_gallery: ResultsGallery instance (optional) - gallery to which thumbnails will be committed - - """ - if isinstance(normalized_files, str): - normalized = normalized_files - else: - mean_normalized_img = compute_mean_3D_image(normalized_files) - normalized = mean_normalized_img - return generate_registration_thumbnails( - (T1_TEMPLATE, 'template'), (normalized, brain), - "Normalization of %s" % brain, output_dir, - execution_log_html_filename=execution_log_html_filename, - results_gallery=results_gallery, tooltip=tooltip) - - -def generate_coregistration_thumbnails( - target, source, output_dir, execution_log_html_filename=None, - results_gallery=None, tooltip=None, comment=True): - """ - Generates QA thumbnails post-coregistration. - - Parameters - ---------- - target: tuple of length 2 - target[0]: string - path to reference image used in theco registration - target[1]: string - short name (e.g 'anat', 'epi', 'MNI', etc.) for the - reference image - - source: tuple of length 2 - source[0]: string - path to source image - source[1]: string - short name (e.g 'anat', 'epi', 'MNI', etc.) for the - source image - - """ - comments = " %s == > %s" % (source[1], target[1]) if comment else "" - return generate_registration_thumbnails( - target, source, "Coregistration %s" % comments, - output_dir, execution_log_html_filename=execution_log_html_filename, - results_gallery=results_gallery, tooltip=tooltip) - - -def generate_segmentation_thumbnails( - normalized_files, output_dir, subject_gm_file=None, - subject_wm_file=None, subject_csf_file=None, only_native=False, - brain='func', comments="", execution_log_html_filename=None, - cmap=None, tooltip=None, results_gallery=None): - """Generates thumbnails after indirect normalization - (segmentation + normalization) - - Parameters - ---------- - normalized_file: list - paths to normalized images (3Ds or 4Ds) - - output_dir: string - dir to which all output will be written - - subject_gm_file: string (optional) - path to subject GM file - - subject_csf_file: string (optional) - path to subject WM file - - subject_csf_file: string (optional) - path to subject CSF file - - brain: string (optional) - a short commeent/tag like 'epi', or 'anat' - - cmap: optional - cmap (color map) to use for plots - - result_gallery: ResultsGallery instance (optional) - gallery to which thumbnails will be committed - - """ - if isinstance(normalized_files, str): - normalized_file = normalized_files - else: - mean_normalized_file = os.path.join(output_dir, - "%s.nii" % brain) - compute_mean_3D_image(normalized_files, - output_filename=mean_normalized_file) - normalized_file = mean_normalized_file - output = {} - - # prepare for smart caching - qa_cache_dir = os.path.join(output_dir, "QA") - if not os.path.exists(qa_cache_dir): - os.makedirs(qa_cache_dir) - qa_mem = joblib.Memory(cachedir=qa_cache_dir, verbose=5) - - thumb_desc = "Segmentation of %s " % brain - if execution_log_html_filename: - thumb_desc += (" (see execution " - "log)") % (os.path.basename( - execution_log_html_filename)) - _brain = "%s_%s" % (comments, brain) if comments else brain - - # plot contours of template compartments on subject's brain - if not only_native: - template_compartments_contours = os.path.join( - output_dir, - "template_tpms_contours_on_%s.png" % _brain) - template_compartments_contours_axial = os.path.join( - output_dir, - "template_compartments_contours_on_%s_axial.png" % _brain) - qa_mem.cache(plot_segmentation)( - normalized_file, GM_TEMPLATE, wm_filename=WM_TEMPLATE, - csf_filename=CSF_TEMPLATE, display_mode='z', cmap=cmap, - output_filename=template_compartments_contours_axial, - title="template TPMs", close=True) - qa_mem.cache(plot_segmentation)( - normalized_file, gm_filename=GM_TEMPLATE, - wm_filename=WM_TEMPLATE, csf_filename=CSF_TEMPLATE, - output_filename=template_compartments_contours, - cmap=cmap, close=True, - title=("Template GM, WM, and CSF TPM contours on " - "subject's %s") % _brain) - - # create thumbnail - if results_gallery: - thumbnail = Thumbnail(tooltip=tooltip) - thumbnail.a = a( - href=os.path.basename(template_compartments_contours)) - thumbnail.img = img( - src=os.path.basename(template_compartments_contours), - height="250px") - thumbnail.description = thumb_desc - - results_gallery.commit_thumbnails(thumbnail) - - output['axial'] = template_compartments_contours_axial - - # plot contours of subject's compartments on subject's brain - if subject_gm_file: - subject_compartments_contours = os.path.join( - output_dir, - "subject_tpms_contours_on_subject_%s.png" % _brain) - subject_compartments_contours_axial = os.path.join( - output_dir, - "subject_tpms_contours_on_subject_%s_axial.png" % _brain) - - qa_mem.cache(plot_segmentation)( - normalized_file, subject_gm_file, wm_filename=subject_wm_file, - csf_filename=subject_csf_file, display_mode='z', cmap=cmap, - output_filename=subject_compartments_contours_axial, close=True, title="subject TPMs") - - title_prefix = "Subject's GM" - if subject_wm_file: - title_prefix += ", WM" - if subject_csf_file: - title_prefix += ", and CSF" - - qa_mem.cache(plot_segmentation)( - normalized_file, subject_gm_file, wm_filename=subject_wm_file, - csf_filename=subject_csf_file, cmap=cmap, close=True, - output_filename=subject_compartments_contours, - title=("%s TPM contours on " - "subject's %s") % (title_prefix, _brain)) - - # create thumbnail - if results_gallery: - thumbnail = Thumbnail(tooltip=tooltip) - thumbnail.a = a( - href=os.path.basename(subject_compartments_contours)) - thumbnail.img = img( - src=os.path.basename(subject_compartments_contours), - height="250px") - thumbnail.description = thumb_desc - - results_gallery.commit_thumbnails(thumbnail) - - if only_native: - output['axial'] = subject_compartments_contours_axial - - return output - - -def generate_tsdiffana_thumbnail(image_files, sessions, subject_id, - output_dir, results_gallery=None, - tooltips=None): - """Generate tsdiffana thumbnails - - Parameters - ---------- - image_files: list or strings or list - paths (4D case) to list of paths (3D case) of images under inspection - - output_dir: string - dir to which all output whill be written - - subject_id: string - id of subject under inspection - - sessions: list - list of session ids, one per element of image_files - - result_gallery: ResultsGallery instance (optional) - gallery to which thumbnails will be committed - - """ - # plot figures - qa_cache_dir = os.path.join(output_dir, "QA") - if not os.path.exists(qa_cache_dir): - os.makedirs(qa_cache_dir) - qa_mem = joblib.Memory(cachedir=qa_cache_dir, verbose=5) - results = qa_mem.cache(multi_session_time_slice_diffs)(image_files) - axes = plot_tsdiffs(results, use_same_figure=False) - figures = [ax.get_figure() for ax in axes] - output_filename_template = os.path.join( - output_dir, "tsdiffana_plot_{0}.png") - output_filenames = [output_filename_template.format(i) - for i in range(len(figures))] - - for fig, output_filename in zip(figures, output_filenames): - fig.savefig(output_filename, bbox_inches="tight", dpi=200) - pl.close(fig) - - if tooltips is None: - tooltips = [None] * len(output_filename) - - # create thumbnails - thumbnails = [] - for output_filename, tooltip in zip(output_filenames, tooltips): - thumbnail = Thumbnail(tooltip=tooltip) - thumbnail.a = a( - href=os.path.basename(output_filename)) - thumbnail.img = img( - src=os.path.basename(output_filename), height="250px", - width="600px") - thumbnail.description = "tsdiffana ({0} sessions)".format( - len(sessions)) - thumbnails.append(thumbnail) - if results_gallery: - results_gallery.commit_thumbnails(thumbnails) - return thumbnails - - -def generate_realignment_thumbnails( - estimated_motion, output_dir, sessions=None, tooltip=None, - execution_log_html_filename=None, results_gallery=None): - """Function generates thumbnails for realignment parameters.""" - sessions = [1] if sessions is None else sessions - if isinstance(estimated_motion, str): - estimated_motion = [estimated_motion] - output = {} - if isinstance(estimated_motion, str): - estimated_motion = [estimated_motion] - tmp = [] - for x in estimated_motion: - if isinstance(x, str): - x = np.loadtxt(x) - tmp.append(x) - lengths = [len(each) for each in tmp] - estimated_motion = np.vstack(tmp) - rp_plot = os.path.join(output_dir, 'rp_plot.png') - plot_spm_motion_parameters(parameter_file=estimated_motion, - output_filename=rp_plot, lengths=lengths, close=True, - title="Plot of Estimated motion for %d sessions" % len(sessions)) - - # create thumbnail - if results_gallery: - thumbnail = Thumbnail(tooltip=tooltip) - thumbnail.a = a(href=os.path.basename(rp_plot)) - thumbnail.img = img(src=os.path.basename(rp_plot), - height="250px", width="600px") - thumbnail.description = "Motion Correction" - if not execution_log_html_filename is None: - thumbnail.description += (" (see execution " - "log)") % os.path.basename( - execution_log_html_filename) - results_gallery.commit_thumbnails(thumbnail) - output['rp_plot'] = rp_plot - - return output - - -def generate_stc_thumbnails(original_bold, st_corrected_bold, output_dir, - voxel=None, sessions=None, results_gallery=None, - execution_log_html_filename=None, close=True): - sessions = [1] if sessions is None else sessions - if not os.path.exists(output_dir): - os.makedirs(output_dir) - - def _sanitize_data(data): - if isinstance(data, list): - return np.array([_sanitize_data(x) for x in data]) - - if is_niimg(data): - data = np.rollaxis(data.get_data(), -1, start=0) - elif isinstance(data, str): - data = nibabel.load(data).get_data() - return data - - def _get_vol_shape(x): - if isinstance(x, np.ndarray): - if x.ndim == 3: - return x.shape - else: - assert x.ndim > 3, x.ndim - return _get_vol_shape(x[..., 0]) - elif isinstance(x, str): - return _get_vol_shape(nibabel.load(x).get_data()) - elif is_niimg(x): - return _get_vol_shape(x.get_data()) - else: - return _get_vol_shape(x[0]) - - def _get_time_series_from_voxel(x, voxel): - assert len(voxel) == 3 - if isinstance(x, np.ndarray): - if x.ndim == 3: - return x[voxel[0], voxel[1], voxel[2]] - else: - assert x.ndim == 4 == len(voxel) + 1 - return x[voxel[0], voxel[1], voxel[2], :] - elif is_niimg(x): - return _get_time_series_from_voxel(x.get_data(), voxel) - elif isinstance(x, str): - return _get_time_series_from_voxel(nibabel.load(x), voxel) - else: - return np.array([_get_time_series_from_voxel(y, voxel) for y in x]) - - if voxel is None: - voxel = np.array(_get_vol_shape(original_bold)) // 2 - output = {} - - for session_id, o_bold, stc_bold in zip(sessions, original_bold, - st_corrected_bold): - - stc_ts = _get_time_series_from_voxel(stc_bold, voxel) - o_ts = _get_time_series_from_voxel(o_bold, voxel) - output_filename = os.path.join(output_dir, - 'stc_plot_%s.png' % session_id) - pl.figure() - pl.plot(o_ts, 'o-') - if LooseVersion(matplotlib.__version__) < LooseVersion("2.0"): - pl.hold('on') - pl.plot(stc_ts, 's-') - pl.legend(('original BOLD', 'ST corrected BOLD')) - pl.title("session %s: STC QA for voxel (%s, %s, %s)" % ( - session_id, voxel[0], voxel[1], voxel[2])) - pl.xlabel('time (TR)') - - pl.savefig(output_filename, bbox_inches="tight", dpi=200) - if close: - pl.close() - - # create thumbnail - if results_gallery: - thumbnail = Thumbnail() - thumbnail.a = a(href=os.path.basename( - output_filename)) - thumbnail.img = img(src=os.path.basename( - output_filename), height="250px", width="600px") - thumbnail.description = "Slice-Timing Correction" - if not execution_log_html_filename is None: - thumbnail.description += (" (see execution " - "log)") % os.path.basename( - execution_log_html_filename) - - results_gallery.commit_thumbnails(thumbnail) - - output['stc_plot'] = output_filename - - return output - - -def generate_subject_preproc_report( - func=None, - anat=None, - original_bold=None, - st_corrected_bold=None, - estimated_motion=None, - gm=None, - wm=None, - csf=None, - output_dir='/tmp', - subject_id="UNSPECIFIED!", - sessions=None, - tools_used=None, - fwhm=None, - did_bet=False, - did_slice_timing=False, - did_deleteorient=False, - did_realign=True, - did_coreg=True, - func_to_anat=False, - did_segment=True, - did_normalize=True, - tsdiffana=True, - additional_preproc_undergone=None, - parent_results_gallery=None, - subject_progress_logger=None, - conf_path='.', - last_stage=True): - sessions = ['UNKNOWN_SESSION'] if sessions is None else sessions - output = {} - if not os.path.exists(output_dir): - os.makedirs(output_dir) - - def finalize_report(): - output['final_thumbnail'] = final_thumbnail - - if parent_results_gallery: - commit_subject_thumnbail_to_parent_gallery( - final_thumbnail, - subject_id, - parent_results_gallery) - - if last_stage: - subject_progress_logger.finish(report_preproc_filename) - subject_progress_logger.finish_all() - - # generate explanation of preproc steps undergone by subject - preproc_undergone = generate_preproc_undergone_docstring( - tools_used=tools_used, - deleteorient=did_deleteorient, - fwhm=fwhm, - bet=did_bet, - slice_timing=did_slice_timing, - realign=did_realign, - coreg=did_coreg, - coreg_func_to_anat=func_to_anat, - segment=did_segment, - normalize=did_normalize, - additional_preproc_undergone=additional_preproc_undergone) - - report_log_filename = os.path.join( - output_dir, 'report_log.html') - report_preproc_filename = os.path.join( - output_dir, 'report_preproc.html') - report_filename = os.path.join( - output_dir, 'report.html') - - # copy css and js stuff to output dir - for js_file in glob.glob(os.path.join(ROOT_DIR, - "js/*.js")): - shutil.copy(js_file, output_dir) - for css_file in glob.glob(os.path.join(ROOT_DIR, "css/*.css")): - shutil.copy(css_file, output_dir) - for icon_file in glob.glob(os.path.join(ROOT_DIR, "icons/*.gif")): - shutil.copy(icon_file, output_dir) - for icon_file in glob.glob(os.path.join(ROOT_DIR, "images/*.png")): - shutil.copy(icon_file, output_dir) - for icon_file in glob.glob(os.path.join(ROOT_DIR, "images/*.jpeg")): - shutil.copy(icon_file, output_dir) - - # initialize results gallery - loader_filename = os.path.join( - output_dir, "results_loader.php") - results_gallery = ResultsGallery( - loader_filename=loader_filename, - title="Report for subject %s" % subject_id) - final_thumbnail = Thumbnail() - final_thumbnail.a = a(href=report_preproc_filename) - final_thumbnail.img = img() - final_thumbnail.description = subject_id - - output['results_gallery'] = results_gallery - - # initialize progress bar - if subject_progress_logger is None: - subject_progress_logger = ProgressReport( - report_log_filename, - other_watched_files=[report_filename, - report_preproc_filename]) - output['progress_logger'] = subject_progress_logger - - # html markup - preproc = get_subject_report_preproc_html_template( - ).substitute( - conf_path=conf_path, - results=results_gallery, - start_time=time.ctime(), - preproc_undergone=preproc_undergone, - subject_id=subject_id, - ) - main_html = get_subject_report_html_template( - ).substitute( - conf_path=conf_path, - start_time=time.ctime(), - subject_id=subject_id - ) - - with open(report_preproc_filename, 'w') as fd: - fd.write(str(preproc)) - fd.close() - with open(report_filename, 'w') as fd: - fd.write(str(main_html)) - fd.close() - - # generate stc thumbs - if did_slice_timing and not original_bold is None and not \ - st_corrected_bold is None: - generate_stc_thumbnails(original_bold, - st_corrected_bold, - output_dir, - sessions=sessions, - results_gallery=results_gallery - ) - - # generate realignment thumbs - if did_realign and not estimated_motion is None: - generate_realignment_thumbnails( - estimated_motion, - output_dir, - sessions=sessions, - results_gallery=results_gallery, - ) - - # generate coreg thumbs - if did_coreg: - target, ref_brain = func, "func" - source, source_brain = anat, "anat" - generate_coregistration_thumbnails( - (target, ref_brain), - (source, source_brain), - output_dir, - results_gallery=results_gallery, - ) - - # generate epi normalization thumbs - if did_normalize: - generate_normalization_thumbnails( - func, - output_dir, - brain="EPI", - results_gallery=results_gallery) - - seg_thumbs = generate_segmentation_thumbnails( - func, - output_dir, - subject_gm_file=gm, - subject_wm_file=wm, - subject_csf_file=csf, - cmap=pl.cm.nipy_spectral, - brain="EPI", - results_gallery=results_gallery, - ) - final_thumbnail.img.src = seg_thumbs['axial'] - - # generate anat normalization thumbs - if anat: - generate_normalization_thumbnails( - anat, - output_dir, - brain="anat", - results_gallery=results_gallery) - - generate_segmentation_thumbnails( - anat, - output_dir, - subject_gm_file=gm, - subject_wm_file=wm, - subject_csf_file=csf, - cmap=pl.cm.gray, - brain="anat", - results_gallery=results_gallery, - ) - - # generate tsdiffana plots - if tsdiffana: - generate_tsdiffana_thumbnail( - func, - sessions, - subject_id, - output_dir, - results_gallery=results_gallery) - - # we're done - finalize_report() - - return output - - -def make_nipype_execution_log_html(nipype_output_files, - node_name, output_dir, - brain_name="", - progress_logger=None): - brain_name = brain_name.replace(" ", "_") # fix forissue 169 - execution_log = get_nipype_report(get_nipype_report_filename( - nipype_output_files)) - execution_log_html_filename = os.path.join( - output_dir, - '%s%sexecution_log.html' % ( - node_name, "_%s_" % brain_name if brain_name else "") - ) - - open(execution_log_html_filename, 'w').write( - execution_log) - - if progress_logger: - progress_logger.log( - '%s

    ' % node_name) - progress_logger.log(execution_log) - progress_logger.log('
    ') - - return execution_log_html_filename From 6558dcb4f8e412ea08aba05c35a3709e121f1d84 Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal Date: Sat, 13 Mar 2021 17:35:27 +0100 Subject: [PATCH 23/30] Old reporting removal: deleted html templates and stylesheets --- pypreprocess/reporting/css/fsl.css | 97 ------------- pypreprocess/reporting/css/styles.css | 128 ------------------ pypreprocess/reporting/icons/minusbox.gif | Bin 834 -> 0 bytes pypreprocess/reporting/icons/plusbox.gif | Bin 847 -> 0 bytes pypreprocess/reporting/images/failed.png | Bin 7490 -> 0 bytes pypreprocess/reporting/images/logo.png | Bin 18735 -> 0 bytes pypreprocess/reporting/images/logo.xcf | Bin 9055298 -> 0 bytes pypreprocess/reporting/js/base.js | 11 -- pypreprocess/reporting/js/jquery.min.js | 4 - .../dataset_report_log_template.tmpl.html | 28 ---- .../dataset_report_preproc_template.tmpl.html | 105 -------------- .../dataset_report_template.tmpl.html | 46 ------- .../ica_report_template.tmpl.html | 109 --------------- .../subject_preproc_report_template.tmpl.html | 80 ----------- .../subject_report_log_template.tmpl.html | 45 ------ .../subject_report_preproc_template.tmpl.html | 75 ---------- .../subject_report_stats_template.tmpl.html | 116 ---------------- .../subject_report_template.tmpl.html | 39 ------ 18 files changed, 883 deletions(-) delete mode 100755 pypreprocess/reporting/css/fsl.css delete mode 100755 pypreprocess/reporting/css/styles.css delete mode 100755 pypreprocess/reporting/icons/minusbox.gif delete mode 100755 pypreprocess/reporting/icons/plusbox.gif delete mode 100755 pypreprocess/reporting/images/failed.png delete mode 100644 pypreprocess/reporting/images/logo.png delete mode 100644 pypreprocess/reporting/images/logo.xcf delete mode 100755 pypreprocess/reporting/js/base.js delete mode 100755 pypreprocess/reporting/js/jquery.min.js delete mode 100755 pypreprocess/reporting/template_reports/dataset_report_log_template.tmpl.html delete mode 100755 pypreprocess/reporting/template_reports/dataset_report_preproc_template.tmpl.html delete mode 100755 pypreprocess/reporting/template_reports/dataset_report_template.tmpl.html delete mode 100755 pypreprocess/reporting/template_reports/ica_report_template.tmpl.html delete mode 100755 pypreprocess/reporting/template_reports/subject_preproc_report_template.tmpl.html delete mode 100755 pypreprocess/reporting/template_reports/subject_report_log_template.tmpl.html delete mode 100755 pypreprocess/reporting/template_reports/subject_report_preproc_template.tmpl.html delete mode 100755 pypreprocess/reporting/template_reports/subject_report_stats_template.tmpl.html delete mode 100755 pypreprocess/reporting/template_reports/subject_report_template.tmpl.html diff --git a/pypreprocess/reporting/css/fsl.css b/pypreprocess/reporting/css/fsl.css deleted file mode 100755 index 6ae7608d..00000000 --- a/pypreprocess/reporting/css/fsl.css +++ /dev/null @@ -1,97 +0,0 @@ -body { - /* background-image: url("images/fsl-bg.jpg"); */ - font-family: 'Arial'; - margin-top: 0px; - padding-top: 0px; -} - -object { width: 100% ; height: 170px } -iframe { width: 100% ; height: 170px } - -a:link {text-decoration: none} -a:visited {text-decoration: none} -a:active {text-decoration: none} -a:hover {text-decoration: underline; color: red;} - -ul { margin-top: 0px; } -img { border-style: hidden; } - -.floatright {float: right; margin: 2em 0em 2em 2em; } -.floatleft {float: left; margin: 2em 2em 0em 2em; } -.centred {text-align: center; margin-left: auto; margin-right: auto; } - -#header { - margin-top: 2px; - font-family: 'Arial'; -} - -#header h1.fslheader { - font-family: 'Arial'; - font-weight: bold; - font-size: 200%; - margin: 0em; - padding: 0em; -} - -#header img.logo { - margin-top: 5px; - margin-left: 5px; - float: right; -} - -#header table { - text-align: center; - border-style: hidden; - margin-top: 0em; - margin-bottom: 0em; - padding-top: 0em; - padding-bottom: 0em; -} - -div.img -{ - margin:2px; - border:1px solid #0000ff; - height:auto; - width:auto; - float:left; - text-align:center; -} - -div.img img -{ - display:inline; - margin:3px; - border:1px solid #ffffff; -} - -div.img a:hover img -{ - border:1px solid #0000ff; -} - -div.desc -{ - text-align:center; - font-weight:normal; - width:100%; - margin:2px; -} - - -/* class for expadable-collapsable items (source code, etc.) */ -.hidden { display: none;} - -pre { display: inline} - -.boxed { - border: 1px solid green ; -} - - -/* for souce code highlighting */ -code { - background-color: #F9F9F9; - color: green; - line-height: 1.1em; -} diff --git a/pypreprocess/reporting/css/styles.css b/pypreprocess/reporting/css/styles.css deleted file mode 100755 index 0f98c0e4..00000000 --- a/pypreprocess/reporting/css/styles.css +++ /dev/null @@ -1,128 +0,0 @@ -body { - /* background-image: url("images/fsl-bg.jpg"); */ - font-family: 'Arial'; - margin-top: 0px; - padding-top: 0px; -} - -object { width: 100% ; height: 170px } -iframe { width: 100% ; height: 170px } - -a:link {text-decoration: none} -a:visited {text-decoration: none} -a:active {text-decoration: none} -a:hover {text-decoration: underline; color: red;} - -ul { margin-top: 0px; } -img { border-style: hidden; } - -.floatright {float: right; margin: 2em 0em 2em 2em; } -.floatleft {float: left; margin: 2em 2em 0em 2em; } -.centred {text-align: center; margin-left: auto; margin-right: auto; } - -#header { - margin-top: 2px; - font-family: 'Arial'; -} - -#header h1.fslheader { - font-family: 'Arial'; - font-weight: bold; - font-size: 200%; - margin: 0em; - padding: 0em; -} - -#header img.logo { - margin-top: 5px; - margin-left: 5px; - float: right; -} - -#header table { - text-align: center; - border-style: hidden; - margin-top: 0em; - margin-bottom: 0em; - padding-top: 0em; - padding-bottom: 0em; -} - -div.img -{ - margin:2px; - border:1px solid #0000ff; - height:auto; - width:auto; - float:left; - text-align:center; -} - -div.img img -{ - display:inline; - margin:3px; - border:1px solid #ffffff; -} - -div.img a:hover img -{ - border:1px solid #0000ff; -} - -div.desc -{ - text-align:center; - font-weight:normal; - width:100%; - margin:2px; -} - - -/* class for expadable-collapsable items (source code, etc.) */ -.hidden { display: none;} - -pre { display: inline} - -.boxed { - border: 1px solid green ; -} - - -/* for souce code highlighting */ -code { - background-color: #F9F9F9; - color: green; - line-height: 1.1em; -} - -/* tooltips */ -*[tooltip] { - position: relative; - float: left; -} - -*[tooltip]:hover:after{ - background: rgba(0,0,0,.8); - border-radius: 5px; - color: white; - content: attr(tooltip); - left: 95%; - padding: 5px 15px; - position: absolute; - z-index: 98; - width: 295px; - bottom: 52% -} - - -*[tooltip]:hover:before { - content: ""; - position: absolute; - z-index: 99; - border: solid; - border-color: #333 transparent; - border-width: 18px 0px 0px 20px; - left: 92%; - bottom: 55% -} \ No newline at end of file diff --git a/pypreprocess/reporting/icons/minusbox.gif b/pypreprocess/reporting/icons/minusbox.gif deleted file mode 100755 index 839a85e9f4d7cb20ac677ef8e891d29dadf9bc35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 834 zcmb`GF-}}z41_J9$TlE|Ql(6Rgi=JZgosjvq#&Z^1T?NWK#CPZz9W#tjLa3`Y~j*OFCbb(XTmEGTwmceb*}r07+pI;GUWkC^scNi`wPfAZsvgUQ1x0m9r9nNU=&k7*)gTW)pvg3LpdS(_gf(E0h9#}= zU@_Q0gEe-}WpYB@V9W_MlDw22Q-<+4mcqgg|G$; z(o8}N9xMhM=<$i%O_`h+E{2ilV=bB1OJ-l!y$ap@~)R{Wkl*5U)<-X7lIWhc{n7ADx_izr1_?`s48R`N8GW%l^ah R+pC|yAAjxc5BB%s(?9ZpX5at- diff --git a/pypreprocess/reporting/icons/plusbox.gif b/pypreprocess/reporting/icons/plusbox.gif deleted file mode 100755 index 2e7159ce63e407e81a51191e32986f9d7a105598..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmb`GKWfx*5XGM$;%eg`VrLOz6;cGINf4rf7y=dn@c>#(Qc zf)E%#?|TLZmfz0K%$xV#{Pz6f)5+<#jW)WIW4k`v_1Kba9lPCb_EU}DofeQac_kxRi$dxc(g;E>QcAbOf{iNO=%k11~xQU4AVW{ z7oXN~2;f?`*8XAkNjMQ={!bPn?H1DZ@@2l^p_LRbR^X;{(< z4;F(BG+1NjTqY;FYHTF>SWDJjJ@|@TSWv9#8hpfQ41gEy7>!!2#1CjPjU8}8FbZJ} z7^Inm7CcxCHqhe}xtlUMFz~hGo_)T#JoxzQ>FKLCC&ypk>+L@)Uug&c diff --git a/pypreprocess/reporting/images/failed.png b/pypreprocess/reporting/images/failed.png deleted file mode 100755 index 06379b286bb456354bda1a9ee63e34a7fe8b00e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7490 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 O+i?GP%MSB#=6?Yi$qP*Y diff --git a/pypreprocess/reporting/images/logo.png b/pypreprocess/reporting/images/logo.png deleted file mode 100644 index 5f63908eca16bd39311fda92d6831814957e8625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18735 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 Q1ZrULboFyt=akR{0N#PCzyJUM diff --git a/pypreprocess/reporting/images/logo.xcf b/pypreprocess/reporting/images/logo.xcf deleted file mode 100644 index 07bb1e85e2756b8f9a33d0eee53ba9f0736cefdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9055298 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

    `dVf^0jA(ed_^7C(bF!3}H*lWHaHPR21@ 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%0AvJNP_+w|-a4nd=Yc0C=05 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

    0a9#|@Jb}{=%qATq|{DrFvQHoA#0eD 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�{P;v!)|# ziT+DVo6*u3;UKVO>((v%_M+B|)d$WzC^$1ipAQCS&{sw(&6?QK(r6$m-_~A|Ck?M; z>d(Sjas1IA99oz#OY@~!v!EbZ0q5*(-J-S_yb2=NTmWG)%b|B^G2NJk)v~bfOu=#y z!Qy;yp4=igizn3{xx2Ty9_z&U)muzg__ohg$c6$A^xNv&;>Ur0oAF4Yx~6CjtviZoXCVi27AarnVjOc5xm-BLrH8V2T&>E)$XLC`1?nZ8bDMN=0n3^7bJ~<_9#>; zt?ZezW=O~eVP1cpXibGUzVDjWqFPi)K|z65QaJOF8dC7H0@YP|ry{1*wDcCEMMlUw z4Jc`wpH>YBMfQc<; zixVj=8}#~#UhEOVEBon7Nh<@^)zl#D&x8Wy)3;eQSh{NH z>C;q>gg&}-GFlQ_sPAQ1Mb`UwVyb&4eKe}zKuqmH@rueT9R5KVleB)4kw!p zTQH1xO)e|pgU@MO_aSCJl#+&@)v$SUgVErt@7+0``#N-?JW>ssXr%#85Xb}65H|!Zr2_x%jqe8ukd46b(kCti7I>Fii5hmPNXMLR$K= zhK71sZ*Qu{%pm%@p+3PiE!N|^Ym69??$8$+kWHJyveu^hdfc?pnPv-Rnd4ZGIHINT zTqVl^NN=Kk$ECL^P`_!@#!VZ=MstH&Z&B}s>^t;jtv#7kdPrrH&WwbXQ@=@|FG*!iR7on%90U|Y+PU7T3ZcJ`5HU(jM z;|8_Czkb8|_3PHJlk0+O$Br8Zn6t-?A1B7C@y^V>nDoWWGcICUJlQh51su|XH%VGe zdcZg!$C~4M$B!E~e*A>J=q0f?VV{k0Hbjf5{lqN?_8%}0B#aZ|#kijF<7VvLNB@}n zXi+Ha`Sx3w!h$J>9Qz>Vq=6K$vUFe4KBR!Ao^9}q+Mjel>EAQ<8haD>-Q)gs0QO

    U2|Z#cCF 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


    RoZ1) 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 z

    z*YheZ?L_{1PUoB*g&y4Ypy?k zt?f$wdcF(!>-jF_uXSC_U+cS=zdqm9{Po4pk-xt9dGgnnxSG?|wb$=fs|>QMYp>tc zxpSBESDig~Ie)GFy!q?-Q1aRJwb%Mk6J5?r1${I=%LKg3n6FU3=YkJ^AaQ zR{86(sQk60{rvU(&);NPq_YCbC&C`xMW#1m^~faf@Qj# z@?VoD;WZ``x%i4VCSW(w$g~ynRrWel%=FFR>T7!1-=(Sd<3v|pSb(LxU5%igIDrP5ky615Wk|3X z9>}@x&snf$C+kWFP(9Et@O-fC+-rc6C9CB>09-AK1Fi7xBD)yS<~hsPvw}(0e~!j( z+ZKZU<@r<8T#0#59t#|;fMyrW7juJiR_%Zb=@u$b8spekG|TniRJ(IE}b}0DJm@_Oya00w}6+$HVsg}yrsWx zQgu>sFyuqwt{rm66{iV2Y5m@N?>vuUf;euo2|rC>8x6_|cyr-OQxj^K;$TzA2Lxa4 z2)#;wQ{%=B@4fr`Y8?V`)GjX*WoB^`E5~S}sN~Hi*>sgfLG1yHNqlvxKE11f$AfKH z|IS+{m>$Zbvg|UdfGCBtaC(TbJoQPF(d1QVl;lLAwR0EXjoY4M13+)sh~uU_KW7Dy zC08g9vISJ@kDw4O4h3Mv_nKTyC=;WKq+a`A(}2MCZD>GjaV)?A5g0luhN8@704!C4 z^&Uh;vFPxdP3|VUO#@rEqJb-PVI$5h%FoBpV;}P1atxp%am2$~IEHP}@0${u0(=FP z+EEJiUY;|@PUO*clE+BpABT2C4?8J}Ws$_V^B>%Q;LtlwJ(^HMqw9^T^P_N$JS{0d zKksOT(h9Q$p!VTIQe%JC)U!$KLBWb4yMjaUsF8=I(OjMl6wEz(6bcnk6j`cREl}h> zaPTK@0{a(iuU7rl2Fi!uQE8;7HiLbQ-Gx2|^2cxf22fQ36FV>OXag1b0X#TQtd|{y zO%JLO#5Np9nXi}T*ZMjQ;c zeqFxI4=78GOn;WrCJq|7OEj{4jpt0Tx@Cf@XykkzENg-|0m6$G~7YQ-#y z*Nkk$4Z~e@tr%~D8asK$qDP*JDD08dn62`Tkez_xS`%9WfNjFP(t}$C^PUvG!$u}I zk4#FPzC0r{D_dmu%)+s!42-e8LC>9>8la7)`iLvmAZujO2xCNG!eV&n%HnCHqEPG# zYCGlDYijP?xDm5GZ)^tc&qYN_TX1Aj(g@dxVA9mbvv8UyfZlAnryTq^q!UQYDe9ic z+p|?%gpI@snlM5n`X{Z zY}B_tKvZ8?#WWE5XklPP;s~n5e-o2&#eK?oPC+*?h&Y&)*PMy4co7yynCip`E0I7i zfFnjAkaUfwPf9q~pm4bHIVzDQ0}5#(uc%gr=b)(u7i1*=H4H6=g_-4`5n9 zjMUzkWtT3Bi{cXgt)%!6hLU~g zuuD-6$VTsW>`Q5q;N#f?># zx~ZuG)DH?SS^yGvE-c(?_56$}OCC_V@UVE(){?LI0<+2Gi$XYMTOZLS}H(jz{yCg5UUTgZ{@iH`s zmWoTw(jf9;*i1pY0ClOi7d zMQ14DceVOB6!GlmrikDDd=&A>54uVb5B{j@6!G8%f~v&7p@7D(k^hsl!?<9b%`U6 znYy^E9C7^Yu5-k(^Sa6r$HCs~=7=L_d=8G7y0~i`F=zX6_fBD)AXUmY9UJpn7^=oxiSaiQWj`*Vs}@&lmr`E^TQWg@K>6^aSuNn;D7cD=G<>f1QsLHW_7ix#wqKb#-+A>3{n5GBjEQc-5M$$zEmBX8P54+_PphqRYpO@jz0nXT&Q^XJRbLp#|%H26UHA1s}?){ z$n`y}W$D`C1y#6Y-Kur%u(`P0Q7;boxCV{5W3_w7VJlUjH=Fx;> z0-F%qee?nAX=0NX)x#H0$DoGqVa-P^b(YtH8mh{zHUibh9av|!)B@nu&0Jo7@7+2) zK+5u6xO(Vws)tx?I!SKG%CEv>r8)|KjSGmVn7o6{e{r~BNiDcxkRik)WLVC<5~-hZ zEphz@Ru8e+ubt}QQBXscK@dZ#SI0hbwN!3yWbKlrsrE{TCy`w>N1=Tj0;s!)%>lrv zzd1iIZsqXsY0yHk=RLg00!!u`xC*Rlj;bn_pBJ-kc%T}|pyTq+9av0ewG#{9j!Kb_ z`azts;eiSypI4(4qOUefRD5h2%VJ8rs^R_$QbN`nv93%%H8QB(l=&>G#I73dFV~b% zZ5SbxLkvnCsK^(2s5529tQreuBDu`vjp zSUy)}#%z?IngK@TPt6pOdSRii7hUD^Q6Gj2sW6jjSeA8r!WF`f!p5t##{C6KZ0~ z6M_3Mv%_*B&dRU={1VDxV?iD>vpQKUq_!_4dQ~wDx^PHadzC^;-6s{p+brz)HA*A~c|U8fBxo124(Qm2n&NN?wG#jJ!_Mm}3zk(Jt2oqY z%2)T}xBui&zCZlxQeDM$QocX`>U*cJoAUkUyT`7B^8N8AXOFa77W~66&b3SV#4iG8 zJ4^Zg{Nt0IpnSi3rE`?;*XLSMKGX$y+TD0=6GdGRg+Xo|NNiOWJe2!TEXv32qaWb# zy=R_!;*sTxW=%#zcoU;~);|f?s-2u9liVX+N%qJjBT0^IP8x~ElSf~8UA+DgCJCgD zxEXKRvLR#nWS~Z)sE-RAbAyDi%@$-5W+#A%{-Z+Uf6mlgcpZ7C#;UYx-7^cvaYw+& zWJuzz)c7%oOp0nsB)!9?&Qw>QReF&EAXi7inxB`G{n)J0$w_7s_98&33;!Jvu|cSR zmLrX7vCZC!OGa#JX8M@VySdD4S~U&Q)HN~*o)Q=wfxktPUm1V~={MezP_4oCM!sDQ zYI6yf8NRiPQwfHzBM^E3?GeiLFkZlWSsgf|8IHugFyNp?hLPEnv3k}h0u@$_xSRxg zltIcSHVs>#{tUPFIk{w{0o*1saAu{<2&|akv>=k2LoL7%MpGs=CXYlD)sbvHNc#nH z1tfVQ^Ge2AW_vhf^KpcOwulkB1DrU}2xFv|Z7_Jaoil5XZbD?pOjkxA^O-rx+@rxk z6NUBZU{=fONY0P=V>?<_2EyoFixV+3GuPsn%0~W?k-2D$4v2~(o5G!yQAx%S5Y=Q2 zG8bD$RH6gTHe0cYcLKscJS)fPND?1%Cx9cR*o0)lsmB0XK^nt2hztw5kwRgo5AMQ& zhtRd`S*2SfUEvS}`b;%B9>>*a+6*M8szW|4GCGpLL z)!1yV)de6xGcBkyG8@7WBH7bSFJ!j0c4jhOK7S@qeMT8cl+xoUV~%1nNBQ%S`lo;+B6%5K9PNeYtC8OIggCNDP-{Q3~Yl2b_1Mq+Q8Ul zt_^YY5BJQO7+cv!c5}|WdKm761TI3v+ON2N0yR7a_v zWen*c{|An_vN3M6bB)|)C?!;5eNIG8Z0ARrXArV;UAX}zE%FSHE6bz%pS~F! z14_jW*sYQkat6boiEY0L0__9h4zA`C~IVn$g}eyZs)@nS5`AOWvVZ* z2}U{l#%%0bhQB>>{W+>>(45?SN=pnBNa%jo*SCS)g8>yLksY8_0N#)b6|_j^(VgyNcIE|tw>RQ1r#T;tT7;5n6=YjF%8xR*+J~dFN zLtP455yDH0TEgJF$a4eaqbE=yGJOaE9XGQP91h~#91~8Uzm-9vz=SvrLiAPV8`S4G zt;CI-8)1=8SyYhkQYMLPUMAWSwu~sL(ML&{AI!r}Q&+xSfUpM8Fo!KnR~I_k*6s%N zz|#mH5C!?%!E6<*1BwF;ou@7l+HTTrBgf3O^DrzJd^->89uNj3Sg?*5n%&y^f+0TveU4TaXjM26thNsSi3 z?p$2udATCW*lRGBI=P{89nJM5PJ>FN)dlAeK7sIIZ!`OyV++w!ZgP2{DU4K}CR!=0 zp$r$IautDxu{ju8A{Q%_dHMOd_}k2v1!7$gYMIikM_RD~K~1zqEQF@U?5rFp=b*^Z zb|OAO;4q{=EP!4p#QF(cMbR0{FdH_&X0yV2{)%TX{u?}2`A5$nk6l(FE95czr=EfO zZ<{ZowCb*S`a{S(W}Wz>r=RB574q;@TGz?L!qiTaho97Ri9G!4D_tcIzw9Ot-Q)o|W;c0Ixn(zb z_&-D*W_~{MkotJn$wTtou8{{L(N6n3+@bo{iaUs7_K%{t!wW6B1B4vzQ2FE5+~I}R z+~M>uV{(U!t+_+(Tdldni66$|4s~zF;|}8&TnBfU`w?CPF?0H~sZ+o@#`CGBQOU_j zADsnIdqk2u33bUNYXq|>{4W>Q@hdQ5^vrj`BJgM~-&-K~80F^K(NQE!T$~G3)04qMjI>$$RsawS^l5}{NdCGu$~U9-bEdw zy7~pZI|NuRim%Jd&CZ&DtWTS%b5K10iHh(DU0WcQxgD0l#nvl&{{xWg3-Y*tipA@u z@uQ(Uq}66B?dAU^;@A$!N&4Pq#fT}@1vE+*uj12GENn=?+&<`()5vmOo zWHi`B_~1E~zb~Ir&o5#R1-Q1_qL5)`G_e9e6Y%gM9zRVSL9IS*4gwowTtw0*Ttw9y zrGPEanq3)Ut(~z}uC>M`>jyQBkV1tQz>y0xC{i>O$4UonfJFf&vU1!2c&?G{O6j)lR@r zP;!bEd~E=hMzOl1wG(U-XJ&lFf5J~{GSR994nvlX8dz_@<`ad?a8W)~^1%`|OFyhx zU~frAAeFTn$;uU4KyR(j=YBCoPEVn z0hBweQK@x)X`Mt~qY;^z^7O08?AzT*3`u(KQic6S`8*7#r28^P}!VW0b8w3_{v0BbWN3{T{ zVO+z05$}h`$EpX|Z@Rw5!joEEXW@-Y>ZoN%tTRV}WsX0~^Zg41qu=3}8uMB&Itv5> z5roNn9|9Ih^&%ab(yB#H5bJIp;qkxBIt|n+lc`P_Ybm1{9}8=WN-=h>U=rnGA=c5c z+Gn$ZkO0dAN;wU0R(jd%G}%#N5T7pDQGuMx^xJa$noe>hgAOlf!d^GiPd<+wFa>F=QI@sk{h*uRVTA6@a z0ZR?K$I$sXSmO`t@}ro7k_UmI8k?$W5s452Xs7}X=TX#0u)eA-#A`KF6{Z0L1o1!& z^$ew>$;EWWoomo7kyxU8 zD*qrYSfSBKy%LQ6X8FWW49FQ&FxTKvhHKf%#8xP-;7hDM8+oYRt6Ggyo>Hab(0EZL z8u%w7#)g99g{}N{iWds)a;`g+#b_Z4XWBr)6?Q})Mv6QO`dA;)R~;rnMipZd?}cFT zMLTBXc(o!fvAZ3Nu6?MkV6l(grV3}O1QS*#u?H90T!@BU5Gj6yx&d)T)f0tOr7L2k zncFi@6d2*c2ZN8P+)ysDzLlW8!B}TGEaXRkYwj4v@B(g7TEz_V?vT8hcZIb9Rrt_r z^r{-8M+ICbMAcox2wfM@3SKVZy@*(p1BMSVw@ZmzS#haMC1V-wo!Fq;! zRQII{gv>V!EEwo=YC6M%BU0Hj>J=k7P3TaVmWwT2&k%siCTxv zVujjHmIAEEx~yhFTp!VJZjnGJvC%rO385@N_EVr7lNrqxIA*MLuC127*3h(7)Y z`u2U`foh|=spj0og$wx_!8vH)V^p4|O$(VH!GkMs_h#4vVDbH6ziL+E zTU+d9U`Gre9&x|#1M&g;!G5A&u)3zYM%Kt=JEa}nABOOZem_Q^ra#!v=qIY}8f4S| zrTF0}WjVVW`|tGjJ4Wsk$MT^=1`i?}-uHb#JYe<{{okps!7^=44b4j&HeyTMdDsgVFq;F=4wwo0CBt6!e+{RUN0Xjr|7#s*UGHCQTP1E=XAL!dh zYTpA7_UqSwfE-{C93%#TH`n~Wy2fds--9r-FRvEhalxR07I@j$LeGhQR{sG5#Xw^a zHhtAJSJ#BK+kL++zx~kz5%iFVcC*h1s^6h|;DCXH1`QrGnBxcb!xe^h@gR5BCQSmV?C*G1RR7&zfqj``h<_`&-{6 z^6Ou}=k9xe9E9QUATColZuWf-s)0n@pn1q(ct*$Z6$zTc{?k2o-`)GJzAdoIYpqob z_9^fX*lpB!=ri=fVDXL1_kLZ0d*6BIJp)3DEqKkasjJ=Yk1j{tR10E=iO4mp2JXM_ zo4Ns5es}NQciwTw?Y))dCb~@d%r2+Th}aM@#Aeud;d!b4ex+XA`&k5i+pTxPZ=;U^ zbhCCGAs2%`9l|ahI`o3>bp;mpDcb?QORK)^mRow=j_&>g`wQQphz}Y(nDC)Phk1Ua zf=AUf{1X-OD0HuzZ%5GSci=(dMZbXRb1_&Bkwe8W;j#X7j@Rw|@7)*fGKIhWc53f+ z^FQ|L-G`C0fEN!+;OW1{2Zs$G4jT3!*Iuix`Bnt)1nySgZ~n)By!qx{-%``mgGN6+ z;07ab-l4;W0-fkV>iO^IVjEAeyg6_y=Jy9BREz#W9ed9Z2c76KJ=T@}@Z7IF?=5;a zvCnAw&Hs3_akJLM7r*Xve!tGLa+v%lzXa}sPK((zFMYbQbHWoX1+kXdQ>Mxo7K{#$On z^|o7Y6SoEL!iaD}>sO8jTa2B44$5)agq zlY>(x-rh@w?X>Q^10zHZmP4;`z$IeSIo5NM?g#axiVm6gV7APa6_aEQvOIU%l&ICq_`3oIFZusLfYbJ1Cn_ zZ+hC)^lxAU34}>%qmAC;u7-O;5!PsHbP6;Fr=k!brie6PWtvP6OiiD1$8C}hE31hV zcQ<`Qbq*CnZ*X)9p)J+QbU(7fX(KgO*-WgwyXl|8VTQW_V8;L)n3fJlU1=g+O!WXa zb=rNm-FEvO3g_x=-0k_g6JEy1PY_YcPczL(H>Zke!HKs!027LgyRY8!P1T)<%_suI z7+j!JthC8#Mw*>I)dh%{Zudh+iaUw0?!M=4aksd~^9?mtfx^2;y`xI)8m#J-%gq@cB32e9L$%@b+8yl5c;_Bb#kcGk*Q1PS%O@Mx6yQv)+2)mA4Y! z@t*O_&q-ma@psJC8b z>-O7k34HiJJfazU+M0tO!UmUW*;Q}9h|ikee2e<=OTdJl&GxHk-KZBY1nOUW>rDul zZwHj>uX%bj2mejE&;v#hYx8sQws=dv{Z&s8rdboM1@*Cn?jYcvuX%8m zb+fzK`oVda=&ldEQ2)Yr-!g%;wPxDq(h7w3&V&(G{deDzZ~15*j1=&L&GcxtKSU&N zfEh0-3oJN5E8L!cef9gVyz=r(FTU`6-G%dfD?45QP*usd_?NC+x^#(}mFJ*fRsTYL z{qxZ8+sOx@@yM)03LjdzLXkqTI0#laPt5z%T!)|GVstWfutG2_JfV{~%;9#tag!H@ z!A%5XTATx3s3~Pj@Musw5TilJd2rX4eeItsVrVS;mnDly3^g6aY&=5|yR<2!C#mC8 z@pKU1BA+yT=nzFm1=5v2K2Tlzqu;&`TDU9%CbPm^&UrwC#rRJ`XuyYQc%Qz^m6#X3 zd-1nmg(1~3&>u(8pco-I(@XK7S^Y-M4<06q=1nB58O+Fes>v~1v8phZsfKt^^mA8x z$IQ@3G3&QcMk{7RD4vFL2w6xk)2s*k$q*U*)u`l@IT6LmWsT-zP>ND1S^;?f2aqI% zv+92Rn3aK!B=1cck-7*|F5k#M1$MWA4?}X!{5Xv7hwOjAfCwGLGl!(IL~Ak$PNbA8 zPNdM_1z|X{qyb26RZbeHA#D=F{%y#FkaB%ufTm>lECi3>1@Oi|vOx=MPz<{~WbojD zBh$k?7IaP||A7pgV8vKBx*jP%;16GgM+7l2P@Noe~)}D8s9g% z0Zqn!tJ$DZF@S_gU!Jog}5NWu#n2XegA#pzW=T+{< zBu=qG426E;!4DiblI(8`=70^MahdexG!fR#OvMk&6dC*@$)K{Gcyb%y@4dG#@Y;4b zrKcJ3fCs)~5dhkU7>Wyi050f64Tcl>PauQe8Uh7DIEA#@dZ15V6G6YK!Un%p?#bLk zRR2!#!B%*cY=2`ISnvSG6Es>AI$rEzKtL%6AsakY4wYbpA-};(sNG4`zdk}K4-gJg z!)b=SZVy1G2N1TwLk%!lQS+XPIS8-?lSA!c4j25Z z3Yf-52pRH#!7$r|QU^Og_ZG2Y*ni>~9}aoO8ob+ym{!YN|MtOv`Z&t)O^=(Y8Y7Kq zo*4G0;s5qsHc+GBEv+WJSFhU!VOr+gX!TPKfGb2dAchN%{m)neyVgQKQc3&H+mUdi z3DL`c^X&uGq7mC5ozwnH^tl*@hlo8_e*1EDO|<>Me@31|3y>T4y0af?qzf_kYxP_^ zAl4=oy!MmYsE`8-Hm9uzR`v?q1ulpA`AUCW=#kKaIKcWum#6XVz9G-=0@xD<_cD-^ z2k%uzs|6=9h-)4kZMFt0dgWO zc!Y&UgN<9nt^R?S*|}6j)lKX+he~Luf8nTa-b15Rw0%)}javh^4^zmiQA(LaIt0y! z`|E=F-)>{FNjiDk-P9Q*QV#Yir3xvMkasS+vH-W%fxYhp4~^1@zP?p}z}WZ0Q?;^Y z4;~_i_;q^C4K6kb+GVb9;~9Zr_e8~sN=bc!L(o5*NHzDRv3%B+l!;2`kQ7e;R#>Uw zFs2}Q-5|-;Fh)pa*W9d-Ox$N7E;&8D->n=>?3EC)v-?7u7<|nMER$uxL^9~0!y~bl zoZkNyqCz%;4&Hgka87y+TnN&+JWx`haOX$Xkj`80fZH(kBPe;N{SCG1<>4BJ&dafI zOmgOPP!h-V1P0v!W)|Xt@(y{Y=zSGykP%%}WsM@Y@-Q4aOAu26lhX#>ev5P>Y2M-Q zeP{39_rlC8YS}|6Bt06fkZP?PyfsZRB>xl;ZQXtHc0mUL7QL_C1-*Llg8WFpTD;AI zbddZSbV`B@igc@A2x@?TNbrx~HwF(y8h}>{VAqJoN#JU1HWiybvuj<(6jyfctKrl+N)i*zFmuxV58Q7q8B!&0W2cQxFHxMGw-p@Lb8 zjEQMB50!_iwDh#}bP!7aw5dbyxDAt&Hr6BuOm-OA$YkgXYC;AMsPz#o37a;(-|Z5- zlRgsGc+Z1cA?*~fQ}MC@lk;>}x&SF_24>pyuVWG?Gn2jLU81)jFS}P0Z0J)s2|lN^ z$#g3%eX5*llFtnRXVj=b@4N20`yO#m!`DHt6;&NQI%SMO7MK=Dp90TBx;=H8Ynq(y zpK;$E;PSN4zWW~Io@-z4$3Z<3{hl(07KTXRzh7uW0$+?n0)JT7k_7&t6$$*eXcG9_ z79{WoQ6%tJu}I)s(IoJn!JOKVz?Z`$@PD)SCg4>S+1l`}+IycVISC*FjyTJt?Z}MU z?SQkbJpuwjAl{b2ZYD)-=K)YL%!8;X;DpQ&W|79>c3;761+L1qB?*K;5@MaLwvfAAPhO4|Bb{1g|*Zk;#P*x!uW6J8UXhLk)}MV&zeZT#m6xPtfgNvboCRK*h6P^SC=2Y8 zmIYqfBo^59{8TLP`X;cz3sSH^Y|}N)0x!mnVgd`Kb(}_7;6-O9vA~;}zydF#6_7X< z*tIDv@RGBWS>O##V}Tc+oyY<^HI)SdYEwBk3%ssLEbw9*>af7hO=f`?Cb7U9n#KY< zCbGcGn#=+_pPRq}Z)+k8yd;4Ic5f03JpU9~VCNJp@aD!@;Dre+uzPA2_{qv9v%vfW z7I-9q1%B*if&YwSfg4;ba9=7GxXsN1zf8pf*E%e4S27FS?6APC=~&>7hFRd+7z;d@ zf(33&WP$rqv%qZ@3nU^N#{#!(+DJQrYu2n<_0e)XO8(w5u)w!)&+tMVpd3uc7k~F# zoIW5HxWUB&>5QmJJ7cCi%%WV)aqNv_wqiYv9zFM|`;7hj_Otz=CGwJPDR>?-xM!wz2qa+!><3g}X!W-q;&>X7vgk>&!58Ql5py()d1YzxmGFNeE>T!|5J6 zhA2)}8CcEdQl8Sw=-mgh!u$8_6Xmn9=38$nkfkjm9KR-vb8v1{ghuc_ZdFQT-+o+~ zjjui0AiQ`hVC-6tEr$*x;rxh(Vj27P%fz@4$7-VlTdg7nz|~1!hOVK?h;gwgA?fcRB`AS`$-z!2Nab(&zMVZ0P;Bzp(bst z(AGk{nm9qBpqHTL*?zuIJb6gfrx9#6l@2>dy;(Ah-{=L5E!2>h&5ht9QhGR%%?^nQ z5zC}8P>2qA;E0C;S!{nT^{f30aoH!j1e$lQF2Q(G7U%HNNHcD_S#%LbgB%Zx$3r1^ z)@*7GTAq!`wVL8aexrWV&4jnQ3u-D+IGe5Gsc*DooP3=WXTMNxi~xVjJ`KVZx5{|h z8>m^3E6!`-%}jIv3#8u2Zf3VwU6k(^J=rd*&=)uBlfF7`two#A7Z_vuhDhEm{V@}& zD6XrLq@H+E9eXt?T9e;cFOjzhs7}uivzSyWBe0>F=to#ocBHbOQz63=%KCe#l4A|S zX8%ObpwkoZm{za}FHed&l~ZepguY@n<48~ln)}2c z<+Jbrw^UNibIW7sJ~zr*wImw1-+@B1{q-2K^vpPV57i7{uf=5Y8`(|N*;T2fe)}DF z#O7u_hSCV-43K1D5diO$eMng3eJ*)*ujNgrtrHrL3|&>I=~PUZkat3;Fe3OTrYL(Y zH2qZzsECOmR-YjOyGsmgK8w#Z@Ypm%;qZFH^vJ8WFpk1;y9w$g!&l*p!qr`|+eUr828 zTHed<6-bCoLgFFwhLPrdqKi?-atQ=%N@{^&q3V6?KI+gM|B5rZq?tg2npRv2JAt;sQzw+#>ruxaF2T*M230&hq_euZbYn*jdzm9zKHGb4@w7q;^ zExZWJ?ep%}zumw8+stp_?0@}_ua&RENQGbaP5s_)_Tu-Oy$lF=&)PoUe&gHy-zwj- z&$L~}r=Q`NrTR7d#{Bvl&o{ok`o6t;Me~Ms{pBya{_@FR*k2-_?AWd%p0B;%1R&Y?N2uSqR)FaF_s>rmpqe7t4bmTh>&7%*+Se+S!X?%2t9M*i_N8e22Mxhq}YF({m>u&Gxxr`?z;VU+$TCTeU6M`A&}bUeQ#$Vmza>rD*JNgAP- zn&^JXH_Sy>(bvpu)fK4ToA)+Av0T&)*{k4!Z@sAk!9mPatE5))2zfHrbjkMX`}V){ zHh0qFsp`1GS{R)$te?fo1ap-6BmF{m<;17QE#)pcrsK6Gp%j=Y9vg?hA6kHebvS3p z&<^oPT&Qy0br_?9;eszxS=2?G7>{T*E46t0KynJ2YXl1m?*rL>6HJUq4<0RFNbi2n z7iVW2DFUbTQ|J(X%-*Z0E=x1M0N!#;E2PJ>3jOHN|MfT|PK?iXOsI}Qt`?Y5jxvvg z=;T(*Z*IUzA@-&av9h}vu{S(}K3|(h>jtcsZu|f8D;MH!`5V|Tbl5yJlxIIlP{H-I zdFEWf!{Pwse_KaE^q+%MNxBU`*g?UsOqAk)6qxXcm_8*Bqvy}1EH<}xj^JOiFr=Fc z#a-;n0f0yK65k%7(%S%jg9;a2kS>vs&kN6mb5E>Gkq6GKoayup&U>hWYlQ^YdVK+2 zb)WA-n8b9%DK!UVfS?fxa1$*mfeRIyJx4H|m{Ov`6rkey6{KR7K$1{LOQ7eZtOGZ@ za=5DlW3wZ3W{Z9hs|j&nM~mlI#Fw$c5UUk+wm8lvQFteTs)hXm=Vw59-SkRuNf%C= zE!PXEmG}+h(wPLYc$K7Nan+)MI*R2MYFRuXa09n7@r25)94EpG0w}-bLx;%df_Qj> zH8`dN-%hYU26tL|!-7%GpT}aQ|+k*=-t_D;|xKD-e9PGE12mngQa76IZDP>hOD= zv5jXb=MfX*v%|8OY$lsQ&qky}o8)RcjEc`CRV9gYX<6q~E`yWDZVf}^ZMS3U60FMD zKUb7cg;TH0FdR{dsJh#5bp5tFFxu_e%h)G%1uLIDQvoAz>P4KM3OVh`ZiSxwb^|Pj zNEOTmF*&IzP_^LX))siR(jw$!yHGner*cE}*QV1KedrY^yTi&l6;Pd^>@HeIunWh8 z2MgvRj)p0MQaPfm^yb~D7A$y(mXiv?a}|f>a4d{Sn1iSz33r0CKtHU*O1ejouyA%8 zlEUsbELue!gfJ)!(SQatqtkL8A`biaqw`Y}TPXf27VZ+2J7FsaU)(VyAtK!PRb0?l zlAu;ikUV@H&eg|4`;y@76*az6Twwl78i0{RiR=~g<(niyb*eHBWfHZjp>pCkL0vpS z`Eo;8cCVJ;KuSXHtJJbky2-7QEN@j#+hg`$3DIONKDA`;|E`0xKxY85{C{rigs(w7Me=m`=zkl%w-24XV)q#C`zWAg;dZmB=)n{NZr^K)HZ~wa8VoE1L zu>Seg$4w$wKm1oy2-ZLU+H``o`y>cf7zFFv9b1&f7#3aiH+k};iQ{o4{Mb&@rzUJ+mF#W`!#es^lNpwQ3qx3w_ppd!7419~iZ$|NC>EVS z)ZbV{r{P@N4s2e{+7D8e5b!+tIejcmu$&E zKf`E8XTf|`2D!cRYA7e{+<0&bT&(&h62%#DP z)#J%H)GIB0a~w&l#U27Jo1=Q!j52|BR}tPfP*J&5ME-P`-o|@!o+5xaHYJatz^j@e zgwl)ZVjrEoM6Zg+a0*_?Gyg0Es$yxD1M(Beay3SrBtp=2v2v~3m@U^y6~HPinA~(n zzj5hDsCuCO{Dj!VQLW|batVnco`3Fn<`jxQ#VybikE8Y_NSRS-%b|_}DeU>$=kV(D zbI;O~2lQH>@??b&g`4Uh6IE!PtWl(jui%O5sj^=`kGGSn2`U~-pep1~o&Z+dtN-|8 zb7m`0lvd+STB@taL-V~%uf~h+Y3W+)2GfBe^x~0R*G7J+{u&0 z*x=YozyM)+m2y1G)`ixMp&zwpAah0@&pU3R9pU`BD!1?_af>sxtxNo)kBXt`v9Wdo zKmQzm4)1wC9TJ1m*1IOAH?BuVhhj54c@$>$ zYfB=PN%}Q-tS26EzS)7{!~7{WucVNg)1>=W)Pl1M|mv4Rm#7R@#= zWJGN&wG0(B4VF(7r@U-iNK)C0#iBn5vFVY@MCr{-)5K#iDKVWuW#Wkm396D&`^l{UF@#vv$yh{=fX5)04v)o`gb4i(mRUeJuDS%`sAIGND z+Kw$v)$G~h)Zt`1%E<$7c3W6kRI6tBcx9X!FBMR`w@N4t|CA~NIvxs#UXbrIkz7;y zD~9L>5yE5kkWa@al~@@U89xpa0Y}3SmOZ1w%cTAj7QjaoTP#O!4a=@T3Wvsz8~5#Z z-+rfkmwh1e!vXyGe~A3}1Af?#CjG+>nm-;?4~7a37JT-_x8JGX@dM^}2Qm-vA52PX z{`dp?!TY24;PHZkyLRo|_1R}%eD~b}`pGYs_|*=w0=84z75;SBt}p(2AaKC^;Q%`j{J}`j#CtHjYv)enqwM0J8lV65 zfd4=nkx2VdWO0z~RB`xn*Qe~$@UBlk{e15M-vI-q$`pw_Kk6h*J!ljh#PLYqF6C3> zv%eis4up{ezl;i%`GXJT5z5jz&Rw5spBn%59TM>$NF!N09wClHWAoEpY?t~e``rBN z0TpFpKh~m5R8-7mDozadNE*HF>E=`x$+{r7!anBvD=IV;8!7jbz;t)=%EfU{sQgO76 z=#+E(Ux5>*6CJWyoHH=_i_~rCuo}K=BaXLm0NLEIBp5sqSZ|%21%)G^`P>^!V8aU* z5+`E#st(R=;dl%oiNe_uX#x==gukc&NZgOU*`$N}i33Y@I3puvvYB=EhO%?cSFlF* zqAHM)XP;R_C;s>X72>$9E1Ow5gUSdC5Sz@y%l0>z2pf^XOYLjc-mgGtdi zahO?YDASQV6^EDTP>n2L7$^v{&mvnOS*@A0R#}HzH7R7xrn4Dbw%-~bkWGMj82-xCC0tWek)NEIv% ztnLxl%A^3^<)Z4=#1u!ab+t=2?stk;zA9e0GFf~9#xsKp4k4hH)Fwb5r9+1^@co&* z84d}lA(ki$-l%L)ADr6)Nwf&eQ6h+v_{fD4(XXk_lhnrBU60UmM-0qfu8B#;^y+G{ z6llEV6^AW#B#RXqM{r4eeG#F@TU(Dz5{nnI(yX~}N`+NwF-2n_r_o!yl7_~L15d56 zitPp;O(UC4B75e>ms{Leylm;{UYZh5?}X`O)$Cfgm)+_}e=%XRr*)}*It`Rb@$zv# z%V~5}eZ(q#dblw$UcNbX3ZL?wqkzEU(Wkh9;?zB)Pjr`Ffa~qrXU~M5M%{xB&^-E+ zJx(RrrlwOSfepG@sKB$AD(&J!dLwXsl02R$7NIS8NDOu|?BS;y!~b*AL@XxTt^qiL zwMuAlcDUL?dF63>_YLo9*}aZbuLAjUVc8Voq+yz9NOlCW8!S1&W6Tt_F6l|FY zvm7gT2KpEtk9(X=4vVgBb&&W1j~_RFyl5qpHg;k=2sE;wG~Tj{u}~G2C7PI9ti2xK zCez99e`u6Wez9l&4-L~vWmo94uYYKePky$ys7ZX1eX4)<_ku zBeeKapcbfw+SbUHty{NjW}Cg6_(n5-gSNr5p0BG~yAID0u3k;+GzEnPtUxO?w{7Lg ziIw$i9a|q-yKe1TymQD`vuBK_pFw)1&@3oqg?ua9!nSfdbI%68-m{LaWowkx<|>>9 zG@mNq$lEBQbGhbLsG)2!H*R857fS9G$*W13RjX(>4eD?xo+i1n&Rn~Wt>Z!jUxoG9 zr=Aod%%aU4nWK!GHZm$GWp1TbtkmHZwD=3{!-WNf_+^EpPYl90nCmw%H;$tqd{t=0 zN3^#AptmqSJzFo6v$f{BwaQvWB(Gob(Q;bNDNs;!QB+GMzQIoKMN$A-3r4}uqtTorHWkLvBWv+%wwH9jGW7zpo z3K;beUP$$0u7eD=E{t~^*HJ0h8n%{d*0-v56TRM62W26{$T%}N7zd`0-kNhEk)WWNoYu88-Y-O2{0o)SoX-Ql` zp;Bl-0>fA^*RS=gl_JD-W+&`4MVX zW-8jBo*8{((xi!#FpibNNKqlCK#!H0tvKdN?Fb+VwG*jYt@#DrBnCMg4_UfINLWP2 zvc%M4s{+kGV$1ml6}aU1-DRSkp~)MsPnw7Y_X1P)dUV0n=z>ytwt{`cmzSaHEr^}> z>l3jfM7589U<{n(B*6UeefB4at?XC&|6ir1M9<`v5XA7J^ zZ!Vn$qzRPaKci^%D((jJ<(9IE*f(%rGA_Zvi9iq9E>WOWCABeuY%zPQR#qrZ1wo`a zPE2eZ0 zNymf6k7MH^Vo+*@5lkbiR!VG%s3hueanQGLPgtELboMwtPBdmrqOEJJUkhFF^>_Y8 zE&2{>7bl=dB-*r~&{OCYJ)k(HF!X>oar7!8#NpdEvuBONrV)y1*@Q?DrsI`d2KEaFA%kXdv{J=D6`C@C)SmFNcx4q~P!W2F^(5L*KghYl6fZ*fMkUQ%3K!emYy zl02}3n6k8@z@hBo3<$SoW?!LRglUi$MSw0k#14f47deoafY1_VjVjMu6e0;I2S3zG zYUwTUp@h&48B-Cwhcb)Jl44dIfcj$QhbM+uUQ{o#7ZO^zl+#KyQ3Nk0j=~}h#Ryr2 zV8!fEMzK=DiajN&@PN^Rs+CO23Kp}HNO1}D^pvm*@hqV5U_lJv;%_lF6N`Xns%~WY z!bgKkL_PyN6tc){g}MC0|M-wLG&PjL*tV6vbhtIV4fJCRd~q(#0NREA6s6-qD>}In`y6c-ZZ{Fm}U6C#=7b5s- zun_PTk`XRKEfK;KQ^iV*H`ImiW3I&a56mY~W`~7nB01Xt4_?{eB$wWPXeCGsIF8^R zBApjW*t!tai14PV1?u4&)7cJ5IhXjv>;&kMj*Ke!(}&yc3d}bH9^_f`Y_&xSWh0hBtGz$ zS68hfR~Z%rjAXLKE%G<08zSpBfHE-Y(8uu@2*iYpq7%yihIEtemcAjMs3BWl3po%Z ztKOkNu$RQM%4~s4fpswr$P+wh!#WLKu!B-o{RGl01(J~ye9I{wUmpUofv)RRt5BX* zn60fM5kFy*X{3498yFsJ9nlhFEjfkCYLQYF1o^&$lXMQr2!Ui!UD>QpUoD8eXH}J? z7AU$PCTw!(QQ0)aEY?%Av$cj`R}l;qNv}MsjtcvM8lwWdy_g7)%_~H&0wW_r<`qhn zS;oeau^5RTu{ed$2mMNtO7UJK6{FNbQ2tAo!a5LfiE#>{l*NpxFN)6PSp}*njhYk$ zhx5@#a4t^FjF^1aujAB(ZBaTNmPDUaA&ktiWerK*JBt^;37|O%oetb02BPH+Ks?|u zD?VZ$N%uik9L$&CJ=Cc&(9lFucKlrJ4>- znp_LzhcC&Q-zX5VlAemAYg({+lmsZppM}cL|i^(AC?incvo}} za&#Ag91+Z7B(jkmlt~qXr|8MT6Uvdch%$c(rOh~)|hTu#q=zh5b#@U4YE z4yZ9ntSb;FOV(AV=3~oiKR}O^QrXgKS;|EVCxU9BC2gjH$|bRpRcL;!U$B)H*!X~$ zQK==^mb}p7X%1Tv#!rzPn5wCcL}TtC&psl+eCcsp^a46-g&rYHKL@jN%SCww^Q7{I zEU|1!l~v@0^8uC3L+Tn(ReBu(%ZfN0%8=w|^6EGbLL z;Sv?QaQ-}`cTpCg#H>aY<5sZPt{35}S+eE=N+i(cEVT5HDD!X}&=xA`l}3yu330-W zV2i74VUk=)Y49Wk?xk`GuI}y{M11JlZjP90;Ie zdP<9cCn|>7%~=xxIjD9NkoX!${%p`rH!WF7Yfe}Zw9(*WF7+k)D9}`BVg|B~H zS~y7yCu!j%aA|m93nyveBt(>2I0+n#7ES_E>ClQ6PSV0jS~y7yC$YAe-%a8}Eu7^4 zp?wlMrbSCDv=4UN-nn9rhg7cZi3|LLcw=v^p9UXF3d= zSzsSkyU|P7k}xem&_xQhxXX^V?TU&HtB1o!4j&O2@Q-V^fAU3?)}7@FUA46bhxJ=b zPYmx}Rnm6hJh2>s%NvRgv%{KISlD|o;K-qih@d{%hsRm0q_{B!=3`jOfyx2fvoAk{9 zvrRQiV;kdisR?_%)>d0+Jxkmba`lVjb!l{T zac3i4WMRE?L|41vQj`j_98E?C{8+xRkq*?=EuqEECSc9i%2|21qWBQ{JUeXC)*s8) zAsw02qwGz|1Mj?4AQz}ne1sn%CFoQlWsvX6pfpwh(cfk1Nq^v_7UdNcqy?$KHlE0b z68ZUWH${U8a+qGhQ4jd1uK38NP5Jq#2fmT#Gd*zNxp1CQ2@M^6RLm`$b?rMKfcw{VM9Ll<0ubV1ia-Xv%rn0$Y8d- zz5$O8Q4w&>S-DA#!7DC6o&8 zTo_7HagidFru%hXewpe{k#M$E*>W6ELZ<@L)uA!T5&AND1*?$K#l*oj*X3`(-X*QN zvIR9Xzt1D{Ko>|FGo|9kU9zW5gK$rUaeOOgk6P?%Z@{jh#FAZcuxuu29kP)0^+rC8 zm3u49<6^doU=vf;Q=Lno1f6h;W7Ev3PHl-zeYS~hKE7ccI!K(d$pV#Wk*QQwo(eh( zP_~KYxlNk@!(^DCr??+Mc~z(Sp<9R|(`5fd6Vbjsh8g}lkqVhm!l}5W3Ecv}YK4MX z#@I~fnrl*2jddjhU15ZpnX2PL4zvu0CH^^%f9SM8HAZH9rQ#-w8F@+dI#paMRZ-5- znZxK+C@0%gv3b+RjhpZv&HYXfuE$jv_?7oT*uulprr`S#sAja!=1uA*>#T9T8z`rr zI3S;D0LP{nsAO-2x=AN-%El1AVJ$k4xGu%IiAu`iQ`ITPOQKDVE1SFQ{ubn@8K^8-+ zFgB7&AyEB#;i=H&BMJGFM*Iaw#XU>xRRfc-oX|L4 zL8ektWjb=7hh%FYv*Tt3tV%40Re9*B{8a^ypiQHmQBPN)yeKYy;JDg@KNoqH+5f(m6w;{hn3sbP_0mpE0y~3%E}V8#6WuW zm{MvUEA^CWWjdu-$@w6wX`mO9e#iN7wNfi#$4p9Gh3x6KO#bjP1KD%xC1fgTpeq8& zkMl})oK>nNIw__dV^_6*Lm-1A2k;FJ&S)vI&*fG5n%6m$cGPAUdm%;dwGL{9d zreQ=s$1Cy6p-(Mz7o|N`s-mnq>0_ak@=TP{tc3a;3JA?T$9$!Xa#n=K3T4bu)OyO3 zGUmraly&9t5^sqrwbe>J&^Am(qhg6!S3_m+l86wl9pkc424t%uU#%SJ$}2R;XO$*t z%1XkNxa1gV;4AZ#qwS6xkcb)FPU9&FiL#U)Q;r#^T~?}>p^6pRB8sS1P0EK)MRherqFImai`#MT!}3+me3vZ z?Dgt}^MyMzZ*D5)h+`|XH_KO4+k3O(R4-pz|CV%0#3k{Vc?Ic6q>VU^g-v0$qL{$W z84Eb|aO)S7)CKV5#FdC}{!{YC)hlsgmCm<+SYsd20Gz+W7uUZ1I&IR^mMrcqvw34# zJZ}^`(jO*+*_*ZSDd)|_Ep0TRry-3$(Lt6E>2QcRR}3-($tIm;u6Yx1xMlMteCCW4 zobd;6#*YAZoiPCG!|5V;!xH^EZcN0Zr+5l+2C6TKF;>N6`8%a?Sk&Kwg|o#BTjYze zMFa9^2fUbe-yu-)2U{S4&}239=H%rib4BqT0%dqW&Z17p&wI_Hi{#j!=3Zl;1)%$ya2PbW)GT+!SHx5lB1kqwJ2@m17q znjX!NqT|;%czRVf48AE0w;-H!YP)J{zNCzFnx1HwTLCJ3yy8TQV9(-M7 zj-f5<*Dr!twg5NY;-*rbs?b6xo5rn*i!sNo8&G2~NHL9LGUfH~Qf6q{%PH6+ptJ~T z7Z!D87Z&uKZlkp1hNq@tkhpSJKG8x-$Hcme%BIy#okqnKgT_T6#rml&*M)^#yP6mX zFD_lPz0Wur>8@m*w5D}|T6cljv=E`ErlXP8$^dmTAwG}#_VhUM#?)z3`BY+RZW>7| zAyi=T{;;60Y`S>pKvp!HCSm#%bP*SgR0PP<^#nLroTyrennIVAySb!YJpv@2V~7`| zQvn(A!x)(q_Qo!fxJornjswwOLW_7EPKkNO1xip36$#CV8nYDK67)3&rC#oCK>sM@4mVV2 z3)=jm7Gs=NJKL2aSD)zm%vkw|`6ScM(0Z}lXQ`P+l=5N%`^1+Q=-Hxlg|jqNaQS00 z3nhvMlOao|OpiGAg7%v_g$TIvV(10XS5%A5LItg}F==Z=d9fCZ5-|FSF;VeNi#3wN z^7OS?i<{-aM+qxe>;xCJ2qiJ?gtlFQR>;`qpi`qJ5&c z%jA?Xc#?{8{k?6J22+k1E**{~;&geDK6Ps|r zN1U?Rv?F?TRM}WZ2LiFVvMqWQKH*Ljy1zo-u(>XJMU)Od$P;G9rtQ(6MZNiT*bBg! zHKe{g%JXs4Al>zWt%3FVTcVdm=@0-;XVLL4xL0(~gs~|U?HWZYx)y}4&y#oc@%09> z=n_SeeB6A&?NGXzZfmr2l*AxY*mp)XARPVjFbP3%{ zu{3&S6sMv#;;x5^wd>ZdrRz0ULLH$EeX+lW&fSW`qf4S^P>%U@eT=w=jIFApgeWmx zJb-Va<2W(0#GcpUXoqMu`WSi|?mD2&ceYYluFFdX=xPMo;C$=Nx3E9-RXAv?YPnwGj@D% zEb?_D+E#Q}T(PnaiC5s*cE~z0&fYCYVq7AD-9fRvgzf7{^fb|%e?oJk8de}@=ppvo z(IRxaS_N`PdgM+!*Yg*IqHQ1mM_?%Zn$;iSq6zjv9lpjdz9E4oH~|6J`^Ekf7IOGJ zV?k}Sb(C*70f4NO74jxKEB^@2BD{?qeYPl!0*GxGeeS%fXsc+1PB7xu2fM2Xtx!8` zDSM}i?s=fiZAihc51SXps?FU0iDpOT5~`?u(Y;Vh0>hV7K@J)T$49YcLoc$^tBl5+ z9nmcGT3io->ke_&LfnwDe7SY(TC^;7Bk66$Izr9E9{6l*W3P(_fnsZa!bOp>evJB+ zXYx;oEm&OSMY}`tpfwhSa9Z}gXl7KWtBcrb`ucjU)s|>P{!Zm$QFXFV*#4ls89pn5 zrJ#Ayj3~qHNUP9Eah&6O3-#W6bdrNk7>E`X!k{0-%$S80BzoO^ZZr`67B{BQjgQt~ z6ZQD6#8FGpflVAJ1WqMkGhPGGoE`N?zax3*>T*uRLSM?5How zRvi$7$x)N~#0;D45y#{4zp+5ZT^w(aS8TCYQ&Sr(U#lT)zr0dlTl$E`Ww?OISF#1Zx z92|j|F$*uhLnyY&UWMurEVs{yYSB<-RaGT^l&ae5D*VuI4Xa_*W(_t9luEOrQmOP* zvl_FyhS#t<(}=23wbB5DS49MbVvXt=+L*266>6ogTCEA!)zs7(Q3XjONLp3Rs_Q6w z%Dq|zfK@~)EAXRKhN~;9@yn{iHHfRO(P|)rM-?H1RfP#vRjm=GI)o%OKzS++K(uND zpS7Au9m!%*Z>3V@t@hVIXRk=WMFOF_TEpvfBO0y5aj7aCmr|-w#Hwmut&>b|4T38W z96`3Ei_nDhsiA_fx(G>-Se!M3K2}jE1*s4cg{ejgQp{Ve)u?r52pM`HCnBoVQ|%?q zSfx%fkc*`~>a?bg*U9qoDzmzZRr#s|HMPhR38g+%cq*(?W1z4~ora8M?el6*ZR4v! z5Kw9zuk=^>t20p|QpHmp5h`-oBvcmm=g*#aeDdT+aBs_maew^d*s-HWKlF$Hd@y&! z@CSzF3?B6R-~Rf(yYIaHX1q6h!*%`o_U_ZONB3*5z3M7FG~2CPm(Hy7e{^YaTyS~R z|KpAe4(m7Kxa2p%aUu7HzL4IC>v9yX%SN2IZJOs2LZ)P^$-Fheby?Rm*JT~@I|aNQY zxLM6|UEtj}!*wy>B4AgjslH2nHPXY@!hva`^CGSNDLF6IjXEz?C-1!IC*Uibs`KKh z!P(FX;gU4$yO7h;B;O^YrtV~17k`Z!=eh)IbaHx5*>kzI#dE=eM9Y$k&7%{STpIUW zHa5j`+1zB$WpmR#7wr9=gy*upX`ajalk;5GpM>XvC4rUZNiMpqJ892l-AQ{cYyPdC z%ZI1txqNs^p34WP>bbmsQl3j}&EUkv2TDKqq-{EF{%sIV#g>_7Yfx!dq-JUz1wB9b@VSzMuPv{ z|FKV^Pr3j5cgz2G%Tun$))ku6crA#Qj6@y^1kjMi@!JC|fdB8mGQa~pqsD)o7f=E{ zqQ0TQqUIAwsrgm)XVJ*B0e`@+`b|Yu)XSshR0sk}Q&sh{s5xDv!zWGc z7Bv=S*qM0LuF=qntbiX_DC1MTYL{qudmEXTU+o;#|JH%B)qQ?N^{Jhr`u7(E{2mhH zS1*m~Ro9A7ni^0qiRzKN1AfhK_%t;GAB|BW&ZlOo*a4gllUY{}49h+^G2n zJ4lN14&g)2iJBjZ&@7Uqdd@&fb1-)FjQ>5;&nN>+2~}&4C^i@|Mt>j_pXssGQ`;ei zBgUK}BBX{w@wOtyydN8S#^+gx={5yS3B#0MfGi$Z-Uh%%Vp-(F~~P$g-U8CMLA3Zx8H5NF;61lotxMvTx}MNGS> zxma`u4`CF=Y$Jpy_nU*Tvu6~ZB_b6C{lTT3Dx=N&5nGQIruIN@Lb(D$8|8jJsBP3- zjn<{61~|eM#bafy3_2}ZRdo?{4!<9|3T!rgUo^0_cKSM73zF`pN2RR zU~+{i;nR?6$Y3^Dg%mchP1N`}19fPiFCtn+ZE04*pp{S)37={ik>{<9$U;sxjV8 z#3YXKbJLIUY${O7G4B1N$ScJdA7DkK8ROTB==5W}Qv+lCbSvw$W862fNn?CaQ^$C} zmNEW+)sCx)b{z9BQ_qhx<08nsC-oS=CDj=3m12z3&`2KR7bK7I4(}rjM|Tp9c&oP% zjFBZDGMg)^>b%o8Rdtsy@<*BcFg zeT@^1>`4V*dlGEqKA4-8>xqWnJyRx7xyc}&dm@3eb8`h;jT$w%87#x3B4`w^YG!sW z&z11(TqSD!^$I%y6cBkZ=wP0n+dkJEi6a>GGus3*;3{hwq@l_gU}$h-|%@R4=@(-ZhWK(Qk^Gql#Z9dg4Xb4QLm2OPw7aERjV z5T%YZiGPR)gG;G~+7>a|NF`u+NExPRkfVDq8VE6-k=zPK4RV782C{+ea(yFNAOfva z4L%{l&1?jl19IEu`bX-ZEL0>F?jI1R4U$o(=18sv(36m*!cG4mHb?=eb#8E^fee}I)l_s5GdPHgh*r5- zBhenDAB7vO?iUC?AR7^(5fn^uP*G9f?6$dI;P`+nM6(fG1s6o0MYO8uYTNq!{GSGwIz)1fHc=BL2gE`m;DM7*hkpU_^se4rOmzL6QwPo-euFNC0A z@5sy%^@0^B6d}_a0|pKt;T}ZR4Od8h8%Y&Nz7H`PV%TsF4%h}Bfs~_)43&|=5qvna zVn|eE(EaEJe4rmVhFEntQ}kArU&05eA|g1#Gd!YXyFvpm4T!g<>Ma_ z7*6gU&7A7MOoVtTu-tAcQ&m0sjNOVWu2UswFsxm;eRmSVN&s=tH;wq6ooq zWOf|0#K3F>`Vh!-81zw5mB_v|0=)=Sa!jgwRTQiZ0zC*+bJT$x8Ujo~+5>(BDF~uj zXJA_dsYvC?VFM#V-F5?wL85&g2n^G51g?V>#1Z7lNoSodd8T3ObZZl=Q@c?OSf?&8 zG;E!2NpGF9Mm1ucE_|sW>(sAt>!f@9LmISB?H+I3I(3_r-a6fu);eh;(pjhMv8k+6 z$4RNI(>3ThDXi0-2u@+0V1InWsIwt1wRvjwCuxCFnWwWJPh+0CrZZ31r7};9>&iV1 z+9%JDhU`xm87r!$^xz&>4Io0(Mhsf%r8C^FtYUD=?0>Yds?-IUrs-JQZd zVL=fqO!uWQPYTw`ewD^PslRT(KB>P+WuFvP{~e4+YV-6PVOG+Zr+Y*sO}B3IbgL`W zF;6!-fi32##XR|Q8#YguFKgI54QhgUI%8S`=IQE>8a7XZ(wnE&FQ+t58u12Cq}%F- zY|}5BVw(bwHE5g8THLs8>hV%~+cYG}Hc296c%DsXn%d?im?jU8uugLlEt7|vH>NO5 zDmRpoX)ROWsdSbJ+@05*J{#5t9#(Ffc;-ZWCvxFp;WERlwT@9Iusv?}6dqa%>U3YS zZ32Pe>VHbx!%|Zx-{TFLrr;~7O%oA`NV^5X_K>HSf;pYPOvI80n#`Oov%TLGmPzj+ z3=Daj$)@S&!ZfK?Tmp46?{sWX9CiA=2qwlu!9<-j+R7Q}7@!z+lBQ{tV}d9~GAFSM zrjB-OkWHTI zGeqhPD^LUb_6#%IBQS_n5EUQ2!_3pO0$D7mW@XaC$Z)C~vn^6&(1M8gXymlXYL#UM zNBU`?gWUUv89A*;>tL3Wr3X_{{ zhn|)dR4KV9$TN-L$PpQ6RYkCw_M39Pl_vY}SS;!y~%*+gq2w=@cu|m!B zgBd|JQ%CXc!!#8f-GoeqE0e1Y1KxC`-awK2cZCdGcz*Hb4SP} z8x@u4AIgGZ8Izf54jRD$(vTU&7#)L|EYl2TW@Vc5M$lT0$BHq}mJxwWGXsA`TJ0V& zVz^&KD>)fMjWdFotuiASH|?fSFF+KkpAPYXOqPLq&M;osZAGbwGTV?|loiX+Ge7@w zxKDI*B`0&JnT;r{F=t{8Sig4n?%_1DD8t~;j7)EaJ`q7QuCTI0sXJ!+GdZPJGW3mz zQnAz|ql_VEW%`74HN(7QH`{Hk2SGd=Vhrt&>B$Uam=7X?0pmq>fuZJ*p=_uzq-~~} znVDfOMI0>)k!W^+GeUvecJJP^`vK~!8f18e zKq)Mx2f{Dz*|U511Jv(4GW?v3K!zt^e7Xnua|9bX!*ZxryhF@0Gkh7|fZ27ovfF%M z7_IK0S%wT9f~fWxo(z8=^dL#uJxmiQ5)>F>o|eHgi~v@}1Lo2_${vpplsP1vjg@lx zsn3QA_!*|4%ViGD9Aac<1cCv>-*=C?hr)sg!y0)ICxy&EB8(67QGE|F&p{ZD=`2AQ zLpoz<&d>}>du9L!i2P>89&L{~EXSLZO^Mq>6iyL!-t!fd@aJSv!nOf#K=%g%INV{} z_Z70Cv_VuR4*Y0-^D%^&U*&jYU>43SAy+!m1Ch!e>)M} z{*m@9A2;{s*r9QA|KK!p|3ERDlRHoS3vhi33(z}e0Up5Y=vaVDZ3_@gv;gg-1-JwgaH0jc31N-}m?SO0FoeZf zfRWMy1mY~fucZYz%WVN}bXkC_T^8U_zq9~-6D$A@nZg3x?6LqqCkt?Qf(3ZWp6lZ*z~gpkoCTPa#sZ8J zb9#aW7=^%;79dBYPOt#KLZHh6^iQ?`y^+Fg0WM3n0Oym|=`BFJ=2(Cw4OxI0=`6sL z4OxIusVu;Nv=-o&6c*s>hAhB&$rgYJK}rkob{Y%tavBRTA(aL24D}~^|FAn zo^g}^xvt6o^punT#qpE>9M|MeWWnwJKM|Y!+ayi?Bjn_NeyYj;4mtT>5kL7~EhqoX z#L53GYw|xc&E(%Haq^!fC;uKPCjZCfaW@iRYtg+Xu#`0?FS&-@vQGyg)@%-=d;=AR;G{toV$f0CT}&rO*5M~IpK0@uuc zAIc$Rr>iNC~OdZBnBi{{Ku;`2p#HVl!c;e)UAB8n`}!sqWwd?nt}i_3Vq zl4UN%2M;1^#Or97z=Gotq9K}|GQ-=eShO+!j3Bj?-t{6B7AFuk8(~Umr!u8n37X6C zftPlcA9jfkoyt^-DHIf%zeQBAmoMjqQ|6BY`1=1+p zc8a^WEP!<9e@TB|Qs&3szY%|5DBoK1Az=D$nUH|UH0y67!9}8GeC1}3FWHxYk_*L0 zf4Mn9e7vYEqug9$#blN%NO3_~u$+HslCI~MWtFop4UzA8W!ZLc$Ff%CkuP_P?8V>s zlaik+bqN9k7qH~)veU}VFKI$3ISaLm7vX~Ciuiy=DJ#zwAI>a0y`1khN%M2c+LTAE ztj;QHYhycbZ{(X8`hjLa%`L)GgyevW#AGx$e8a!-QDpR#7i=Z~j z%1=WWD~%w@9;9g_Dxs|iGmh;>R}Ubpo%oCg=e`mFtwctwlpj+Noh`)iQbZr!!x4}r zq*AmifR#}Sc9anfhoGR7h#jR|GGq;*$RZ&>3d+3aDjB8bCv&%B_)%8E_OP!4h@d_};aud-OB959#rQ+jsAUSY z=0|x62ir$Rezcs1K+=Slm`A>1GTi5cQ{wQEudsN4oU@_~0J-Phl`RBmV(>h#&bkBP3zu-+`dSk^g&yIU_$8ADodtUVN}d z{tM!RYvj{B>{Fagb?-}{+(aqf>zpeOejr?qU zaF6^x7>v%y{~12SkNgV|k}&cwMo{9&?}{*Ime@<|)_$S2j~ zMt(;GI3xd3d~l8YtMJi1@|VeIYvi|ejr@+Tk>4d@8xqeoBPll4-1t9=Z_D*cRB7mV_ZGDkn`eb^lPFnc(w+Y`EVDE2TL8+mvv(ke)6eAlNJ zM@!D=8jY+@ zD-W+is@{FIzIFZj^r1g{XCsrWY@V&3FOsw^4-Z3vK7G}`Cny2_>xIqqY$aQ7bup>a zw%quJ)YSUws4-~8dI9grHri6`>E)3Z`vA@RniN;l2UXjl}($CRI5ZY-x{tPkrQp^T{6vwYd+1!MVG@0j-G zk%8zRy-|6+!adQ9J+jm+HQP9^%NRc*^&N=gy%iDHqX%jN8|zdKcAk0F7~hx<mIXm=&p3&f2>^OS#82l)s$uZ}p^^YQRToy_Kt~F4V z*!$1s9nC98dq=ksuDkJFPZ7zw*I#?hHC9<7=XE^qG9+n@Bx-5+*rXmkC=2u2YuGht zRiUezjZ_^wAyq4p3fyKt)I=IC(=gOJL|ru6Guj-5F-2J^$HEh??cV*`Ym{pus8VX# zNXPTe>o{5+%|}rZrBpk1{PXVDK$olW3w@AC%~m>^myKql)lor_4PNO!8oBM7tFMMW z#?@D$R6->*Vn---$>>qqs7xy}e$V^$x)V-?aQt^>%j+xJuqU_sB*uPjFspkuDRwaM zV-v-OuM}z{$=OKabKq);dHYrTD&xv4pmAn4Yh?~VOL-i;R${($6}w8m@`@|uD9+0E zXPX_6MsuZMM~qvpyn(dzus9EoK8DMz&uex!QYl~?=>lBfbjn%0+~ z1{GHt^@ve?J2KLLhI(n0ZMH?cS&rw-Wofh$^$0Hx<>Qvw%d@iEWb5rmk1kVOky^1i z>~eOwn7)G9W-Igyqy6YI@M=*TT8VZVe2JD%P;n2C|5wBn`eF%<>Tj!+_g$hfl`ii;s|X{Sp&u}*d8wQGY_&{p(rdMufG zDDq$3kdrstq(sW4ypz%S{A1inq8(Nbu_E&|krgFiNYDv4=(4yZYEk$O)EcRzB8k@7 zJa&{@%1{KG*OHPWic=1?P$}>p4gD!Qo1$5l2$by7m31}a6R8Eh zqxzI=N`V^bVsy3Aa92iJf&Zw!?rOTyScRA_UGcQFU0rISryy`t|3`n3Lsw2Y9ARqpTn@8S)_})U^w8I8sa?EKkMza0Fh(Sge`pze?k&ob|Hs zRNw$9a90>PLD}WTg6q=wDi=PEtks8=vF5{L8F?#Dr1n-WgSVo?SAy%q9#+X68JON> z=>?Ys`2{H18$WNrYq`(yTAoPjwT!pDmS3jvS~^UZUW+*c9#N9ha+&3{j7;ye+$r6f zWxq)8vpkN%v@16rPwA~(0f)vIGjJ};mkXn} zYCkE_g&CLZ!rYYX!t_gWVJ0QJFyj+kn6q9>;lf<+a$(3xOm<=Z?6@$!lU| zr*L6jCLhRlVfrMwFvFYX!d%xh7v_boO>kjGH15K{3vJkinR;epF3cls8h2qvHo=9t zr%@N?#ztM3evP^?JsWai`Zeyt^lyp_^Xn$KFk>!n$c35OyKxuhca6F*k6zu73p4N6 zjk_>UU)O*O^QYd@g&99MoeOj8d$tSnRR3fb=InP}F3bzPQ@Ai^F0);j3F%yzGv7^i zVSbawg*kU^Dix+k%$@07nEoyoX83gtxG)boF3fM!x-heC z7v{z^F3j2a*22qBTH#6ZVY*vB%w6eym|@a~8GBuNA7+8{VSbm=hw1M2VQx(6!;DGr zVFso3VJ`m2@nLRiz=s(CC!<5Td4EbD=0-#cAEtjAALbWGAXZ<7Vs(c1OkRB zwULpXg)3@x!FuEP8( z-h~;L=)&}jb79VSCeektE7^tlO|lEqJ;{Zco9x2emEgj3+?c|J>EUu=x~Ftue(AU{ zwsiO|YbXWluCHJmP8N@A-l&Js*V;lFq~V`;*bk*82B!CV0UB_ft!Xq_kJ z8cg^S;lL=J>uCk1YnS8&7^7QuXBDcNUEw@nfyTYOLW?h*$;r{p|)eW z{OBERV1mjR<$I|0*dUl^<|yN#Q4jea${eecrOF)RK~V6a;MgqudO zn~ebMOFiWIgMVx*{O!fx`X3&8=nv{2u(~oPA}D?K81HDT;XLI3L+C&M4}0$&UdMIi z3GThOsvZ)9L_lIDK`K}x0!al1i6nB)AOI3fATq!Jk_ZGr5=d%SM>aTv5F;;XO=e?LQ=@_Ftlp)DCkjKNHH#)j zho4c2sMn7yY<1xxhbNJEDOBL!5%S-W__wRxi(P;^j4O3NN9CxcUOVb(K3sFSu9c(z zbX+#%8{0V3NEOt!=x7^n(&c4Qx8Ud`c4g`h*VHsLlei|YAi3c!kbd@&u-tM^3k6k17$8 zT0kN--rB{BR|8DAX>SQXv2=s5V~-wpw}FO#Bp#}d(X7T#>~RbHFMH;}(@!=xG-CGp z#QCwfZER>nRj|aRn@f(Hl=RTrmbm4NcE)oY5-rCT`VG5?u}$21 zCIUq*4Jg9oM~zF4>(3e+tmJKHTxUd&`;02nk3DvrOkqvYHh2;?ByCAQBhF0qoaw>u znI6$Id90~Wt}qKhHt!uph$kf)F=0Fw+kDeOuzpWC*pC&DLd^^oDo^c^oQU%qJJk_}=5OPC<}MEaAYC)tU~BH6R) z`E5J*!x!T$>+z)R+W!3JjbbB978^LcUkhU3Y+sT`>O?)%oL|b4mYrrhSACag_mv!{_ zS7b2>2FWJdDW48_1c3&(D=pBjBQC|4FGeg{h;X5v zABdBYNv_6GPOy3u5rW||76)1sV~)ffw~rm?$91{X>qp(RbR#fD96+f6`0K?ojLF~^fz^;7Um~NJ{{m|^X<>+_g^nY{QYedR5zPw`$`~3Mh-B<2 zM_3MuWRckEb|P7XjBdV2=92%?nsmf9196Qa9|f@`@KDDRZ#K8IG#kwkzDTCaNEV5J zfTk{RVwu%UGLeX93lYaDlsRgVGvb+!9c(~*6}U)}!eT@t;w)WW2xSfHeS|#I(}nW` z*-;M$2*X6+fr42S!jsk@P)`*8O;OAxqnOs9AV##j>XP9l2E#%!hWr=S6Z{*U-K^oP zQVLiKSOfx=3Q!BsM1jbrf|fr(QAnrDDsK71lS@V|88UH1;)0_SSfvqy4mY$kQ+TAv z7+H^(_ol_CK;-hrrzsVm8XF>@q2iVkpgbx-F`QEn85*H#ahd`Jtw4BUHPIBY7EF&$ z6t);%$G4sym^(bh9+)*eJ=qm5Jnd?kJv?n{nmatbaD3MAw7qMV@U*LQ&hYeN!|U@7 zPe~Pn4-Zdi$6uW_Jhdi=geR8dNiOQ>pBbM9%U8{ePezh=V}9$t|ZON*vJAUTMRep8q;`vhzd-Aq?9iaX{2~ax<4;<_IIzUl~q=@x( zfciQ>{l5=TNq;eSfO@QJ)&Q0GX1D;AbGd0o{)7bS8Biz_&-H{2P&V-|>>1C7t$p3y zXZS1`)XrCChA8z+4zj4s>j+bJk5ra97Ufa&yiOpK+IITqFz}g^NzIx?naPL$1h%4k zJb~oF-Ki*b^tss1g*T|En?N8x#(@1)O@_g;HVW?QP- zsGk3Rwx{Rp*%st*$B+Mc(^|wSsbV3O;!fs*v>3>tSame|DvC zISwycLQf(gnX)$|Xaw<-kS9?x#geCzlDF*X`TqBN7WaJdvo}xRX*&Y^$%vY4gDb&A zDwU`sFG{8)1DOY9Q(FsbPhI-v+wbysr@r$>e`kH^R%9D&qXjjj8cs_znL~&qE!m3% zY9rDZ6Uh;{Xc9#(!;!GLrCG|VkRWM^F269}WK#yiHVb5FWEYuQ5`5>>0G6O7ns5ur zlu2HRWPx0bWXUl8iIyd!kTMwzLQp=1Bnz1qoRaOey251vW2wrn3?HXaGu z&1#E_<*^S)BKA2Fc!6VYg>SKcIlgq<1<-D_t&BBdC*x$<^YlQg*kb<)3U%OXtL-V+ zXK|CUagJ?H#TQU4zz^Y(sK;Wp*stPZUm)9fg!RQOD6U2^qvB==tchi@9_b(+OBFBJ zBw=lRiE0N1hrl;r!5bF~@A(UEdh8e5rfjQycl_~jod9{8y$mKqoc;U@>;0bsY5&6|yZ1h2HHiZOcKifusvh z;6DlTERIG-7QVD?+e;|akdbI@)^6E;GE2_$Z5}*_v~4@eiI>yc+)H6OmJIW)52yr> zk8j(4Yy2@hLDLw4uOYOdg4J<6j^ky52|RyJBHMq7a!`{EdfU{xIMRO+PBZvL+6?as z{4E4feS_9Eb>eBvzF761fxR7LC*`*P1QHq!qKAoRVIdaoF$|5f>HX5%DCRh!(P*Q# zaSRJbDK)^_{_1$#xHU%f9;-KKj$sPPk%0wmn->qk_d~)SYtZQ&ySB-taB&L;PIjz^ zp0qzV9y`v)G&=mQZE6{MfJ&))sz7YF+sBuT zK_}F;StpjF+}?usE6_YxhI;<^qH$vkZll~jfqoZg61~6S#ZGbh_`-457{_^SD0~L< znqJIccz1*CSU4Ur7EPC*ps{i;;|+`*<1yoS*%gVR97uH4WE{qb9@eML;FlP^-!L9M zj#pN}bYea{CI>@40PsM*w15{bUfww#H6A@?(7|o~=?0(al?-}|B5FKljLzuO+T1H> zI>liQXz*FQZ0^{(V?1Jf!5GJ3X!1_L-AvOA?~;g@#g2&ag=64SBWmr#ZM^Ms^fdJ2 z;N43YCcOEe@321}*T)x)Mc}-B+|KJzjHw)l!u>-G1=sVahYixWhc8rryt<|DJW#ewKmX{H8$yCSwR!D z9bzZnWv8N)AIF?n6{}-CA_re4=e;|3z%B%`q`IKzPM=*G8;M!(Ld(Q1mSPv6NTU~G z)<1><6RLP;hV8U=kRng9Qp=^T2QR{uuZWGJ^%5dthi51GoWfGPsVS*@$Ku8&KcRPO zo_K6YYz*uxfnB>&cnVLoYn<{Ym&Ptx5*v*Li|=qt1G`eR6f12Iy}~|mKfQcOZ0wTQ z1+?Oz)kX?Swg3It5tckJY7H%oEvN=ZpgJs?G#To%e1tgk3BjjKCwTBDZV5IP6&T7OSRHkWik8Mle}!%qD5$hh*Je@hr9sq|a=Z zH>Ki@Tj*bb$Nu>!8}afW2}tu z5d(Wwb_*N{hYz*^A7~&6t+u5Yi3f75Lh!+LL}-q^GP9*EeI`KYLMbvuqm=_AbfbbUHYAgF>?e4|eu+U~mIv01lB*o;pm6+ze#U2Z>0~y@U+ThD8SFAVJsxCcX&^ z(~&_tiU~LvZCK{w;t-aDvB6Op`5PI&e`D7pJY$KTfesoR{9ph-0O06tlL@dCiV$if zLNFwNm`X-BOhX9!BtjqrK?q?J1+5^2P$3Zl;RmD5^Bjx^0fbTs5bOq=uPOnAoiqa^ zF!9>e#G8f^6ohbZrFj)V30O>b{O{u~zyv}OxTh}A4IKm%?7tW{fD{yn z`22aQd>TslfkX*DD8bsy28e`13hzjyKyU&`;repv$V{a0jzkIyPuK}Gh2ZZDr0^~w z1v*lfkV4v=NTCQV3Xc@BXGIDbvmk|x08;p7awt;B_92DitHL9Nd_Pj?O_>cT6#J3F ziM8R7Lb+4klN=r?v?!!-;l-Iq;o8HILdiUlLf_m-Vb4R6Le_U>qZ#CLL$gy zFe^;>NqCrW2m#T73D3hwC`_nEp#u|6qG>Z=f{fLYYOwzT?oWdW#n5(OLNZGIFu^O6 zalGwKf!x6fN92O_WeAl3GJ^7a2Pga(-uZBXw$08&Nf1ofpqvY$5VofxRGMSW%}o)6 z6b^?V1#O$TecQ_ru*Xm=vBI}tKY$hF$pMccO?JS-D|}l1JYVV4r}{f83}!O;cbkrWD+Ri zD;l9vg+c`vegSm_7jO=MBvHy#ESwcC6pt@J;>`VMVI9q)P%fcBX3%zHLjW#NL=S}v zc`}7|;KCMk#5A~&BNJ#JT-Z+0D+n%R;T6mnNjCs4?11qgxR5E+=ODQ7BEniIr;v)! zxlmFL1Q(t~c_^o_6Tx$lpL1A_@?f~I6OnVVk8$|R5V)Wtr*`1N4UC+r7$hPbB(osK zA61;g9`sr`#K4hl`w&Asjm?&6h+zl9Y^-D+fEd*D!;(T%$6*%Oc$`B!xYKER1uz3n zc=%swiBf>!htmPWC6qaEVJFob3>QEJyxfTLAhd8164THEGVGVZEHpsSK?^@yDP0Jl z1rMD@A31(ua zAa;S$Z$H0K<)8*S`GL-LP$WZ&40@7gClV!R>Fj!UZH z7h5ENpc6A3vLStJ;h5_aNjD6ybwC7a@Ic$oH)M{*j77o(F%GX30Y{*{s0b|yp&YWt zZ~&VUyRkkTlE}ePJuxKky{%!PL~0pM3R>`q`-iC^P$DA5K0M|^f%S2C&cP;5!_J1x z!cXSn95}HT2gVGDv5&M4YaG*|41rOQ4KwKmkT*mp*asoD z2x8_am;?bfpC!5ie1o21S33fT=|tvhGpGiZ!gpDz`yDYp%3%a_L=e>=B{FNJL-GuP zkwk3lV3%VW-@sG6yHd-3?N}0uZx9Y~ zeM=1zqkP0$T=w(d{963_)3T!cZ7*(qHh#s@rOQ^um+fo7@G2oOLYorW_=DZxg3{8` z)6>#3c!r+o&d$Qmp6l$o=f?FL*RS6YH^eJiyWXL7YvWc~Y8p%PLRJa$ES5cyQw}Nm zg{bz5tDSY&?cD;>lO?d64%-^zoEmZyQ94WzummsK8++`YL6q% zGeo94BQuLU;n`N+jqCin1`Yd0J8SoJw6{Zvb+B%J8ZI@GOP=(MjP#65o@qgiyka?K zc5W3~p}{A1!@k~5j(NIIpYG~HRdxrIY}E*nrDuC{N@Y{ESI~xb-rRI~XFRMl>hZ>)oNS*NKM>zirmJl)R7)H5ftGPAO& z{n-EX7AWLu`FD(VHEZRbMG$}PFUZcIT* zD)Q_0wRWvtpu3?cJ$>*!8kx+@4E(T6mZg!R$oVuk?_uYZe?O1?@V! zW(`w4mK-ejD7wV>-JHFNmd@DLl4-pNTz-pP|8-^vh}79z`} zv1L%hUn~#WERW?{dDpMWRt?#M?Y!M98%8dYs`(4Fi)GkU@mHAYIjZWMT$ao8rZBg1 zi%=^Y7D^e@SJsS*?Qy(#VgCj9hj2GNabIt=_Il>3;-v`cn%f}+}2qc*@p%P2lxP|QRD5d4rA;= z4%~r1Gy)<=@0Yg;myp*$Qob+ ztlwxS!O1(>nVH$t!{oP_hmL01oMsc9thBOFp2&+-17XzJ<&eGj!>8a_Z zSEU~MN$-dlGyf_pE62b9kogH35Qt`GVBKJ89Q=9#ypqdGL zV(!|xYXx6nt$MbDceva8uXeR|0Ht_;R4Dr&3kG`M%#!P>ou0a_3=mEf~^t@8QD8=nheDG(TIcPDY1@HjdNg&l&VUsA|X{GE!z*UlBWb)oW zyxE!w7YKjs!Zr)vfz7BD7X0Qb*-jH19b+yjO)*^DiSk7l8A$chwfpb1DS#9`eV zxySs{+FkL%)bIc6yKTExQb)K~%6`Y1MdCn8BQwR>9sTzY{{Ge4%`0gRq>SO*UdS@P zES=9oj%ata5BQzP-#-}no7axzrr->pPd;Xl6C+$!uYJU&jJRXp{(a={#mC-X`$RZI z$c*?%I3oOZ)bFvuBP(J~X~2LcOKoM}ruLDxCVNBsK)WMuvs{0k=kB%@L+Y~AyZhLRtzC}_D9YYNX$XFkK^db9DnG&}x$jSO3 z<(T45ZPeY`9qqP8?u<_PoMF?PQN`BB$`2-cLUpKstKt^B8TETZ){jG-ertV1X9Q6> z8P{Q)%5@9~yT|0S|wUGI3Xdh5Jv|GAQ#H1l1U&G0;_sJ6viTv)j?6>AevbSk^=@?nE!leYYgrOzA zX{BlqvJCJ!KOB7i<5}QyUMg1K>F{}IHu#(y20kB~13njphtFkm!skkIDLj0BcXs%E z5K1BN`TQL4xe>y%!RLy(;PdfW;PZFpg3n#E!{-wZgU=naz~{nu=Z4Qm!o%n8S>f|x zieMDJDc}TXVzb-nrm&jvP4}yqWMh=e2O~xqf!|T=Z^u_$GPxx<+W+}`N$mjc~3BY{{F-8bLDr#;OFMK@N>!AGw|~}`SZcg z`EQ2e=e{}dbLPbm{MA<27bQEu38E}f4`;R;Q;!%)4>4x#y$y)&1JJK^ zR6ZO)?>YZ=06>4g_fXdC0D9NX5CDDc)ZUC)05s4xgs0)>;geOVVezvES0O$FKM%E4 zq=doGu$>YfKM!{t$nxW7`PkEJ`1#F?EoEy1_<0uy(?NvgAWFeEJDd=KJFRICiqNsXc-=gT#|RKKn)rga7iIgBcE|v;TRA-Ph;t3 zS~~G1lFC!$bI#vN^ekTC)5vFh8E4EcgqBDba85|}+1F-v!vv8I??NbOsZv5H8uSX2 zYQ%995eHUyuj1(04KLB~(Dk#>Ua-*PSP9JCvSkvm^UTi)wGdfJKRG`ImNr2ROOn^{ z^U%akx~qu&Ne4g!gC%h)&*nK^(B9`D?Is>t0!VgE_p#8{X~|4h!B;o2LBNJYK55YV zf_T-Uzmh;&s_|IT(jh_6r2{rS}+r>jd=^GDq@I1DP`NFAgSnn)h7GeFdw#u03L$r zXl=}0M71e48XT+i5OlHRqphNUhcTbHcKzBgfM+Nrt&Mp~WO5-gHOYGuBW>j$!-SVr zafgxC#wN;S1;Eq}pvGW1e6+~(knm{}>ifvD)I>>L_l#Y9i!=7Ffq z-R-DN_&I23Hc1MNnKLlj@dgSsHW zb9B&^mKbWnW2CcvhZi2IJyQt3EZcO=mr5y% z*48JxAuMuCWte5UF`D?nV*Wsqp`h?~Rr&EWUXl33TSA@511geZCib0JaUxKO$Te4N z{v$uACN;Can1(=k<)&egSszQ+(!L}*Hw8crxVk17R~y((w|8Sk{hkJpbTWyYraev& zyHt^Ub%4m}XKw_7YrF>X$;3fw66RMH0bj%$*SG^PCx)V&T;g=^IH}%nP50qu^q_;fqHIE>&nwW4B zrY&=~255N53oJDuSfA!}&^f8t7U{DDGMVckN?@CAqAH z!e`;o&x#QC@x?@=PiLOB+g#Gc%6g#GM z<)LIW=@Xp{C=1VK;haf`_+)Lw;k${-B_9Hn2wCh$%z(Tiq@3tx7n-iXw2$m2!$dS2 zDB<|D0BB}q)W`fvikV8OMpYQ#pNTjQz+<0HqJ=d{8T+8I{n3ZMeFkFJ4aFzRDhXGs zuJke1l23LVWe(R>xe5-Mn>E+!XKIzaiRNKD8mbU8n7?)58B3JMHblgAJ$oX;;_c zPH#tNNB8Mq5tN?pI?YbI<$q6i8C_OqS7%Ho>u`6{gAQG%V@@-AXaO=4BqObLxujSG z#5@q|?8KIzuIf|E*$TbWLbpWH6ATDT(x1n>Sf|;Aju5iUCCeh(S9WoAS?`SKh-rUZ zRjYN{U7dQT(II!NquS%tWk#1Had~n3;w~?2b)qqgIyL;8omxmTo#=^$vI5bus9l^g zP^*Qj=o->pq}r-=ENItHY0^Yj=Ta$8&xCZeN8>s>DVr`xA+8hnrV~+%3ZqacPU5Ol z6x9*gZk*CjS`8;)L?=Pf5!KF5xlXbZczmP2wKKLex+4N=`bq5s&{#`T=Ymd?1~;a| zXxAX9pU^w3WA$j29EBKJ5uP(ak#WLq!}jun&W_Id<4{45N|^LiKP;KY=&$j-wKc4a|39ERNM3>%h#S zjsHl1}S1 zUFtnW0!&(x2SA|$liCx}X&tXapL6s%xuW6hDICw%fdTHc>W;P>=m&) zcKC?&o}a+`mB-uYyA#GS0U0)6^|oRHxG~LYn@*nKC-7Q@Pe4EFP0cAR1;uL}Yr`n> zF0;AuL>p@}a0-`kl&AbtYI=5dUVdTG%ioZPp*`0bP4fwz*yTN5E2|+voW+%r8kzcO zTH^9mt5&aCjZZl}`Hg3jHs(T-D#k5H_iJr44xKX~k56c%dH||YDHHajZ&|Z!)oN`u zTf*yl{dMir-&4-5_ zG-UKVL&L)fYnQKCu*Sl7q{P~(b&h+iAOcJ2D7 zo@%6X%EZT>U;e0fFL5LEa1oOIOiDhG+P<`685&9+>1$cMXKnn`Pu8`t7XGn5>iM_d z>nM;wqmc1NCx^eBGm8ef)ab;2{?VCIiHwnE(i1vn?xv;a zNE`u8woP~wug6>KzA?IJ)cfE5`Nb-D%(Gnp;%45sQcDmUabPSr^kF4 zo?Oby%a32Nb`4u&`0T_1fO!AUA9WQW0r)%@5B5MLFF*g8rD%wzgbWyRjePa@H};}b zm9ux#6L1>jf{>&jZFONyY;XEBL%F07rJ+?T#g=$kBnb5`sj%H z>$eZ*vwXXt&?xk-TZ-!u@e8ElBiQBl{--w%6cqA8UcmCrg3U{1;iDt2d!PN|KzU(7 z0ZiuQ=jOe<9Mwg`TJ*iC-~HvOd{mYz@RZR@YgfdJ_(&AQNPO_wZ(gsE2^KxTmG$(p zcoy$M;R0DGK63x;7$t=0Wu&di%i>4%(MLuWI)(g0^FIw0po~&2d+VrxqADZQ!R~(b z;Scs=yALT(M%pMt;UcNXs)% zR0MOAs3Mj+MNcNCuL;5pn+h6wU!NT}NQjbx7%Wl4#K3!xQ2=3O}5UAkYxUaTlGn94TRzaeRT1Ne($U6ZDmAQOH2Wog8a>)h(SOs>fY4rU3&;uKD>7(zq7XvO3 z(+H|jf`;gk$7C5jmigJ0{Y2pd$AP;9Xc&of3W+!H+h8i>2J(@<{S8yUIx$UT?b&tqV|v=6*js@349qI}7{2wBAOn5T}1=**$L zG(*2e4qqdOuaU#o$RQlnP;%zoznK#`RCf=2`<*|1`_1pY@%s1w>~H2o4m?$)e46Ue z4Ntz1S>AZ=+kf__b6^Kj5Fj0bVZ#&KOB?$BbQaja!2!%f3|p$te*dq-BL;z3ZX#GK zypWz0f)|o2dr^^(W$-AxpgUNBr9Z&Faz-#zc%tz9pNE4AYByh-1{abV-*w=Ed}k6T z5lOfp-A@Bz5Hk=%V%_%?V)$xbX^tdffEeUs3EFI+;khHA#Al}W#hFI00;!v8So*FlKkcaWx3e% z{9Nv3OGY6SJ;aR|_r9v%Q{Z3+`9c}6!-`P0LB`godlSw3iXGa53JaV8I`^t8Hfl=U%cPNJu`yMt=2oQK%_ZJh4u=C|xWt)g}AgEyc&f8pFRDg?9 zpd4}(hFFMHKI(TA4phRMv_==MYPjl?wVRvh`zgBQ+t~@K8b|F1D%NqHBX+KdjTa}PxI?j63PFW{Uozzgw+R%-m#iD`8cu@RpRB4E&XfW$RFcXii zLs1!ZJQWSBUOQg|&!bQFu@XiI3BR&Pks z+&fA(l-UD2wVt~#s_Ke%?M3?@j?Spj!p?FwGTUm0#ky9xTU#C`0Il9;Tn8wf9)E#$NQ07rf@vDsA^RY{ z0pfy^w;A8OpwVi?hbC|)CysPHT*GU`A%2iiQ(8nb>TGNfGfEE_IRDl_>5L+AKtmCI zRf-zpC~DHCcEH--+G5agF-_2v75Yl}egpP&T*oZ|M|{`CetRD#g$qSCx#}y^4)OzH zKi|hu6hT_(Xwne}g}lzHal)<9Y~X-dd?E?0sH?@fToCXnifXD3ql|B4bbHU#)*h}A z{$jCDRGWKi8=6`3LQ>g(YmZ-f^$hp2slI`|$Q|6pBw z{JJNf>+Wu<#iS!K@&yDlC- zY@M}!bN8Zd`_Mry>-33esMCS~>Rq4Qy|7!k?JL!*T=CjEbN#vv-7)CkgDgbXsIpe9 zjOWy@_;ngJE~b0Bga^;)tyw8ug%DrI*F!A2+dg zh2KC6WR$^GC-Mec(rU~@5(28YOF>zV94gUjm_O#qcpNC;{+Jsqj&K?hZGG|BA8lDs zwB=5C_ZNzTzEF!m3>XSX5md&4qpd3Cwd}A!Ea8X(7&KqF#SvNpy1}K)A9JUdi2d~a zMJMDknp#0dH44d~wVk+Y)z;OrkYc_sH1+~bPAg}@!PlhVt9%YbH_IPr8NP=KHj2PQiC`cS!IJgmxui??LeJ?i}_<-{}Huj~4GEujGATs?MpYyb#VG>T21j2+a!eHm!C2M%su}FbNUc*8&Uhs_3RA7Y_E>NP zP8#q>V6vzJ8+j-8@ZbpiSlr1s7z?S7+kGlFhyvJ zoT^lx7K8UgNJ&ry0v%*jVYhr*2tI%iOjDEZ_er^`J_G5Jnh+X)41-Y-IZv^JX*U^{q;L!N`b@UAmqF+bfKQQ_xU3_Tt z-SYZ8qHp$39uj>|&L{eA`;&)9-zU2MfaqKF<9SEl&F{@G`ab=}L!$46Iiv59`9$C2 z;i7Na^yqsceDqCCnHGK9!$sdz8GWDk=f9`JM_;0%k$BQKO_8mb&&0>$VMue$+O=!+ zH4&@mH4%AW(^T@SKYs7MKYj1Mai1t&*1$=+HhDdyBi87v^p!~QaR!rnWj)D3j6QX( zjPly4!_UB=w5h|Uy$Z)Pkvv}^mV3AVK$-#tMD88GnXq*TC+Q zr)0F|(4m9R(8HAG>NRUtk)XaJV!2iL-|y@91?0#_R_m2=?4UbwJ)Ue`vr4QooXR7X zvt?HLf4r~VCm^q^nve#t@*a3vn$%Et#B#pOOi2FLeQ}>bF4!su0<#jopAV>sqz!r1Fz^6ThqqdeapP;=o!APK-)^9N&%Jx{>)+~3y z99!y2;8@F9?WE%zQB_ng!E;t+Ke3!IHb<36-OZnp%fx6mIqs;GT zG}XRTTPh%?Arr$FazUrD18`9ZQL?bG(q4lO5|68{huBwiGaNi{VE_Jol%WuyCoxuG zKCx`+V&ITBhDP)@j{ zP$UFpWfkXp(HLhW17(i{I)mQqIw6SnyWt-d)ja^zuD=RRoHds$>C*9#Bz5FO3NXn(xu1 zfQE|QyDRWRbJCJ!9`pld2hw?1AOVaftKhqZzn`fv0#R}J_pdf^nNvT}x3M8J%ivQoq)J;E*OQbWw93t*+7 z7E!-dM#u*73f$8)v8XPZS{R>5f76M4C-~y7D_w^-FYq#nwPr27FtR#gm00OsvGVCd zKmPH1>^;|gVgv|1@jCO=bHRf8D$mMQtJJxeIPo%5i3^A;T*MH4cCTN{*RnOXGHpm) z>sS(+<#X2yjIk^MXPj637P5ZuC!;d$ z+_8OD{%Qx$YAfIgfSA19pQrH|^e;LgYPkTq^5H&UHCPL5bXh4% zMuQB2zJM7;=y9xX)`4|E&*)5vfFz_-_4$nXwz>FT&z|NNfYw}qehyG03`Rkl{8D>s z6tc~#($&k2<@z!&z!$}K1=f59DF7%mB>>i}*2LwSQ@a9cw8x-~21{yHb{1frYZ*Z< z;4`W^V39c%HLRCb&3a%i0)8Z_0mu2Q`J^~P)1E3F@zCBP;TeHA9%K%|)d#m+Rie^c zx)Q+91#6NLmkp*6tz>-G^h&Gw8AwU2$AI+$?)f2?267blcj_|WG6nPG4)qsm=K8=0 zAtV9GsLF|bYnML$xP(YRB8k|{7TBV|5VHfO!e<&f+(1$7Wf1^QGHmER_`v)ijBZy2!XW6H zA?Qa4Os-3WXd!1nPK~*aK&bnSA@>pzi$O#Wn9>os{b)fxO5m8$0J04ji1fn{A6SC{ z4F+V$q$;HM28Bj6PUbaIVu4hbg~$wi-9x(*vN#6CPS^+R0TiQc7Q#u<4wj&pY5@c? zg-9h%({Z!8WK=eRG=aQqnk2ML_;8A>k0Lvvyr_z)${-A8NSs1Je^TO9%mE3)fxl=5 z(M{mA#t#i7{*W*SNE9*=vU*vG%YhE42&0NNDGLrrQ!W4vNLVQXeT;E*`Or>;Gf=Jy z55OXzaWF88sL}&+vPJ@!4#M%lGr3O5+dE3)k*Erj?sfu(4mk69MW9J4D=Sir`H_kX zE#r`o&^D^Vf)RgR1k*HiYa0-Xsf@-Ab$1j$#x_2x`)E9&a^-#amDPhwymo`nH*PYg5@Q zc&m0@DBem;50AG7w}iu6TPkPATZh($!CT1%v*4}%=fmNxoxhn4Z&lC0Tbsk=0S!dn-<##>+Gt*`Oc{}gzOHWT@M<0IFHuDh-e=*Te7t-mWOEG%M0yqJ~P z#U)w^zpwktHGC$-(_2(jTvW`9wGwY}X-Nq{g%%{hZ+ZT6NijrNu~kxBqL$+>8rU>+pxat09 zUTT$;mTB;r4q(NL^m?9E@akuzO{R`-b zVh`P}q`=C)L>2hmLn>5>fg=s<0-RIC3OxA-{{c6lhI9VR!_Mf^n6Oe4QwD9a4h$u* z1bn6~Cy&&u0(tCFzFG8^b2{K_MI6hIQ=5j`CQw!R&`=`WW2j0;EiB&+y@Iy?dXvLJ z^Iw$4OIe2Li^T1GTGf1;wcR5rnxdK8BKh%lPgPON|XmEfk#M_TjO;(7PD4|wZ zq)9DSjIO6{gcipPn%pxuFo40z!RPMKhk58jbfn1F3cN+6C5p7-3CtwFie6^##|gaV z&g4X?!g2O;UcQzu3hcrHhPsN13ekbAc&Z3fiPW@Gqf88VdXH~LYgiu7_tH^Q0To_k z(~6HlDza(HaNF2zNP`?2LqJ_bhreaN2Sr^!VfR_l41?qRob+$%f*MZ-RPf^k^vkKV_$_n8=Tl% zs1C`Zb1y7Zj)N=;y-=ps>TsHsey#?B6pPEQ_T#Ks-s>J192hL3Ze@8IdX*L0MK~J6 zTTInDQKD>$I;yC!0vfE3_iBUQ5<1jNpi{Y$7qSYwsD$IzWMyAK0ge~$x!Tuvp*`K18K}L2b)M!?Ifk^^AcwA5jHFm|mEL&y|4Dvy<9DO4Srl4K`Rh;Q% z7Zn@DU&$$^+67x~nn?wv(B+qTuWQiUEwyNZk&1`Hf(*SF4T@4wFGd;8^(en`nO$a= zcrV8h);L`ngSxvwFVHZ4Zn^G|nt+O3hW~j$N*J!HOP4RPOZG+bbAS!vn}vgRIeH#_ zh(pJU>|+1Dz$sD{d(bv0V(BD3ei5wTARpkU%^WN%DAWou#Yo4bDj60nXS`W4rh+_v zBsaJ4(xr>+BD;Y04R|nkgC)>|mR96J+t42Zzyvewb9APvj=q9e0v&zOSc2=3A&5OSJcU= zPG0&?H1233ZX~GYK$SyP)@Z?1ZE&iBCNl<56cJJoz(}|Qv7moSm+5>J)R~oc@j~wf z^eGrIOq~HiL&68Wr4XTI0*VH36SP?I=h9QEE-NeV!Uf4^bLf1D>d-g%t(LXvD(tb6 z&uR9O2EgSS!(7L2iSNSTXkf0hmMfz!}=~DZDIRgOxTNfa>0jy|HdhiNn zDBZa<`1mFKcORz?s}w?mjCR|5s|6yOT#;2MxKAcrc&nZ;x^?Rc^h!3di z!0Fyo5DCAi*-JMwv{m|{B*ZQIghT?k%{727vhGVh6!iPF zUKx-p0p@%uszW!9DY46}6Fct|=z zm1zKugJ=jVK{SIMg`La+WDY9p5Ww@=EjJPtY7(J7ik|>3Nlo`ZRLO@D0Z2Rmk7Rt5 z>q4n0V+mIF_xve{cH2PW^p+eP++IKyls6P!#b*~OM-g|d+jnm3w<(XY&db?eibYL< zKVCMKK)FLJ_-AgQ3H_ za`W@{zA5t!O2M?7UgVl8iZVC}IVYK5xwu&%49kVR$WF*EzSDRRcCAtxMJa5O7c(*n ztKo;pKQ|mykQNxTFJ(TVj_07yPnh|;uOkQXDHu1Ws^Js;NT5|FA*5Z7 z#;T7DLxmQt!VVff^VV&u#kgtrVhAa!&>dxzJ!nBUQig+Hl6Mm<+y9o#MvR-*_sggy zQrdt^6W5$nfQE=G;bo%Sd|hP?^pz4oAZoaWs>=t? z;)Tev5dVO+q@v2)Io-zP?y~az_-r0p=OhlK34EPj;DVl31gwf5LQ9k!Pf;>dR@Q~! z9U}hCcWJW6y z#uHk+)K&JNlE6amK%q<>5S(Ot@+sXA0DxoAp>C(XkP95LT&f6ni&=V{Vm}c0Y3hDT z@+`E8G8^3o0~J#Ou#X0nln(ha4Ri2%DaH$(kOvJe>ypjl$U!F{ItcqSgF_@sSplUo0(fsyjgPE^SO!U*6cwGN z&tvov)EKmzWItO#@iaQVD(=fzK+8%QA|pnu@YSnV`zW2z2hBFL9~m7~3W{`qAg`RO zlE;#(e%TjrjNshcB z62OlR6-1(lj?#*e)Tl}9Dy8&^q_HHLWtR#01B>@Y4Vp*cx`2iTcrWpSGe@{maZ-hP znJU->h@%EQL$#FtutE(9tTVHKFiSs^sS{}sQt74?fg?qb*^Dvh{(c2b`(oWk?ir`0;7a#5{;Jqj_#SDj|=S!M*j;3%{S!TjdYKY zpkDeJ^=1+J9{dfEYdNwLpkjb`+19ARsZ+|lToHhfFqtSLVR@5eJS*Q1_9euP9-Mr& zoDAX~r3D1}Yw@R2L1rTOHjaG8l_{Lh2Nn!^FHj4d<)%awf8}c}tOJ$Wub)@o9?*G_ zMBS7(Djt$SoE3d0Cl2K~gzK-<6Ch0Cbm`$A1Gy9mP!QG*}$Sf z^KDE801LUu;D(Xe!2d1B)`zjXfbAvb?FA?w7+f%D4an4_6rQ0mGJPoEd2Zzu&I&o@IS96f(7EInV+?4#$)oDrsR3DEO@6rP?hIOx#x z2N6GK(DMMWVd(jaql%tyMnz%h`Af6W^F{kxiJm`tfDoxDo~JLgZ&gVL`W;9%%q-6LW4AIQ+3_TgslRYKa@A4t)E&ri|+ zuuLI!vN2zZzATuc|HZ*SgraW^rsx~zN6`-jDEbrgqv+oYqUg{50Tli2nH2qi1lRMT z=uZVG`eCUx4~qU&M#!-V*sM;(P69aN}sFmi{T-Zt6xa*YxWS7 z%o5n)Wmfr~;YfT_cvu_u4ABl~pWYWaJgF=Wk)VfoARdcmGwinA(h9@l^^_)Q#355*3a~ z*6+Pak_IXdNV4It;9wOsp8im6R6op0!!$}tm`dbakdn|jFr=YAF2!wP(o7nESD$bc zY-*k}LY|@Fva;Pnx^xh`>I3})q~YzmDplxH%u?LZVd`IAC{+(dpa$$Y_w%b-pH1$w zVZ&EWPHRKn;UPR0LUKOCqR&)Kbt%ayn#6D%9(nNJ@;&GmSr;Fq=K_c}1QXcDuP~|t zeK|wT4GV+i2ZxNHT6muuwK#nmP6HEXx74r+9C6e@3YRemuD%FzTe>eD!Jb?-`iHiw z2YteD=Q7;EJQxaUfQbfxU$TY{q3Hr$!=+`8Cjl`1W=QfuW15tCNjk7-NLu2sG>Gn? z=_~w}*d?;Xh9jVBq8a#bHEmA!2kPRN*p-MrotjNTxT*1jsTyKNT$27vDa}{km-3E6 zBV^Aji|mTHEG}6WskIAXZi4ERzreK0Eqc^JyX3uiK}{K7#ki$hL3J|7OkKQi!C8!A z$n7C)?b<^C*1_#FFJ7YkeykXPO zvuAtG_J9$DJ$%NsTP`FLZV$P>jyR2R!Ao5NNp7eWn|SACu?uW44{r`xwMB znHmoCYyCE%9PpWEginrl2_+YaPtRi=#v?m=|BOlnKAb8Y)5(3hk=cOJZw{c-89F1x z8V=j-1BmL!bTc64>bKRn2sthsT_NzfS-P({+{c>sNWU5q&*^UEJ4xUZvwakGP_ENo zQT;Tw!8Y)r*><`i5Od)8l774A3`2+GF@+XIow$QBYY4GZ4i#5 zk^@c&mdMEI_zhdKW##3UhhwBJ0lZ-3Rt})5O7J8Q&4uZJt=udtKQkQd!+oB9OycQS z%{`17cK={F$|uG8oh2?5r+MMZQ3ZLmVZ>wt0W^b60)VsQwDMOaLYKIc;s*`LED)`{ z{2&0RgqjklDrh0^6f|GL6!{k+O8GwkXy}^&09R;4;Mqy^#wP3N0f5Ec=^dL6Jgk2whUa+J~lm zFpgS8QwvD|nZr|@JRFpRT|#MO*XMxK3lFYbzCz|N`5_(oAb&~LgtLI$n$I?#^P~mY z=Y|8>FvHax43hKAfOdpWvDni9NOvVBAzT#(-NA6crdRq%2txt9g-&e_t_M;9$OQ_s zdofA`@su+G;5K=IxS=rk&ZLZj@IK9I2O-fewGZV{k#(i-vJa}cLHhJMBjLw-D&g^K z3mjLY?sR}XdjP#BaGSxz|HIyU2G@0DX@Zk^?*on0RnzlpBT6JdN+KysD^Z3P^b|>e z-oes)??CTC5cEb8RW&UURCTFD*7WxDbg$`&*O8g-ZnAYrmD+OB0&*tGI|%sE;8Ojp;PR)B*v9}orpN{#e434;RHO( zJ+20#cP8qLmouY2*;@?9;`4Jie&V~_T}#sAKE~5H(hGv2z)ocae-2pzwpmIr<^=}X zp&w<8(l~QPyLKAUHbf96Y2ikG?1GKhnL&@<(ZT>@yAk+b>P=LrciH$|jL`vo9g6n+ zn9vAV+tVXG=cwCd53jOk!;;t zozB*+>Ug&9KO%aSxFvVCuBOA;x-;!$>*jYNTXzI+-FCBet;p8RnDu8JP1bE;h{At5 zk*s^Ov&p*Jdr8)v>0q*MZl{uUyYDes_g1Hqb&EQltUKAsWZj%ZTf|nEe0G$vT!{B~4az92KZzSo@Ll$3LK-!Xl4-|M>SCu=}3$ z`QI~9PWB{OE(q&}Hd1Q*fT}iN_jkjw2amNPf6lBpa#h`d1oNlBe_*+Yw@If`FC z2rVG-Xjcj!50b|t;b4A&meLUV=!2;6Kqd1G!7ts<+7Rg;K~~DGjC`M!GO-~Bs*OAn z1FoXu-5Oe?1bcn z*zX50E!43G)7!&$ylm|*8|BckfaZ@1)U!$E@Yp1>KAey(B1UOW$V_2RzeeRvT4eKa z(|EVQ1%a5_FCC|`@*i&bNt^`_u+ri6iis@wEPzv#=_dJ+aYAL1GwJ)jY@D(O_Urw~ z%ZVpYRBbrc)jT^aKzYuRad2fpYY@o|z%P=c?AI zUK#;@08Y1yWku{tP<8ZVuxZ@Y_kc`B4xG7NF$}UW9>m1lCv<)BvuYRO%^^8;P!Qx4fm&s(egkn zwR_hw6g)Yv-4+!JGAzQHQlyc@r!?4ll-z~Z@YM$z_1uvy%Hkfs+eMS!5X2ZWD1g|n2|AMzl0R?SjL1wl6^JCtNK>tERWWQ zK+GI!sTEpMNptE<9uz=dk;%&PapI(7kHc!@)7(0f)WWFHGNy(DVfnPhEmc}|&JLP> zteczbHO904%KRELO{S*F>Yyx8515tOBm%v0F;b@Pr?z)9bJXUFj%=k=XTz=WWo!z2 zlIq~%)N&LHEPqgyA}WPMuL_yKPO+$nk|~m1+sw0M(!;0#GDVKWt30PPS|L4#3?kIn zK$xQFHhgAI4N!sN8xgI7aL1KBFrGs{nSj~8&Dy4XNYT;TvelD1ke_AkI7)siC!=I@ zx*TmG0Db4Y;c5QJ5t`B`U8%Pxx9!-zjrpqN7U?zeH(k*67Q7g!gdZ$rV65#afoPN( z<1%lKc0GE>*TU3hoOwvI>nlx*M(q(P`g#DQ>n*MhCOCuf4H<=dz>T;%a*GzR8~b=n zYg!-FHivyMd90(|WR|Hzca8lx@itmmvk+N-wCLy!%zNY2gK#Rc)j0sL9oLw{c5Y-) zhp;4b3~&yBRFX|ceN)(aeA8yUt+BDhLOvT+1J`=5_8x&qZrZ#VwPe1#ZzG59^}u|S zFQsu5QoY_%MFN0LK=1{`r|_?l`OI!HWhNDp@b(>)y!SyOJ4p@%#pHkk1uT- zTlhirmMzHX>P^;0wL!19*4b;-8nxP4wbELtSE%L9%a$%#ym(P9FCMSrX1vC`1RZZA z%G#tiS{t18>-0Lkwsp?NwmHhTuKI>MEPKGia22oY3s|uGGx*rdTb*4{xtrhf1k^P!+-xQUwJlfxb@;NJa{_j5+_0Xrh`7+O>SZoa zu2-+&os_%>Ja*h}bOJ!QQzEYy-wG?@o>bL{Z&4bpEYmOt+&fL1IpahDuGJ2^B6o-6 z4%6BeOmXQEF7LDHL4Ja^-c0VW7d%yZ5wFgdSAyjR%uLZYa!{K&gx|bDa znsi0u;&fHh;wj)QG;P(x3% zuLoC%$|O+mL~3n5jH+zmG1DI-$I~L$6nhgu*Ak>FZ-vy%>+Q7sv;WZx}Nv zBc$)n#f_YtYtwOBk5h(+M>i&pH{xBUWFET^-YV-U(6|#cZXh@w5a$?S%K3|q3o@7T z8jOV=5QEFkXW~TS@-F4-_#M8e+o3Xcn~`!!chQ;UbtF2a%n3(Lx&2w&|=;DeBc z>vDiHo}wN-ON$8#na z6cq3faU;xej5Rv7xH#BrH$vK+b%*go^BhF?olwnng>E7w!4(|KBs*a4GJy_3;D|{x zE{(iYI6&|o+jIoZl%@(CyJ}V^%>6WZ-Z$^H-<6U$oYD*L(pwHo^7KKsUCa?TfMPtv z>#9BT(~Z$`_l`^|{Dt#c`3%e9KRF>h6I)NmC0lfnE@Q-nV6_oZgm)pgQGwfYT@T4w z|1xAeYRdDflMBEbj<^6B4LJJN9ftHC1kKYNw{@HYEAvm5e9R_y$RZ5V(|-@$<+)Fo zcU(shZJKM4`6%NSZeEgWI^f#V#f%sZ<-}Q!@UE-FObUfd*X7b&11Xv=qlN>P%jDV! z^Gb2oi6}`rMq@Ten2aNpxN_mbcU*s*)@nDLL(9|orJwQu@SLK?Mv=}iyJ&hhW3hWp zNrA+;@o|B~xRH2)#1u#jRzELoP#`e{5>p^C1rk#rF(!yCkeGC;Q6MoM%_xwVNV@Ys ziNv&#pl;c^S#M@d#m$M^Ym>~rs#Pq-+**#(h*uael^AB~!IZXcR-0|0;v0~BXYx4> zrfjq-g*)Xktj zKvhTtq)&osy=^eMS0#!%_6oFC0Iu>ty1QY9Fgj&)Z)Kn_cYcU~MrXsaO zExt`MM@_8ZklNA{DB$GOrI*|ZbS*^AE-1vPjkeTCGR@P_Bh?#M4{JUs!fae`N-9y} zYSC@4&S9!OrUsMUzT+hm?*ttoiw~+%Zfz)A3o9^w;f4uf#PDuf*e%fU|BzbBcfj~a7d>NiMFEz@ljqw+i%#+Lqt2TkWUhdnZ zrEGIsiX4(3pNGDfq#J8DQs^)fCL`BKU1Gh8?Klc&b?Xi7`d)E$!m1%dZx>onm6wtpHIMt2riZiWMj?NG-hU>%wW=-uf+i zBKu^@GPgP7jH2n{h&*;_Q~Qzb@Zcs`CgttpjVoD|$X0+ zvLMNYQZCo93rTnBkA;M?Jg^ZuY@~>t1z6hDyjD-1m#sRktJ76jRmsWjb4eUAT7DoYQZrGp0O) zs)_bX6{hm#qFB_iaOo`z6<&(}c%#&Gq|{=$)d%R(^HXq~DJys&9!kd9s<2M5qLZd5 z1B3HZITNVMTo*4dOatE?!Dr%wY+TU17;0G?5ALbQpQw5zH>&g2zl4~i-NODSC1 zN!Jkz+(cD;dJtwYmch~CRx}nojIrC~S zIgROtX>Y1d{xD#+dxe(_%Zp59#~lb(M}qp7TdK)Gba$J_rGv7x;5C|C(DeuJ!wl*( zepM%{WzZFr%TOJ0A9X3uL`X@qFA+jXt0e2Wru?U7;DXNny;QFl?jUWMGPMkE?aIn3tLkp$ z$-n%|U;N_dc>nViW-6IsRJ^=zNv~d0EZ(SEp(>pUl+o{2F8TtfpZ`1;NR=mg_v%%G z`$&0(shXO^QdbqLYJK?^M1A9{!m1ZC5ckwQ4pfOK(-lr7!i$@gRZ9%$8wTiZc}mYs zaz&=M*fZQE+oxBFDrv<{rSgM&)hq5)RbuW}RlSbhsh_KFk~!fhx%Mj2CAd<3DsGUq zr=}{XxuvqIas{wI|3-gf9FuM>P>+{bCA`?xVIRd@f+~MPko8TlvWNO;m*07`q@);~ zq^U0Sc4ZY*R#vVi(Ef&lkgh9Mp6m^fDzU_&xbL(o1%RqdUKK?0YlO%u3nT_Q#pskM zvZl6T&@u4q;1K&8^|ibZs42~xMdi2ploS_3-xL}-h1aWAwqXP-|5vf@YhzsorlqVm zdc}_6UMTtz*S(@wFmaQ3Lw}w83gHnadIl2DZm}-m?VQFRda6@VsVh@|LMQ64)mKgq zSo|>>MtCx&FcHJ-N0y3tS=V3(rPuOTcC3yie;9G#c;Gvu82qHDpi21?*Go zizH%pZ-;?`havoM&sfj4Vh#u|I!pfb*I$2SePw@XeUbcJWa%s|qN%dpJylQLL!)Q7 zHk=E>>>HHUU#7nJ@(cZi`dlKQ?jj8r_kwt`N6%vXs|~{Zqo$_z-*6S^&-HY=fiI4> zUOjtIQun+KF=>11pWpaO!wqa(eW5>3euiCB-5_679xoALtEZltbX)z$8(*ofV)WVP z>NC7xx``1MCS7mH+OPwy+Ee3mZ`}Cmt1oR4)SuB*1cqhFK0P=Rst51zPV9w@D`I_S z8Zw(7a6u-96+(EPrc8b9#tm1>{;aDs#N9@`jjI>>VfC=_=q3LILL5r#bNjO{5VCop zE@rFqD7<3za2~?Ulh!_mpoXCSJocIMDfYb-p`#e{$9necp?jnr>Vc=9Ui?SMVg8Gp z`c!tkU>}INMopJ@EpsT|@=y=<7eBas_l83UT4+~)D%a9OJqDiBr7P}mF6-4J)rd4uc*6Nd!H%wFZM?1e(T952Jz@}@b3@(WnAo3LpXyIIfJNoq3;jra^64k~6aBIC5j-XB*^up0mg@ab57k3G#7A0QBfHq>XE9p&vHA#c z3UyPqTUqjv9z7n?4^fPd-yuj+PJf*G=;Mzl%aJmoa97`l0!vTO3K5Nc2=a9fXu9^w$-^>UFmK-~V=`bd8WwgmOE0`Wg^|L#K;m#is&05MNUePA9>*Ic?P zRo)XOaJFF1|Cmj>4eAfjB|iARFz#Q*R-Lk9nmkqB8vhCM&L*U5?N}Idv6?evoB3wV+`=KAGAK)=jcru+YfmLoFtn1GE-fh7K z8*}&JVPfCx{R3Ae*OI>$7**;I?CZ(*VG}}e17hdp7CdYg?EQluVB`>Qa;=*3&p6LX|zt3kk=5AMlU@x?*eqdg% z({AV+Y}7`h`hD}DtFkUo4>x&23n1it^r8AN2CrK0JMV$OsxrQG;Tf*UMQps6?;IGg z3=r+gtM@EfKol%ZO)o~X&_5;4er=+9h-oO-@A2|;83VpY(W~jnp5g>!>Rwv$;Rm(| zTko0PYv`sd$Y_rrzyb2`o`R%l(|(UUF)B7s)FR48kewOQ?`SWipAZq!*Sy|dNdIK7 zh>(6ydm;S-pfW@HMNPs3@`v;za)$JWIug=98XeLv$sf|sjt=ST^M~{!a)$KF@`Ut# zqeJ@Rc|-aIFfbydU*29wUm6|KpU4~1_s z4`+t-=efAIK5XPmc`gf0#R@pXi75wRuANkr^TVp?o3z z3+W;K8~H-|XEHR-tb)K_H$^-b*s^^ar(^@%?NB5zbbw8K&T zWG||p!7wQ@s;^3q>gO@kk>Ec%s!#P|VC}{A6>K&tu75g+>lZ;LZ(RRkMqIy~jpm5! zC#J>qYap2?uAjpo*<~ObX+@s6eo=Z{zl}DuAJ>zDUem2=&T>p3w*B^m= zyK(&>FRpKZbUShV^Ilwk8nW%h^&`S@{RIJZIIbV*hpve0Uj?>fas9|}T>m41wIA1y zN{j2?1gf35esn0V|67RXjO#~tB(5JGitA@FqHZ^?f7W*n;`)VvM91|5!g2i~h~%LG}8`}Gp#r@l5NjgUSMwWb8I zCet{~1G|a)MQ)UDDg?eFdIg+#8mK{QFXTv=r}C5b$c3Y%@HM{z%G3hP5OgX9T9=u$ zU+hNssjp07!Pn(|2uClrf!Udy7>vY&C29LjUVtxU0{8no7ZqQEXf-lpzu1fIS;a`q znT=f(rWS_Oqf`*_snSa&#T)}uRC1H{8{F{T)Cj`bJj#k^-^W?DPJt3Wb*YJ z-QeE&62{-}ppir8YjuV2s%6QBLRqST%Yj*e{K1+s@0cRx}$plCviBUd;JuXhm z+i&vo_Hnq@RnaO{Z)AbxqeDECkHEcFaVULX=SA?&7pQ-`ssIB9KS;4Gz<}DtPERDo zknAp7?#UzK_ry_oEXSsXuIR`*3M1w1C-QgtQGd#{i66Wnmsblx=EZ|7{!TyScg--8 zsq)#y7HSTX#9!n`{2U}BfNo7T6vj*6Z}nq+`k7La?kxo)vBIhQ&3>Gp`g|s~*%(Qz zA;Z8)bkAgQPu3aS%zb8&GWy(Af3S>&GQ_kfSJB|A9pVz%jr_DnkmvPjYn5Xxk-^-Cd|7S*H0 zusG&6<8*O1iBJ&JQ;yqrWTN4t+391vc%IdjAf9KjpgXPXR*pRzlMwFSWxU97*85zGF-&Bm{VWJc8PN@6rr`OTL+dccO)i?A1~$C-ntnOy&;mv=8uOrM$- zq_fbI7NldW0{I8aQ&Z_L@xbR04FYu2d#_pU$C@TC;45+}Lu5bm?mdt2Ce7vN-OdDG zwwxhyTA=P3i>YAbG0Y%gCL4$G3U>=6 zzeM?ys~3v3pM9#Zfas6)M-~br&aN6&lc=r6_Htd5#O`P8cT3gON;IawDiVlBY4Q_= z>YVYnbD5$<#AGI|eKK$T=_m-hmid!{zYaxyQwTSx#v=8wW z5Tic04bVZs)KtSd*Qz*SH3&nv7l4bk{dxSePe1+SlaCb&f*;xdI&VW;o%IpTPK2Lr2`Dc{o z2zb&zbfsZxbxk+8XmNupAM@>1A1Sn)y#CITYP z-C0|0Rg0vqXc~w3*Kk# z+4EKc`rZUG4jj5~)g(B=@>DF6+sKXv>dY9s>Q=(Un^o1-Rc1!ebwH_VXFKmOJDNK3 z{|uQ5reE`I&L);yG`Xr) zP`F?lD3;z?CzoZf70PzeKC3!W11s_G?*vh`Ty7P^6)4#9;i+PAovLnL|0#CoR}&y0 z8{=>X|IZ>9gZq4>SE)}w`xLto@H!M_aVT3;g|0bOVj=d~TGcpe3kFtIo7;7GgZLMm ztnQuzEJ0M*di^4etil*1tDw>hI`^9`l}mYe^@| zkhmF6%T?8UeZNt~L4!U(R5iElRaPy>#Vx#?M;%HWJoNeJpINdmg0E%uVe*6Pe^iB* z#g$G~bqt$zRb_m!55aY10mA<14%WQu>#2#`&EvF^-AdsQFFE0vnONIWR^^ai+yKezu;hPAxFtx~xh`G|r z*@u^%XARfFO_f!4RgxfGZ3@<@sxUz9qrBIC;(Ajho#gN@EgGqmemIVtJEZmQ) z_YQh@uj#$XPd@(SW4^e#i$GmZ{@;tLtBR@;^6d?4?=AS;qDC%23QnD+U-gG6yoWW) z`N?`r+gKG$;|DQX5c3xB(jg+$KHeGT?8Xa~gF%qOZiVFkUQMsHa;K`~VSWm`)925fy8v30+|;G^m}|yxFTA`Zxh2B+Pv}23 znO3& zKoxA%=o+u8S3B^s)Ynt*Uw@x_HPpM`F2ycR`9mPT^WbqzsTm7hn1+!WN31&A@s5qX zj~yHD{_YGRG?CvG0fKxAA+uZvuMbmoymd_Re)#LQpi=*>rZUFI2%Ek2oZH+BIb+6x zJ?89xLYz8Wv1BlbZP&#>>plIhbF{Lk@>_g}VtOU8S-h`{p1^4Nif{z%_4h64((ktX zpT@o_J|S=-N4ix$FPgp}0;#vrME!2+or72q@yS#L4vTX;HVa!8XA361Th=zCD)G+$ zhE2X$9~Rya2g>I{IE`(_Lb=o+6Xa}tUx_aDjC@Nq28B#zdaLvPd)Scku71baiJtvy1wQDJPr+o& zj6(O;EmarNXKl6KOTPQwyYIltKLXHACoA*J+?|bYbf%Z@$wsPesjb_#T3hvd7IkjN ztQ4qPaC5%bO=9Qz#N^2{I|f%te(XInc=JU zW{if9oGn}7s4aLL-hIb$oI?SQYP+IR@{; z>VyG#ENX3D7PTB8ud!8#H&8ar%@a8(5OvD6}Uq>jjDOs zCpVEa>SP3s+UrB2Xw(YBZ?b9BQXiH@qYep=p!@OT)2N1k6J^jS^}(G#T4eM966R6s z0!$>2+6nmx9#wfh#B{QG6!|X4ILxDVh7j32YEv4IS`?Da=254l+hHDMt}o5OqE=%h}q7HR{L~Y3?QH$Fn zQRlKrRFWhL#|9tE%c3?#vZ$4LS=8A`7B%xkyDVx$Hj7%x*+-dfao7PYEVENV*{i&~n8 zMJ-8ZQRnirsCAhvYHMy5wWHQ$QE#=wq7cJnv8a>nu_%O?1bHlKV_p`uD8!-`UCGO$ z)`VD8eMeZ-R=7HwMXhd!MJ>(2qJGpai`o#)qITzFQGdP&CPuNSB|ps1qE-VJ&7#ia zVNqLhvZ#&uSkzL+*jX&0VB$0Q9r`GAPA5!i`o)kB3aZb$eTa>mtT#l`f-ToWV5KP5YA*#heL>L z7PUN$MTKi!*(_?4v>s+rsq!XNNWdtyTNYzFWsm9zyio5#a*ala-q(L=wy`)~VUoCpYdHI#1 zS7I+a7hkqtRu|eXUbt`(f7AtTO>^oX*zJ<@+N=82@4b?GnKBU6FW-fXFBv~yQ(Lp5 zK{s@{lzi>drB~IfG1Dpm*30UmdO3OV<%<`r3kkvK3n&mRg}ig@QnyPAHY8qt<&~FT zv0g#j78O`8-w{a|f**Y$alU5J0hpqWb-(1i`ilLEdb#M8yJ%g0XpqC^;}oZS{2c6Q zKmhO5U+N0;T|`cM^m&IaQO8t06ukV3ekD$e_#YmIb_FWXmGkG;QiBGcPo1OsWIe(`eZ)D8iJ)ILf<@kZdEi3Z`3vXqa}GT_t8f*tKI|O2RCMX?YnNVQ z=ioWh>h~_B&R;lZox6SZ+*yWxM-Cr4BrT>O^1#IhFWBc}=k!^1B*|Z?Lp04dzstqn zyAV5XpGyFI_K1QphxDOtmr}32eDU`Hjh!z#*M?sasSh~^;oIbE=yi9Dt8-o)j}Bo5 zT{sszmx3TnJ!~CP2l?DUN@VbtHa)k_cR6RDO~OFz&2bK(H+W`VyV&(&3NzihkVJR+ z@X<*WWrO;xbx36Kuv~O5z~3nd=?nUNEB-AWqG-`shi&Qu>|GaEMxAe=fG?!ZI0u%ysyip1Qw197nN&9jNLDCTXoH7J9GBz8Ijlf zx?*%LL7E282K&4*iEa?_*jassW?+NWUKnx*(idH0?Qq*&>4`J2#DrIBZ#NFE8O~6v z>>eiT*>mU4b~|gGG24*3U21(TyGgXB-oOIeRc0u?Wyozh|DLeMX(uvd^ds zTD*id(WBp!&MVU!`W2m5XA-B+xB-^48{L8v&VT0b{5G5cnvMz zp)A%0`nn4NS}f@b`PNgXPvJ$pYp336CJYw_hb{9dvCk&xBtCvdfpZ#uh@DQHIt_@u zlTSs=cuAeTMNy2r{Gl}>Y@d!p#pzR!R&|uOU~}wDLPW*;XH1(Z2&q%fNmzpINjtjI zdf1ESn(bnO7#sANI9zh(%<0%^NE4Dgc}li*VYd}#M9dooPlGz`oH;Fj*{6$6sguc5 z*uug+R^2bP!c_Tztu$DjPQcr2x(fsor%qyvjm8$6E__#9GNKQhvDskkbk|eXNv9FN z*V~+}@?eUgep3+Ydb%5g5+@qBZ{Mc2>8|`5I4GsLA+S28cehm)~ zot>orx^k|ZKGoHTLGBpD^cKG5F5%Y@OTiW0Pjg&ibn>Z__DOXDcLd-Sx>ZBe*(}|T zvlnMhfA4hcRN~|*{Gph_$?gru>an+odv*{2u)zo2#+;KFwwOq@vbFlHTen~f(&la$ zbNc@QW18)0)hBdg8=E^yISb8w&kTN7c*gxDe=EOqHi=cghXGP29a=*Pb-Wc45ZQuj z8`P%mmmYwF)Jf$wAiqWnN6fF$vu>BVh_#$DXr+tWifV|nnIqClYV#(%Yq)@)Ho~z} zDfB;(RmT#LJ+fIrWpeW-T88!Iw0*j}E0{ddcmn6`;`ToTO1JppK8#DZH{oX^TIQ_7 z5XmTISfP*MHGkyrzdJ0k=avq|p2^y!=QJI>{*CCnQ%r%sgU<9NBOpFGjTuBV!=pc_OWl`f^BA{22%mDh=|B2+6bUlyPTN*;%Wu6a>i(yVYa64Q32 zsfk%}3l#)=l^wA&TMICN8C)+JA4vSDVp&0?R% zzG@nliHFkr4vkQB8j3Rg_d!q&gGPJL|-8&QO|0jHWjHNLD>Sp#h-MZ=H`ng zK7P&>{7(Xop$>;aGzZN_x7BGI)iY|~7>S0XUHNQ)v+;i=k3xZ4@}fLU@&KMm`Y2o_ zGs8fz+k+}>x(ZGW0MuZ%gQz23FYshQPpbYHwg_8ix}fS5SYu?d6@w$^T#>&}#8CCt zQBz%G6)_Mu#_J=A!sJJx8d8#lf(=*JD_9NHs~ntt<9X>j*~6 zO0(aSEW_W4PiB@BZtwKgYv*hd6nvTpS#*cPfIl;m;3!j|!ffgU4 z_Tqhbr3qVVtOIxU(=YRD)XIlFdRI9bQ-S<(P- zJW7KoGLz0Rd%9_Ta*ynUv33KecBbmM1%sGuqvdz6pb;f;hS+||YszU)Se#PKX2y@SsTU!zyB zPgjn^!8^joV2Wp0X+X*CSTiN&Y9h+ob=PP*By%kq#Z4w%G3%|}_AYg_4LYKv6+Uz| zhYacM&bFp*P08K(P|(`dvQxSev>(UFi_eKrJL5df$n0cM+YruTxVfz1A)~sTZS2z_ zj+Yph0rveT+gJD|7mqYiG4|hJPhSAdaD7Ox-j>+Tu*AZnVDGYa#*Io9sWJ_h+`i3y z=yqv2=tUh)L8FUoH9h4wCzMO*+!-k(Ehs6YKO@h=r zzB5Wapx4JVoqB6x3y~HdiY98bb`-cyf$J2wPJ!zLv2B6tU{`*D>-gL^owO9VPQa52 zT&KWwz(vU;3S6habqZVuq{Zb{X}qJrbqaNzLR|+nk8l~NP}h;quL^aYfO&b5w$wKY zb)7<8$E%|j>N=>>6zV#x1{LZ$g}P3mu2Wa2>&TS}rj`^{*Wo@k?e45f9&g}hx2a?N z7y!jnDfe4P6b`;H=Re?J0ShPNCQu;c7yEXdIuUD3Lpj`=0SIH5v5gWfQEEqwn{n(08%MuL>o?>u5L6~13(-BemxYB?3hN!% zhh-F4$5QA3t+^SJHwP$$`(W*`*uI5b7jb+H?qaZ;!R-O-kI=w-W~jm1(Yl@c8sI7g zlRO>nDI})TacT)ea8U+z=!RH2AkblMdoc>s_T)AwFe8D@J-$gifVzBCWPrGSWf&t#s4DgNF{9PPCa$pg?Ly!NBx3 zZMH%AMkNj%l!H&yffgA#bEZ=|Cb?C%Lvfo@38XH7phXd{h;%)@OtnJpe*w*ARzsHb{VKaf+pYZJu zB<-zjTed>f%vT;6 z;fRnxQf=@Au`h^ia-H?t+=jD0^p@1-EjSbd1Gv%Npw_3>@fp4?#>?tr^r&4a0I`+D*JX3QZc1$2v~lAG z3qZ9_A1Kp9)Y=34V^~~@xHU;ywszhP_X3ZrxfPG^%z~#{C?;~+m(wdabQVGx)0`DidT4}9N%i}As zcGc}b80B`$4!7!rMb(NpMZGmzZB1^G$I;$=JJfinZTQ0N9~%$JD?GXhah$@;U#)#> z^orE-bYm!rMQ?p#-P*P3l4`ke1!o!FU3!a+r%H$0RiSp(a%Y+QvP0b9$_5Rmi>hU2 z_|ilUK?LX>ZoVDFW|D6SCYGXg3^`2isaV)87Uh11^U_b93&d?Wf`Ao_ea`}Z^K63tr zTz(;!9~2e}xqKE2>}A}w!x9zu7}!^1*VI01ulZPA*R{%C5V_KT)eH;e&9zb#SJ*P3 zuUgmQSFc^Y#)57Ng=fBl(l8q35`UM?P*x*T)n2RwO!pSTPM`c@9K6+U*ML&P8QQrt5?Zh z3f})mhUc1IBt&+<_R2GV= z+5lRKn=)cR*_)lWuWED-PPyi8?g)9(Q|7}~_^?eF2=NI<(QFDKF4IZ^QBFnCkv2+Q z3sxpM@)$+9(I~q^cTgFMm3lovtu%7Qisf6e-$iiFM%d|G6Ri&Spb**2GI|EmsKe}Z zfp8Xa91Ni?QWMvI|35-6@zN^;NU&2!Spjs%?Bu$$_5!TZN3JxGEo~9cc zuEwtZnpgru8l{8j!1z+J$3oFhVY7qa0Bl!beCZOJV{q1nE*OsQ(sZGsi`Q1j$kt^` zmo8c2W9$tWd_GPxNpFVDbfId^x2so~fmpt5+0rG87X|wjob~A94R$fqJ>b;(Uz@4v zj^J`CUA$;fXrlwv7C~+1=&|;zR^RaS5k?$$FPIGy$#qvbTlxGqU-Ji1bpF0hrdl2ZZtSqvX|4sFy?=Qv61#%q zVjNXliyLd%yg@o^F@5POb?tvdX$_EKGOvXelkIhCt%c?JA2716v1_muExyZn9r~NY< zwD^b9n={|9IA>^6OH$%hxsW(fRXKF<28v22*VtF@P~p{UZUx^RPAog7lbE(%CspOm z7Y7f*RO9Xo{H$F=VLI2M_VwIfk=D&L#doVJM-Cn|kZ7|dM6c%9$aCkc$8HYn9gvyi zt2T2%tp2vDvf|l60|$mxCsw0!?>-8gAZVhE|JSOOE7XcxuJxS7=DzRBWW{rX2C9M1 z`gM98_l_9hw=q)IHCKBpu<`(?rD};$N1n5h2Tdcs{TiB+oslciW)ZMn9V#)`Ff18Y_7Z+Pi4F1xIFR=`iM zm8qwIkFQ!yz3OT!-;L-p9L8-m=x+*7tudO~RaFZvf~}}{e&E3Vs(N( zg;j7G#tY8(S2mf?W~hO#{*L+=&KcOh|I_`Se(FgMv~1v6y-Gu!%(^H{h1l@y3h4Ytdi?4&EHko1)$&qodf33!+~&cqx_*88_E}}&b#G&j z4>T5GcBv(I#YO>%cNQ#|KX0y@dvngvC&fsj`aFv5Q9cg)P&}nquklF;tDFz?95v_0 z?5Ej7f**b4k%u`P+*t&zTxMjY{{}|G@+|ngIdf*uo;k=x1OD*Cy+dehYT;W3j}?QI zzst}~@T^%gM;q0Bp!(t7s<*E?wv3&2=-HdbMPe^7Gu6!7GoJM9C8(`e37aB@`eR2@{!Z~(Y=D~MP#wB z5zoxq)>Zo&_2~sIE@(Ck{mqQ&Pi3HbdUooiUZ9EoEl_E=TQjB)2yi8;L=~%^qzXmL zEWmz8E3e7K2`N+4Z-Q=hQ9Vcu3oEvOFZ1HnKNcgFYliTOVBaP zVgg)Bpe(Y8{1*H&%_rq${XCy|3X463OP3Ou9Gf!L#?P66DLZud)xb4?6 zw_H`z%BJ<@GtkS&=n@@hQj3#U-)7WqxR;uvW~-Su#YiBZ^pH+*PujL=-dtFZu!zUCVvc zB zX3+f*(aLAII!Z*V`lXY@juFup(m@?1qO&q#9VepwGbkk}v&($* z5z&bmsLl}4ipSE~VY@_hOs0G%i0ES(jIx77bV>%SLqv3-M<-RW?r9fyf{4!Ykewu= zgCdCNa|I$=Afosd(Ud3)712UPv``T(R75*m5v{vNB0BmWiRkQmC!%Zai-_)e{(gw) z#QP?qRrgLrw@GcY(-qN?_d`Ty-!~CmcV9%b`uY1JqA%SC5nXbhM0CgCdnBS`?v;qv z+#3qSg0BM3+8&PegRgy%N!ydncm(Gbm-pDxzf>sE!iR4UeUh!;TTr zk?Ek0646DOu#OYaK^c^?V?=aj2C6eeboJwz#Il`==#)(PP7u*2G8knCiRkR>!_5n6`YyS9WC<>q^ARFmwWn;lJ9_}e0_mqp{O;W&Z2k`FzWHG^0SW)p@2xrzs z_1L%NI3bL?X{pdfetr#Gg1EC~$ztsI!0v)!S-^ge_1obZN`*Kyt9$c5yv@xY%a^$w ztXS}j+dY`+scY^#3MVR29bsx)a>w=^u=R_#1!)vkRV;X3knoF(?DyDXefzG!EV$C)DGr-z^{q1xOq>w8N%AJr%RwAji6$Y3gaiCeR} zH~;P@K>9j|aO{1Rs^49h+UL=^>?D9ZS_~J;K`D_peu8aEOR$p+QwMv<2EaG$<1Zh_ ziwc9mCGiQ@J9XP}pkG}Kpl^SItxYnBRTaYrd&&}gxAjx~bf3GAJ~GSoD0LOpIlIum z?|uxBtLd46Aq$iJ`u0QL)T7BK#l$vf!nRrvY_kz~SNGkj)edV3yv>)n>XW2#s&{GJ0-lJm7gOME>yGP+d9Su6hQ)%zJ(sCOlIiubHN&Tf2<04FZ2o(}T};2d&a{JpK- z&KeA6f|Cbxrwu4}3nz=>a?9qf&A4K8bka^wzyoC4F37oTo8CXdwRSLj9D%#tSgcO>$#9Oz)DCxpg>s zbeGeFvIj&CXxpdd+{CWE??dG!E0D7dGD%ud2f-UWBPVt^0T-o2IQ@;QuTLKV0#{sGhneTlfmC^yDq-aQeYo}zDu0F(qklOOJ4Z3!VJKY)g~UCw zgHzUMh&)eMzd+`|SgE zvvUTx8xy!ldF~W-syHO)y)({W zyv_mRJc*?!fyujjkCGGj_Qm$$TvqfA_k|u*&24W(9ez~(&9TB|IA2_SEz5TD0Nnsu z1Sroq#MQJo@9|LcU-9T&Ri8i$W1hfU?XgyP)df3apg3k!7VYEtsrmpewLO$<#>ngX zZ-HqLIubxq{dQr|u=l9FT>!u#fd`Vf==Bi3S3jKiGrA>Ke_OUyx=Ij#mZWNS?}-V* zK9GR)!9&)e#F4{Cw&I#;UdRfs+!@6c5wlCiI$6?dxFD>38plN*un*ug)kC;+6n|bk zY8{Q$-yO-v*%gnM^y*W`V;0q3dtVZd$^jgWdJva9ABJ80oc;*zgsyxN+IVxYII?A= znOZVrCA}8zh39b$;XVr;EO_pmx-A8Cb}V`H9t>Zm?iRNpp?Pa8G0mh^gf8=g&E)5)=I6JH$SQJzO`)3Rg7 zRzCIA(;O~1#jbCAk+`0i{B0$@dd(Yfdz!os89@mIJ^YqjGVO+P1zsz14rS`eHuHfaXmOYX4n7vxsu|ZJ&TKhdUX5VeK`6R zS`P5c%tO{;eFWDa1Cu?lf z!|lbl#ys7>|9}BJ4VnX?>yytyt17+?{4lO^RErOrp%gc5*8|o-n6t9K?w=emkhbEo zTKs9Kf0j5^a<^CC-9Q-}kBYVqCop83RJ{AzI(~BqH1;1j5GYrt^9=l>N?Lj?k~PaH z1oVh~6c;7qS!sZ^$Mx~}EJ3P)tp-Yaox!3t-fIjNWpq{@ym9#8L0s<(*P^pj!X}LB zHn8{zIW((5ZQ?e1(-{Qx?f!fjiSmQIq#F}M)!(Jz^$iV;)SGCm z=-+>!HBb-I(0O}MNlEVw)CdeF1)PlDP?N#|+|XtpZ)-d}5L1Fq0)$>*SMLlgDVc${ zn1{nL;LyZtA}wIliNq8S;|xac%-nAtSTYnZA^{zOdAKzXpcKwc<`LxZi@Bw{vF$|T zHV>`_+k)2hzka6APFLfh!x&OLDzpU}kEw=uV*@ViZd8rxL~?{@?O@MdRiA8}wsaq^ zcE*B;b9Uic>c(=zuIgjDp^e9UH#XvK@#HEOZUG*vzjN%;G`v0CjvAb@_o;}P*{5kcf)3SMCMFcN=sUy4)AI2Cyi3ru@lTUPn7tRRb zJfimPhz{_=l|urB1_&xLr(Iq+E)%65Ywr7OM|fdH6fc|-u)Ey65R?faiSUtt7d{mr zbMeAy>GaO!h2z`jg-Zvg5lW92KHdRdI4Y7CmbT9e=SA|uetCJ}s%Ij3;i&w)a4f@Q zk7NhDuwMsw;rtxDaJ107e7taVh~JUoxV*5R0Q2!eu{N6*mLiPJ$qVO4^TNl0$>xQt zpN-~)6La&zvC+J+e_mcVHwP~)%gYN_Jd=YLK9`pljtGcam>2e028t)&HAnHnvK+jy zG%qjQR$a9y#MeT+@X2UiIJl z%<%arX4rd1US?R9n;DLbW`_D$ylzk~YWQ?MYB(+zHGBj%MpMJo@r9shIhY~1l8~jm z%}tw89p)_YRMpQIZPHa)W^SDH7F-FoX`$69Giz44k1Nqj~Xsy1Ci9Q z@5*+m;fuMb;bf1U<)wx*b5O(Q$(`DxhNRPx)bO$Pso|syYS?R<%hqyH!y5P~iW&~j zM-4}Lm@qXQQu0&>so`7?9-@ZRAD-1AYWSRIZI~MV!L*4Tq=wVesbS-L?Nh^NqNw2? zM^VG&5!CRxj!?sJ1<$31k7rZE?=nkI0wb|ToKomE8)2$gUi{^%XBDow(A%FPW?AVO!dYKHyta>Lpj-0+!P z+z_S4>gpXh-~+m{Ylctc;)ZXqW;i;U8$LWIA2*zrgBw1bj~lA$f2rCK;%p&q_-HgY zoL;?VST;9AA+Oh>$r zUq3lV(eUA%ebaCAo9 zuwO2A*x#_jQCtFox?!(p+hd2%rL)6PX?4T?`Pt#9C&TP;#3ORT25L{J8}`Y~4hMPc zaCoS02t)JL4PVU74xh@&4%cGySajjAZ$5T7G@Ttj?-vdqhK;${;iyb@_?%xi9MBPV zI3$xD4)yDXeeL+o%w4tDrNN7x~@9%Zq^!7Lm;(mp$UA>nA_?!ymt?-b^%IURPeG%G5M9 zRZUTootGx5NowM6CX639Zfxo3(IZMLa4y-LIXE|K#&k8^DW9gMC8tig_O^Oky`_Gl zeyrYXyV7)dUpX6zPn$Az>XgZPvYPbI6DLR$Xk*lv3LK3#SDN7IL8gT%p%&DY#N{(M z`-m-|0n@^-gBC`Qt*pS2TGE1=k&-5wA@|bTZ~GllO{pKvDbr=&nHDC$G-=XAX+e!s zV{ep>9*>jZ#0s9!G`$Q){FW_Da$ETEn^&$}zFdO_;_Sne$!fBm)aII?#x|n??4n!< zSHKapfi1L13zL5O)=!Kl;LOV##hJ+|t{>DyH9?KD#;Vdg(twzd-oWHZlR^zN9Wjpd z8gM2~P!oPNe%#n`W5<@3PN)g2m=V~3CMLQz+`7`#^vVnzBQ*srup1oC#DsBZLBopg z#@AGfGcg`;1bgvM>;+qx@ROhX_{VR)dF67`8x?H88%r^Poq!w1)zAVN3`_{Z{~sSd z;SUAg)bz$$91unQlP6D-h9`_OKKO174mAwa6aJe3KHh^L#Q(3R+zs$*LQ3q10j0BQ zaD*Mlk|Qx4lD`VIFrN0qfD7f*rcKdPI1>{SFpAKx#(q79Ga3#sJ%9&h&M2EUEd(Do z7V`k`Hx>w7O|~Yf3C?(+={q(0tFZ(J{Z9jrA3GM4sOj<>s{uBh*OQW-@=ry1DUA<1 zAWiw$F{1pCj}Kcf4U8H!!5rWhjDRu9f6mQDINXB8?SHl;PgGc=fg)&lI`en zI-7An2ANaO(>{9C8?PVp;Ce#RC{NJ#QEJp*;~B!{ayd-S4F5Dd!fEi4um5m{YrNle zA3i34o8FgEeOUX*5wF(*?o6JfF>}U?^=)IvpkJbYbkKmAf0*YlWi&8im)C%vaEJC2 z4)gV>zYL*6`a_)`Ida7CX)nPhJ?SP~2lXNNFUI?wH-m@gPqfR(!^Ba94+nfQ7V%aO zug0SPV*bxZj19LS10Ws-Vnk`U1)S{0ML>)&hPpNk8#aXw z3^kAv5B&ELqr!Mu(aU@j=w{Q0VQLtr?!;tZfQKJh?o9yrfX6w83<%-%u+~WvF)-2r zXY3d?h7G7ue>HLhoZwC&v_K263b-c7K)V)L!`l1?)L4VpqtuAMDGkACK$-=92kc?- zNfXD5`p?nqX#9c=qyK?&gLbt~96v7TKG4H`=Y8p;hmV+?g*N`5G-2G>F`o16VQRP< z?{MtC^mUIKF=F_b2(;hzQt7xJZULPf7C26gR-@F&zroBJoeeMdM}N#{&K)(}9%c>y z6f+X`1a=P}83h&96USrK8U?5xu7=$jK5RID047|Gc1Ddfx<`!Rv6^zOrt3C2EO9Cx zf9X0Jhz)m!4Y!BKJuJ<3Xwu)8Mq~Nx)9a%~4u5cXd_-8K;BJo$;nb|(n8O{*5Mj7l zOGk|u{=jfGB8e_|#saB_|9uD;oPLPKKG0~PyRqSV#9etfN74go_`eQ&u~fQ=!yVnZ zg~)2!R5kTBmf4Buskq8wPp#qBh?e1;RzCK{QSLFD>DcC%up;>2uE6QxalkMmMCFSw z3^zw!ro(O#7T~%FPLD{5rT=}{i!Z+L!t>*JdSw_kZK{j%Y%Lm|7%^NlsS#>q3#QR9 zLZ4U9|NV$`Ed6RUa@muP7C|TG@(62Wn-BZDp)Ytxt4wIGthnp)XhFqB zbQ@{J?>zII3^(mk(^4Y;U0B|zaYl~NBf5`Fjv6}jS@o=bM$No~V@3lN-=;%E2`~!% z!2_X3>QVYx^^6*P`vnh%-XPSQ*gRo;@G_wM@YD$6EaI$@)~MT~pM3_OAPgRgKpcT) z0)c`-#s!IWGEs^dB~TkMtaw1_(dwC2poZi`wGxHpZFmuUXpK~(l9-iva+3HcJ^Jpb(W9YpNE%E{^gHNl zEOMPge~LzXv?`55<8xuxL@4ZnDUH5jWpaT=Y3b-egNB5mYT|dst6bqc_rzeU^7QG_ zo1+H}#$>@VI^`wI{)r$A8C{BK*`HiA zjxk`1uc*uLR;~%ghiW((h&C0NsmFl!zQkuo#)>@)I)=q(qy|WjN{t>hTAQxvQavV{MK9vO=VZ|{ zJH(>bUlkk&Dmpa0tYdv@tiypViBa#7$&tlQ*J$N>YUgE*MBnlZELXHp(e0^tm zP8Pi&fQMLY8hpg-^E?t9!J^B826D6L6GBBx_d*jh_LU5Ns z1Z1*Z9z8h=-5DM|dU;^F(d~A>V?4Sx0^JE7Ju@5LQ64=Z3fdVSJ!*LdHRb&VV3-}^ z(Y!Y#f`f-xZ8VQA58*n&qt)=g8y7-$jz|w*dOt*Z?mZIe3HL~(UtDxQL^=c8VIn=L z^F&$=Z60iHH`VVPE+YygNH2iV4bDXQ*x5xd{laPPE?4W zMp5Y@6=}q_Q&jq;G-w2~ji%BsrolQxr3cRs^Wg}Ed8qWnFtmeI8qED3sPv%OU<+O< zq@z@NOtz*1mA(fmt$udn>f1l{D$=Mv&c|%iWol|_%G8(0%zrC|+;L13j~=d&s4n)V-}ri}s~o)FF*YpQzbUnetfir5r*R{xe%E|k)hi@#y;Q#?E> zkgSQt6&2Q z$%s7NmoF2;=|%b3?0}vM2K*B0=_v%~sDYvnYV55sV>g%r=v;=4YQ`@mZ^$Mld*yIg zaCx4wAj!0no}8csQpY47^uw4y{I7gG3ejd?0Pszf7z7$1aA(p4JwYRfqsH7`gCnIR z7cpxV&^LTE7zohfK@{U9AL4gFR;dX{nyRsXKc;j!k0kO8fTv6mR#Lz2wglA_zsw>w z65oLZ3KnSMD{5&1OPI4!#7@Ic@C~>;M?AO#&D7m;@-Ir^Ck(j_&)~IeT66HOlCJ zRmtwdfqWE=e$HNBJ&Vwn-LZ}iI^2$oBx8U4i1^$ZB%kyRdj`HeT`N&|O7 z4KNG&xAfoW@jK`MiD!Ki(pxA+6APt<6qXP*Np?ZBNnvX&(wqN)gdm?Iw+)$zri|zk zX~}J)oL!6PTulkJ;X8s&EcTlSToE`zjrsrBdk^res&sAmUwgj+bWZucGxkmsk=}a< zDfA+}mk^TBL7EgPNeET3(Yu052&fo9R3yxtf97~}6p)#*jUvG^7DxgidHeO>_p|nX zOL$WV=ez#@`mbD|XJ*cO@B4Y4Rrb2q^X#=$HzaEI3@+ypF+=bOeKDIgAQ*V&dno5E zE4p?a5qyN%Bg~DM-XRYN1|#@@Vu~>cYP1n+0!qW<7T8f>c1{lnZGh(Y2ps#beZ8DY z6&|1xJkpjD#+a_Moe^B<%ZRWO+i<|G`BfKBU;O~1hm#2yc&8g8rt9cX6Rro19DNly&TM_>goQuHbFn3`}9B~ z$P+L%qdUOg9(Zwuq&bW(s4d`zl2zL9HKqeGq3i7619)#89uN?Pp${;-7(jmM741gO0i8**3P|-D2wQ%aZVSTE zYOoKDrUqQK8=lEXP3{5Sh9jK@xax9wau}R?=Lz*hVJN+znFIAlhjAlCKOA7W!x80q z>@Ezt2p^KO<4Y#g(Zvz%>e96<^BPEC2(P!NK(ArE+FlRT#CTiiJ|Bb3wxdgp=xbf0 zbqDRHv&C1U=jeC^E~x~t05gu15%o++h{H$&(!o?qv@Y5}+NF!?RFJ6kI2b7eNtkcp zV6Fu;1!zWlF({FPG`bj_3j2u^4}o0?zydhK!Wqb^B4kMYb}H=HWoGaePSW|AlP%Qm z!=A#}wJUP9;y2iwGYu6sB?6z&Xq8AzioiHtR)9bD=riNk~XsudZ8X5w{NMK?-Xfb9?+ROyEHw^k^EYj-HrJ-D6 zGc{{DD@ao#nTvy%Pq3Ps*-vjs3%wYAC{5DtN+lF3xax<=PR+Fwj$a`i`~ zoB21cTPtoJgti9?lQ<80#7NaOz(ts4-$hJ0Efd3<(IV5H{SH)E7Inq?2^e-C6?+lI zMsdAuD$am`goGIQFSbuA#?cM)65atngC;J{hG1}85Ebv#?cFu{_GoEqi_EaeyhN(F ze5<1c*;Kq+oA|GwbFsl-qw401=@x6m3d)F6{jaijhJx&1{EOw79uhIJ$n%rQj4PB5 zT^7U&JFBH^h$HR>5^)M9MgI;{7CjOcN36VwqvBW`4zYu^$@f-$i!4kqVp*?qD)&?_ z{+`ZNxt@&lj5MAX`E<&}3C08;R*!0|Ioiu7Aksc}PX zFCUmO_M}?Z!&NIP35`z9&aj^@sNCOR0lq~hJsyEGjFTtu5!dv-Hs)_mSm94FI;&2q zbBT_Cga8MA;S@`!^@N3Lq4%lr+I}bB0K>|7gsTf}IF)PU7M{+95dj)%>Ed zQs9Os42^6AUi);!$n~=&iXuEh&GXJ3Gh&!A%r|s!z>i{yMCVTUgThKw_u&~)xz|qT z;)~^=6Jmmzr{=0Tmq!i9B6x83KqE*Xi}`@gEZ{n&PN`f!<5_e%_XaogGmP2JQCLW0 zj=)%Rb4KdY+34)oCK#QKQ&G9s0glKI?5vqHMhp(c)_~_*Qa3s>e;k&6p$>Agx|Gt-O_o2 zsBq@uX;U%v^NrJ4n~iF}+^cMRn4NnXU;QmA3tEIDxGlymomt6gbavRSu1>35FVEe! z`iq(uPJ5llcY~Ip*4CmNl3k8nMxFMRjU?-o$%53ZCW;fiG}r;4KN2G@A63&eE|rY7 zwKZ*=?{sbiLqlPy0hrmjMi+N9>}1D;cMC8YLc9wDrPy2qspuMdF!&a71eJ+NvFszp zh!)SxTn`$fd{nab%EMl->jS%@?~}4zvgBlGI#g-a0vlfZ?64dz#%bE<;oZiw75b?- zc1?nhZ}wA?latU>IYL24L$OpLHY(S3I(PoOd3N^}*wr8m$5~@+K_LTY+lghK51ch~ z)jVU4KZLF@3^!4xgir^uT*;TNss|ZJ%PCIzwWpXon3&T`PtTNb#2gP2qxKHN%+hpEgBJDdD~LJX9UQ za`UL}anvU;*b!Z;E9h$F8j*jj68+=Hsd4(pddVwmPbjNXHSsE)rF+i}BwmuJalWx! z=`$`|EZ4+x1ib-&4ZelThpMr(&qRqTgepT4mFqn%eXcArHP$-@>tm{^+p(;^J=ZT2 zaB2T7)A;Mr_OHztkJ#nFpyH%m9%i(~V8(d6A=Wi8f^h?~735?q$N>`9n9-w0Va?83 z+o%{FR_}3FR0U@u)HJtIaP}t<^hSp&h#9J{pNOmL2H*`qXC{)RYAYLSuIh3uk=b!M-aq;^|3ADoIVek=G^S zau7yXfE#F8pSszCR^N|^6<%!3_y)4H*WWFM%YBWGisOW;PUrKy{E$YVxn5GL!5+#o zK*De}me0dQHK+(e38EXS zy-zpUp)z8l;-cb>geyWv($lA{?dDM2wIHrH^&MdfFn@f4k&rL83N%+Xo3KO=Qs!%I zM#|p3M6s#Z8gXuz3Ukc_55OGz9&Y*E0JLnyCw|>TPLY)x?2ZI)ck~6BH_Ti$${!9b z32>@DZsaA<{Z!CmGXcAcK$F%dq+SL{4Jp#eGEJ)b7`=QwN&$`T{@hbsRSIEb7!6>m|U8lL<6k==;?UM9MY@8#` zj7Rl4VrzC+J!BP9Blj|Q;kYLjOb1HhQ-k6GG7wlaCs9a3ahRj$drp@@<`gn)T$`nB zHG24aimTq!k?kz8pz(2rWvT6^qepOt$c^Y@v0%~D6EK}Nhn=u#} zJ2R)^z1V8TH>wN|ab^#rr%QT1V;krIrIFIl|F49bQ?APwrQDiwT{`ualxx}ynK*7y zxu(w=_dlUrXO9)-eT&NV$+3E~_12W@>@l~jTxXB{pHQw(j=3e}I(u}ra;;Xb+=!@F zuGPv_O}|k@Rx8)CrCzmityZqp%C%a#%ANvscC~Va0bH!4>jDz#Lvd}JM2?uI8wvW=a=&bgJFX(kSwvOY?Adi zq`(6GTykch<^w$Fch)|3xtUfZc&F$zEi*wlt*0}MMwUH5LsV-G%jYgx9DzG0Wz)qXcW2XslFTHV|DutIix-Y1q+m;Q3KlJae#3u>#Y7`Q73E@mrC<(}0ahv*>m7?OBejFklDl(t)9<&+ zC1bm?{tt0w)(^#QmCVTc$AmJnIxP3Lit@5PS3+ z@J(1j9+!42q?j$JBNl}ol}O|wVc3;fP5w*Lv8r3mSQUo~0!&L4WpbTN8DXgitkI3x zW7zD7H7k?I73knW8p@OXVrw9;<%(xZS1yUmyr>kv)&wK6Q>QAEz(paXg<%@3qU3Ff zPTs;T9Tgvrbu;5V3Gpz|QBL;O!XbOBadP;d5&t97N(pRG{4FbUdrea^b1PX%97klt z`fwDJA*oGd;E>em$k_L;ltFhGeZaCTP}VHH2@{ky?Q|>4ti?w zqD4ki}fvH0KgB$)D7>u!sx!KsBa7K ztI6J!kN}J~#+$`zusO)DKLl2NaGW*$2Rq-=SY8(Pn5fZHVg2OfNn}@vUYxE3u%8a# zBWnYnQyBxU;w&V5pDFaht{>33Q^%O0Q>RUv3iAUGP!oLPSb3zznZ>4{ukb_)`4R;5 zx;~Zp4;~;>1Lp%{2~KW1OG<8?>J1s^QFW#{Y^oz^YTV9&ovR zySDA(22BV&0LNpIT`>Uq0Y9>?reB{v`qaU0a#Sf~pElqJ;M=yr1)LrGC(?ik*fmk>*ICcJiZ8E+Y2{BuOA@X z;()L1a3S}nrl=HOGQleG$8ke?>W|tia(r?WAoqa0X)|6%2opR_n>9~BA3*!t+$!<6 z@%&~xUdYk$@VOP>s*P837YiN^5bx(@7oMi=$0Q>99#-Xw0oTwe#*Q96Vt6bfFV=f$ z0l(rgTKez+qp8vc$ODX~z7~VoeA;`J_$%@JYI@kP!7-gI3oJN-N4zh{AJx=@O@A$F6#=^u|@b=Uyj-u_yoTrzTTxBqh?`)w6&TVS*{Zt#ZtIB zwkU)XFx97|cdxb@W;88s)|5UsMa)&R+nSafz#$L;$fM#Y8dI&n?Y-A;jeXx*iU_U18l5 z-=`YHGkoe-r!%|A8!(Wq|ZomZzfd zP@0pZ#Bt%15bub0;yy3nbZme#G%jE)2<_ICH)BsM3=-mN#JgJrBC1hM;HGDs-n1ns zluqw^M#UH7Ess0B_@@?)MB^Yl2M%O~!gSXmnf|gWD&Eg}Ee^Z@?1B{;3^cmNbBXW< zmWc98XjphVkJ1Lj;*p4`tm_A|Yy{r=S9K?~XG@C+xcJs+M$0WmBp8;_ZlNQXgF{D? z5wXB9m7ngmY+56LH=F*zM$~q)0x!sluf7FWBi_ZxG!>q}zf==x!cfK#AHx_WLKv7K z*dLmrpJ(aV@M}vMj}p{`_}ds#rQ_<0YsJoDAx(62bUGkesG4sb9>OCM`t;^U>a_@} z8E?dSX|07*P0;BX+u`^upDQ7JT3Hf+IO5UKZU+Qyh>k`g)x>D(0S|kqU9qbM7GuJ& zXbh?t+DSpNyup+>kHAR=n0uesJ9(Wxn>C>=|Edo~>S$$!`d#84g%C>`susyTYofh??~IkxyidFa2}50zgV-F+=-172y( z52ypKEd6V^nee~u$C911YxnLg(V(h1UOlu}8(_v4Gs@bQ72g;x|oyba@N7;&4)!ao_fUO~J_)y%9A;C=sQ`b(1fc*R%&(%t9 z9s(tLrtt9jwb(P*#cxF6L}5xMUI5erR9Sewu5RU2#3{xq(ni#Ddx)Zh&KDeJ*_OD; zhy4*xw|*+LCWaov!!~DCu>8xyx-6{faUGZHHRmLbAIb&*IlKg7klf%Qa4?n!wcxs# zHZ5APH7t)zjzny|z+{WkNbttvMj1;2V_N~F_)Bew7Hrvqok=rb!XTr=-u4%3*ZkoH6nyWM+q6H^|IsBYTHP+zMo7bVQjsb$Czib5ufR zw(1^9W+n}-w9IVQIkLDyqU(d{kpMr!)O+!mL(JDl0WzaedGQEKe)1G-HFZtnx~;T~(E4 zU)f%RK)ng28Dq&nYTC*vP3YNx=tl3ZSZVgU8Kv1d@btX0MsIEHq<#-m=i_*6WsqX15-tH+js7I%R;kFhv*1GbJ6&Ugl4gwkYrY`pmm1`N^{Y;n^BrA z+ec8E3&&x5xUx#KMf)3-=E89|p)^}{yg_NsA6q%4iTsvo=4%sCYR(^9S*h8)eI%(l zWpsiZ(^-j(X0tYtrRKS&q~_tz%afX;dY3IV50@`Bdskg*_K&Hm)a=)?>QZxPyIYZ(U8*WIyIG6Io0Xbz zTx(WAYQ|JmYKlg+lw&2OX1l6N%^@wqL|cdiucXxMR~4z5V5>bViF(sgvwfJ=HzPHN zG_Qix>{%75*`caZb66FmX7`(xnr#ANu#!p5fj1*Hy9S?dljXBDia&er#EEx~9nE?Bt+(Ddge!Jlf9`(D|* zXZMaBvv_^!7#w;w4COgTa*pKWyn9xiEk1X4-I`UaR;H&FM-^Xu_ryELkL3XUCea68 zf9+L(_wL@gWBW1`(&6NJ>oB<^<`Mt#v*uZ~My>K@2=+5zBNK01DVNZWL|G8ZM2?X9 zZD5_C1#~%h^WKe2yL0>2)k13wS3`;i4}{J5dje*coC~7!Zy;9tzK6>@cWm483`_4U z<|jZ6{8536%gdL6{8B0I{rfGKw{F=?m&xtL(e*h-P9Yxf&e?Nkwc$$v{=)Vdw-GVe zxPyhv+qZ4mvMGsQyNb_G3^-yO@z8c~I~nZd%bsSu!-GvQf(@^?Y~DC;)F>4FT-OCk zfF1$=^q{>@|J+!s7OQ_>#HvP)bLy0-)1F>J z+!wkxAF=|x?`1ZvMfu!wPqR~@)Vr^RLrpj|bP{dV{aA3X?%x*(?WUJreBrrgpGnm& z0w>+V$Wh0fQ&Urz=mq#Qjv%wK%s;i;p6l0k%SoCX(|2s>Av8| zaUwb(98F{C<3SK=A9vZ!`GQ55xiT#+J$>;g7;EJCkK`zXcM|J8#}NGwI-14UhB}Ja z!dfvGyy-@|=ZF6rqXt0|KSvY!bvP}1U#Op&HbZ5o5_i!*K0Hd|;$vu2@QyxF>?l@; zzG9Ei#0V3I`NkJtupM5Bv6+su&NE6JC51&l<$ZT??KA7vtb2Y#);q;!@weJ#E5@Z< zUL{zSZe-k6Qsmsac_X_@R@QqE-oOQ%70%7v*fmt^Wxz%YvCjQzGFGKSDVV_)P!rbgAA#6W#&py7CTE2)#sjFzZSJh z-@@KZ-I7G2B{y494WV?yNkDHaaf**?*JL@eE@V&L!444g5RJicvex!cWw>GKO4_QP zcav`oi=(o?nDQihY*}>dIHVIkwBfUB*Q{beUpD@AaZ2hc3yPP+CNyGcN|#Uy=W}jS z5^H8(nw&Cuw@n%Bs|YHGn33)j%1q*%=m3Ca0>|KF{fHW=i3{+~rhjNd4ra7HI!(Gt zH>C+Pjm%nX#Anwb)EViB=|$KHSYqNz*T&E0#%6f8-A9xQT2C9TqI1GBeWHe3&~{Ix^KNwVLC2 z4a{7zY$<{XV^!j1ETTrQkkJe82wI6IP#MNbGt;#ybJgnAYuFC>UjbSIDugrZpFF!` z^ysPVoe~qGY^tbCH&Lqz)2PMhqW{dsfgLEu9;Lg9CbA)BrUC1`YlN#vm=-@JLrG=- zMy63Chc6+M4GYAgSev+d&05f1#FAji;-?m12(q(i+_04A1cyn&0k4czMVSE%K~7+n zELt#MqNqj}fNI!~;m?u^5Qg1YiP(vS#u{U-H22b{K{J0YFftUrr-58nrP-*JD>E>_ zSFOs-T*biCwY6%kf1R|r20w|Y6lSyT9!1fE=B&k!(Nq{SD~VLA+z9@vRjbu%-=GO=KX1+~FkhjM_#6UvE)5zqi46x^eSoWgy%w!ncYDbXix*_Jws&+D;6oE z*h^GKp~Whp0jas#SgY36;*7XR_-2CeXA<&eHLl?XkuM$7ANh<`e(k55ey&}o*7?`N z(>y0Q=gpoqLmDJ2o1XF`xPBSvgBdH0mDk~@O{rEZMAt%=IKes>$AieID6%*Q^jmB< zqQz&dQEQELYCQ%#e$Q{v5Y(b$JY96)zHVi(*^2wPqrg11_7iDSJ zo*2+~jtm;i?t=7YN;|Oi70CS0l+?g$jbJiPLr3MXxF*i=s>PWIigu3euNx7vWUXu6 z`gQBqKO=nrZ3y0}K>om2hQt)aeWwE(-gj&teb21Nu)pdo5kIF*VM}JiYFTSyvDteD zS+%bc9%D5vb_u5@ol9S*rh?Q1Y!>R{3%N|~(|eYXu4E%x&N4`htntk4C2F=CxGBVO z^k2t1T&@`GJtsiup`WV_w4qw-)^4h2r2mMUsmXdG)_l19?kRCHly7axnssY!r2kn2 zsfc%PfHs+q8rj#mq=uWl`z&P_$AAoy8f!h`rg}z@PUkH8nLG*Vllt)}MAn;F-(_cM z{rK{pUAwk#pFDwUC=5W1pnygca}(18QF6wNsnElhF#I5^~Oodep>JkLN-hwgj_9y!ojR;sIJ@yl-hw>RzJN@vn|T zD82QjP*bY|42QRE-JE7o526sWwCAU1p*{601>i3v)LgsUQeBvV-Lz?Zz~uq`E$w++ zv?ryUXwSa_9bkT4n6XO$r#ElhI9Z(L$<+P(+0yfmXV2mlhxd|5Pd4%m%-gqZ26&DJ z<9i%}MS6aCRvZ=u`Gv$C@6V?fGgdi&i$n=~u>hS4 zAj}12A1ya1Jr`uaRa-*ZK_=%bdv{Z#BT%x;9*GG-IQv-AbK1g;rx$DK30O#cp;*~3 zEZj77DNy2qN{z#UX;RAcS+Mmyx)WVwj{w~siR@OoDC_od79DLBVGrp!1z-pjfIkc8 zly1Cj%O-8>`gIw@IW+t9=^G+FfyH7*q-T(LKNpPBnM9;ub%*!tj6n#I>f`Sll%BZW zU;?3^2VE7>s$FHXVClbZ-Rjj-2K4LQr*9uydI}}=Bcx~0SA>@Rmy{xQDH$?S2lVOP zw@*-dCQSsTNKYMIXgOY9yL;CT?Ah2*Qf8*7PafEpzShc7liU=n)N$uS3AwqY387Ko zBMH;fR;(BW7-DoJhtiYx3~1>o%}Md739aS?biELw!>ve5OCDTWdSZbCVs+?SX;i)Q zVLM7~#0YU`2WTVBbLON-Pc_j++R>jwJAT9N5aflUvV62+%Tc`|%}j&x{NlfJ-=^}s zeoWjQJ?hBkP>%xFomV!Pv~qpkau_Q@fk%}Td~xp6zkITA(NhZ+EZmRhKk)|Z~fMWH5q25-EtvvVOnxh19d(R90Fd&pu$chFHvzpdn)6MSrNzOl0Y zyEr_yR+mSstYNbNrPAE8v=7mq&xrQS{!9~M_7wRci+U0wI(A$|?TYkd#4YK0M7Jhz zfe!fmhV=}p?V!TqUe>UBEZDkp5&h#Hjooj#bwNvQI^wX*68A)OUd*1d((16l*c}Js z*>cWI!v+A>QCL4b@8%ZMYEhhdlc$5|2ERZgAwhS8ItCHrs}-Xxu`f+dUHEbk#`tqt zPwg*(RNQU=n_r|V8Wnt$jgXtE$tf!XeB9S#R|$2@uu;Oe5~wfHe%ZMDf4oI3q;$f_mCSyP{Gtv;pOE54QGuDJ<8pCePaM-P^gJG`Z8keFeBW<}}flX8s zejPs(n>p6JPYkCB^hJLLWUb0@tdz|Vh+4r}`tl;U#*ZBz#38(BFoc21TSvmPY9&-V z7jCcv@8zcvM6RqST;^{3Y@1P#X=a*{;Y{ahSEM(@FlDB|7F!EVHU1KCqmuL+N*Y@S zUSus-yIKqbsBsjUKWC301JKA33!kU(vv-H!UjgkTAI*eB1z{1bTpZMzq#HSW__R|HZ^kSI6d31On0Cg`_uIT8CwgYiA72;TZ&uPY`rd6c52-#VH;>`3=8A1ISYa%Jme40tQGK~(V3r>mpqXbw5LazS(Yej2>>P>tKP1wMR z969MGe6u7YEJQ=AK(h6o8nWjhvtu&#ipPWUdd6{$&)Z7jqFo1?KF1CLV#yT{(MHHv@ z5NpJwu$cO77d>m&0mSVd_&A%QQ7cZm$W>{d#4sEMHQK&JA_`Gt2~Ls3)21P;RASd9 zs{AH;oNU?H4awaK2>3N_(NjV?4{?Q*0<4hHk+_1i_n0uC-Q_6a)H*K~A6jsVo6{x( zNWrNFmB8ZuIK*UZpi#6Q)1A(xWt{NNp{pVs!3)7DYg2qCJx-7gQE{$J>=sE&YT<~` zs#)$C)2B^N5jWBMp#1vx$G7RdCScBG-yt9RE9A9|5M!OlKm8iDMI(3q@U=B>vBs6E zNrE(mQLV;41sJhU;TG8lTZ^1Cg>n*|G_tQsqx9+7vv(>P)k+Ts2lsMhV3pWX6-XzL zRH<5QYT+hw5wCE*RP|105~n~pyn=EOE3ur5WrExciyeM~J>6${th+_;SAw{wI zX=$-(@xFQJP!^DyR|G{0cp-oEVB+F4hgs5)Oee&qWbFc}6N?qnDb-@d^_c?)z-0XW zs+8DN$C-b#^zrMmO5$6ZN@j8haepuaeyWt%{DRbw2XA5_8tO2##gp3Mp`1BvvHABK z#HOv0HM7ohaxF3@;BxmhKSA5oYd8D^~L9&+b|rQbQN+)=Q*b@d)5-0mT1fhZ&~Ww=QeB@E9pv1BOzil zb=Dk;A!Hk+O|cvebSJ&Ip{N-yCu5-MR`&|Ya|Xrc*IF-@;uKpqY*@E$*h;qFtmfgo#b$3$%`$U2k@&G?084hRq1WeIX7gC)$R z)aGFzzYDm#hdTkXaMqg$A)Gg;%{QSoFP7!36=k);MQ_tra4iwko8M%=U5wAYtPoSi zZNVlDQ=xi+&&4|Zq)@F@az0FPo+vImzFe)V6;7dqtPW;7pP}OX?%;cxQg3+3zL1?X zUxii`O3~xDm3$+b+E$#0bc^CGr}c~ULcCd#^q_Q9D?CD}()}4A)%i~9B`kox!>e|d zYcoXj9DOniPnc?w0Y z7RO|>Qr4>|>KIk(aipz5S4w~WkeV_>@}xUN*Xf}~SuJ6`9$>sde*Tb}3>j%NQhrK1 zBB<$spo&UH%98qy^7Cs1COai1d8)1|;rJ8}$tT+lR!C(`m{P^2!hxs5epy2gpv4dE&# z7uRbmWi=QoM1Ll1+@!#?wVp7c^C4@=#Xb_&P+OWZREb_9aLicRDXJGqZX|NC39w>? zg|zd|k(4MFQlpaeOv&`PriAjPi%v*UuJRbs%y1<-4hMma8adY5Gr?XvOa&w5C~c*< zAX1W^K`r`2_BiG)M~;}peg--V#$iubF)#unWhpKC1qmU!#)Tr;Ini+tQ%i{o)U_rB3XIs?lGBaLC{xHjs7_=tUbsQqo+edDg7atx_rr zsz!dLmziTUEj9v@|6zkbOs>qu3z|(lU2WS<9W9r$VKvNK7n!`V0&4GC;Um z2$|^()1}%+NT4AS)?Z77)h4r~a4Bud14nUIRiDAYa(ti{iSj~S0QXOX(O6ega-reU z^m_>{mDfOYA-fjK9C1xE|aoUJ%QuTaMx|mo`W&EOwb`=Ypn93 zYQhStWSMVJr97AnG40v2*Rb>qGowKI8dY!@9rDv5s+2{z7o^@%`ad=wX5f_6lz{{K zLKVvyqBueHWYkIX17oZcbB>5bHOvhm0!5()e#g3@()vh;>MvLu+ zYY#fTchWrR{@^73j8S9Udh$`j{-*KNP{_|M3gI3x=n1581Kb@u0IxpqpZq|5fa}IM zTjDO0zYgJvwYWBUz<~bbUkHA*8TkjXsY3WWoHS1Qz;1r3cAWUAe1mD9hT(DqX znD-+wa@hg_@7uROS>vSf!L>0nxnN-~62DiAz9e$q+)(Od!~%f}rEYi90oO}Te)4u%Ur0L=REmj zFzBN&9HE(nJJxc$U2Dee+-0Zf#0m{y^|V@iW)Yc5jRSoHjSl!A*+#M5?%WYyX0|?g z>hDF)D5qMkmVUAXdzv8Dhat10puzc&F(YJd26u0Uyc>f38T5I=*ij=e;e|)LbH@(tIt@&8-sUXEs|SQUeOb->``kIR!8l{aG$g0EV=>(3 zWUOO(#BIlpU58?~97toa2ROq1NA4MIwwiSrXj?y}NVl$mB^ACy?@^ z#S5i7@atlfec(b(p7yLO2=ogmB*5LrVyGjBDZuQdPtB9&oIQJ%1)H1-IVFVL-OwEh zguN2czf&e9PDo62{?1vFwS-(CQ!~GsK9z?fr=;kL1v+RoXnbtHWb9l`NoA^5CH|Y! zcVOWxHA~I>3CB_MK;x9;WOAV<#^S=^V+A8-%)x$_kO|wrJI}s0p9e_u{AVC0B@rWj z2~Yo|1+0`IkNA~1(fPlfpYNZ8=j)$OOr$@06QXb5Q8O`MQEf7F8g}upLNpTn6P^Fz z{NlTfDOBn#x*d<-4@bv(V!-I>PwT3tC&dpuAAYE$JDg6}cQ4?-B;tG1@5eG)gGVGi zi7EvQ3-qqgr}Niextz}Lo|`CVrDj1GTU&~J#B@B`n>1;X^Y>2WGMwLi z_v~0qc^hQmjT{Lc%@_R~9Oezflf{sUYSP`#&s|QJ^V?@e4rgA8D+WGzAs>u>Fl91r zPMnxDDLL7Bhtmr~T&C-XZ>I$xyO{An$ZmKiZ8@cgcyIouaa+f`c8b0!KL_MhwB0*h4oxJ4wF-ok`j}| z+>}&wZS_Y&OsC)FRL+{N3p!sE#vr|m3~(`p!|0FRKLAt1S%W_h5U^Dk4-)8Kr=)5I z^AGOhd5DYC5JwExFWlC*+?Xc;m&l-bv>!gpG~*A(Y2UFtZCQW`<7v(;n~AQ_E}`=O z@ec|RmFqn5KKKwc({%wG6PV!^%Ug(TtGj|kEIFkVPMz`{f7b=S=+!bd2e{Ca#jA-{ z*npYBFo4Ox9UHC>00EV9U62hs&1CIFqi-Z7C2IpGPYyvDANY=)K;!=^Jx{vGleSY6 zlT?yNFe=qIg(!MOF5?5^Ro*Dq*ns$KH`t1cjt(iW|ql!$LJpO~2h~2*!kU#tGw{d>b%LJQ5mz z%49XUgf2~+K4S)%PJLj2C+a;S)bRol0T{$KB#grY%uL1{v5wN-81ERzFKD}f!3+%= z>2Q;$fMwcrAZ8JQ_0!4s-+#{tqSUbhB*QQvY8cxTXNae&DK3q}JHbDjWGB7vOY~@= z_c%TrQpYYIWgtS3=nZP}wIJi{CxJBHH{g~7ZW+haQPkS8aVI4iNp#9j#8nG1bLQ;X zPZA>WmS&=3#xdil^KH(QfT<*x)$i0~A8-u0n&F-`QzMP{yeCkJ#~>1Byv+m;qG%)) z+1-^90cwVG<}A|9A>VuNs&{FjI%WdnIx@rJDh0aE$P+bZE**Qo_a7KkYSyCK#&j(8$7sp-WQNT^7p=ueLK?IWb}yoK*|ZuF`sNHq^!Dqx>_ z+dQJ)^1eAWb&@$rC6}TYqZ-P%8K6H zdGi?xvCVi}fkeHj-ner328=->4VpW59^Dry%L;1=WP|BG7hQi3t=wl;iz5G zn5Rf4R5XqVb?|CP6u`r7UKr}s0)n(ZCLjhNR9}{Y!h(~1F=YgD39^`u#q|lD%2Quh zB6DSp7poR-GlxQb1vEsLjuopfo13-DQ>V-VzF!}kyGzIR6{|12V}krc!{ih6Q$T$c zY4tU7?8M}hDQe0WsmY1sMh@u*dYBIpBlL+Z6b!oF5%MWaevM0+QCfb5x<6A(sGi-m zdV~4xwEP;CG&_R)V$`XhNIiX6P`5Jbpr(GJ{QC3XBg-#3KFqbkxM@BC4PVXHx?Q9?#$Z zHAI7r8J|357QU5QzWizX=^{9_^+`#V1p87;uxHmx-C$5xg_(|D-xbtg))$p4LLZE! zi}hfLyMPA!=G$o@!b%H4-qK`;1h3Da2D<=h2Yd0@B_b4NQ;yov=DQC+)gtVtfUWqd zX5Jj?Ivoe7OSgy-bl6fdEacG)v@E`{C81@TXe!SiDX9W7EDyR$bSA&t5kUxT&e1?+ zl_W~f^~XQ_@el7UiVYYMGt$)q;FibN4piY;PVV6QkM7)IrhjP-dab{411!=H> zB8ni{@{W(lx7#tc19mg@4hCDX)-)_Yr}-VP;2A_@pgfAIqZ>JD^i z?GUNdL}+wbcKaq%!}|Yl+OXLurhYoAHJHW4?G*8fNFR_Y*<-0hL7F1mjQ4+i@9ncI zAdZCYNp1)*6h@+NBHPr3{gKpEDk_>tsmEoydN&{TNvC{r77@uw=xJ)ApAe^Lqp6gm z>a@)wm=i2*r05r?G|MDHXxL=Dqx~e3`|YS%)caZ+sm1wPxk(>oC?@hsuH<5(Qn}6~ z6&mW)2Pc(v#lV^Efw%o0`VC#Cv*%FFQK1@;OXT6Q`YPR;1h+6)WbK|$ zka$I&Ideqg60zN5r+8UJ*|C?{9H!i?8 zZ6!BKDC&Z)!8eg-jDbR6m|CC73j`odWx}%=S`p8gM;+)sb`+mFSrAYeZ@3R1 zLL8xQy)@BCHKwR(g|ts3G2%FvvdJ4n8IXeh!-v$N>ms*^qTW|iuCUFfLD(_=G?F4x zbdw3cs2~+Y&9{(Sy45gQ1wGRO93W9!414igtnGW_jl<+p*#!qDO|-jIDu%bHG&NJr zE)lZ1THQfGLJis$Qb76X+a+zK%s*&p^k3;CbLRnOYc3iHzbLzmgDOc)@>rhvK&GbU z!!=v7!Zm?iKN4!A2{x4#L9mUkvS3>{{MH29!eRfX1Y3y~Y$HaFHb(y)nYR(chaxo> zuGdn_*K5N^jU8W}URzL>UK=?ku>!p|b3~bX?eu?Dtk=erq1ST%^l^oH?dh>)>9y1U zRSCT|Z+IDc?T`OmkzQMpWGfk7_!QJ@t^V`N^7UH!{7I4ZTDy+r=(RaBCr>CtuXX5B zCB4=uhO4cc)@xm3E!lzT=A*LnWu^5Rj>xToUW@A)S+D&qJYg21*SaV4=zDW=t!KZ) zn~-b0`whGaxi)a{3|mm?H>gO0$Z~D)(BWe$C)Y-e9y4}4*7ntMO|oXya!qFC%e88`_Wv=t#tO#|@cmMM9LmrKx2p1*Pu%LrJWX_$_@4L=a?g4v zq%YdzvTeB~9Cu;jX4b}y9)G-Hg9eY*uUiLb)z>L-+(xXr{{^tPm}s1b-@ZKx9Z^FD zJpQwdZ^7fE8#ijC@%8G~ts~zgx%HjPs(W5STpUsuI1-=9n$~Uf1LUG|+%k^)3<`1L zdXvVmpy6XMpk7^7S3P3%@%P5<@^Z^3?!%4!ocIpNG_`8cyany=fV#V&{eo`T;8EDG z>iX+Eq8@S1N*XHutL{EHpkhChE9yJ7Z{G&jWH)QlxE-DVb6^4P^ppsMcu@Nh|;V^oa4YqW|kKomfWtC<@={&-{Han*Rs-|P@H6c6en1hpSAAMw=24j`%% zyp#IT01sT?9q(VU>JKI~!xJ8B&`>O38(2O_20cP#OS-LE5YGN;1PcSo23_>%+ z3++|!(UxpLX@G{(fc5Ix;5xOXrVq7wsVT!^0QU2W^s9g~0F54dtiA;Ma=p;@!~X>1 z706Yc%XRA@uYu2pSlKpdLOi>TYG2fb);DbgU)ffd>pW7sPN4MwuWQ3q-TXRrv13Pm z9)+2d*b{Ko?qcf}5E}pA8=mmAYu4{uuOO5M~7K8H$U8Bbu zFwBoU{P05$s0Ta`vg@k)F4~Si28^#!_gj_;GWU)u9bUKHmkp;qf3#lRN5BiHx?kO= z>N~*;s76NBRrSx-V~L@L$_a0ydZC|)*TB|+$qzhm|NZyfd(YkXNWf|{UIczyul}R> z&IQQCMBXir;=z$4y0vK5xbfqUX(ULm3G%MH?!2outR>W_`*FRx_0S;oAFZFv{aBo( zGH#5NIO03?c1?hW!*w1Z?S1#%bNAhM-Fe3yzrVA#s%--6MIh@N_031Wps#YLJ-;{w za>$S;no6t)g~5Wn^N!yezc0G0PVG8%>edCVg>CStjl~WKFA5(zXz-w}4IistuTJfU zA9&ziI17{S_`T!z*YCJnpfuU2Z#?R+-#|4`eL}vWAFIA z`FnMTy3==0-Fikn6Be5d{_)s2dde>@cq;A?7E1T;+fAbU!2Q6{Q^L$UJ$KcvM@GV~ zV(cKiHcSoqjV023k%??5zTR{9ov>BojJy1ITQC=3k2M@ErzNXlYRIpo!@d&c%kJ$N zqkHcb7fEN{<+=Ob`t=_*K&Kx27PyAk8lsW>3K-w2<6PU`y}Ngh2kgGP@3Psbmc~ zGMV=TQEW`zFp%SJb&vDj`x`WPtifXqqZ+EmeSeyQO7&l!=!dN~eC&<#UCjTO{_EcZ zDkW5oyNtWddyIR%4>V}d(9zI*{D(#^*Pl}5tJglgm~qCf!kDi+Hx!8fjysJz9d|kI z_T78Wy~e$s`|f}2v4#d(osXL?KmAc2g7enlR z|3eLxpp3>*t}FjJ0hJ5j>DDcVsrU}9EQEQN@9w+qHY}8JzxRQL4IekaWi<9TK{D*u z0|P7&UPB!^wE6w-@3`a6yG)p;dCdFO1OA5}M<5zEYHT!CO>T2texWaC-Y%UwqfWfd zz4-l|cNqc02v86D9(ug71HV>Hf9EQEu2*My!?bDJwhkU1{#*0GYY)|K(ineugIzP% zzqpDvB*@FCZQI9h{IPnd1XRYFkI;`&+pFx6AeQ!uIVu*1uZ?!r*`4LE}O1 zLk~XmuzJ}2$iw)#oPck%xWnc7$D&Rx?+L~$>OtSbe5QKDRlBYnK5w+R%jNyYlKar! z>b|J^qhOqg|F>D&SHF1+qlIeed-GG*oi2CopnLDT?|yBT{S#H^T0KmaEnBu~b>hSu zpSphUa$o&(b~pYEHqlT0D9-TS`uLgA%FoP(FZ&bMf4GXzeE8v}R`=ik0L>5msZr1W zD1Pc~{SNaI-eU(pL4^E2e`tK@+tj+$Z_RqDzWcFOty{OjPg&CEJMf+B-(AC0%cthkb_*1L6OY=703zN3dyjvwHPS5U2)4m?|)lHF~@e7<7WcMB$jq z_U+Gh)p8a8{lgCd;UDuO*OM(U{XN>ifETKv8<<9o1!KO+DlljE!Gl=`_aAiCbh$nQ z3>fv1|6}}1ee9hRz^TX0M(T){*#-5cU)QM_+5Ut00Lb^sK@4jDXK<_rK%S32J~rNB zQ;!>sJdKaMMG%uMN>Uj(srP{QwY>*W|Lyv#ri}W?__+Ak1o7(e#~T@qN*V*iTnkby zCej}`U*v!jXGpxde`gMMv^-zZIpZVW#~*zh1!NMU0bHZTsxgACGc?Sa5T;%)25#TJ zmtWcXCsa@Se?(B!$9@7`pL~3LlJKdRvNFW{l)uUdF5rI z_Uudm_`UJE0sGB;#w+S&M%aYu#!ml^oyJaMhi_{ZMznI5CA{MM+_LcM$T#aP3a<{` zt0cUNg2JmsC)MePN+_=hBLR6WUdZ==`t5q4g>!C{Mu5M7+mShXpU9~Hv zyV^$9T~JeyY!&OS$0O-3&z*NQs7QCUji|fssb2}*)gY4YdY}@zt7!z?Ri}!&t6_z@ z>!H%ROWosppkm?ma0KC1r()stNCe^4r~=_tC$jK*xI*DoFQV{jRG#p9v@GHEa214C zqjH4TU6F-X?a0FG{)obhN-C1@svS{y)r%y&8blUeEh7l8dm;<3$8Qu~50@jn>Vylg z24x7ZMgigF`^S=dDVf7`S8GdmK~O<=9gnQLuotLx*E@$rcU>q`cQvwf7xa;(yFM;k zcQq5;h3Y+Z%zISpuCL0}U8n>-5*3ey27ii>o-aev**Ei(| zua<4wQcUHP;434j11-HiElYZ}XvYFT`SyvWRF?Y6`|onpm%j-R{Hn%y(|E%cUtgCm zzIYOr22dB>PDK+zdKCwx7k=)iurVNPN)8?7x?HQTvt_EUVy(WkAkv=*@hcpa<=ZC$ z?9=iEnES0GZ{pGP7BxqQEVTBZPd>rH};!>&WwF!CVIDxwAu3FdG) z3n14i`)<%+UT84jqy&v-5@x*a!dXuHv?$*cRRHbjH@Am5Bg zBFs(cMw|ztH0uD(G+y(7kRnX&wPe_(ziAnEHAIHt(CMI!L5vgPX78RYf2Ih#^yMd| zMHs1!gT5?FAV9l$HJ6`~NbUCS(K_tnm**+pEFI>d4$G!2HN`;ns(=4Jwa<9j1-9M0 zDT_S2c5k5yb6vXd_2=i$exg3{Q-=8ARFEI%cW0YVEZgywGFuANXwKFF}&xjg^8 z_~lo0?kSF?;r@vZvs*L`c+z(}UWo5pa#8gs$_32)={?fU(iZWll z;>yxrO)96q;+Zy+%vWjs)u2=5^j88tGmD(~s@uAf`m0M>`m1T>5?@`)&|e-bB`X$S zoyrnm4JsqR+Ls}~m}s=JS7j!?+LRJtC3fNq0?J>R%vXyt6j+@~D6qCVOL$}EtA3>v zSo4Sq?9PUjRA3DwE3mtpRHVQfM^s?SZqN77#pM%G{LZ`5C*DZN0}i%B`zB+`duQwyBuLh;m*V!`FSJTq!%lOb$ zM$*fHj8~ZQ`m{{tJ5p=0=`blR&T;q}oi2(JqtRZ)2T@|UU#ufJ4Tczt?H!s|TX z%zxda@cQf7kE$rVynj9WDN>Q{swl6&p8xFZr=M0$d42h}b7yZ#dHwaw%_^_Iow*t1 z^|$}y%8PY}Qg!FLn1??X^UOScLhE`LM<(IQbNPhx*ii?*cEnDMgCDhF8^U!6$+#>j z7Q0v@Pd-jH@hxQ(zxQOm+=Z_k@pYg4UcKSM0Vh!RaK(JYxacK`k>|gJFIq!D#!)xE zAp}O!%}3r+Z9^kAUan{A$x@@@kz|O2PguKcsIq-TN*|dXk_$U-)HvXNjmun^uJY7HBhP*5-FM&Np+#1#_~EL4 z01vtG$sQ4C$!$d&y8^G(HR`I1{yaRz%yV9X^~X`X!S7yax(zpQ=8v^8Wz`1A-jq7v zd+k*gbJokF35+1jIDrS)kKjo|;=OG^6w4T}e*w1v#d7(g1EzZ~<*{PKe+>V!4=55C zzvA?BlPU^Zb`~e|$XG5L7i;Dr$nTVoAs3Gse|7((NLE}l5i9>iSZf@2AG5x74%iq* zMxZ)S!kjhBD=r%B|FXTx50<&PX?YfgG7jPzX1TU;|9;d~G(hJtBrb^0F@fvTm%^Ph z&>(15)C&lyo22_$Vu8@WS~IWY7;c_8#<6CfKcwC?5fg7VdLny~Wbm0?_po#ht>9(1 z#Q))-A*JtazJ&v}a<32rK+vpfuyXUpWB!Kd32y1qh>}Y_-X$wbXo&XU&cZhi8;2dR z)nP>z_i;al)w8--E6-=eMjw*IpR>oZFvN4%W@B-PR08<-p+-$z^ngt|&LvC>;U4N^ zj7-!*U7 zx*K4)AH~Ix>TM4`tL01tIL24NU<>Xz;MUY?pZgV7p;)tpiMdVS{v&TWLa;n~i5q(8 zKIjUXmvt4Y5vo`8v}oowV>ADSZjViVac*EB91g?D6oHtp1l#G~;W+ zPLICi$n&sjDWbhZ{sg2IX6*klkHf~%4J4H6tzt|CDBaO#FTjE3+dS_MF#ZYgcO`V*IF%ye> zW#WQtd#EW$r-Oq*`j(3m9lX<&ihIX=H6PHFYClU}N?21vHG+;HQ>V%+zLbZcNL&KO zh9Qmp*DV+K>}lRYwJ?HhiLS#ff6p6w61dS(Ls(g8vu8J;?v`S*Bk$TJT)xAbV(~|R zvyN@`QmkrUp^hx}l9_noNHZ|6cmUO}0t<@S)gcK0@2gfV5ci6&3+ZkETV0F-?E0l} zLJMWS?m+R4vG00-Yc~>7fzGaL!}u}2IA@t?yzYDTwO3iSW9%yd5O*EGL6i|8J*D3! z_GEoHN~c4#fv5{I1yoEn8|B=ITEaGHOXH#=4=)QHkbqYKP}D2NUcb=n@-VN34(iBb zen;m{99iDirCcchU_p`p6;y2%;bvLvYVSgEXgjog%{&*UG+9Nc10Kvz-10~IN?Itab9d#>vfm)w>T991;z$7%xZdEw*qw zwzo6dNzc~95El$G=VHEI^qP!v&T2MF?L}3Z+RM@^|1MNM6>Z*yM)Omzb?T?b*8+*M>zoTbvoIls{my_7NNPx~#eh9m^shIu zvhK`hVikh;`fE&?*v}@$2aJh?g}L*ph1dv0lQZYkIp2Bqeg7roLHw`oH!XuSk*;;K zV7%CH)5ezsr_Q*~ojG&e^B(xHeVfwAtw4G=Z`rb0X{g#{ZuD<@NxhVh`wekd z(6i61U(X3%uul4W?);8zW)NHq+RdBrXY(etDQcs7NxgU#H()&bEbsReq(yC>^M%qH zTO2l{W1|67A^0}%ZrQb~`F1!XO~M$dbEW9OwNdCaP`z*!K-^z~i%4GX*{pdmLW~Xq zgFrYoyEl~rspqb3;I)WrRNdUy;_p?YY97nd$l-aQ`{{E9#tL7hpr0n;mF*|K^P~B%;4s zoR*iXGEx409v0J2^PE$98CuWcGdB4*3Y~h%crjlZ<5|m7-f35@DXTSQwWj0?uUb=9 zYf5e*RclJU(wCx^YE4mRGCDbIiNV-+>!7vEsFpsJeEyM4#b9cl+PrF$D{`F8A7JJl{X^e?W&tb(lk zp85{|Kx%H^v18}XTho>vXv^ncFkUEm@ug~Q`9H5M&)%xG{HjXY^3u6#ZCRbKtjbP#iTl-68Xwz z(Us7aq4~o-Ic0J%fIFQRyAq)+1GhUXWxRf+yyo1Lsrt*S|D-|r*-Vv zi?rwdmv2Q|Zr!$HCmyute?VKls9r37Y2)TRU5;jGACG-J}i5|C&{eb30QZ18w*S}i-G9F z(~4-BfF_Kys**wqegd!};oGcnM*d|4Uhe)T+k|mrN25qf$+(INCA(&!Hi>fv+p7R~ zSi`Tx3FF7%P|b*_0&OBnFJL7dB#_64TA-05SVqPon=mr}HmTYu*|c$^?v0N80-7g8 zxF~K|Bv4U+YvW7k9PEdM7KFD@3>{L6h-EhxksCxWy@crdX`xY&FGLzOXdvqx^=Vet z30wbUcS46kZ4crP=Ky|D_kBdO0Kt%JFXYtC(pWFC_`VvYKrBot(%=`R5#eP4pd<8w zo&EdwBd@u~CskFBU2ffru@?*=V*}O~U%*846FN^mi1Tgefd2jZ^k#J)4lc96B^tb4 zN4CI5KTosqSFu6Ci$ge{z>R=7eKHLFgGR&XEm9_AaX$#Xu_^cE0f93-nviMH;8~*c8-FBtzWEf2wmyUN(O-wi-tXbgvKNh;~v>(&}; z)f(UGHLHklugqAPk&&*_z3h55^G%rea{fNI z#H;%;FfuaI(h1z~Y?zA*9VJs`mXrdgp`+J;xtwv}*t&Esr7`V=(F)cPjE+iku1H%U z-6tx)_&HWzu3fuk`7&dfclD~(tBh5iK!k3Dx&U2)=vw090*XcfUY)rN_iisiiz6Ts zk(C+jsrc_<#BQRO!)R+(`?X*l(SSd_bn)Uv5}TD7Dx)|(1Fod4NJ|UHUl;r`tLy(- zkWUgc!4j;^pL%MwkgE(cU9E5|_b*$nmIu0ob{g7bx%8(i0?Sys2(SeUL?5XPkFcs0 z=5n>nSn7Xzsak5JtF%H*x_lYu2K+VizXxST+6uwWn@5i!mT2*c!k3DgTv)2CI7&T7$FEjlgXT`fAplxnr; ztQMVmaZhDjEjp`3XSL|GRdTiHgqZ(-Uv&QV|FHKS@Ksz_{&?=4@`^et2ut9Y7@MXB z2vF~h-ix{f2yA0)fx$NJalv+Mr)LvqH|rWZiS5LR6B~DDQ-8Y%Y@Ooq11B(vy&2Oa8n181S2W&be)7&iS5m&)hp;r}M(qIh_}-&gpC>r}G?S2kdiR zYQ9>Z^NDNnIiJ3IpYu`poCsz--Ttj-@uj2bmG|4{e6owr`S=r?o_c0LKIfx;e9lK6 zeQeW{{qs2=^y710e)yY@J<%BvAV0gi%lTNZE~oT>>!C*;BcHB!m-7K~S9^6iciwmZ z0}qkkY+8o1p6pkmYln&VOY`aRw^C!=5di3E(2D;d(efgblvu{(9z*EoCO4t!JM7_ILa5dLqRDTkAZz>8S@FxR2e(Hk~upJIVF@c7J?N{mZA= zQ|F)D^u%M2-FN@J_ukWW!Sj*Fo_Ok8S9U%j{OE(ouk60yd70#Ubv{Yzn@`+BYnJQ% ztarlseE88PdT~D4V<)h{`S3#G~3K?7sGml(e~e z^{td|`>hhkKTFb8mxuhdJB^NmeYaQRTZU67S5ZC1g_%39AxUy2^f=;lP4hq zg-%YV4JL8K@ZWk7N1~yRd|nO?9ySi2rvt$|#o73O^R`YYo@VRFQ!KB*f!Yh_8|~vf zi_8={|Bw!GkB`T>;MjB0IDYg`ac1XD@j7&#(j0Nh^%5U>oFbn#c@hp`NB)ejIE(vB zyfOCMR#WSyIMO5`zNoW(h+_bL#94ep0;PdsLOaEc){&Fw?SE!^3Z1_=F;TS6a9FiC zJe5vQW(nI8krKL^vOAGFSu0W}%gZPYav{?7#0|(pVwsS~!SxutkROY)n*T(Z^9hMb z6DU0vN5=OQpF{EmhWw<75XU+2V?C4iS3?}~6CjSk)8rvH(rld)9FZ*8DG%}Z@o{t# zE63iMZC+_M;ZGB3?!4kS@*4@6Mgm|Ld7K^s@$qr-^v`%>5BUjv0-N|3ztWVcSnTco zgv9u9aU>WALGcgvd`z0aAiir-vXS3P$(csu^C*W9jU)RoFGoxtJKdTxxzQZhkyEO*dR3X>8$WN~3XXML4y>D?Qhfq)F$B<9u-Hy(w-q z&XWELacr8UAYo@Zu`nc_)#mn4m|!j0aGuCqjrEh~jIOV%eRv*f=R@+qn2 zGuKTX`H*<{la21v)0TuI(}aBTWHy;k`Ft|9o|2lDCZ1S7(pWR`5vLt9&F0x;Hib=P zDW4ni>FJm{|MEBoR7{_E+9!%FDU<&?*&KOlYFY~Zrl)6Q7~;q}6@y0>Xofh6M!b9G zGlR}E91(zN^EChe(D(FoA)lFvJBMf9xbY%0laeb<-D5m-s6foRN4!mlXJlk%u#A^8 zv$E;2^T^Zelj=w|lm5glpy@;Nlc#uRj=G+im6e^DnVp?uJU1dQl=K#wM~0=)JuL1b zJpj}Jhr{ROcl(4Qxb1-EpJ$GgeEXzfMM-6$r z;7nmraWNgl>wEh|1?KDjmAH-Q1!_p=>1`RAbORvIb5ElGg$0l=DKR?WF+H6f;E7%2 zS$FyTf&z4)q-5GOpZ4R0Jd4*!fovfaFlmz6fpnw!>>Qf^JRBocP*hl4Qao+i^y%KG zuZuWKI!W9F<`v&HQrak5uQ zxOv9lp?q38o2SVajk5x&=(vyc>^ZpkKGH0SO>ogW$dgZ+;u#sZcNjdnj)|wXSqYnV z44t1fd(PZB^X7RDR!Knatx&!~{5YvTnm;2RG%^ZXg&{ZlW^TV>>lTD-+AZ%wae{F2a9uxw}vITXv)|mDVa^aCD3=Nen_lS+45172iDla$l>hRcYhxdRx2N zE_bvEy=>IamUpb!_{yuV?Y+b=oI%nqJI5~tfuFTn1v6{s9hcfWz}<1-!o>?`o6o3cG;p#Ok&cRl$qVR&6P35N z@iu03h5F7r_yzs+8Os@~!O73F3-s4@>B5Ce(k1kxP5fc)4yv363*zbK<}=b6WKy1S zqLDK#5|X@K7tWu*AYZUu(puXvnXE%6X4i$&&1cvd)~uXSTIdrm^}OT4d17T3v`ZH* zDVOwCj9qVSm)g}1enxLT!_PRH#W>j+sl`Frw3LI$F0k{`1^p7_oRGU9gwR9QDz{4= zyxDOELL@A;=wgP9FGxD5G5p6bfc1im&RuHdt(QN3?X_R5S#$gC1xT?KjY?v=6eBkj zUm0A`&tFh4uuILK;-j_tJL{KChpHz_Q2=G%e5RQtDb95|Z2R#Y4FBjx~3zUVY0-xB%6az%pG#i+n^=Qm_fV{_=C| zIql(%_p*E0-JfqDU+B&|?pPy`^a^|eR9Q|C94JtHuL7Hd3J8#pQchthC)4RGIZAXj z(oV6SW_Tv6_^Kl-(ECdCe$o87bA>p*>nJLKIE;cJ&QedM(R!&Nz8)W=k@y<=fQzj< zvXVMbfexSoQ{HGkH_I!}(j4g|e>c1P9q|R7r+op%mx&5W7X!r4#?*=90qJ`SA&(>7 z0XRtQQkpI;V6HR1Ya=&+tzvaY$%#S-Air<{bpc3J%zPGX8f+>{aTxNjym#{rY#kMKqedT3#!jV$ps{Nnv4Lz7W@Q^LSocehzL2nQfNyImzF03w57n4{)B^$LCf{@S}7o zZUY8TLXTi}Hoknxlkzl}SyrIuqCTF}k-Pdfw7!z9JRl~YJXpgKT38BqaOvXthJ1c* zHjoY4mhyQ4FWgpux^i<1aNDU}aoeiUa4CUtygouy_|YXrd3o8nXqM$W3i9#J7xF?@ zq!kyUu73LA`Pb}+XJ4})p5ej5SM7(VT(cjZ+|!L8pdXG?**tzUo#b#eet5z)`{Cm~ ze)wO!p7a3y@VIewh{ZKI;t2p{*W`#N3YX?u9Py5%c&{UWm99AO<<+|4e->yknf!4; z!mIYgCzJFwc;bJY43vH?jyRjLEd^lsnmqBXDYPM^FicnNiKkz?Cl0R@?(kK3;y*TQ zDlj#<)7RpNXJ5M`PKM#y9P#{XcEn-fuGtYU8g#@59dW~rA9Te33mow_!x4XFxA<xp0N-4nN5 za(>m?(Zv_PbOm4B(R%3;ymxZNonIO5^gw)Z?Q#cXrH-~U=+%JS@z;NORqi+i-3RK9 z=fEerHg`NDW6&M{Z*j-5I3xV|t8&Me!XfW;#|yDAiJcn;08_yZ^#y!j8gWmYyvbedZKIo1A*LmZw@4Lt@vPxX086R{Y!A;adA!8*lB?BX4bUcJatB_s1hAuNoeC+gY)MJRpx8 zVS}sk$UphT8}P_i-=2S^1#%}Xkl)Gf{IYf$R$hzEmFMm&}Ns;Y{T@^*H;_R7NA7#@ndcD9O0vJ#tIk}I>skfl6HHtkD8me!~#?Ti-5cfE{VwjRD0dlwJC9th3TOCl;9xqXu*Vi{w-TbwDid z7v$x6_Vr^aJoT?$@%6MuPU5%UdW%@5r4E!E9q>qFao0y$O6^FaeQ)pHz&3pDk)}1; zTUJtvfDkWTgqar$%eYN6?dG0>EJaFXY0h+0nii<*Mc1k6l`Amy=zMv3=^}J~_AKna zXh@6I{j?O0p0hNb&hDm`*Lr2K%4*6|ZUgQdEwIz_I@YH1XeUHu7Ibiq7ugN@NPWXRVo4oK{5h*BtC+7mfV(B44n66;IO4$Yn5zSLQek?CYk{enB*eVLLP z(^3(N$z++#N%>0dIJc-ttZA`KS9V7Sal72(-Fj*oOJnJj0iowOWoMk*xa<(AbRAB~ zscY_WZkFEKnH}g(ezD&mmQ{_V1Rl>5AyXjfQ-l@U;= z5vDnu+Gl^%+&8-0@DNcZ93|nkPbX2Q25DXUjD0rBO}UAzsNKl#qn@;Bpnvx1r=PjM z;U-d>AR%#)=82jmhL1n}^pj8BBi*d%D-U`0%nql;*{*@|$;ThNZ*X5kmX49}ICJ)F z61<2x!Dv4H=#!5>0>{_g+VmOI*>pDJG8pE}71JZ5amatfKf)cn-u)%g9kJK}@|?Nz zsOu7@PXnEOSOVAATq**~~Y`y4n28%dpSi>+iq!eut>V1&$B-hwKBs+4+V&f0zAU|HJPYi0rp|t2@$-T0`khINw8c z?Dx(;yz~3tzr)_)zh!Uhx;w%xbp+$R#N@n7V(cB=pz^obZzA33Hg(=|!h5QZvOZ^vMGy=9#7VenF-fsI1)r4`p zNmcP*vR|;*!IPm=iwMkSXXWJJ<}l4geByW;hR(hD27ANxE94n69P6RK<_>mWO7-Lt zBcl}(nABfW#q2E!6?=JIul@Y8JIL)!#gK%pKvq<)(~6-HGZzE$GCN4Cq5`z<>C)*Ekj=?bd<`K#>JAh%9AVr}IAQ))A28WK)T+y?fB?oWoj5{QPf zkV>C}mhxG?il?>x&9~4%*WsFN@K^M$Zab!vWw+%BGnilCRGnXV8V^EvW}I)bH`yB<{)G6;`il^1gDOS}Sq>RIJl3*!?6o)F zkltXwV!!0L5#DC_%lt)~yMt^qbSjK%A@7jT3Uf+ta4@@G|HUs}XTJRMi&nQICoeCT za@$CoikFVmuS>%?NT^#2%8PjQRXle{VrvE3q*!?$uv?)x}h0KtW}7;W**PL zU*RtsQtW36-XNsR85!wp8fJ~=+KI0H;&s_~_=W)g8SJh!2p|RlL{9*5vBdZ;1Nfo` zfMCupM)Rg^$R~NxDtL?bS3=YFz^F=AMX{t_I&^dr-N)H z!HB*fgv$YotCC*(a1cfOA4L(y2W{Co{Y4Rm$Ju`r0dqA#6yXAj0PbLU>Q#UU;b1v6 zJ}@K!PylF4)^}iV!U;H`iFa`jPYmLT!GOd+a6sak@x;t)#S>prJYo(47FP&I{3pSQ z#aDt8W;o)5D}^JVQm+gqtOz&s8IMp2;!!y3>H`www+LnHFDhX-;!}MECW1U+g@2gn zMC<<7UPW|b#fr3a%nc`(xsTukEjZ9;X=!k^uMnI7BR-bq2#)s^nn3UZp=^#Yc%Q+E zbe&pcna(U&=KcjIQV>B9A8O;9FO2LmjjZqZM0#2#64M-rbVA|^@d*cQ0+5LWG$#c{ zQGdT86f{-`zCRXtM5cgAzd{u0nHd>4F$(cpmNyV|kx) z&vA)K`2W9IBrZ*LJ5R=PDw*PTIdZ^)ANnnvb0+B=%S`$Yxx#e`OH8dFs$2pqRWs4; z+#Mmrbdtr2Q_~GxhK$A~tS)ISai~EDH;QoCn$9iYPIPO|nW#>aWYm&??pEWtTH-Itlw~J z+FI(E0*ihp~0Ji2~z1s{wLfMtE_tOiNxNz z-6`w;_Pe5R`HJsJe{YG32ix%XTiDUu>NMLo>qvVn_NXyp~<9L*}F!EViwKvgNI3QUr0a=Mh<$_lwcDwhS9 z{v0t`BpWnVJE=GxX^^?-l2RJv){aJ_|KPDpZS-h^Cj>Rn@GKzfE2##K8az~6g@Q3j zW!BO_xAxZn2-`((W#}(Wj)p8zZKVNFxH+H(Njh#P*TX9$QL7yk{bg!Xkpd+swSWp< zp+Y2})b4h;#@lRWxl+L@EGQ2|x$`9(?m_@nC39BowKHW(AvF(F0LgK#i*!8+BL& zuU>(70fb?-yf#R*VilFL3RSWxdN67UuCa-R@eoN?(IJj9JJ{4pNtB^G46WP2rr`Bf zC5xh4P+@RQ0JxM&#VCpZ7ZoX0a;1tQRncwUBE>9nMIp;72wW<-EZ|ZUm(47)R!L@& zHq>C!s;aBxDy^~#@2{moFUMeHMGGKeU^TI;6|5W@NYSHF6og6*UKKh>#lx;J%!z1@ zYElH1qrVcU5@y9)j{*U$g6iia0hwwWs+Ucjp-N6DmFSuPl-sK~%5icjDHCWmB@o4Q z|Lh=1s9d2^nV17biG~eR4CO=3YBI_({s2+EMU)IhiM=`yC6ZCGRIZnyFFLUjK}NNt z2Qj9hsMp|C%+5jeNxID}rn@2G9YRrLjolQsV03bsf0cbhKU8+egI8AB4yZ?Ybw4!r zw0>#qoBOS?Ls$2yvC$`?(EHTb)BDueH}|En10L#CV^{U2u_yPUvBUjqYzb*jYkE=H z`TkXQOiz^!)vT=VO=nNPg3kVWuR7auuV0-#w-237m37nE%00d7>|*~qdxTeKL+vUX zeUx^AuhJ$(?NQpd`6%r~AEj-3vQud<@G9*QUZuU>P}-9{O56UJKczjhyV52d-9>4y z@T;^(`&HUDsN#G5Ywf8$wYL3np^v+0?c$zVJFKVHUg}lRUacMDE%It@+B>S7*1n;q z*1o+jtv%Y0)?VMM)=ua}Yjc_w|7ts-7qz_ss?m?y9*^RlYWpsf`d8aydZ_KSy{YY+ zd#dd_P5n#;!oZC;-v@JLrqDTggok0R45*1sNE;JIa2*q!9k@g0c&QGM54B1q20f_JP{NghH1E1owg3 zP~7r&dQsd<&2nq0URKKRj~nQ^6LWvVP~bsCuy|oNbh!GwSBD3cvNA971|qKocqc?I zmDvq|%gQVscU~#73hAOBD z!zGi@0aj`UkAcTExQk#KhknRqDu{Y%nH>P!faV5Ov;54f>Sd#w0bMbA73elR(n37Y zi_vfDqVHeu(f6gk`u;i}egBM)zR&d0_W{4_)c0$=`hJvG-#>5Y`$CVt4}8;~zF*#5 z-^X^>_mBD2_Y->6_dkPr_Jh)kd+Pguw}d9|qVKDE>ia0c)di)m_bPX9~R@zreb*>dC99QSx(RE&?(RHCKJ5U={cvGFW(%Zh-=xC$Sz?H1hDy*qoZYh&X z@$4+OFVib4Y=|mB|D(XNJdg@32q&qcKwTcR%phAqR&b@)f~=wf3kqZuuv)stlZR^w z*Sr=n0bEm9hJ-lEq*{ayVCi*=1$hVz1i2Pr1~9wm9@)UHFJBh8OsPdYqTK4`3|gkv z@(LSljh8QQnWdIhSiyv7SY5y}Yc1S#BTl7KAgs>5%vNhdH-qrow#;5@#qVJJw&J&5 z16B*dSr{=cSq)u<;!0f>NJN^SFmV|GB3%u^m9i|Lme)wQ3Z$o#CQwF^RD7L*8+5Spp@z5M1jM=QBr9P zej7N73-lHZ6Np(fU=#zn6Go9)WTit1fB2v%XnCX11EkPmGn1>yQ8D9|I^6Gx;&sOG9n<<1sR!G$SU9q;T!`C(Y1k%3@p@%jSL*r z6&o24$PYF$VNf@46x;(D5e({vj0g+$iHryhT?H~CC!Yh)w_gR&{GcRY;{CYzxK`_lsMVt$IV%5TXZ(l9#|B*n?~~o6BmmS(#OT z$zThu8d9kT+ALV_#$vBz)n5iP$!ZlrHoHwGMs;hLhYKs{R@tikc-vOC)!DFh+t#X3 zvD}5$1F){XfzO`vw}V?SMGauG8siE^N2E$U!m0`qvuKz;X6<-y+qTcQ zeO{%CP9ZCyLdK060xpNeYQZ0Fk*wOQ+dgNXqZ>9%1w%EgLJ!4VAr`CE!Yqna{~kCr zRAlwCXqCZMCS-u`Bs1eI+(o zzE7>ZxQd*^tKtnDYia~f)aD!2BUx#WOCH?_BU*q^q>s>lfN7(3xSU&jHP-9-XB=aeC6MHpQmj z4pOw}uDnW*Mpfb=6r`UEk_#JdtO9KahKHUWMIndkQfp*{Fc1{CtBPHrlonZbePip^ z2G-!((y*-72K8ZZ=y^(@Vv+S*8k7do5EK!>9gS21kn*Cvy|sZiXj>X;thcN*g)YZF~Dd~X@n+#rj@2K2;&N|@xZ zJ=K86A*4YP0vKBe@nc#nuRuA3p_~F+sAwoEvY{f^gWw;6a*N1T&@hiwtj_{_cmsho z(g|9iQS6M`2KMj<5$Cd0wL_g;XGKkvM&<@OcH$h}?X7#W)(2pn|+0Eo=w#}w_F>TIDVRI_{+nfgso0Hka z=Bzht&P{%7&ML#^4DoMs%Ao=~ZO*+tY|iZNHfOazo0Heg=G64GIa9jXoW*`@&X_JX zXI@vEb3KfOX>-b<`a5k-pkZ?=gq1LD&f`AjqgHTxY|a`~(`j?ofabM1i+zOd5w*eQ zWck{hO}^}-4Vx1VW6;IsgrFMJ=8OT&YjZZCywm373d2I(gy07&hl| z6n3#W*ZbIsw2^g0=xOlV*qqf>1dot1u!PMTqK!VUZ3V{{@6%Tnye=+qk| z>kkYeAEQ%f7@cH)MkmHFI%>TiqqEjDI#WD$#mDGmnMTLH-b3^;I#8~L-I(Fe=u~;A z*ZVa(H+YPW?G8Ui=XQ_LSA2xdl##7UyR4LEEc3rtFu1LLm351r`1^(;;}l)Y7lx_o%_Q)RtL|4kJZU0 zt25SPb>fAMiSw~KH<~4;)fweubxby4b#C;rI&ogBbE9E(s6co*#ARBYv3{)1jXqZA zW*@6_qmR`Y+0*Kb^szc4{8^phomL00c26%SQdk{ZPB*I)Ox9&oFIFeKi`5CY>aTS* zI`zWnjQ4MJUNVf%^<9k4KN&_R(vQ)3!Z134{*BItE=Ffc52Lf9yV058&*&`bW_03u z8l8e}MrW)aqm$gl=#1`abZ&yRFpbW5=>ATl6J!`2D)c%!Z~EAec){&4I?th+PNOps zG_TRQ!$)YUs0~JEj<30?li5e$&P1+#oEAX>=azVszpK z$zybu8b&7rg$#}kxiK>NqBq0Ofx`k1!*Ey(l2p|J1WiTIvv7N)n@URBH#bc9z%SS>joAOR%=1f5S(iT}bN}}N(!oHAd)rL`b#`*-B*chsaZLJZDm6NgoBGZ43E3!iUK;+5}-J2=W%aVT-iI@NmeF`Y|-9 z9Un>PLqJswDmgmBE6RYa04dlbNYXXr*bvo)dB9*~$r-Y_fhtAK>K39>hqa1C*dGvw zY!yUT1N=L_1@mRPIj(zPxad@~Rh^=7@Lr-wi$zMfP7F31yqD6nS zNSb|Vi>D?@w2Rbra*^OyO*LxLEOlUWQkP(l;a!<6y)csK$aB8QAe$X-uz8#*N99i< z(HoU`U{5iahESp@aI_qiKcc6EXihl+kEXB9lfmGsd@0hjdHOIh6Yw0#+oA}c6Jy(Y z%63XQ8_^=4mCnegalGm&eo}9M0kNNw&xW@sXXP`}X^vucQa^#1oBfm|ilsA($?Z6S zDBU(x!@UH9pPg`mLJhF9tVKWD5`yYTj>!BZ$dDs4KO1IJB+(E*!M19G(s8!sYzzJb z`q24Feu5(i20^{$EIS))(qvOsKMs3iN2S3Sl#J$xKthh=uqsA(G}IZ;BAwOFoW&Wm z#3EsUX!p3MPv~wC7;p}*Ad)GrZtfBAlC2vFZ8foN+UGO{Hg99fDaq(Z6UEi+r>s3Fyh;CD zw59q~D2pCSO%gN zOaLo8Wd)~1B1$vKPdvp9d5;|4ye(VMByX}e1|72>m5<1Wr7iYTtjX5Mj_HlZY$#NZ zNQWJVNNa#oZ)&tQYR4Ln*^dR76ug{732d|k0nvv{uq8g1fQ z2Az@KfE<jMomO{%v{If$v=N@a@Zq~)**KJ5T$XecyqnQ~A+AjT)5 zC;%O|9P$=%Z;^bE9~jh;gF5omppG2Wkn z5V?);2)e^a{SX{m`+z|tflOZjN!NbSqe1XNj$rgfjt1R>U`^Nvo*uAKly!xT99}z~ zd|%{f7Wpbh?VvIAZs-y9bwiIR>4qMiQUv0y_vyPaQ$n+_!G<|D902K^ux`zX6uoT!$%JP=ERBPl8+2KY;U$7VTW~3u_3`x ztRB%Iz=_0#gh7%73D6y7Dq5xnWR%H(*uH$O!$*!Brt0|-+hJxhtMHIil<7wfTj7%E z$D0&U33Z=Zqsr|DK{g5U5mA$LSU-eOSl~$=K78m<6Ool;GF&J_jvcZ$D+J6%xq@;9 z{tZR}P%oKPk&{AYGLSj{HL64F;0|%7@5AjcFC@T75 zJ)rJa_Su^Q&!Rv+q#ZnTP(5ftp+yv`hb)4{YF=3ns-W4#6^&0rZ`1<{O7y)LUEo<6 zby`pmAXsR$#+6CtW`VYE|32$JwwD@aqDa+oSEKK?Jt2P7ZzV zK86{wikAFpmo=$(<=nh<{%r9!OB9;k)f7Bu$)((-eC9u;SvIGtOL)5pil@jQVivIHryJt;9MX~Kl0M3yKew8bajzqq*gI3CwAe$L}>@7=ST z@7BxWlsF~c3W>Iaq(tH;_RHWEf8yh$IA_LfKiv*IChu-P{O_BJ;>O3tOYyD*9DAoG z;BfN<@aq$B!d+`(LLy1UqYW14h|gN{&wt+|?@@P4hn;_ac4<;PkH1J#s2Y5UXpSYa zq&75&i+ItmgxUA~{PVqg6hdperQIF7cEkNSe25=v|J^qiB$B9-ASX&m)Z6&@so~?cB9f+Ntf>c@UnJ z0KF2Rwv1U~=mb%foot7M&MEs<3{cu5?bdhg_7K&be23uy7({iq6)h<{Ou(mG>`>smD417C+$B%-803zfY^P<1zWo4!d#FL@nsHwA-@FveUkUZFe2OBuo3r!=hScvsMK%_8ro8^8I9Et^B%{m~;HBtL5z3 zmRS6h&kk?7?wq#onX??fhMjYMbVoq}7QaWdM4fY;ePK}nD{vKpcX&(Wxz;ZpEzU2< z$2oy#TSl~mpZn_fE9s0Y91c}j*m8YK=sDMkpUlZ)d2|#;ejzWszC}CNaxU!VUtEl>vn8ByNe%0T7>Q0t zU&V^H*ttue-JL^cozN!Ww4t{X2WjRP$OSTLb{zeu**H*B%GRl32_2P5SSI0jZ^wb1 z90z8)Ac+2GI0=)aw8Dax=oaVxZf(>(|98Xo9C1 z`_AKN(=6=JuAx^f_dK2$Vx_x_A)r%eG%ujVwWo4ws+@W=>Ve6Hbjo zPH_(kTg4#q@=?@cYtf!h7e~ix*aMzga^Muy>}<3o=jzliy`WGk)C=;Ze2!_ewzM9v zNtv3Gic@}5(>R^t**RlI-xzMRRB&PXqT1E>Jo?;o&;R7*SKs_ii`wG&OA+K!SPD!1 z((E7gP;`*xT+E$awdR3m|K*Jj{=W0b*>mh1f(B>#8MVdrQtDLEK?#jX8JDx>-SWtf z-~97|v*&_Lp0AxApoPk=yywrtLKXGHLQS5t`We$gZK_V|w}qNAZ}k%%3$NxBOeE?{0cRdcyhi zcLy!h{|yWE{2Gsidb*<1LcMbDtS%Pnhbs%aSg6OBbhA(|+%?Ugh5AWdHw*Q>YUmyA z$3i``l$0w`x?8B1H_qwBLOr)U&!2^Q;qIAzTd1e1dbdzNtuOA)LVa^dpBCyzx8?W8 zLOnXae-`TAk}FxLf4w7bU>53Uw`TO;LIt<9HLlJYu!*`qXW%C4`?CgYqV7x`n2Gx7 z?0%W3lGzK(YF4gUv;MA)8y|XvOw?03eVV9}dF9L3-2Kp#-}$GXz3OYC?m}~P{JO_P zl`LAm_MvBEp)p@s2onQsd)UyekgQijttmC-OuMu9TF-66FM(>LRY0E7r9}m z2Yy~$a#qQF_*3K+Fs$XY&B~oZ)x{^sXvKv?%9D5!{zv@n36nF6W+U`&0lT!ze(1}C zbEoBHrc5ONED?X;!i_{j#971)svP&lC$Z{~y z>uZryV?#~kYr&roOExw^CC7?9B5z~lm&kCI0tA^{G9r_!sTfX^BwQDHr+mh1+tFn~f-NPB@xZcH7|vk-J3eMYIq@YdYi$S>csPC?_9_7IZi)7`#;S z+LWCRxJUTIcG$3-L;e&O5-OY`!=IA((rhvKY~<)EXu}2y)uaku^1av&edi99yeLW3 zLSB@N=^)>Z?NoQPZ{I`p_ry0o~9A*-85P`A_7s+`fyklnhZ z(2pV0>gJlj-}JPW&FRIC)lBcrj@?>X+>0Hnos;X&j;&f;(6=3{oC#Roi>I|>er_*z z%vD;Fk;(gTwQA;M^~aDcE$E*iTbO+%L$-WQ=D-ZuvRUZ^GGzO}KTuz5Vfw%gS!K>Z z4VgYWMS_{=x2si?(=R(#R5D}MocRkEE?HDsT3$|etTeq(J62FKbMB(06*bFO-FmyP z9h*C~iyg~^HeOg-U3Z(09TV9Sh?v-$qmg(?dFE0RGnI(G6U(4Oy~TRtE(?^cy&2yp z2~N2QMWko#&5_za+C*)av7QQQloTCKZ-Uj zD8{E)K7EowavX)K+qpyDp>5wmE5ThDq(=D|I~oANfG*`E$d8hO#1g%?B`TGUS`co+ zx=EK($I)Z&KCx&Ar$)BRAX|ON{8;e#RED@jX71Oglk z9NHJ#!J>Luc;mUPKdQ!Ac@hDofF(rfj!vXJ26P-sEw7_)t+M9c|CkSz0TaLPQ{C>eMOQ z)$J14xM1VQU7tKslF2f8hLbv!#?l<<6d3tbead!ey9!nYR`J!xXOGXw0xwl5i&ptm zHbtM@Jfhk4N&U@HwkS5#6*V+!sBNegJ+wKd+4XOCjfo143J{mk&5r#~Bt}L?1x4vY zqj*%{(5UA2)BjQu85Kok8svh9>e0>N&8~NAVj|_p;3x;mM0Kv%>#uJPZEoMTadbpP zWJIJC$)fbgr~ov`qtu~V%uV&YKDgO&;(HmOE1+_S+lJ~l*30#Q&8|Nz85*HP$dMYF z5|Vb&o-$M$Hm+W&w>7((o{o>OMksYD{^K-7PPfQnQ*y|;NNskB*4%df- zvv3xs4+)dPTtlWUt5s@QP22f5mLcdS&VsW==#k+n@yX$rhlGdGe__O}MK8k^BT|iP z1{iq}E9NCKcq60;lba1;;r1|n1i0iHgaJ8XeRR5JKVgAkJQN*e)Qf6F{fdflpj{D#Q41h|L9qzT(h!}h zb{PUvsB0*;EWx%@)$N7EF8Eo2EkcV7A0lDw)C)OO3%ednQZ*}b78`Z)0wuyheTW<) zch=?z2@MGwUV|+^vHLD=)8%3c^&#L_5TQo!NG~S~RYRPikt1uWrRt6<(M`lr^?bpl zih(;(RcMG5!h*G^5!I|3TgDc(qB8jSh-KypPDOBP;8Q}BV8@WC=wZc(D09RywLGIT zd5Asia%fmsXlO_X{z@UX;MO3~BMONEMVZ5h7{bBnFgVo^doT-vkB_Dh;><&cG(yG` z$uNtUJUi}-78V-9LRhFAVhxsp+6yR}nMd`p9E+G3+z=&94-I3)j2>FivJ@ntYX~>z z=AcG;#_`D7z~G|(QLA#0oR45E1!V=DnqnckK~#doxF{-}qvv7#UN<$&85)MZ*wJZAkRC|g&20xd%gxEo7VSxRhFrvgkJp2(K^Fs! zdJv1v&dw4XJWLYfv4m*BA;DHKu|UM7bJ`7_EWG)yNX)ks8X&6RfqGt!oTFzWKCNeZ z9z;B;VWBM4E?A^MgwrW@E0|cOYCNn|gB|tDffwHW@Uy@F?QhWSwEES2+HzXo@i+Fj zw$I+*y!ltZ{N*eE%>LQ=ooAkT>OuD4`So|Ms;QViryzgIlrf`YuL}!gf%0kk1Q5D+ zJO6@z?xN4cIKHdn_`Xv55B~4`|M9;|f0Mu@fl1%~1^a?NcEe|FQV*`L{e{+D22sRu z1KE(-|8GJOTOV05t#=gh?3#H%3B93+pFUWfcLfyj-8<)A0YyB0OG)1-;_>DAS3nU@ zEX(T;igKmh%c5+@Pi`iv!i`cgmtKM zSW-a&!H9=veI2@`CyW@k%778il#c`510$?Mwb+#gj;K$I>IFyK_>_SozO{H{PaJW> zGX{>hD>DlE$UlyF2slD+c74BWlu%jSfW$llNc`Z|lD>gNRJ{o#zIbHum4QUM2_&Y$ z@b&>DYOV|c&Oh%;+}y4iJE}|i7EX865+S?8%Ts#_7_M@+Sm^u;S3I)x}qOI zLJsZ-xj8j|_8^k@Ux*}Jk8gVVIrbd?f#XNdKmX(lUs%4-f4h-w)Ysq1?!zP zbLry63um!e=Zgz-GSiX~jlS{5;jvMXA^k%V{BQd2PV;_(35Iy62tNd#3V~ZFAu6FY z?neB9A+!)+mWlX-iX<3vxD7VB30ZZBHjuOJDWUiS5<=i#cb15_gKCBxEM9_yFVHEP zDH2kIKkX5b@Y%Xz#6THbf5k_{6Lye&$~++lNtDUxz8P|$K&uf|;65aoq7g_9LU48m zRnNRt5s+YJR6##=GFVK8jM`)b8>~Ax{B=(kWl^Rg+=@^K_^4G9myYU3c1Va3Ak^Vg z%#J!gSu!IB?O8zy^r5s@%qc*?%?K=zw;$joetB%!lIdA#6pl-sx&wg=MT7(FCWF-I zs-Bk*|GpI=1vBgb7S|WsDLP>@xmcs4a(1qW1Gp$U!BSm_i-Ax7VmmWp9afXIy?kai z5+Bl$nxF|zJ!LAJDjS>}U9$*A)^xdiR(5745)jhUq%@uaX7C}nfGi+1{)G%yRj|4$ zX5|1xI0=z}wcQ9=OaZrJ@)yKP!3ZND)K)boHxn5R8GtuhS}KNhNen7w3L+d+L_{KU z+;x7iMArE0e6d7+LQFR-@$ux5ey~LP%|p9miIjy42}|U}5A%y9COl$biK2-kx?+hD z4;xq_ZB%40SYq^>29_vHx~?ad81=S+CDI|@6H7P{Fo}NAfD&_)V*EjgAmsmUx^pNPd_Czhkfk6~lZ-!$qQBX1ZUdtJ=Xq2b|Sp+Wt|5-;`}OVAPrgZXAh z`4KL*Hc^l-t6+^4pOc-I;ITIz^H3#xD@arsYpnQC>@>q-fvfS@v7-z|6yJPyrR%#- z+fL)-2HwO)?Z_$iFc{VI-S*RfBrw$s-;(;$lsz6Ab&KKa32K-Yk!3V22|1mbB|(E| z^jX2uDpl$_cJ$~GgD8nEEBNf~{JuZF{@nVqoOmQAq%2tTtv{W%g4Jl9nJw^r7ytO; zBQ-f#_^0&iI3y(KapTxHN6g3tKR$9=rVgV^7z;_rSZ;UheEZp3OA;ky7#OJzh6o?0 zkByOHw4xVqD@cfXgY9`B)3NoJo0er7>EV1-6pV&G9>Fmfa zr_>0RNX<&f+mOfcv22_ga|$xCg~jU+H17N5z0;;lPEMXQaiXUsbd-|lDT_ivFXgfN z7)%R`)nj5=EHC^X0-;GHV)TyEDH2!$hYTOj#_qE>1DqViS>SPdO#%8V2NP%0*2{VU_UsB|{SV)OsLFh8wGqi*B4{C_IXn}}68Us^e8I}WDN~TVpLeoGW4J6ULB_dCx zOCvJ6#ztFWI0SgHh6!NFP6*J=MUo6Y3E;T5Y)CqguJ+YwQzj+FjTtTEl^7}ZJOqo2jawzU zi0QtJ)RzfU(pGKQu%54HcX0?x>!h{LsT0SKj!|OpOvT1x&Eaeb=3F!=o`?8Jso8gL z;2Wg%`dyIYcgc{E>YMKz_YDZpf3Y#>W^qw;^icdKN4tjKG;6JGt+sCMI<`(f2i$yD98Fs_CwE=5g>(;Ja#|<9G&8Uh--99`vb~x3o#RHc-j3n1 z!|UtE*Gu&p$iZtx-=fwzZ>DB>tP9NowS`byY;Dv!Z7elqsn^%mGxR`oHF}+M3=LR` zwbe^&_4>8e&QV6J!*kCu^V)E#hY>k=?a+0un^C<))eoL4JD&nRdKxh6CJwZni`b+?EAwont9jX+(Mq)&X4E zS=I2gX%cXziH!PXa|YyvR^lFs4%5wYWM!jr!HTir;6ggBZK)(COI~PO;8-_?I2pZs zluM5}a8;DkDX+d=runij(8tHfxNTB)M-EQaz|=FGv+LWkeSsE9bwQiaU!=w}?1czM zI)SenW4P6Pd(m(C6bWSWvT}zrKu#MM_L= z&amj{$Z$Y`06Bo!9kzgwsF=lkF-ce#XvtwX6+^|iI%2T&l9L<6f}}tNjC3rCD zB8E|^3mnly0##M;(%5u^Q3_COs_0lBhID#o-!Dxa(^B9&^gB}oI55QQ7 z8l(n-Dl9Q(Bfq_%HV{-Ajtpvu8UU&i+mT>hM?MEwW&a`n$2 zZhq^{7k>7mZ$JCUBOBJs9Dwa*YFZ0rsRzrAtAyv$x9;iQ!`#}M*?gwJfK zoi()&NH}WAKb>ww&QBLa_|U4ksr^TUBg;@hCm#IHhKhpz;lY`Ynt1TLcbDh%7Y`N` z)%>*ahZ`$$2ZRR;zns45D)C_9MSO8H06d5&2`g$FI3Q#Ip8s=z&^118B0_D>)TtBV z#&V#}enY~vIm^~Q@|+hE-u>jpTNdVy?*<8rdP2gS%8d_ohlG#R6^->mLRNgHsJIIz zOq_Yg_xxbOOLuN4`8sK1G9<;U7)UwVWrD(_6_0lVg{wyiyWa^4V~QW`4hqXq7r_Hx zP#8P^*)E{)yWlWEVa&W|J3(O_x&cr)b$E2(P0pEJvB4J^)+G8thI3{VWhC4X?m>o;33Jzak)dlvK_E^; z>lGRfOD*?6!&|100ZJhl*%KPtzMipkwE+!po0kyK6B^=6((E8YcRuJ)wYUO;1HJH& z#cQCnqP2A3JK)a6VicF^rNlgPkG4II_nCh;5{} z#^|22>}^)kEXDljL@7B(i1U1FA8LcC=y-5w-!W~ z%&;C|Ko5;%DV|7Q&D&3Ngsgl6f}J%J6+4h{5vnBMggsDw8Wv$cq(u9P3DV~l`YyyG z<;HeGffNtJ9@b`9km8*B@3DgeJ`E8(o#4-CobPRWb>57^tdt2940I$Wr|0HV;85T< zE<$>Wh>3R0pO&9Ckzzvl;3;lA#h)B8v13xEn-GyYjlH%-yB$ks7iLYS(3tKOFe8m@ zEF6oQ(gZ|wQExqAL&uU?g&7ke(qRPeMDU4P;UZ{w{iMZ&5WN78Vuo$=OR|#1&K1-U zB1=Y4jRJAq!iCpQfh^qj z3sM0L*+e$Mi8vwQShQreM!`vGtTv7i!#POB78K39^;p${;xqyq5aMX)l8C4oVKv&p z!ie5=i4_)V#Wh%nWK&pjhZ!v7Nfh&==$a9eq)?oOI3W#={_%|$7Pb~4&`9w@1g~gp z5T$sb5M^;1zE$JhLWbu>o-Kt8jgaO9eB(t8(u8zvkfM1a{^v3P2`_3ZEHZ+I7$8E8 zoObnq82%AqLl?eQ!{bDeLq0|uO;J6B4zWi;OEE%+lR86(B!o}Q5DTOpk^~J<8Oz3S zBYKF<3ykO?o2Vg_#}k!=7Wzt#g4g5YCLZflJR$PCVbk|q+zxw?LmQRbnc{HR&^pHZS0xDuE5#Xd?Eux1B zg|~lilL-|m>?p6}YaR7J+c?*Y6^o=IC*1(d|5qf2h~whN-u6O85~7f!jPT(PmfS#( z7@-1@=<5w1PJQ6{Zbaapv_D93IrvcH6_Fxhuu|-0u~S5KwZL5hp!ts=wrxO_^ao){4FSO`L=e9>isqCe zh{$VjWo7mqK_qM|B8b>aA~UP62;$?!NmvmdV_X?6{_BW-pv8Me_7^SI*?U2YYreIi zdRpGR<#+$Y7cH*I>WLP!S5%cvPrW(9gBFLSuljx`TD*I4h=~?81QM|uM^4vB;)rP* zJaF;pnq*(NXfT?QMEmHOYo9UT;8L?FeWAwgcG$g^GlLqJi>%N21( z-%uhJ$LQgR&1JbnzCtW9*MBTA7ho^Hk65BX?+q*Ry!QMVy+Fm13O`U$tg>mds(}?x zOi7-UloS^?Zp`RWqi(q2`r)y|h7FC3z-KL?JhUS?C=jsSF4G0|bf* zW76@>R8HX=0w>bqa#&LszCAO7T?7W{(_Wlq@$s#>IZeS$Lwsn8SWneHTGkZU6k*~# zE+7-hNC1j#UjQhc+GydIFq*W_-V}~hE(25=Ypet+^}S6N5a@$6THD6=&dfxN_^MhE zBmqNlC<@A@{VIKgEXrkXIkigAm7`r5$zoIy@pH2ryQnrbQX8^KBG_fDMLY3{@SesY zf+h>>#{|vT1}Y3Y_DV-3aYhT38ynTqN7iAYA;oM6d;6N$n(q#7q-_9YQ-(vvK;6>r zAXA1;c%dF}ObQ`eWw-vFMw{6MI+KN(GIrb|BHN`E-PK6@F;lg4_KJs2UxU-f+RoyV zRYw60k+NrUaEzTc_@WQCRea*yUQ%3AeFQrV6N@A&!N!835r)Nj+WrflFcz1v60NTB z7&q&oCxL^BiF)WmYkYTJ(t(A-)yOB1%(lpNFxsL|x@CM!$x3uen$kBN<${OKUg^q1 zAE%?i9oTxwRrtoyBh)40lFgcEzW^CYkYDZCNjX*cHfZ_|qzZVL#HPW*8zClX2bR=g zhfBltd8d<4Gg`f)i&Y+JDqqMD{fh|l@zJoS5F3<3^);f z9Fccpw?S~)>vm-k<7b3aXTV);gkmG@(lpU3^tm7cP_=gkf3GMiazJ)(h8nD!38D!xYbL+e&)G( za-J)H=}Ax{K|yk?`I188=ZS5~W^6ZUI8&eb>(^s z%P|q?9{IM$J1<_ud|uG;s}tzniQ^#{t>O8SMu6Bs2iBZseuTC{F+D_LLRkyyH0*JiO5LvaWyqI zHHP2_EDy<}_4!^BAf0bG;-tf6stUVo=zAa%0OdqJFg9@YDtHir1VQquaML2}2}C&^ zm4!#tOY^2q`OxTCE~=2h!iaFg?nVpF{UQZMr*9F7cI{B0P_e5YI&P?1Lz6R5Xm>uo zTLHyTjGbznWR%^Kw=p^gj6;|Gf9$;ncvaVxHavTubMI9H8>iVZ*ohJD7#jo_(nz>=`)ElGnu$&CYj8{CCzpwaZl_?W*j^5`~eSkY*4xP zob!C|yY@M^NLPTL?|J_A@d$9Dv)V3a?{}@W&)NZnf>f@-&YM`E*(0HM%=KBxT_DUt z8qM#rC&_JAaAT7~^$n>ziEZL`+<~A`A6_o#O04f@3y8fjzhu#0yqnxb>;wU;tl0Q2 zK89T)`WHwX2HS{P{x!yn^*y+>WAQJUzwoDNi$Aw2B{e$u-F!cek<6dB*kAfh0EiU& zEh$Tml8ZLZviH1B?{x0mB|&3&cFYK32@q4#!=Y=h=DNjOW$j0iT})oiENast2lYng zTE*`CL%3gn&pE%0y;66?Mh(YcbC{aCIozAr9Ii-i4z~oGgFE_fun#15hueeQ;X1QB zY)IK1DudnOs+8TK)!!W=v%C$mrVq!`Asa(z7WagEv7nE5KNst7uqVU|8?dU6cs~bg zwfkP`rcnC+`S0g(t$#0lQ)s|?pT{lXJ#Gr#UGERa|IPayZunpjTg$$HB>p;V0C`x8 zv)@Z>3{w2i+mFS5IM%yd>M)9mS4U4+e16Hhx70tM;2!99ef!odrTcR z0q&7mfH?$kCuj2$SL`Q6MSI@2u!d%#Wqf446aO#lVyK4V7B7*NHyibl%@e>!?hUay z)vw7KnuE?UfXDhT=Rak0z=~aRh|6d$o)PD8DaY&0y`i{6miUlt0DSFH_W3t+SO?MD zhV^wA2IhAX+cb-UMG%MW!Q1ltVHh>DnDWi!;@kgge1lxF>-V{MLV;W~`GhYWzVuyi z`1c&?u)hGCC)TgsIS=6XpG_>x=By{7leZfWKJz;SH2oDDS6|3Vp8fmJrTo_H6of|+ z{N5-wi>0Bq-VVvxkK|XgomG%ZZVqz*K4yWsJGPb&VTQG3?-LkuJ8uz z>;H(~RyKPUR^<_iXO{nrj(~g1{P%{xcY$v*Hy`5)U^#y;55Erw_|U;{q|dL zy_bVW2KA#Nw{a>$Smm2eCidr?>$1&IFRZPwQ1et>}WyX-eE z>4wh$d!B(+Zw^N@xmt54FhJY*1NzNjcw&Qxw;@s&t2fCm@}}2_nT5tv)n!-#h zWi+?;-EiWu%r-n$vO^H#$LGzjS}I>#hOrkvH&V!#t-7fqb)7k$`A~3%4Z;w|d>-27n3%^|Bdq@eXzXF782L zUHy7!u2Xy~?~gGgff!Tb#loJ1x-9rOs7I<1%qgCG4}$Tw;1;tLDA5>tBaHe^zMpVa z>Q*oQYy~$2Tft>1TfuyPE0FKs;VmqD|FiE$ zfC%mP{>Y-MI0A=1*b-{q{|tUVj7!1{3vLD7gwppf!0+;~C}Qu>C;=Nd3Ujb0WMK)* zd9Rle$S;mUDK>#@!LV?6!NpRyb|F5#uLj)Dfu!7&-2qFlTeuJ_doCmmd+(34#Bac| zI}7XUo$p7muFLP=g?!^8U`3vT^?Nwr^KdL54tEH}gJ#$wYO#QyhX=#3;<~>zzelA5 z?h$v&GR>Wan}IiLwl%w-MXHKQ1q0_{ZxYWHdjx)8H0L(1&%@Aa3on6w$AMvJ9XyCq zS%pc>mm|4F6yEv!JXuZ61NC20!dDkLg>&k#0*}C&#wVPL*dTNfA+;qS8nf$hW- z^`AYkiAT`peidu&2s{cr1YD(qM;ax8ZwC`Uk3Ub=T#Dqh#2uz6vFqLX`v@-D#bNsM z<*D|c;vFqQ(b}8wl&loYMVzc=KZqgPH203*XC>D6z)!%!KgTV-2aKOV6U@p_rjX!N zcTT-L2{sW851I=({DiOkKFlkBff^!-4TBe=a><0R5Q4m{lm}+{*Z$sco?LJn#Dao- z!+Y!ZHu^ZnXEQl9?hdl}KvNF7D{;iiY#a=4$fpal)hugftl*MSmyNzmU1p8;u3wk6 zPT!&vr!;dKoG7YLSTi*~Ya9K=%SMMrd*jzd)~Pfa6?Gq}#OVMvHr@n8Mr9DdWMZ?dPLL05nT=Us!t zq&ZL=YlueWY9Ht2+gP2*<|lolL3{N&Yh6;Uj(QCY)BY-k(tPbx@hPF2f_gy^>g12U zW}RB+tzWDXMhZ1f6Z?h0oj3n}2J07tUfrlipUNLSI)B`{b?X-|UZl}1t1%mfC^XIa z6{PE5#!y=C2lJ7j>yZOopdOvC^W!(HTW1*952C`3qGq8og#ZzN`dI~dtjT(GDBqp9 zPGlQW)ewqWQf$k@=JSi1$$GMy6dG;idy^I^zhh}Z7*saCb9G)Rn>M51&MY}N~Wp@`@0r5|XeJ96$qo~EXSsv#>%X9K0DzJF7JDsUl5 z!MONEBjqe}jv4*zs0LB!_4ttq1rtCJ$#*W2)4RhPa-s@5Sp<7R^Mna7M(2B@^HsjO zFn-af#>R$W4Y|<}I9b_Bzt%r@JZ;Sn<*SR-h2A9%oUaWH(cGwodhixL(0ts8_b$3n z^LcJVUeu{a39iWN{JgYpxwLe2zLg)k(7UuD8;@1J)G`dA%9Q)k)uV0nS(vO5Jk#~z z*I9l_y%KAeF|zT@{lch*P{S}XM&)Bz>($sRufFoiYiO9F^*Y}I(S@kC^?J1- zzJ9~{^&7G_eD;|0H9S+Jhsnbm)~odnpXB06-+xjZ7<2NyF%a7`W-OlY&xY&`pF8F) z%s<~eh>y8q()ta0gIb@3-^U-NvSInwnEw1RW3B@|zS3U5A%aKl@f*+#v?T}Hy!pgb- z*m3-+K_6M9(gk_~I6?)XiMqg=7!f+_xAAvCgqVE%{V9+eDL_&>AW}x6?NcJceas_i z|LfQ1BdHIG)`T#`g$ndU%O|pM-_5aO$3w^CKOH9|NIoNJ9V)OVhM`p@$Z!V_?Ni6B zLlzASs9UC@WNOe`pv2(L%W2Fk1YKVIF#6X&bi}@fbava4u|D|Dq*k%{RCQz+>Ycml*6b_{9l@9KZfO37@ zJ9b<{E=!93Z7q0IAUFoDf{6(R>oHXj%(0bct@?5tzY!~{A>44p^l02tsXrl1mMkJ zlhR61+CO)@>)7Ey1SDe^5ZyzO_HhM5s<$DM#gLrG?<|l5H9Y2nfYUJ;$(7B}=wDc% z(LZy(3kN1}#=N&+V4w8g@#83Qr(vP}vLUs8=Dh?$Mq{}Dn}*oO19?WL{WIq!xI=~r zWo@BT!+IKJq}V@GFY#Co97V+UBtRtdpG{E5l}{T8(=Qpg!NRh9cg=)l1459;Mp{3! zUUFaLg&D?O!a*m0NUY;VuZ4!{f45N?O1(%bbKFS>6Ph)o?3d%ec=;E+0NxTp{UR>p zGq;WK%8+B0^sqjzu{u*Rdyb{1tQUAt`&VQ3CJE1Qc~>6LJzr6f@=(C;(bFDf3tfjU>m`6j=jq>J^> z;%50j<^ph7qa-G`S7# zhIuGNuBKbl;#c_q?DBSiDQCTWc@q%kHK@1x@0$fYMMR~hs+$tn>*@zV?w{{8nuj$U zf9qFo?X72_rm0e!0pHq=68Lq)Az-Vd{$UMnlx2P6t7oA?18X|QZ^UQ0*uuS=1g8c1 zhXGG8RoDAqm8p4vT8%CUfxzYgfdQ@Y8zDBEluiS#!Lfho+>NRc1XCXCDG2tcHyA8Q zEWi@*NdNK_;MAMzr=dpa zaFoyO*PQxP+@&w_CN-)?MJ>Ys0xi&3L{2YEPeQNW3on||*w6rYmIwUDIwT>iO74d7 z=%Gk{|3w$#v#aUQl-H0QjX*`{)xLUZt^r=otcFG)vz(|cn8iU+cgks-HT^F)Vg9>8r0guVFP0VYAr~ET7~%us8z5d z1!}FNG9PMPzBnCfT{94B-LNJBwHBvAt-^K#wGLi25Neg|NmVK_I``gnY|658v<>`v0eTSDRg@I0oa;81lTfE>K&}9 zg0&8e%Z#<&i};u)Kw7)58HBVLL}d^FF;T#U`1Y$az^r5#Aqlc}&Bz3@n5;BG17wwg zEh)Zt{$PxSqrJqHCWPRFtlN3CGXu!t>0ZPuk7W^KZJRd;V*#lqA(r(UosO?o6=%R# z1}K@(WWVghL@^0~wRzFB%m51?Mg@QgTX_n=YHLCnkyE$SmGR4^G=OFB5+O&wFoC*GY4FPWx%2%cbGaOv zlgOk*5OgSfwXv!IAMi6;LP#_OzH+w`ULnqp67}X-g>_nlg}{=)HIx1fbPq&X?n?}Y zhoBaDRh(zxQRWOt%cRaiOv6cYheBCA8Y3xMb20JIP|JG}jj#nnAyQzlZziC{NV&Oj zEitPz11$#m365}&+-X3TxoqHcAd4wc$_c$0bXf*`<-H*AiaRszryB}jG4sib0PHh^ zE5@bzQ_YqVLo5ua zDFtDTeR43u0%p2(p46-g0X4Y>T}}Gl0CeR=aqEV&V7kFp>P8f{5^z;G2wX8t-*;;f zz!mV96=18{!Pv@e;H48@IZDl^0;{`*23ELvq3$LCFrY9N*v6hH&}w4_Xk{Tt)q~?i zjZ-Jzh#xgMHc57FV3!96<0~f$+>N=zD<9yQE}9MoYmz3wy5g@h0IV?4)#B+%bam~c z>FCNv49ZzFH4R-&=t@IZOhWfBoI+1J1z26%JOEe$IT7{ry!LuMi&zK}Ahs$o^P(=u}rY51* z41rp3O>KZbsn_cw#-(3zU#@`O6vQ=tsUR*366{xEFTe8gvCBb_in*@p2r$=p+T>%d z@!uSXxoEVHxvuO;#av!hpfUlv?nnb&*C#>Ol)p^@UB%QEfUXD9LD%I2LD$3w6QFBa z8t5wfx&d9amk$J8b>B>YuIYn8*QERZJOR3{P6b_Kzw&1Z&@~@jo|``ybltGz$@fg2 z2Jx*aXvPqTi}5XFn3#9(d57LE{)`&}aYf#9-{t4%lFac@SM60ppe`FAh*^2>zu+93 z5Le|DgMb%7l{wYJkd1(^vdc4oFALIm@&}i){%0b@Re56y`szVghJXM^ZqFnq)ifMm2v1tHU-Lydf3^6%Gta!MQaU6u6 z286h(rlvwLhUCCtv=f5qUuS?|3+7DD48e%Mcwx24?MnCu=+q{u6I&Fx6)m#4*JJSf1cm9Qxe zjmHqr(r@>RjSQqnR4WnF&5X>_>Gf&wne#RTGj7FueB*C$X~-A|^8zXxRZs7sl6bX`VdG+x+^9wIppN;&=X1&>J$%?x5(R$=! z@H{5ZL7G#KSkdN|%`H|-#7NQgp>zTSU0OiW5)JzTLeb&i(vS<`R#a_v!LM7wffWPz z?Pv_#n>VB6eIUVx2GkFV+Rz`0#`zcmLV*F6D3GS`d8{7HBtRUc-o`UG%2x6bT7=(w zl+A}$bQmm4FtS%RtIam_l5toHqtLhzt2Wbe!c!Kn!=`kD0 zD<@iCAJupq!sFa%Aksp~8#|gSOvrInvcPVzZ87}?;;svjPe2FO3GS!7E;M=(%X z_2=oe zJtD55Kgw}nUqX}i%?Q^=gwsL#S9mSc?e*b=NQ{Nm!X|R+P_%h8JgOUdqYcpp5sFc& zkNP8Qi%dS(2vkNzBmY6(Y$LYx^EaNiX~brSQ%2)=)<(S{Z{vtfYO}X#bKd5-Z=>E2 z-?#xk!!};9Y53+Cek-Qy4Ke1oV#h`rs11n zc!WQBW_U0Ip_@-~g=x59LfbZ6042VDk8`F6x}d}8@iuK#8}sm7!ECCqH+r;dIDVx! z5ToXtlM5}+8lyj2fRQoP>-T)d>C-sAn<#H zW@BTu3*r+CrWCCRt#I)%qz%fPCVQE?ltW>)Xf$DBLAU_vvVw^-P?jx~NG;VE6QUS3 z5m~N+f}2oFEs~;3FGcsEBlN^9Y5@uI?~@8qZa3TP6{b7 z+QfqCVo{_?E%Ta|S)l#n1Hp(3C@46uAT|Y~vAj7Xc3Vr;0~R!TQwp*vEW5y&Jev=* zn%reZf_?yRgG}}73qFq=>?{mrxG9dO=DGENh5%>!wYMU#icICig4_acdb0+RSV4=e z2izs>puU#P6UM&ujZzqmTy0K)i;$EqaHcgkH-(zAgitNfn@_cDo_X!HFTM2Qwn>m_ za=(&Ij3cdh6G+pvFY)+t#wUT}MfGC*pDWN4XpH2J<)0gyEMK^_L~ZWJ^uO-fYhSdG z2WrA_rVvg*e^bSc=xAe&y+qzI?3Cd_RdCX$oKP_7-en=74Z{$(Wd=UER?Id1RQ<&L&TP{ws^App zjcgj^O~ydl=)&+4?|$^5R{$>W#TUpH`^k@g{5{4IT`=egNVOsl?K3H#N!^c4Z8N{_ zwq8(Bq<(zzN8c|p@?jr7T4y%AV1hltoxE%*$11!;-w!=E@*93AaiHW!>PLM~&tP){ zJ@^KlM&eUuZ}L(tTo$>;fy=Z={TNI?eE#nzlMPvU>gw~`HC~T*CM{k1fQB;res}Y< zYwc^j7jQd``iTZx?1#@k-(4^vLMCfMXuNyFjXtS!UrPZr{K;4@*f`$9eJ=-_TNZXk ze`gYep^$jeNSdhnY^!V;Wx z0{96x7|4NxT^vPAel7n8;Hbf11l=O`8%)9(DGmOnYER=rMc6sxv~5lI^F39vU0^!j{uvk7>)#4trE|oCWrn(sU;5 zQFk`jW5(vQ#~u^!IScGjoe6uaO<<4N+lRs)g~T3HR%gZ@yRIz@um>>3#CwJW9}C95 zwA$Zh6X4^v!QkWJ>j*w>pEwwNG!6ki?(xCLmO|{1Y2c%J5cmL45%3Ys3_i-z!3V&V zK_2%JSEeD4;&rLWV}1(qSi^EOX~?5!c^dNApNc$MrVW8S<_8jL)aq#=)nB=T5z z4tbnI9$N6pIppzwR?s85_e{v6ci_yIkjG8i&V)Q}IUD3rc<}6z$E3AqfjkywLLU1P$Ybu;hC&|mi9BxFl^J0oOxUAx0QO+0BpLMpk3?)>Uux8&CJlRZ4Zt1?CJli->Qb@Cyn)!G8hwy4>d}~j zJ^pSm_9#ok9(N_N$322Qm|{VEu*2Kgp*ozM9sG~p>2y?AR@qgmy0@yLqO!80yrN8( zsSd+VR9imeRHnm2B&8@Ah&}f({)1@cLC3PDyrFhjj-w9N%WHtYOfW*Dn%|dVZBhRmzCzULKqpkHo80NVs75Aq zdxzZ-LkV2WMO79r<%?&{kKsyP7_5p}35b=6df2;c@3fn&o4jeOEik(s!rP8DBgxB= zjLjErG`Hwu_Ar$Tv(Y_eDs+3R&|TpUw>^pmYcyEwwlSR2!9`XfzN+RFb*NL_q^EdO z(OTTC(-P`X?M_viPJGo4mFQq^PLVFsg{P7#!He^4xLk+t{>k=^_8kk$%S$nb@CvE< z7N(t59AhilOf~xyXAve5uc_n*2kz9>tJErQC9JhN`rCKxsF7)FCb}haPZyC9#h1~{ z8JM+lMI}GvoH7lp$O*Od7mwqGSl5NG%Nl22uWsb*HQt-DO>J|xZ)=IP^pAsR+_+`9 zLgV7(xjqu;ai|AMrb0=i#hVHx;p<{3atamJxE$V?go~Nta!pleyf?#;-H@~eWp=IW z^tcZp^!mGx{?m8AzO@Xt;78w(Gv1r++kxcn^s(01&~@44-1=XB5ckU1N6Sjj#KjqAVRH^)Et z;P?mO54O6QLV;G#|ohmvVYgK)S1-Yz-=5F1( zWy>V+@m{r9Npd=tm3HD>4ofxhbIrzb7)*VA;47`(zHO`8snt$-@Eg{MP+=KV>m=G&OWakTKh1fP1nw;kGKWHfj`0B=bt z?ZnA~%_zFei{`X2_Lr2ElzxM~LNifK@MbYnReg+Zk)3?rePBaMs(%y8I}0CQwmwd! z(rVM48jP`@ib9RSP!%VIbMCxq=-Z@lvI6!>1ML#Qjj__QHjJYMl{{ekcfQV(=+n|t z!IWjts5apM1UMbO;n)jGF(9R7CC_mJP^Es&>%uUe;9CQzS6&7L0q9j+EGh|vuVt4) zqXlO7Uh<(pI;0&g8YlzW2)^P?`OR+!PfmLq&oTvU?Xl;Ge0R`w{GoP%m%Qrp&{DWn|MvNceDF6L zY->1+NW7NeiWcz!w7k zrmtR&G2u(%Kp{PsfA<;rf%36m+)>7x28~L9D1Zz3`as{*KYiY{W5*J~pi4{30Pt77 zu6>RAW%Y~yYekZ=Xx41QI1PwKPx+G@f%@pU7DWR>gvjBU5%GXR!A(gAC_S-xDv97=$<0hu$i?>Dht4a>DW1J zXY4CgRHmx2kyO!3#F~S#_#ezcGlazgZ)eTg?0bo#&Dz;>n9FxHR&cx&x*`rYql~k6 z{vSnEVUd8#<_$PKF23RLo$-~G(4?z$rCnjck;RS%4fB9yRZ*|t;F)&?&LF54P`IkX z8&~1_uJ1?WV7K$-VZW=HUW4xeqA|HU`&!u+F$wK3-Y#u|4~KW$Oky~HWl87HX5WQ& zx*fN28^r3zO%;Bw4S%U$2AD5eABK45%)-F+Qynr;WP1o~Sij&ji8``?M`^G^zu|k9E^0Zojai#n{K%U7nX}8fC)eqJ0=yPJtt28hd~7MxwYHKSTIIOG^>tJ z5W;AJ_r~?C9E&4^2y|+V7xa-?q^O%7NiA5#&r}Eq^zH0;u$qj1SJRzwVL3K?aQBGg zCU1wD*-LiZGhgnznutZLml^1aPVqIdw26}{-n4i$y&Pm{o_dqM$>ADFXEV|fZ?A_^ zWyV(l1;ql!522I3CfYl5`b_HNZCg`{$tnI`q@%ALGnga9j=~lww!&#saN6ioe==jH z?|gwT=_dBI-)7iMhykw*X20*B7MU0otTjqut(xM@!SxGt7Hv9<`(?ARN^M{n469YF z=eWYAp|X#Y5xs-O(YbNn>Q(d<5prqoSwcTimNgCueLX!#qi1mWB%8>osHSeLB z@b$iS{n*p_dbMza;OpH#_EY$Jw zmYFHOUT4zR>k53m;(he>TIZ(udVdbV@b&5j`Fh3T>)n^;>rL@}z4+JY$clRwxU&5> z><^s1CC1sS-6qc7R|h(KQ965-#@TB&G!xUDy{#$EUe^F;Z!Z|&?5!I+$k{9KoxN#E zXKxCK181)xle2e!s9GTxd~eNU>hSCPTlTQI=c z`$;|2C!M{ONoQ~EU}tYt(%EYUTdK3SHpSVSoypnjPB?q+8wbE_C7N8hA?fRNX7KfH z8{q5RhxVrVdRvmd-hvFi-u6^qukVd+_7;6jsFk-pat) zyE~(^w=BikTYw!S>Fhm_aP|rYIeYsPPFwtStlBBg-W{iP_7*4j;Os3m^MSDg-`T4k z+S%KZ;_OAm%v5J@_t4H>MT)a`AcM1qaKTW{-jWn&Z=0_(#o4=WXlHLl*3z4E7kSF(W*^!6GCdV8&Bc9VIpNndM8Xd#GGF!3Ilo(z zZeNh|JAmcy%sIcR!0}7w{JsLeZ(z>vBO>1-gRX9vrhW8rX>ARvUg`n`U#hx^m|y;Nv===ekNC# zIqBDwO#0n-_DR2cQpxY}Z(%a&_izn-DU&TcyQE)DdeU#_r%U>k zrX~Fv&5~>qhG&!Xo1gUN-1Z}9o%EZZn)JI%wt+zB>63o&=H~l8pr7}9ib!HverI{+o8^9A=9va+NtslMR! zlIoiBqDd*f;MbGB;NJ(n;FL!Cf(xdk`GU_HU+|7WzTl1G3(imT1#b#`!G9a<3trzC z_=2Uz7re#zdFu!Ig0tugPB*?_o1wWe%@?dm@dcv;e8Im51AM`KV+Z+yH~7Bb#H24c z4aDLLs*aCtE@tA-q<0WMLX;B0*#@|DED?{iUmZO`o{?c9!du%OYS%6Q-SJI&f&mk= z3CP^dFS!#w84D^}zwCPxh@F_7TyEvp+HK^|BcX$C5qU9y!;0((3 zAYRH)BUqj4s=r7{+QOJ_7h@OEd;AJIltcR z##k!-1g!+4#J;}@Z;XZY!Fe}0PtgY?YxOcD{L~KB=C#7;KU7g)ic-YPOG+w*m&vc# z_u#y;n?5kiRV^mn$E@96daiU|8D8V53Z(o>N*BW) zAnAp<3zGx-KNVFtJ+&ur-&$_FwiwAetjhNM5Rx@__^MDpa7lSZsKPV;(8uLF{p8-3 zf4wfv;o}ll0Vd|YtT*1hxtueAeah&0MOoPvKe^YkRvbPa1!A@h7M7JX!vA9R9aD)F z5ke)?fM_2n8mwY#O=7U6WwP({#Sra8=P-GOgwnmg`lZx*dgBkT-vzgiKcW_EZ%N6$ z16{wl%n)W_sw3gX;b#`BXAuSwY!c~zPqIn#YyA}8CT3?CUWG!8qr~UY*xSKu(pdek z)ktgY%43Fe{@kOI9Nd)1@`V_pMdqL^!Q{MlKijD*``ArzFkqCL+j|%}#Z8+wCUSfT zk3ys5`H*vIkeWjlQfEll-3j&(BJ3Xqxu{jbx`A0f#W@$SS|u2qdswZ=BRh?MhYt2}Z+k78Wi8(&phf*veBwv=x8I>Xav(H?U$%tjhmJ|Ikzh zBEX8D_WMuEFuf6u_tFOo!^p13{$&E-dWi>K`YbC{Jlv-eo z-}@$NY?~CA`^tCZ5Zb#mcOH{N!ZxGm5#M<$K`xvc(M%@LJmZP6uC0D0wi3}1=J|fd zERh^UV{92g{M&)qnCJsD=546d`3f{L2g>@dNP!{sGXT@+N3{N4heo4LqY!Y$=l<-`(?d3tmu^jh%@)>!zM-d>s0_8IIPT*>jklYGw_ zz1qfC@i}c5m?zE-j3tf(@}UA7AG#}A+p^k57y=ypNDv^2Ap~lLM~d^Y%4<0pk}g55 z^j6@6xHeSh1#(ndnw|uev%IafEz&l;J-(wIKaknxu1(sLpi|3TAsmK{N%3!++nOW` z;UZ+U+-U_#xGhYbR=c&s;bx+-6D69bR;m@W&03z*7UDM59;4d!9eRh=rdmxe=vBQa zRj_i!3j9?db(`7VNPB39XAHDjE$OVJG}X)v54tS~h1&KVVKl^Ub#aOxC+7wT)Xma^ z?7cWlq;@e?wOOrdyJuJ&*Z}pkRxh`j<4rgO0|ne%MSDEYFHsq;RcRNqdK<3uL`gM~($TTxas<$Hb zGf<}06mMn2LT&DjwjH)GSlcbgRa?AOW{w6n=q9hZ3I8l>!^B9T)LRDjfQ3Q@hDM`H zDb3m<(>)NymRqPKk<(^lmTGA=n!>X(98hn$Oezcg4wWSImZF<1U#Z$=f!1l+(z1Q{ zcDHqVYp7MXNt<&qK9Gkw>!9n~G0V3Dk>_n!t={%lyETrMwzdu9Ahuyb#W)Ff5OZ!b za;#Q|GibOW2=B;hAHF>fG}5|VLqv?+WRGx4;wRJ|-v&gqJ#V{ZwHpDp1_)eh0pmiX0km6-99AX|;Hu1T50^M7S(T(gkwBdsoCUly@wDGp^n1u;b%XZGiJD9Oy zVF*!pYoDD%fH2ty`?`IY=v$S-WBY0>r~&mswA{si!UtpB65JOKy(z^o3n!e7X&OB0U<57s zpYDSP15gNzmaxde#^SExNT~f5XhY~$#g^lhq45fZZ+IMEt)*18D!$SzSKj^u%9s;6 z5I(57)xpg4dL?=lEe^GTLm%)C9^hDe2M&e~{;}H!jA9J8I-^3bjA0wZGzzul!XhQ| zQFMo9(-;nwq2#Nd)0T4}>tJv9!S3#ZAQ?cRu`Hsn3uZxfLR9=ATrXn^pUIwL3>*laU)C#nA$)oBy&Hl-@rC;g>flKMfyN*SeQ-;Sk)ajsv}ue+ zm+0<~4|X3UUL>gmXK0SKy#E2pZpC67IS|2gr5PkWD3olbNLASS+z0N*E1k`;lh>hJ zAN0C0$NSP{>gBNq?&Ir^jm~VvA(^9DhC0?Q7I6BQ4pH~TLCxhAi@8vSU@qT+gQ=!E z%kNvU-NpjxY?n35Ujo8t9IUYM0)U)H2-M2H70d5m!S$4D7?*_XHW!P8I*^S9@~wpE zgUR8$cg6N>pD>Ib%fcjMPnd=~EACwnwOA1K_UzWIHog{^ur`SN|KW9`hvF+qmlJFO zIc?^>#K=M()J>bc?7sC-BU?l`=ooovD9plqk-nFgORdAn9>I8OrMqe+#?i-*f-Tir zXB}`EzEJT=96%({_(;;*AyaMujqI|5brN`zOOW7APBwxTp)sH{fRwQ|%$RjNEd&}1 zH0}yB=S9?DNT~&lIV*)quQ2P*U__ZlhGI*Yf04FF+TFxhe z1U(d{OeeFJODodgq{kyd)EmgMmIs(@0H6dVfqE(>a28)vof%CIl&hNs1`GuxaZ1XE zl5CO%;Ay%k9Z0&{7+6jUGOlAvB z5-6s~i2x)LNe%>wYGnjkEThHX$aC26|1oT6?Ny%NC^%c}C~e~=|LFiE+GT%w1bHB4IzMbcWcTSoWC%8e zxSw{P2|!Al4+2(%4_e)4!j1xJxKCT%AD;zij2yJPPYW0$fNK04;WTJ5axmPDs*XZ& z8l0E~va`d82DFE|gh0|kxZPZx?^X76Kz43)Egi&Ap;5CBpo3`r0R_Sb_kq=Q8cs};LN z#5(9lj8v?8btW)rrc@j>h6z%w?sL(|bJ0k_V1$t8qLBch3<(CYopaGhdg=dXMk6Cg zT_6P5YC?di00j|7x^Y7R&QoM!AP^D8Bvio-vFjw<5kl;2FxoVlbZR6}p~SNvJj`KC zMF5~55gzE#oB;OGtyAD9D{`L=xmBW0onnGd&n8txbS~U~$Ps z6v^)H31kK_Uvx}@)LRa}GzWB{?w%kH%g9c;K!ung=(0f?DJf2^9LrAmo^6 z^nmc>Kooj{QA$7bDBUEPx8=Rf%a;Uk$`l;hn+Q}gYQb=6GD?{VgknmHAwlS|zj;uk zG8KiM^2sq@nEzWoI8vF4LhVFE)6E#EJPiUh_VhEtnHIJD--4hHAgCX^b<<;*LqSlQ zA@RY$9^5 z$W6+UAo&qo;WdCOVP`+8vNLT>6ehi*!mD-lMT=0Lsg5vqS3vio-_*$i`N7-j>)c3huOQNU1#8Fl8hXA zbj!)0J!YvHN)M8^+`z#nVhuSmC_oAQB!}MgiF7b+3N$d3zH)^vT`c_tqn2r8u<>myu6*b< zNjWeCVdD(s-cpo{&|AC~mQLSvGNA)&ToA1vq(UuCVNo0V8GewiGNEh}@kGS58Aat_ z(9#%QSG;*tz^$j(bQClwi8=>XF^R4by4B09rM^Xa6Yt4T>ye4zP$)#R^~$hBR5egI zY3-%R{|CbLhEoaQCXZvUaF(xNy3E2Q6na@`sVkOHFrzF9!3=+=&?c-8FHH!yHekGH z2rS2Ka@pL#pK96Q@-9 z_1}4-8{eXnId_)}(K*me?!YW>7i!44Vi_N2LwJm4lj2m0bt86VcZS>XHAj2LFnlZy zO&wr756#iLvP8XN^4Hs>ZPE8nc$m>3&4(V?9Q1_wGA$8b0bU5pb@z?4OgHRvRB#s=`qzfPMj)KEFim(Rh5EMz!dp>0MMEx_)R9oPcL=FXb;$0{ITSy92tQ#XIYPWDf#3QELaV4E*N9o3-2`2|QpxDZs?LV>2>_iQNt3p0=zJ_KnY zXp;Ugiuf@5NbKkl^bL9p1~V6ne?qW0V!BMaBH~-5(FsE10tQiS&Y?Whq&(UI8xVy; zw??`{hx(+&hfJf@VG;~tr^PvkLWjL0hmFa(M>MDqdLqm*O0qCCG0Hl0SWEZNYMbhk zmRrbUA7FsZk1XbzR@#SSM-Fq`vySwcM#_L7Luv<RF~stF z^a`Su2>$!>$(5VzA)&UU2ec4+`_TZQwY&2US%>=$!3Y}SPptmK5P*mv1L*Pn5244T zU+wPU#&FnTdPGZ0V@c}X{SWPDERkb03}cO1BqSJPqgw4(4V zr}uh$(DP>Aa@N=!DKl%hk|dhv3s-y2!BF4{gR=urcn*ddaGe79oO3Yr91Jx%B}Nre zpyfFj`u|ZF8p3wagPn-D5C6zUp$`kF1ikV`LGy zfPaV<2{$80)x+*l14m`ow7P8pN3s)HM212gJ`xA@k)wd24|_+u!=MUvXC1N+_nV!K zK=>#CF7cs08hiNY!$*!_$L6-C0artZvbnA4!^4kcAN7u4!?OTVtwY@CO+yqgf-eC` z6*Ncn(Ks|70br#Rf=T|@0-hoGA^ri9N}yvfsH3zOTB#9 z7azd4b(l{<~^F$}>V*fah#raH{c9Z(bS& zVqb=Wh}YP{ehY|9Gvy#4TLU7_E}2?`hBJq0N7znCSRD4MWm@zn}n+LacsCxzLl0> zHTpLkS4fbdgNYij)&;Djt7Ur67l~Qu6N(dXV86BBdFa6hAygos6-W-#t@2gVO7Ecu z)q|Yac#rI0+zI6j8HSt3eW+FefwIv9Ow0+)L#q71eiG^j-F_`nLP1PF2!;D)HI-F}L2um@(`+FbS{}37r?5pSE~A39)!9qx&aO_1d2t2 z(5kjOovzN#F4d)zR7t5L5(2%d&Vl}u1?jdy1alkDby!6 zrYaP>_NqI>G^5KG+s9TdsI9FD)d;O^1czX(>Y`AiUDv4vY`V}y*nZaA?$n(wM3E5J z{<6^l9SUUERM%98X=})cw4puRX?3wN0hv=>Q&XKqBK*U$+AexZRZ+Jma#LuPPe!TI zc)J=!PCC){5Uk+U%z@MxG()Z^&o*Pl`yxbng2=0`(KTpEO|_8d>VB5OuC9hO-Q{%F z*Vie(%}FEufmcaf0ArHuMYW!xPt09I3!ew%3nH(VO>`Dkss?H6pvtZpR&Z4?t zG*XGsBj`M6yQ^zAqzuPHXYZapd-dMFeG~*a;m&Z^@ZIq}yYVx8 zPu5;*pSQQupNh7~&E5T(JT6I=pM0q_@21frUC+Y?>_W_G{WvuyLDIY z?taMMvwQcRVS7TNTpA%X9N##s>)L(ZZnekTy(edn+H2u2v{}$*b;i+(&MvDf#&&e= z9=6+su$(A9|zbO|K$Ntqh@V&qB!w8ze3c;_!QL zy~XYfbvb~kkfYnPaZVIp)I$pEA@DR3&uN$iw-YougJ_g5N^iBdggRqinN+K!?G__1;DhH9@plKKqZRoHh$2{4`vOGg;End3`07N<1;oCI}izZ z(y?t8?2AAr$&5IXc^fg4(RcWfk`XwYmFzY{Y?`b$dz&_*hybUoEH~1{S#75KIH)1t zg7_95Bg1V}5RWsY3pyic9ghLCWP*i{mA8ktM|@frw1LHO(3T1@j6m4|SR2_E+Da1b zH%e`AYD-G}-Nov%+xVq>o5&0MgmE0C;hiaJQ$OUP^bV-~O~dO%+vNPFa0H@lv9yoc zQMf5sH89l^(+8SzAM}*2SSG8qu?HLmiC3tr`&Q zuW9_K8dEN^Exa}Cld`W)fs_`YpqDJ0;qBpV5zK8DEy5K95NLr4cGlybmU+1E!JC7n zNq1>T$`(msJjWrZTgv#n7^R3H2N0yQ3kSY9iy~VizCIh2ALA$!Dd*1Ny(A)v!$`7_ zuQVn{x6ly1>5rf;_o-3hDDjG$c^83xyCn=do?rT;A|ZD6EKr8JP}5w-2XAUi1XOak z>*Gq2(N5efHXHNMU@w^Z=HflhDL9@77(?Z6?%&%VAk27w}n3S z8PVIV39+X|Z(k+Zr$KK`pANmPh5R)1Mjy9pky@k{sz%kIqEL?If{2@zcwdS{ zQrbqjjdlkiw;(c?(40aSl4w^VC^vw_56dOOY$ha^i6~s{N7$S$1VI^M6RP22kwnkX z&Kd^ItS&EwAlKk7bgKy@MPLs-LK{BS>?_NP8r1jIHpV0*M6@3ncO9 z4aEhd7&B6hj9)x*BrgPYD_#JZ_Q}-q9u^V~BdR0Z&@a6hjo0O> z!utkjj1~(IDM7LOLL)tz;a2>Zc8CBCOYG;)XIlUx#*7S$8Sm4K#PiT|=ZOr!i7yF( zSAW7j;rs~t$sT&ndzR>i8MPdaKm;vJeeHo+}0S(b0tT_<|q5Yio ztbV3{SA#DSWLE^rNwpbN-t*6q%zDPXIV!S-*LasejL6cX;%LwJKo&Bhe(+#4iiW7_ z^VlZ|DuubT;6&tvQK)|4+!~Fd3Fp-~SB)Ggb5D)p9Nh&Pj^;D^8TEtsk@{%;zTAE4 zL2uuK`oUNgE|MrMv&&#u85{fa6Q4a1zq`7+W?%Nc7(OGzACT7L76Mgjm4(Z_`#|75 z2R%9a!Vfx&NQ@t;1 zA3u+ylD=9or4$!q3nfPC5fD1tB{7}{i`{(C}d$-sa=X& z#QoNM3lHN5Ojcc<<96>*X_y9n6^~*c)X@M{&8~1NaR~?SHYhC%m$~IH;(71i@G&jS z-RIVjRYc=X?Q*a6#OF@L7xB5S&Sp>6%VTy>3~jvSe`wcJJdsdsawRAUy%4H+X}IRK z+_+}h{mbt>t)9*~q5f5UU;Rt(_r6;)e*E?0#$Bhbvydx^Z-)3vQhyR$>5O#Jc5tYt za!#E1*YAJ-U%vO z21VcN{q8@1=jQ9lgbR4D3E@Nc{&h9DG=vL?F4Lu;#}eNFMfxf4$rITpPEpZ6ediy+ z1D5`4ues)GWYFx*4!N)<$(Z9dS~9d`XfM3)6N7fkA@kLQe~ zs;jQL^2#f&VD*O&Yt3!Tyx2log>0HTXRXiXJLxM+!2`zTxx#CzW7s3PZX(Q7^7K5q2( zKmORGOMIm+l&XAZ^a8#|a(B*LT--jV2#K?=K&5&j_T&>!2%q~HwZ$&vOOQ^>}f9N9KLcR=I43mZ?^|(j-PJQdvD=r^1CO`i&s#2G#OJd9+ z7SCZXszNo}DO|~MurUTbY!m*NPWgvxz^3xmWn|NrxTDw;Xpt_G>(<@E^w0D(L%IjU%;B=h z$3BTa`q*P+^*SyKn$`?_i=kF`Nd?~w~TIq$EYqqGA*vBzo=(>I)x} z^D`G*fO~st9`ie#CgSaSOh48K)<>WE$vc>g-jiGz(G5Lf;O9U0+0R^{F8GrXgCKLr z$IF`mO*7-=TLQei6C@e&a#b2$J_xc*czJd@Uj7S^Wx~tjQ}FV$pvi!jN2lQB8sgN! zc=^@@UcQ+?)h9^B%kz_Xxd|kh@$wA`yu1}OgYfdGBwpT6I}&&}iI?kqy!>^Vk$9eh zm&Y5tTmwux6kfjF;N`nOGBjSEmcYxz)tT|KTX!ie_5t%=BQAis0|E0~9}W{Re*>h0 z0JB^7CCm(BY9i)^0}%5*LYe?E&rU(is|F$F<)jP{^IZcGGZA(QV&1G3d`vzdF!AR!$ycaY-F z6wG|v0L)wqg8qj&KxvqH(;&>e6@<!!9OXs)BCzYak2-&Uo8=2kq6uSo&T zixQxDF&@SKu9g<~p!xnZ(0mZjd$;hh51KcogXSd!&GmflgXZ07pgHHw`9W2rCSE#<^_Xr^X-Fh^V)&9dBQ;4d{+kCymTOLzHJb0zBdzY zzGonAzG)zCUYZFv-!TX`-#Y*|uNaJ*7iYrFa|Yn%l^Jn!V`kjEA{{rc%8Z+%8E|vu z0NlK~d=PG~1Hj3Mo5v+^Gr@0JDet{g^HX8-f+1k@&1Zzo(RA26<&3boF*9tw@3gRa zQD)dY_e`+)mdvpEYge5CHs6k}Ooz>NXMoLjfg=NKzTvd6`5rK3gw2P~1e=!(37eZv z1Dgw*GQ#F>Rt*iC3s=I%Az<_Np<#2;nnAGn<{@Eo@rKjG=A%Qy=6Rbk!{+5fz~=c| zP7j+yCr=WQT#N11T*{h&?4XGzQ(i3p5V2!tLLgq)i}nuO3y$BIae zP;K8-gzbpT5FM%T{uG3%I66s*sPLGPBN?CcOWp<4_*~B{~B7Fx)1B9I|J&gb_1DR@+i?A(& z(u{qlf^5@)*)`rhAk(9~krJ?9LE}=OHopncjPTxsW-@Mz*mETiZ93fM$qrJ**Pz?r zc?wyB!N@^~nluV=-TvBnpkX^rg!)#Hr6F#n$K?a0Y9!a=wT)jg5`E--uaTOHyzym? zNLID+I!d-i_L*4q3ecuOZ=5?Z!Fq}YdE;dPIbnEh3Ji}U!rX+(M#%{7Gti7=zg?qi z-SQMbeoHDK?_*T@P7J%2XnzWiv*}WrZ3^EE$YZd?Oa8A@{GQBlnd9koyC~y9flQN4x(#iQE?umEIp9 z_vfnyBlo*V(U5}Nzd8W9SAw8_8G&yaa^F1&x!(aoXHg1r|5iG3ucoHu0djw?CJnjY ziHGsqQjq&?3FOW;#8weX2grR@8ggHP=e?Le3FN*z9l19WxeL3G-2W;KxmT~CUH7CT z_wK>S{gwg9{l;|U{^!xb$i035axWW%-2Y~A2IO8j0J%?1NABBi8-(0TR}4b#m4lG` zS27{@`L_;4?lT7=_phcQcWbV*XdrOEejspPk^#6!2LkuPLBM@^Cg5H>5V%hm2;A3Z z0`Ap=fP3)(;J$eDB6LjS#zucW=*(+siWG_9+8! zd+T7_UJ8Vj5x0*$BW^Dl0=LgNBW^EE$L-_Jh}+9DoVf@m6b!_ zc59Yb4-vkq0WP33yM+FONM*m8#< z_`Kyl8&Aac)Z?4xn(9U=NsfBethGIW3paH?Z$0OI)93QP#6KbWszo1}GV!@9o`24I z&S_q}Sk4{C8y7Y-My=?F{LZ?jdZCnbU!Pgy3i~S~dD~Nore)w{Epr?%c_d+=UqC_Co~kipm%OMTVWpB1=pQ#f`^<_) z9L44ta8_!dGF97?7&zSF%6k!fHWn!sr+$`Oitdaz%u&Eyn1P!gL_RI;yz=-R8{?P zRkDdga=J}sY8p#LVO2uoI+TtdLSd5?Rdp_2S#}KBPE=J!lTGAxFJK*LCN3q#H1o_? ze;OUi!$*}>_>lP|?qc9rWMT|8TTLgIMeFNO>_G}9@GMXtqSWj7J;N$p=~gV*z!Lm1GZGy8 zmAqIMccjQXbC>g8R(qMM&Z=>1Yig}pudX|6%Iu-G_2FJtN<74ZjS6KgaaO$=ewxE2 z)~@vybw~UXlv>LCNtsL54ws^Q?os-&LaS=sx(EC+kl~;JILaSZXV*Z?LWp6lZmCA( z7iZM0LGG7{1 zWAsL?cRQ*zO6hFY={)a2Tf9Q(hkaMvTP)ZVj7jwfs0{iHl(1=J&cJR6|l`y zDZsFozsp4!rCzwZR997&BO;9B1~|`&T=b0T)56pA^!^z$XUv>6a~9Cf>}wRxv$$6Y zM7;dnF;^R2!(360vlRTq25I@3GpA1rO|zzZGmz2#c-Bm&&}SDiz$03*D=YTAi;(zdzR3T0`bCFwYfcv{p}xL+kVzYK8^1Au<+`@g1B{$saxX zvN58S_L39dwa+ca$J)>uFzOjPq17r>Me!>xm%}Z;L$LkJS4&%=70l==pLxbK1(O}B zB{$XL^hJ@H6X!XQ(Q35%@_&EnGSf{oIAATLUWG2UXRxLA>{Ep}gi%y9XHN0uI0y1u zX#CQbF1=>K0?a7USSI~c1il&5rcF=sd4)J5qUU^6JeO_!@|VAK=_O-0CU~nWKSC?h z*zD;FMp_sWuvxIOzZl0;^37qD_b>SpwMn-^8;6AxiRv`?IFzB;J%zrN#W*x|%ILdf z)D=8Us471+`oLK1Gg{MQoPIO$Nqj=5S3K9AtK@Xde~`Ix~JYkOY#PviI}Px z&gK+gh6<22HmFi_pj(U}lQaP&W)21)t74Q%GliBz-SsaNrMKT}fz`V1gm@kgKviBv z51KYIQNmH6WNJkkEZ%W@Q}{^@S`Lv+(sYj{lZ2Dq{XGyP)(4SM%m9j$jbcUHo#OUy zZ)-^oTiZ2Q7k2<`_J~(jwIoehm1&oI-g*0Nx7|v_mdEfJsrzTZf;KYXzkKv%U&3iGD{}0o-IX7 zC5s~cn+&Ydxw!@HT!DKRS?nHb&pHuTNw*#-OGs2WBt}a$)6g^%>6bEk(Lx%sh#MCI zgojsR;4Bu$z+JlO$#~O7iWHIRhZR7-PH)+~=^eLWCCzUvqm-N&Odk=W(RJK|aWc`D zl$ex+m3~?ZR*m)awQP3h?YGEV%I@xnH8{Ts7_B0I$taDd1Ez750Q#CYz3rBp<;~)j zZy!w^Is}V%enWA>T{amLs{`esI5|pOAR2I0&F;MQH^2VPZ*CSh`)_I4eux}WG4z+e z{Kc;lRh&LHDPm1!)P`gA94FULVDW4D8+o(;k>tTc^daIGRX_VVvJ0bHj0^WjA7_^4 zD=cCOWYgPz^DFr)`Rl8{!DzG}Ox5TRZHV}}_^C;WRX0}`-><9?MPemxAa~yK>tFuz zSHeO*oHUr;g9OqXI)sT=b_C+}cs+>M41dJ0kHKLG~iEAUaKpiPxkc0u@BO zme)nRvV(BJ#A{TY#A{L{;1wowSQHblN!5whDvqsY;*}MF zc-e+(C0-LF5-$~6H4hb+0rAR;NW4Z{k%clSn*tH>nnY}-8u41G1}+p9QnVBCT2lk@ zQlrOZdkw^EYJfu#!BE6&xkD4eD3nFK)(1cinZYq%ZbH4-m^(Ul8WB>n_`7@2qtZYc433I?y4c>RcC zWI%&>*PLtRT|?^4yH;ES?;5nHM&9*w{dpG%+Fwuh!R0yy$&| z=A!x6;~T`hk{imre%DauHLStRt78M1muULUn1(U0&ez4fMm30eJ#wAQt6#&I*PRVy zUTquBygfg)uP_iYf${7O+%>H z-SwefLlPgpy*l-3UQg)a%!^QLlk9_cn-n^=f-tt<-Bq1nR|wtvbdvQgeqW zn>nUB_1aK3^_mfpdNE(9gL;h)qEJE9Yja)HYkCkan0k%pS`+1MHLhXzyhcZ&Ue9o; z84<-juj!Gg*Cea5t!B)jUZbm1ujlHZUehB`uZeaEU0cs z3AVwI=2bBD8WoXx{k~q*YkCdTOO0M_)N6ErMFptW7KbQArd~4wpdjis)(){Y>NO?; z_1f&1yGH8e5a?^~d2I~XycX&e#AR!OiAX)Kb;0JYq31QMq10;?3^s^*J=P%Vwe(u4 z*RXn1uPxU=y#}ACk$UA^8})j#R_c{mGxaK|oq9c459;-5{ixT3dQh)dYNK8cT^IEl zay`^*NrS0Z`gKvS#SNxjvDZbtrZ=2=b-HHirFvd17S@}2T?y)W;gk!rVNI`x8cMxp zG?;qDHJo}q)iCOna9z}EZiA>-`|G4$V;e@jnl_Mnb!|BH8rop$HKW1Q>(+))uh}C~ z+B5_8YI#l6Yu@8vL-gi3Q?L8#O}(b}@7z3udi}0G)N4lnj(1k4Uia0LdJXG(S9R)j zb8XaXa@vCpqF$q8?yQM=(UQZ;C+Ez;XZCCyD(lJ1rL#RYM&o=79D%`yVaN@BI%9(l zxe#k)&Xw$}tktVlDvX#Nje})z1_m9up>Oo#l#vZlq4FZzo3)w%6038}S-DMe#ik}o zy(8&cvv$pz9FZe%a)uAGE9cNs9x@8$ zlZ|dVo) zT}6tQ&z?O?%<|8kH7nPZ>&wf{&D-b-2g!9;l}Fh*+1XhFP_fDj=yHOZ^p`u=%)?>0 zE;|Z7BgI_1MmokAv0{0qjWB1zJ-udmxvCNtGBan*BK=|}B}uD893CxWaS3t6f}>-s ztOoq?<~TvfRbr)=Y%H54u|6ycCmHAFVGc+>kp)M{Z~!hms zV+;&1F(-AaSv#6}AgZz)I}+!sh)fU6EM|;3JvSPcpfW@U+JvM6$Eirn8OntO%u5G) zESaItFs9D{%numO@WJ^uHV9GS;FN$hL?v;03~);pFM)?*I+9Q4NaOGyeLc=1S*xj- z*pRsjXU5-RNH25-6pnC z5YZ47FDOYwqA5xFqPg`&fvCMIYDoaO%?kiLrkKd#8~8%S?Z%79pkIH{zZD_6lztcM z*S8CnRf&>Hy$a59S|!sBId=Ldx$ZoeCv9@8|3xHIZdD>;yGgcxNmg_7ELBl2UL~6p zJ*QM<9on#_MJ7b$$~=iBp@Pnx6KDe=EDp2ooW6N; zpL`PEGnTZRAuVZbvX~?$`o@pLvK4G^gjFP%_&DsG#6>_{n=VBT=YMq-% zqU$TSnyj2=PMspBXp=RFdnb$=H#PzLCuvC-X*je=&^lflC!zJq=usn+ld+## zYFZj@7APum^JdJLPNNYnu0gzf^r%rIAx+{vAY2>bCnQ}W1$=X zq9+e!-t_5DNJ~A9pEl7J*Tz(m_=w>U7ikjWGS5~VE-6NfQNEEQ9v{wDm>aZdx}FEloq}#7I9u#c(m~2P|KK zv0l9gO&dLN{MgYWkpR4@(p7ZPJBv(D9vv8Jv2 z4AqB5533j+|0qP2w7+AgjvWZ#0ia#mc5Ovlf1B2ATFchrQTd3!^^hS$U2I4nRt5XR zhj)4eHnfhyf)Ge+>m^9*N3}=ABjRD-LwLpu_e^>Kt`8H#&0)jkaBr{HZ8~=BKsd8q zdx5YFwq`+fh8hpGBH)mrVyGNeF%%hwMObwW_jiA&b$iKPhM3eJ^*@4lGs$WzSdAJQ zWgFB+7#$yMC))Xyylf*{>yK)WXb;O)Vu(J}2i-%5MGe!3yGQtYJ@Q~%+16;&7IABj z8qg>o(H}M+Y9(4>t9@uysWyfW!`OL73?EJ(F~U2t`va{gSK6ZXWiWggK9un&hGX#8|5*cC^VN;eNg$A%CD^*F4WUMe#y$1|O<*nu|N zPft1&I|xxKCRDNHm;gHvH3(BB?@$Rv50H>qcoq^tuU%&{^9W)H5rxGB;t0e%#3+&M zaVP?^2a2EwTbS3uq#~Ro2xfRe06Eb=0aY)t1Tm%pG-O18Bp`%5OcWUy7D}HZFUM4Y zCX9GIh$V;`g|#sr77p+P?Fs2r^o~xdybNVch6Qm1o7zcqUGmXeUgmHb(e5pAw^=-zX{<0Bn{;3tCM>TEEba6wLM=V{xf4L&G!<)i+D zAW~3ilLB}lI{7+wf*%qP*-o_8+sM{eA8m~tR~~-2CQ1PIK^6q4irz+tb{~Wvs)Yow zb|o%ayTKZ~*u6YL;^=l_k*|Iug&evsc-@HZCx&O`hEU!VUs7W|<^ zqOstoCPHJuk4{5P+~9vx!GG!OpI@6l`-zET9v}Kx|GsnK@BgoP4M)4n|+AZ@PymHb!o3Fpf%fN|PbODwOz zl8xG6`dsmf8yJ%S@~NxJyPD1Db3IRzo%{k>VB{A7q&=lpUI4RLMvMnGp1cAOq3DCR z$hD^`=hI>moabbN^o8`E0;NmGo>k^6`L29_0W1izFyBLQ1cbwaCq&hpd@@mxFAxra zPstDl2%CIN%qu`o+N}Dg{Rq=ujyfPsd+3K;oloh-IVKK*te7%ydgl323jvEgy$%K~gBLLhN z7=8+tLJhM({)kz=nKX5^d|5!kVvd)!JIXD8#FH*ddKT2{e0j{J7jv*>7j6e~f%(*Y zIp08rX)8nX$+@)g0U7Y(N#?9sn0-b;KK_xO`eMb)OXl{Mn!MzH`K6a%k}tVlcD>?- zR`wfW1Z?)?e}A_v$8N<`>|ukze30(6*Z|Z5P}9FKyrc z(hV|I5!cK9S6(Io4=bfH!3A%rbwS!g z8u9tbOHnUJD>VWsg3;&#_x4}mU&Slt%dd!6Fqnk)ST~p^mg|5jOZv+OJkf0xEKD&r zDbTkY@aGroj~hm4++6uh3Yu*H$xGs8^QD*F43+$gXv$wf6hIvCPa)yqU@13b!TpL( z(@H=A*514%w*S;p9L0FLH|zQC0x`}vcFdU3_}-UlJ%Gf6KH8&F;~o7ZHkR=9r#uUq za`?f-q3?#u`B=RI9IYb|Bh1IqRkv~2ypDGt#1?HdGjKH&Oj*ZcuOH178V`I;sf`N7yvn)kUPMTAe@ZSH zG4tWq)%o-Am|v|YsjmM97N$FreCm5hVr?p|JW;DIhGBn4iH$2M0CMI=at3pZbbm)T zJrbYA;}#X!}kT4z{-M%eTLa`D_zC zmTBZ&xD@t`bBaymq&OePuH%x%y>$r)_Y&)rw& z`7H}BlhCv&SkJ;jgTx?PMps7|VA%N@`kpRVRyY~0BBgL3?eutK|0eySctbn>$`emq zo;n306UMVm>|H1Z++c~|B>4Pq=)$EbJJk{!$F2oQ>3yRpw^Pb#ts0s->^XjK^dHdQ zWogp;8h!d=Tt&f;`2|y05Z4R83?m1)EurYX>T6ZxU!q|ppQ!6IiZ-Xy2I!Vl6Ktxe zf|U7}A;&hyq6^ZV_J>qbIMAR;U)jg`GLiW|7LaSBsaf*S!|icZVat7NJLu+AH0i7N zajEa+0+Jdv3hjhe54LLEU%)7xrGT?``_NTL2J^>~HB9(nt+0Wg`7l(uaAYv{YWo>U zVcd~5%6@)63u2}XZAE8Lw(3b+{Uh~1g&ge-iEou3l_2@`_;5_!2kD4Q^FeI(k4^Zc zC22>ZgbOU$!Gn4KK=C`X6?R$tS>Gtw*85nqsgnHTtq4V95!_e=qwZ)df*XrqRg*Us z!Hq?5twpexmS&6@O)GH4NbPaWDrF@~V2w*zew-0j0ej{XXbdW6G146IxNu-pIctOP zioZSpUru2KFs+iHRR;8Z8VsQw%*8Wkdq5P?1FC#4JC!eg(c=*#R@?>&M)x=SK@bIAaOtboKZv2&A<|J9-Cy=2 zjVP#`x>v~s7wPT+(fxH)z9_n!$~U|^CK=R92<7{rvX|@LK;i2i(4>DA1}8>o(Hqiq-KqJy^V!j~VfIEAmOl4&kQWAAX2 z*i~{1;_YJCp%Yy3QuA^{C>ex`7k7L3SWzkfV>fwd(L#-apKsir> z5)*~aGK)rWO;=`FXgQ1(*$>7LUk%a-L9U1qOL#>r9`ts4411oV$_}X2FyxqtBI>*Y@kB9(d`>5I0SQj@w9BzC#-1u2>kc`qjm8GwWFwKk``p>*9oKs*Ae~ zuXkPC>6+@|_&V!iS~#I`AKX1xN57NaGZ!;`%)i7meX774y?E6F?~}MDs(yK}9KX@* ze`4CSsTxb-t&_=<=xr6(L=mP`I!bL(bMhoP$&L4qsaGoI1@ua6p@9t&Sg&NgZpeuV z)U6LlX^z5xjGTbgb=0VKIl<6=906q}y-F-6!L)!%Z2~pBgH`hG3{OlG)8teZCBxbT z-}rEy^p=L@ALPVjC5Kl`!nDchrlTz&WlRY5koEwuwE3q@o;=B=d>bz&g!-o0+Crq{ zgy3k!3_V1bK1oN4Cr*%fO+`*H$MZr1S_3g>Hl1Lm%_M;3B&!Vti18Y_)H+`7(JWbd zD@mKmqMGF=={Co4Kbsa9*jmLC5_z;FgT3HaajL16wptnDGTa`AAok>j+^G_7uEE`{a}QSSFiMdZhG(DP9W*0V4+{k z)R>^`QVcjy4yfcr|__NXNyGku9eH%obQiowM5s7k(AUNpW5*R}1#(A4!Hyj}@!7d! zr`+k=wG%&bm$@5%MeY7Yp;n|9m^-i*!L>u|G1#IgbmU{bV~RxB;1XGxS`NofZ6#r#OBOJ3w|!O;JLv)&F<-{ z&M02X8uHkn0sZLYvNSq-EWQVw_tfI{+r(|+c6rBpcQ$RR(9}VH!bWpr6;EXGSThI? zG{KGdX1B@P%-in}cL*E^e=gWKeJ|j}EMb*;F=t z_b%$+Q!^dkFx1$dV0U%NIO-2NPK*u{OTsB+bc$2++q8gjan}bFdBAm`$BZ6rxenul z`uFRDBf(OWu~~$`c~w<+-g@h8x7~jG9g@t8rtjR&bZaU3Zpj}^dt z^V@F?4&J=0nP~RD$~=1RDtLaHjm#@N98k$e?&Etjg?TG^9KKS}yyox+;e^pXNI)7V z0MSE%pagILvMDP#-@FA49_5c-i?cF->>~qoXecS53?}r5zw=gcD?4B%0C?Fh z)*uAqRRS=43ZH@P@PNPTmRpp-jkp_ zr*4J9BKL@VK)=2?5e`Rmr6jk!ji5C4$Q;dEP8@swal0|=*4mjw|+gxZu^e|M}MHP<9#J@_1x3+wp$T_xJBNk!GA_;&3tX=!nj=b{`w8$Rq&5L zPAgIZ!6R>Nn%zz(huPuZaVHrUcZp`_nztB~L(Z>Vht0bJ!-nHr)wEH;x4Z)?kChyab|!ugHrEA5^mOT z#F)6Xf^Hxf!lpF&tNLKWKA<ovILTC=Gf9aEAuHbFDNet+~x3 zsF=NW9@Osocu-mkhXy#s^tJFHGJichsAu!*igS>Jm`VG zFkS}_8rZI89u!*-9@OKmnt9ND{p!Jkdf!(w4|-r|eRxnzZ9M3ar|RZGeebB52eqpg z54yW19@Mp7Jg9wS9@M>lJcy6Lj>v<0)Qbl-kIaMEdYwGzk;pvAa=kVllo*i*b#oX^ zWF9o=4yJrzJgB3Cip+!VkH~}CH1eRvZct-4$mt(7c7qzbLI0b&LH^@siqV9svl;YX z*^B30GYvXGkUDA5_UoZRV;{H<8sv}f)AagiP{-?{K|}7gtMG==pqT5UK|}9$SU`hl z5ShOo8Z_*lNHpmE`nQ8(Li8W=X%><9g>Q$2Xlm{t*a&^_(y=0Rh+*1&^A^9!x&!Gn4= ztCouYOR+$UMlhTpJJSACU*Oau`iy9yGaWBp&oT2NjtIwTj4t z?hoNXv@*`5H96*Z_0)TuF@DcpZLhg+uh{$jzCqOdR;{Vty;|L^POkShyNeosdNbMF zXtONjVR_WvtNZruqa7XyB>ITn-d^`AlxXI^%R>3@nZIlT?I=tunZ!7Wl}4~8_L+P4 z$$eFOso(CP9}KanH7jpU9p_QYmQ6sPUn#*-B`iGJ>)*GR@R!*(HPg`cyt`#{+1%6Y zE?A~crPjQ%Mar^enZZyw&b3$W^X%Q{xGZ}4?{C?nxoB=6P^-f`ji7m=a8`}R?Y^1Sp93L7knfeLXWB;GWr3`k4 zyl(|9mB4<{mMaA0 zfO@tJ!};!=o0+*>ESD>=(n=YWV_j@&?>?A9+w-0PoSaFvcr344I!iM?r z-sfI@?`4`&`+&J0`WYkda`DKvvoJW+3;SaG$6`|l0SD=?JpfjbIfB`fNJIW;Mm(@g zzOB(W4Oe z-ACck#1(g`0jCL4F>M9*^kO_*UPY;aw{on3{0L0rs=fP`a9U(j<*H~=Hp+pJNwG=< z*>u^XUbXM(1#C|?rQCR%w`egSbA?!8z*D(WU*%mrj*@eO3J=%#3cRL5*GRySFNIta zD>R6U)q%L8#>%~3M3ngyASNMvd>!k}uE0tRvay_!Ay)d~9(F$UXW63=P1eNTs&$Lz zFIX^tK~pS~LH?^~lC;BlZxW^u&T8)}9I}=*HfpRnW~>flzGZl)6}yFzYZ~7y9$H2z zqodKTu3EVo!Z<@QyGSo`?Wv%Q?^(VO0M`OP_P$vt7McqdVpFF@M$UIw#NaD0!_ST7 zdXamNckiA(S&QfE^W6*NLLc^VqP>~?i?Y7OVg)64L%CMu-&0hyN897u``qHE=DX%= z3w|WE^dZ2)tZyJK%FVL!o61Fz++(uv@IT|)6 zqrq@3&?p6~{!tbMC;ci(axQkvnmf39!_&vITAS6i{IlT=J{xSG}7HEqt7o>8OzSe zS+nEsfB#Z^seK{-CO(&+iBDahh>zt*@m+}i4 zCT@H{i)pG_U~;x>dG|fy9&xX(@+}tlbJn~Ln6zNxGx@3hiG&sLq4+?p{}L@t0?B*J zC{sL~3!eVd=ZuQr8&H0-WWmI}#(no=*7z1=9liW_t(ql)c;pAZW+4#&{lH+yrUmm? z|NBRnvjmG|%D6!5+Z;>gefNv|#eDyULx0Civu&B5e`be8#y?z{iD-G=<- zGR9Lnt_7!BNwes0=u!ZYsZIs;X-?H@+maaj$xKKG|y;?B?Y2%rbST{n%Gm``eolQGZvO&d2C z{HyHON`|h2P=AaIA6yU@eCIdiohZAx%$^`Lg9A!@=g(pJ)GcMU8-e+)eE>Jk-HzXc zUteV0fBxKG%WkuNY3G*akFI|CKL67Hx6kd_rA+F`JWT%eedOEt>LA9`{NisyWn5*z z)*;S`_c10VhY!=Be^E`7?}HCN_~3%P;3aK;fsFUV!>=Dcg#Yn<@wdN`Ra>8i@zzN0 z{rBI)M6UYk$m>TAA0pe3wERQlRSk5IcmSZD42SfC15RpH$O>QlS7a*FFf?VehD?H=nutlGUxW{tIbKSwsG zc7Fu&b=K}fLkncB`IX-eRt0tKrTarp$*M|z-`)MV)UBm-?-T~9YSB|!s-bj`50O`; zdz@8I*Iv3OhnMbl8IJRqYbxC{!b|s7mZ=&_cj7-N-7{Li7FE%9<$m8|^{d=d$X-z8 zes|w`SMCWBEBAD#46mtj&ke8K6CFscmHUS9${jUz&6T_7=!yjkLJRkfwHNNYX}{8H zg?sCI6z)eiR4d$D)mFIgej4>saN+*j!L=9ehjIX@R=BS?5>~i-P`Lm3`KRVI4 z>yaz>1Gx($RPLFFBUSFNKmSyCRkg z%6;j9K;^!c1Z%9^GY`~Vxi3FdYvsP`2)^6us@${xTtnqvWmoPZ$9w^GnT}G+uf8TF z*HEb3KZsDfSE1J5MztB$lnfBo_bQdfxPRAFyrbyfK?NWgGCsGzj>ShBU}3fU#X#-8 z=%vHp70R0U-2Cj*fVB#$Ik5CUQu)4Y`=7bw*STB*jK2I;(L-PUqUIWY*&qHL)0c|o z2pREknG>;$U%B-)ns%t39h<_b?UYT=1;uIXTE1Pvo}(CHE{m&Yg-UKJ{#p9|c8LR* zayf5F3wyBauylxD;e!7DPAP+f3VL!VG~+rlE>X_k(>i`&SULZt3kkEPfznLEsQu5U zFAA&XBaI}L@|EYS)$*vCDJda(<%cRM2=aVbJr8l3T!Bd2NzHwkO^2hXIS-oQ1tTS zfChu>c46b?r|R0%aqTI*Nu|56lc(YL;$ux+GZ(b;eyZJXQ&oEe2T0)kKyh!E;_6xm zXz_8)exqI9M~p=~@8dE&sIs?03irvY>h+M)UhrV*PJ$^q?Yx&Xz8hBA`@j}H`&22F zoM{134=a7QT4`@ftC6Ey38hWB@b16WyRaV{p|HQV?!vxf^}@bIyLuM(-d@8a7WR+S zv#@`#dSU-SeG2=u2!;K|3Ew4}B15jsWKQ-`FS(WHl?(V4S?b<8*HjYKBvTxCzE8$uy`|e?osur!4 zr5Y;xj1YNM**|QR+qGBr1Hvo&-#V}wEBm40mHmAdruNEycz9*svSa-!`vD=9y=ZZ{ zeZ4FD-VrPNHcpvdQ)Ry+yt049fz(>rKO0`zKU8aF|9)0@W&c3!mHmN5kt+M&)}yk2 z_ql47{k^qS_6L`QRrYsxs=cy*dqbqke#svqRQBgysb1MHelBule{yG}%6`eSkt+MY z6f6v{>>(JTvj6kuNR|DPXR1~9$G0sGuk05;YghK~{^#>g*HYO({Y;>;|2+xTSlL6e z&S&y)uC{0LOP;GoWxw>f8Y=s8tFlL-zR50}>G>OdN27c9ztPB94aH;JdK z!N%|)Gn5Ggp2{y;wE@$XpC?lx7r~x^7vCd1nO~f}8S_mQ^wsTo&WBd>54Bs*BhTe_ z1S8_SQ_bJks%@89T+LGvO~G)+1F54@R~7U3J=C^qP%&?n#`J92t`(U-q3A(9|GP&! zh1T;d?&zlpKvf@AU*delxpq&4mGo3BvoC^&QRi-lfbPn3)oS`6zeDwkb7AGYlXRt3 ze&qe|qmMo$5=N@Ux!{_f9*YO%PE928R-Oy4>Z#z4=qSXT!k!+L2k8<4yUZlcdF}F^ z%I_d;c3~{fYv=r`z~{%}LAo@~j8fzOE0_3wdd_W+i+u@DF)Gg)T%?E0JRN-x;#E3P z1pYPo8ko|?haY`NO)aIsPtVjr11u5Bx2=E@Xgzdyp5c=p&V-^tR0ED@_*N0`l=`M} znFc1Hl6(^Hi}!8_Jj4&UW~(E+p7W}J4=MGXLQeS0DMWdXAB&)1m z=##9PKQ1eEE|mH7xc{AhdxzHF{J3l>R+dn6e$^`OF>Bc}$G>*Xnsu&q+InNmqpd}2 zR~yk*w9~S*Z10)_#Tit=ise^y#ZF|xFZygXgZvMpzO%)4e z5ZIhGIXP={u!hjJPOdjMY!n-P$qK9?EoS=;qJsym{OqhP@K+r0q@t<&9jfm1qiX*tD@bC6J7s5Y*^l&UHn@U~0=ssdwoYN?26Gby}R_ssW zU@KL20oE}t+6HZte`1@~ZG@E|twUv}j-5JXZC37*&qgARijS>|HDaxXNMUf}Cc0N{ z>O}t1L>KL42iZ|}GS}^w`(4FmB4#YjEFX;|UW%ji=$nj*N?y_okR1d7M(0-<;Z2}R z57&lR<0pt<2>jc)xszoB=X)y~vHQh-ACj`aSQeY{aIbQ8b`D0ug3%@zu(f%Dh4Zv; z$3rMOicbE{UB&{f7gy~sKF~v1ln9H=i46ue@6gcEHOZuCtEq`9ffJpL?qm1s0Q!31 z4#9qkwGz`zGD>XnZr-$c^F+qsD0Fs}VE%4n$)KNR0EVG^7R9J6Vtu6AF+*-bmwOA@ zG~2dQV@Ih0xCg-ce&7zoWo1j`M%h%JVyhCexn&|wYA0u_I7&KlM#oLJvdT&QQ3#3=;RMxpmA{Gph!}LcMUx`CCsM1S&q{xkO zQ`P1zFuY|lW{!a?Qu(aIV{Z(g30Y!STd7%6^<>oWXwdGzogOA461a7K3UxTw|F?1;u=t*udF0vbjN#5zUCsQDP@QYVxK}xE*C4! ztPzbf~?0y!PgYna5Z?MHg>k!sl3?_ZW1UuVK`A7{}8Ise+% z_QRgOze(}0%8h>~c=SpSyRj4hZa{&1zq?rbz__r#yh-_I#|w82>Q8&XU=JGFOC^c+ zVCvC5t_N)qgY8nVL5*z@m(wyXt<2Ye{IPWRQUy#05w;fd*WbInE_au$}@nIMNs5wJ!o&$5KN(I!sK;>qy&v`Uyy3w?Wjfqh? zqOFVQ>ZVc30FYNg)?aDyOfkfk@(-Znh*X4jZsMu*Ckd2d`+gPEt=lk~hsdxME@m2Xg>NfK(3uwW z{3(Q+nb`x`0F$%!V*7!ETB&(!8BrEyR>Ljb6 z4w5zc(Fi1K-Rrm`)K0RxM_Okt~sAtbM%>mNl>@mh~#`)^)Hf<{hCd>sgwo{4HH4%jzG2 zWtGtVuRbiR1I8wtWo>8EwXv)|)mc`~DdjHtTszBZSB+)u#N}Kw%j#2|Wpz8qh+0@y zd&EUd&S6=@@cma0met3?g|aM=r8-!afAcyr8P2js*Mnt|NzpchWhK>p<+}iCTcj z3ob$aHU#lqMwG`mPc-YpVeMu0IZAwyQMUVfgDCRreAY6z46LHAi_$HLzo_d)%ae!M+%F#j<<{7Nf`q zl4(}qFsiJ1o6I1Sy?M7&o7pLv?zToPmdCgYH=$>%1!s!(UwKL;fQk3 zVp?R2nbtOXC6G2t<*JwRi84D`L6}q^aJZ?M7IK0WIK;G8_Un&dSe8(>vZdjQURx}Z zX{2IWjAPDJ_!yZ3kjzoJOXhk6g+{+ba747uGhG7FTKAZ8k=TpFv<3x?fdqrsImNM! zj4JlZJtK7V#b8XXl>FOyit{80!-OEi{f4-IDQ04G*rTEtya$s!Z2zr1&x zh}JO>kC{jV&2PtE>?ERg)|^9raoMD@uS~QQS2FWq^78>4rfo7VHa0!jBj{F*O8ZhuL^#R$W-k zaz&~aEEryc1cPV2`wsD}kDpUKi!Ww1)>4*0 zmy1d<42#%HVU`IjQd}0(valcTVx|?(1dr{;fk5{OnfsJwg3=RLB5Ciut%%k-CR$%6 z*&|DYHn!V1n^*EQyXLmm&L*U`s{uYqE{fVo;X#cCgsV!h8S$&*%l9}Bcl z)#f36tbO&NSRer*eJoI{^(92H(EVCTPsAfMvf^r@SbtU&E2Wl37L$%piuD3bQl?lb zbv3f$B2cWqs4obs3sy@bt1W8uaEi6lrdY`wY=lNuOazMcv2vFwR#I(^EMUVLS^t6W zP*AL-$c?Pn>J%&Hbw+p-YiwjuTp<)|JihtrL9t>jTqwng4^XW5$c-%j<}5N9PO+w2 z6f3@#Mi!Y2qgbgS6st##jjU|48BVe0IuxsW&5f*>NEEAgeJK{~R-;&p>q)WVs#C1N z0g4qzjjUB66zk)N6zliF6l-53inTfd#X65!5KOV238h%CR-;&}B2cWHQ`ITfa~8$& zs7BUn;ISt7;io3-uaWbvHpV~vi;u;v8}1{jucU@=2$HhBY7}!-6>rc6qpsV!Gon ztXV+@LmAfjbMl;GSbc0LRiNsDaE~~qbdeYq;ch7ZG&dr>nr4{`p;u&xc+$t~Bhjlg z1*t}_2=zX(tL2f{)r0`yp~9NJSrofMLJahkK$NybVps8z*p<0}P+&Vit%^jiXt;?a z5$6b}SLeW2{sf-%!E+Jm)jX#fXS(9hDB=HF^b>!}MxJBziTin$b{t_3k^b z5<_|>61_@NW^1HZ@4ovs)2lU+=+)@j>D4F*Ki(9HT@A7a$2x;2oL&7Fx3N}5WLGnTE;!4o&8{ql^n4_C)icCo1a|db%&yi& zVprqpU{|zK@De>f!F?J1IM8PF3A>B#ez4ydcZ?n@;$*Ch6Wz@?{HyFCRv`3Ezbwx`VC8#smPCks!q7#9D0VY{Lf|J>o^Yw?}+@ zLVSXrP?i|UEg56R#t4pwa1>y7a?Sy22{KWnRs`q3L+-`I#^`{Vaj{yghM20@9*!In z@va0d(LmNj@)eafBD8kaD05ZaVMN*S0TG|zh7lu)5I#nT9v+6ofbol%n__hsPyy-C z4u_INGX5l%Q5RLEi#&3ZJ9?}u&JXQ9=-{~?O80k3iAfkl)$6r1$HvGQm-1i4ncd?s zpxreLN)+_FpxaD98u;HU(ejVskoDLKL_(jq?r}22j7TsO6GSl94nfA6F|pCHlr@53 z5?HZ_c&R{Mcm@wel8=^Pz$~DYF{D<+L?gYHdj?14p{Nqbn4eG@a#6((br4t-0QeK< zvrOq6lI5G3nB+>5$$`M&7ls1>BQ6$x!3xh#wj$&81Ow{zBrRF0JVa3-ZVW~>!6*p% zQfQrmh%?|f=0%7kPb#`dv;>g^H#EqL6kG#Un(v=kZV2>37$;<~%|*OY5$k;!_B2uMH$CJ?D`L4|Efz?3gFB{hzw z6iq_9?BjS|(dBOT=q@dJfw@AC$y75%3EN>*vTa-y0BAk@>S`1T1Rx*$P#=r=M}zFP z?<1@@3iB3MEQ#t6)lx*NCnYuQ03KIFA8;Ks4jnwCANu*>s3YdlBjQNZQBh3)9DT@l z_z-?>IxLQuhmUB1-?|R?4j#adeo!7V2`dkqhYtVbukCmlf2}pfzb|3ji;k7K`M9QtXNb`%ls_ zmDS)A#?gs`_CmJ-#8(K8HGAa$!bRjfoj>eR=4T3=yY&}3sCMd9J}r?0z;TD{0O~$R z0ooFa+5I2|a}a;H0_+26xxgoN1{BbWq+kzD2Pc5e+H@Qk7f69xyTuW}fwa^`i#Yuh z!MnBLIS1^39RT%JM4BfhkOKLnm@RPB?T4KIQ2TV^BQ=$%r^Fegt_I_i9S3au57X6Q znebm77zzKy7%}qV2%L8bnxIC|Qg8*&sxbyUgii{~1A(J|#WXS1M?-+kDgEPF#rJ`6 zKubxDqVgdr$r^=!I7ygJgBS>6f^uTi#gUd5{b|i7=8+Wz9(t>ZU`Jv5aFwH=QKTro zqJuMOF3|EY^g399{TP}jQaE14ASYlaL*Tz3H4?{P+Ib*6r%@zVz=4GL`Sa(_bFv_( zS5O2v^mB4h62z!4p}}?m?IlcQFjIcyk46Qq1WUnX9D3^HAXI}na)cNmhW*PP4a!0) zmd9CbFGmIDGLMAEa>9;6j1nWoh<{j4U@WL#q*|raH|x=zPKu_<6!1YsAt!jojpbu3 zEd|zuU5>B@<2{Ng-HI|b|N;0j%cQHdsQN#<1!tAN|V8HLJTJjJRzvrhct*}Gl{;9di;O_ zBc>Zv;HDN(;U^Vhf)xnn6UG8M#E?&{ivw;@^=M@R8oGsPxI7se#4Y&wswl?en&7dp6^J395|_dC2~I(|R36Z(yKY^(1mi!U5Q6Y@ z9w#4W%TEC;2UHF&TlTwj<{aQucg-?y`5%;k%lM8^_Xo_URahu=yLIi_xl^aW5WF4iKO6|g<1q&AaFhTCkMMyPos8*p9-}tp zhwA1rjl>Wi(l=;;81OB(eW|-j4j_NZ0VwDkQ339)G!H%WC8-q9O%`_stRe)7qDf?V zAUZd4ER=eU94oGoV>NQDMvm3Uu`G^+FR@0Bg_G5(lxyTzT*5f)qLE_}$!p|T%<_UL zQX|J|s zrB)icM0o3!S|-%3Ou?FLi0W~Atnz@wG-^Pxh)K;xZwkwx^A$^-FGo;=J{^KiU@R?C z&`+d}6{M+?djqFJvpjI2c@(5ta(4@3NSg6ibX*h*>XvE^Zn9Pgrjnahk12|ks<0?w z+*S4_pe>k~B$M3eG>OzEq|mLdU0YJd`>Byi;Yl>4{AhQk2y~?|;UdVgRx=?{LfG*` zON~;(O^_)s^{Z%H1mdcShxx?hq-0mJKLvd&G`rH!4TEMa4s9;FQZa!j6Ly;mnWl6Y z@LD9fk_EbBK#4TGecsr`YV2Y)cCqlVS9S6lyI7*JizUX0QH@=!F^yfU2|-;byN}k` z#Zqm!|AV_&e6A;zQ?z1ASY?_&CGA*=C^3(f$P!Unj->`_?KO4DvEfcnA8pqGX|C8T zq>I)sp-%E0D>-(o#8q-798^glw1ue}#40<-oCc7$6~si01-UX z6T!7o{E$zjtg(0oG7wcFt2^aNq!nuP`l7UCMTUWdiDNp(#d^s&C zaX~m_gW{0As&H-e?gI|$ZeXF9;NU4|eflC6 zQR3kdEunR!iBSx4?kh*-G4trL8;P1vxj#7lmW zW9IQvQR-3=l4jqDlP6BVx^_$+z0pb*E-kvLk{=d8rOpR$j-PeB@a%(U%^VP?6OWbrSCXC0^xa%pMbs-C*?{13B06@zCa2+u}SEGXCiS| zu+oB7n(*-HC7#l4TerTrHBaQpT=9Z<{_8(H``ok7JoEc4*xzx}#tpRQ2@{l-5`*@~ zc?jIK3)YFyU4<>nt(7n4<>lt(=DzT}c;5d9pv5!)`n`g$U+>`Kv1w#vLOl!oVlC-WA5!}@h0_OXuGR$z1{I4%ece&k8Zee(~`if6?$|Fr$b zDUxfg00Ise2%om*R6e*$6xjd#AA-Qx$#ny)uUo644}jTw*_q~DR0(Cx`@-`!Qf$FK zo*Oq{k4&-d^4c8E8<4cR#dcd`q)y*1rFpp`*Q3zS$Y;css?D2_a<~jMw$G)khuPIS zn_cilOUAVlnQOf8{2#<0#Is>wvF2h&GZId#Txp%XUAlJVTLUsKOFk}DZmXdR;MX!fs~R3VnRe;ih1Bs~3D*tT zr|K?c9seQlLaS#QtBx2 z=2~o9d$B<>>iU{;nb*jtUP=wX2&y2JyN}ek={m5%!|J zL{VC(WzHxoYq-iwnv{smw4E{=!cN>d!1%1pRKU`*WlQa;p+F+WAB&mcF8QvMMuV?i zg7HM4q=@BJgj!-vDA~n@q10kTtd6gsALuR~3bT{R)|M_^vLrYmB1XoFW6>oh&0ETZ z$oY{hIhlYVvBX@=_Ziz1UW&ojkiS%2;cGEs0SI0-yRwX|EPlFEr_P-)V794ucm&@sBwhC<>(^ZE`%N}0(iXhXnROVFLslxp9@i>Yl20SL{ zzb)X$)&b%}dxtdgtVW*I$g>)G7JuP3@~lRlrCB`ce}-q7rQ5_du~ob%@{HWP7l>+! z=ZLDvEn;(deTbHqh}w%FYF9y(sQf0TggOv-u@T$(r(Lc_bRsY+3(^EDBAjlK3nI^-`vMV0Q#nBj z4Aft&VO_19OV6X^UABlK@l>i3sR}DwQyb$tPmBvh6=wf{(5dzgFdtM!YwF@#S1qvO zO<$_C!8EZ%oB~oa;i_Q51+ywv8gWk6MMk0wtebFEfN-$_8gjYCPldnOKnh?P1zFvU z>x!B(&meB1OE@k>B~7lmL?wKkgsT$OBTqUwQ0c_Zgo`K>s^7Z!7BN-gEn>?RxNj#; zVY61%#kPE#Su z4_K;w^MBEJ7(cbCe@Up@pLf0Wi^m3Un$5hlJYN@qKkkS z4g6byz?h>&BwNHmLDGV937E*L;9L@JsaR@8Vq1RVbz=ShQYj>cZxc^u5)sJOx241c z*9Ssk0J3lu1a0Y(#Wiv*JlHE??kU!o#62r19mH3GHJIFa!PG3e6p3xwWX&c_Mo>D* zIMcPd=+-*9rqao&SaDe;Rbdy^Otn0Cj-yx}&YL2Z2M%kKEqbB2R<4C3VsgGFwq+;R zM$)Um3#nPc4H_-kK$8V8?DHdWqyBUYPq|g63at$<`X`L{r1fNyTSs?GVQHNdy#Zei za2g(Dqr}6f#uis7=n7t&=cnKF7^wC(mksn&pNBdh6*jhh-7W`Lo`T1q{KTDnt-0-` zCwY@;NgErhbc~@b$jPa#@l{1ju>w$ZN~|aRb$7plY?>))5{)+W5~wv`)}s;T3-Z?v zQlQZz>u7{IxiJtXo=_{Bb+y9;w?e5G$Sy*>mUft_@)%~IuBMoogzQtd&9PCRo>-WX z`ZUJK2K9K*5~BtZP2d_^V${)dhQ*I9Xwb5$PhU*g@S)+Go*^^pY>EY$@us6=NM^VJ zRaak(+J}~ZKPX@ZT2OU##%SDKJ>i_yfzo^9i4XnM+!v#a1$(CT_V;0c$&XbdHO9E@ zXr)Z_Ml=!_SgENuW+YKVP^O~+il1Jxm)_gg*cJPKtSi>Y)|}>8BU@`^YmIEJk*zhd zwWt5@V{5zyQ7sGf=qljMW zJ-uh&0uEN9ocJg<`cpd;CewXq-+HSE*l3kktRRaBEDO$zs<=IGodq%}k&rxdL{gPC z)yPxzuz~*mHWZ6RreG==Zy`~86dL16cD+1J71mvCEU-M2366ZrEKGD^MJICX81`U( z6QO3i*kX|W?;m(l;S6RPz-%@>*=~UD9-KBin-BqO{@%+C{gVkko~EE_-|4`V;Px3agP_p0Ge-*)GjeE!CB# z^)!GYqAz=Cy?tl@SX6XUKPgU`Cr^n}-qWW}pE`Bgb=o*{`i$$0@y3}qTyMDF^qqYZ zKk}@6%X4-weI^=ih_fbnVZKF5_Y@V9qe;Bsc0znpN61#L!7CA^CS&lqTq*tF_1<2NiSSLlseR#rw}D&MYpmN^`?gc zkZ(wp zMf``1h_kZLgLoI}i)bm9dP-duqJb5Z+X{H=NHMdDwiv@EUsL7Os-e&@ zpkIGvk~Cn^U>2VGQ&R$u;PHG~dGLd+AZY7K@q{^Ts+jt>DWsuaKXRj}$bSAG(15)k zDF#0@%oTI}w0otTRiSpjq#(ppuhJm<{j)Eru(H4!meVtR0+t=}hok%=Peg{dd?P9ACVMsfh#CI%(Z;0$=D450u-KhgI}#v%+`A>+~a`0o`^ zU}a$;c3yN8%;H_<ngcwB5*tub{z$`*eJF$YyirlXBOsQ4g%qekAQfr@(!dU+wg%3j>}T|y zSSSk3BKqsK3Q>Wx&uKN`_m&PC$pw}UOarf)2DXktY8=Y@rf)1P+(mKh`3^e%MjbNh z2$2`8fg`c==)@tW8bb#n6IwrC|6RcAh32^mS@DH63N)L6wt|R&_CLmx$jF!s@5L@r z=r1ZfR-si`iw4O$8Yh^`9*V%3M`F5sq5|VMgmOq(G&0uj61!xf45C3^0!~9I%u~DJN z59YUsupdtPf?fJ9ME-e&tD=HZrgA10R;a;)+n7D3GV7f-g!X!sm^@W*ddDuLjXXF1 ztHNC&mU_59rS1S#@EI461(w(^vup_VAfyq)`#}?S>}s;hJXR4^QN?LSp4lSi3te%r z_)p%|a1t;!D1F_IT{|q3m@Nk}RK|yYp}#p%7ip-}RZF?1ttG|u?;gj-N4D9%eW8F< z&{!eaf4YLn;xGQn3mqnnm5)bTJXNJ;9B*1X-55S(kQgKeiUFek)qZ_5CXf&K|uk`D?qkxSAukG^UqOCaK)qyrCdsS+;SlVK=a?Y#~bTk5) zmIF-!do$)204;WiT_&S~M3i+AjZR75jk^J~&G$szi`; z$BbkU_UEMi9Wl(3UYH+vSi z;G4e7SNP?juOMvtXf&y~(h{$cz8=SIEP$&weZ9~S`dZvD`g*#-^!38^&{q`e*F#@l zZvcHg-C+9qb_40_x&I;hy65`n>%NB3*S*(EU-w-PeckgvO<&JnCw+aFCfRk-S4{8# z{cH$*ef_%V>#Ns6Uq85J`ufH-($@pmOkb-&U;nxXFjw9D^(1ce_2jRAL~UDN{(6RL z>1*Pze?;|v4g3{fQ1#@m?>CIUR{RGQ(G4Q7uLDNdItlD)Ca|<5&Rn-ftofdnD)9m< zde4UH^xcK$H}=M?$~xxs2tg;W7}NJ0;sn_7Bj)rs<9MD>?@4z+f}X*7P6<11^*nSgB>r-f`$wt zr=sB>F6lajXq1vIfRg=1MnQzMa{=%>w`BMNZ}!F@a7DvWvVJJpJwM|D0lPCZEYXYy zWv>t%J#L^R^TCLgb?vaeDldgq$~_7dk(E&%1m7CM8`{Tt+}>8RA4AO=861#j3ZQoQ zK}{8HY!42zWrU}5a=y*wDtq7jrVlpw)Q!$r*&K+Q%S07HzUfrW6) zTSmqB>sU2S zr-Wd5ln9i3|=6nQjQNQYL{w`h1$k&f;`KqRf;+;O62P#0odgVX^8Ol(XBoVN2*}+e1t6x9E zS3p(uE8hEHje^C^tH_#=iN>Lh!T+jQe?43?0sB>r1?=V82-v-~6R;<1AYh>oYFK~$ zzJ>z!^1n_2ySrurc2{i$?C#nK*t~yf0eiWY0`_991uQ0b?F8(pS_#-BS$#>-vLLRsCvR%5~SE{93xN#`2YG zzg3d2U)55+PN=nfo!SE_VD02N4{ba0U;;{#BP+<)167o-qfy4C zoGd3__f$c?zQHr`qUG!E$H~{RV|ud|8B4zARYAVac>NLbHTP&0G4iz_hJ2kf_R;b+ zzoLAdJnS*@HNUKUT`=;I@-;sqU)e#da&PA4;)e&obL-F~tSQc$KMxPc;QR#(@N%rR zXt7@G$JRnim-0pY<1d#}(({zZgEe82670&mX;UT*m`~(_h4U9I zBISccix(|k95EKqr#)D@8#x@uP3ExxoL6M~nKa5F#Zsv86K}^Z@rk3fSFL=;6A(@{ zRON(9e^mO|RuCY`@fybZ!z-~#s8gqGXD5jf#f4Yh`| z3XvC(QB_Iz2Ro4><033%mqlur?Du-SLTYtDU!BUswx@|ncwKIS#8_i4AW$(_HOy7R z)X-qxSLz8VU$QG|ZwMEHZ_z^V=_RhEdKvc6Td7xC?|SNZZhJi#(1f~m>tPo07ur|B z*3)JSEm(*R1h8A)5{@W}2+NjBXw%Cy({G?>>W+27P^dN!?!cf`4SdPKa@7D1Iy`D=is22httuH=W91>q*C!3S| ztTC#3iCXG)jMacX<+=M^{`10G-}aNFBMhl$kr@sSq*@wUCL1@bAkKQv6YqI&uAsm` z8_0-gw&%_;P#5km7hPPobh(7aM#Xuov-v7ty--S98;}!I7nI!%F3xtb1jyw?E?>Fw zU2Jan-YSpVV_gK)Q-B!NtKXmj(tA%HJ9ooYLE5=?i|R^FHi*%-v+9I8`F=?(ES}>H6lx2 zmoHmERt~3r&syzKo)p^p&$3}2F*x+%OSy4)!t5)3s?_f(E%lUo{?_9=y>DN>_+=Gf zNOS=jIr9SW>l_jQ4?bc(_&1)=rG5GFxR#Y);3~ie@Po(I`<~LjC=K#6e}milAg;Af z?bG>kEmr}bMYvS%+0wr%4dGh<&f`7HkKo6ZA1dILc>h~_a1jKk)bsB>q0;@h0*O?< ztH2F&&zJsn>A&}QKyQ9@ew_k&&V};!mi}7@=lwLFSLOg|W1~CQI$!#i^ptM=4<75l zKG(iDL^2;g8n%HrABJfX>AB&%zcLq&fQZ2_~o4JtjvsUpx(G)J$HUty&4;BEJKlW;r#jA0S_MCw-@}k z-r%|C{raNss(be?U4{%DockTJ-OIM+n>TF~%h!nIhJ5}?+)LJX``r6(&l&{FcJ5FUarq=P~2P?cu|4`UetaLc`2!;q!Yd@$@mwb7tpzZXO0NphI~Q zB%xh;kaYl{m$qkOq&CY)rKQqeLKib!bLYIX)bklJNK?RNZ{S`WmoT!MZi# z?`rxRX2pJkza833+B^B1=`3mypv74o1Bg`_mq^PngLd^Q?#vUWoi+1w__`O&ck=hK zjSoj3cQ>^Cf&Ce@n;GVH+#3k{@|elB5L<p3Z(Xown=ApOaholm49z3 zdAm8h#QqfJtHaBA0p3}&MkXch6O-@d1J|{u!`VlG(VTR2*<$GyKvi*O=frkzIR>lz z`vban>mj7LulfD#B*5iKXTE`BtOxFc&2jtgb& z^e7-qU~QKSd-c9sd^+u$-mUxa;lprTI9Yp%8u^zVnM3Gk0XoX&COoZuET5+}IZ5oedTZ8HZp%e=_X?>mCC*zooQHsYr8~AIdiG!j4o5iNrKQR$TW@0Sq^aoO*R_pXb8R- z?=m6AK?+Gps5mAO=@LC>%||+;7imEuaWg2Y6C0J6YxoipJ4R5<77ZD;)MA3VTvVK4 zBhZysB3vkKb{896^JODgh!dvadI@n$iKB!QI$Oe(&^zvd(-$_Xc>&RYY61OYw&t<< zRsdKsdgO?qLxv2sli&y99Ja?FLgzww^IHSv2AOMV08}fGau-3j2^+MgVt8}KB)+x(F{{_Q3Utw?SKXek?j$sH`7)Rgb08u z8453%+P!E5T0l_P)@2j|=$el$qM?{f_?&bV8xO90%JT~}+K?elpa&QX{1V3!Iz_V~ z!Cs=5s%3h4Us9DK$nqY1BNfr8v}Kr_FK*$*on?YUlThR#SCD_3PPM zO($60!R^I1*_cam1Hq_!uFRwJ#g)l@=BXF3kO79lR-Y5^1*ZyN5i2QU=d=SH#7Z5u9% zEg^9b9|YHBr2@|^E+NUI$JWLMA6V^y-)^e5x}?R0t7_C+k! zw(CxmYP)-Y$|Z(sI~7rFAMqpjiB@f)-9@F(IPxp>eRHWo1ZAzwmV9;orodZ zPM48w`|%A}PPXldl5Ky4=`m&7XHl~4gvhqI0*kM-it39fw;!UF8{gir*!~3NCK_fd z@^Yq)P!dQjnA0y>IG@VxGw@bWZiArQj@iGm4aK=$Z~{)$ou(cB{4 zE`3l=x*1`?jHWCzju>#5=g*t-PQK^I?~Lk;NH=^LhNYXWgJe@$W`Q&sV};&TNVlI( z!eO0%*O6}B`b(-U%8jCr8rjap!tNpm#7>QYOXrdMMJu)BDx=(bRa9;= zo#fWD^$6UZGi%nUWE`8;CR(|@JtC~2dWmu~3jw0O0F{LRPU2ZJy9;lth;lnwUb%g5 zM%JMAxZE=PonbJ!9rmGU*`k>v-Ok03ZsrNcg%8FGvQLOR z+x`MTucD5S^VfnVgw6VBfk!ujV0ZjC#&H#YeXZchZtvIn>OJy_N!RZ z?N{@Cf^Da5?L~jP@*Fyx9_sTe=2G#MKn&PP zkyGxepx*A0)S*lQrJkz|p(9t2^&*q1pxsIxwhmw`HTf>txbSWA-5_D*r5gnpy-VmE zMdgKWl5|m+O5O%sIptRBXs~WDk=_~c7NM(DzWMSDCC*EPuoA_Hi0TEmsWZd59Nn9nYUd%u$)y zVh$S^fv$aojss}KW2qSl$zYqtVF)wDZ+@_4r1x(9JO3S(?JryVkB8v zJy!y?ZwHfXEGI%pt0fP@gjC^>xhJ9poh6is4khLEJrh%>!px9rDAwD@Vkx@PPIHlC zMGql4i~9 zjKi)Vf=6^$LP(-`cD$UVv+@vPZx?_;F5E%7s}`3)4BBYcldyrINV*SVOS)iU&$&RO zmLHzF^!pzCjxs<*-Kkij&f5V(e?hbbdNDaflrKDfw@tmlj?5HYHQ0~ehH#J04z2qc? ztW?YHp^nJ-^8%|q@V=t7+f_!|6;vYa4wRR6$74ymo!6qI9m+!xUooT|>t1$2?no?Y zx9e_{v^!N^+8r>`4*V6Q-L5EUcQA&uD|n=|(|La#F2@~%-7$6D!6;pK*wJ-IsM~gz zsmPs<)^$Je-`Q1EGhH_vx^7>Ublq2nD(bp^&~k3bo({%%lzyj;l z$LP9melDl$x=pUCuDg1&ysjH*XdkcZ2BekIb-f&Y1%n^0>&6VKpzGdt)DC0(C|x&r zXn9@tn#228T{k4TjINvHa6VSo^{t@mhE`eE^+j$IrR#dU6=tozt{YWlUDrkO{^*Ka z?<(uMzU?LZj;hE_sj{xKu&3uXkB-$%DN6(R7zB~t~*m@UDr9RH5^@c ztjfBsC*@UHU3aO7M3su&29b@RalU3Js z-O5mluDeoE*RjX)C*(hgM<4E?#NL&H?p&a!N3uH z+r9GA%dhg-Sb&-|#X*wIJuSM9rhNp3cE1nPTrdq=b?wN}IXe3;a2;QH@uio6bGQgA zZGnwtyS_aoWhx!py^HaqM>+=^US)ZPCB4|70YU0zZ#0|0+O+9CWg1{=moINuUf#}~ z*dL5sI_v887f~aKu!)sTn>8mHRsw?U5=Q~2ccCN8_DpBr$jZ*j+P>YvMa;x$mkuz{ zHX-pF?^9ln(3zO%>|hpls#4qUWrnddwGpC84+AzSPE=`^c>L5YZ@f3?*y_qwS$cbE zW=00ArM>E9zk~HOYuX&VEorc7hjTlQTR(c^yw*-+TtT!yVUH+RRtPJ*I-`ha1nFf5 zYx5c`j(JZ^JbGLmx4!hcy(%}5gE7I*Sb^5>Cqw z{r`sG7@wKp&QRM_gPRU}qb5xn z8+I9J#vIm@-gP2)DLaRIl4V)jGhLbP4Bxh`TNyR=vg5dF;+2>S){BE-0BsNE0GUsy z6TbQDIY%V!1w<4mM?R&%`7R*QIxp8F)?yzy_@A?F2*<;ls%<8T2ztrVLQ zOq(|IT~O<7uC1XhMBbMv-ULI{RD8zntYj9SlRJRg1WljtPvic6+@de#;`C)(w{An& zw`|!eQG2x!#@fCFZ%sq3aCA&^M@|`uIxYY_-deY&rRbE>h3g34vZdglI;aX<2i4)? zV`snp_Uy+W96xsS@ZqDbqj34C`*@I1cb^EIJc0ALeWy;II{8JRPy5jOcrbY6#J6Xk zIvYB9?5I8(I(`&>+Mj;v1lf`j4Jl3owbgA>;Be#)_3mg*>ga-&iT)Ocml>LFj>b>#Gj~hG9;f@2ZIH$%l&P< zTwb5^0C4`?`STxQt_npRF)i+-I%S!u;>{I7l=K~k`*{4p#pR9Ard%EC@Z_nUIe;eedbl7rz&N_ci zom1yM=gwca@Zkq$6cMWvCva8?Lxm8#;P$a^&!{tT-@49PgadXKu)jF};50D!G(Yb? z`P8W(S>nG9!3^52@W~L|)#t5q=i|<+3#F%jf9li+Cr$!^(Kw|}#+~}fZrNfJQ`asX z@y-CdZ(6nFNpuZged)#e=iLAXVBQCCz2x}&yLaP}zH8^Myq#*N%Dc2P+=_(lA3LHw zhDj*ehHQ9)`d|-SIFBE7!FA%nam=;%c>%&N=IzYeiFPD5oAK?R&VaW^X4bkD)~*{j zdi531*FAS$op)XE!GIGI9(~+%;`r{JcrlfixRmR(V1?K2*B0w58>kQe`Owa2C(H5H2XDReuJb-2K96rMbnrMa5hwT|f@@UU( zazU#L3b&LGPzO%SU5Bm|NQbO5qoSxA;LQtv(UVXrU#DCV&BkG8C6li_OI($gO@GA!kfG zi(d!7@yXE+<&`gq@jokZ$I7w$Vo^N{OM z@Zh0Cz=gpo|9XVjJV;;Wvk+L!Ty_z`T6sw63vq}181sV;ug3fFD($4@l?HzuB*bsG-H8I!B1A8-snMim1#57mW_pZTxK$j(_ky zRH$RB8v=Iwc0dD=7Q7!Yr{O1rsDZ1dy18oMft#({LK7h$wZ5VdmCeL+vR&C$)^_Z+ zj5lKRHfae|FGZmZxoQytUPIU{01|j9JXR@HFBn|sDi84o3qSb=z zq7JA;VZQc;5M_eZc1qA~YMai`4M=^vJQP?;D#$r%iVwb_3>66(hL&bfQ`sss?D!p< z8#>r>?{Se%6uwA zZw(UVOe}F3^SDSR7RH*eG9q;L3Jw>PuOG}J1=WilQK4qMDBtY~rfvC56}1lF^`Qx@TI-%*7d*ke|wENVWC)7HU{bv{xENW_F8K ztuWF?KDTd=!FEI_BwS!x%8W(8>uv6>YKutFE9IG6Ini#P+}e}iu zIQ6P(s2e|UoRvZ5xvYqmNMA>P7D2nFKtHBTO-Y%za;w_v-ePpGdE(qK7ibaXaQpTh zI8h`o4~g&tH#=M{}b)$2wz(Wg)`YF+Ed%&@rm|)qCKBz&wqC9*{WsB7Ra01Bve&< zHf!{%$RwjZo3(12Tt)5K1q0kt>+wt;3!=q zJ(Ie`mY$a~xwsMGi{$5~(9*V3&6MYdU)D-_9{;p<%JX!smFI_F)Kqz*e)ES~2+tEA z*Isyj@Q2z7&yQ;(JZH|WmGGQ7r{=zc=+3KWKCGxaP091aPro#>^Mjwmvh&g>Rgs;aitPNd zoa`+8!((OV;Y$@{XW<_zlbt88#gLs>K7EAjJoSC0vh$ZuV#vWCRC%&(W z?7aL%rLyx{C9?Ckb01bqcHX@5s7=Z9^r2eI&W{e(T6Ugzzh<&CaP;KfTFK52 zY9Kog*H(6(+FfJWdEklcd?Gug)cd65`K09e-)G5FHZ)}mXO@@6ELMedMksR|k|(`I zZ+34g*@)NYH*VO7m$Wym*Xu*+JAHM0%5V8lhP1M?+)_!hs~c=H(_7T$_)UHTQ5!-) zxz-2QrRDkDKA#`Iu#21vbvl(9pAmEbahtpbuwlJ>eQ?A2_3QMyP}(kJQkLJRd?ECS znvxZXyr?~)lh07OH>r&tS_jaE^=iEzuUD^Izs|KTm@ar6V2YxT2ALm_ZCkgfEul@D zH|YorNM$&mTBp)|X@8`ZC>61km=T9wM;9XD+N?IYHo7|Mg%y~&yc*(SJBOSSKEaULd6XMo^%as;LPm^k*4UCg$tBoO8>E7U{fgDgD zG3(OO~ON>kHNIF-gmwUtB~QIn6W_0~F!XQ?4U2=MtjX)2XY7;m;<=D37HAT9)0 z+>t?bnL(8ZAZmfswA3`|z|>oUXn@?zd4M~DE^)@K!*o^YdR?9L_%tgu&6O6y6mxBj z+v3LO9&FqoamI|qjZuADz4H`yDRsLut@`T76`l{z!im`sz2| z|HJF~Psg7w;ipc2^wB3Dp~IDbyOUdpqO(1hl@%)oCsr5d8GE3^6|$Xo<0 zy*}mo&~-9&;)4?|G=3ga$KsBvBkC|P(h2AXHiz~7dpWt;JJ2tF&;WmbN}tjIst*WN zXfAdga|_ZsL@FMKSelc|2J;-?TsgiS2S57g_YTbUfd(WFEr;w{0>qtreMb(c?9b;A zmX)1z7ziaqM4)l-Sn%jEwhpQz?!#z+*U|tl-TpWNEe9}p{Nt&dd-T+)4;3sV&;{#A zEf9U&Es*%b+I*ZBrz;@Xk|$BpZIa&UPxwC4ciAq#rLi3)7X$UcIhG0wZ- zJlfd`)S=LRzKG$2E7{Tpe>aQ9$$}1n=mo%2cH3TQP(}#!k+{SDLkC$KR);PZ_svM@$jnGBq)$q2?C3oJ z(7i2`dFYr1&bIWRui(G|;#5H~$T%JF3(YMGuSp0cIv#}4gQwfJZTnB6$~tUW%>k@6hsHf_{nIqerv} zs~DTVe}6%Ifj1Wjf|yM3E0J#p1ljB^?e=k70~veKT_eG*4og+(pvOk-gPGVZd4G_48nS_LTZ*>jp_L6I zXt>lqcY!-Uw1*bzOk^Pd1hz7Fu?<8!1|Pd>b7|(Tf-uOx_W&)#=B)ek^RqGc(I-?Q z6O{3E+|zg|fGN;j?7YLD&DgMYOU~|ne8JhjXD_dS4XyX{zmU8?L3S?(aLX3DDcpLC zPoSGNs*Ok-*00}^nU$L-P`%&E->>!uaxyd7<5bK!VCeBGfJUkk+>GzTIDF6D=Qn_S z-=<-MCfRwJSiS%LK3L6rSFEarP;hO0cWR@ zduu7by6G;zNG$%QHr?UZRG572ntU29?AWr^BxGuv4{mRT*UB+lZ!TiQz|C|KS%pgT zfqTuG{QdF!-TS=RGIhyXL`HzOV4ouJ>dk%u!sZ~6{Eimn>NO6p-dDseMcE+5p(bmP zS5O#dg|AGt=?2mvLyK=|vaVjee?J4J_Z1SlhYdd&lHHKp1k1$QXIqSy4d&LkfpCv9tM(GWgvqtxDdfhIy1J2D`6Y9gkJ^?=+#yId1z_FA4RIUl ztdCn4hmZPF(~z=<<0W@7FReEFHep`ivu=#9oiD{9VP`tSgq^cdo4cM}Q6{G;Az(d6 zMi6o9+(sC<(!7|{>1n_)PCl7On=ujW6i6EmH!>XNWUllea-p<1=EG^JfH1wsUAB3X zYZJy@1elY**`IZ#VPKe2`clokNey91;_~PY|~0h)v0mvxI-V==KJ;tNxVgdJiw+) zf|483Z;Xsfi%WHZ>kiX)K5hszA<=l=kj+k<6(oq57@rzMVvbvfPgZI%rp}6TiHjY!Ai#+B+zOHEyiJAluBuLDCw zB!-ws%GQe_uT1VO`awx@4_cM#PfMk9e6ko(Yi*R=nhsKILPR4jVSVQ3yh=-Trv}!7 z8?aJNE(T^J1TjsNbW(EW@}uR41Ox`?o{OWsid?v;R$TCiv*TXQBrQ)05X-u zUJ3>bp#lzbU@eG|+hcOd55IVbv*@ox710${9mZlzQV}r4fMEu0!ZTQJf}>hwuiT{^ zPI`(#!DB=72EsH|j?i+EU#B*8^&{`6caG=i-eG*rT$qa?%U-`kQQ_{oJ^ zzItKJ@G+VNV`zpi{}e+reEvf$&G6ZGm1~Bb`#-L+X2{ulLd1rX{8v#kxO4n_sxKL` z_tsc4GQ@I*5_(F{*C18XHuG{Zl!X82=7GkpAq;xd}yv#+8w!^eLV%@B7wgla^TWccix zSdszIie-jRzKkUqaN$bJ47s~b*IY8>71TsBpv;h+TYb%twX?>WA$vy+G(&c7wKYR_ z^)*9gP7KX(;!&C*E2d`n{jSGphRhwYG{f=ttDqUSSE3pAK2|ei8+h{cCVO z$J#aSHP-4?de!CkaEKB%48{owI1LO3&CHwU^8x+~fM>owqtDpOkt#KAty<#;a_#Ch zdd*E#G*;ov3ma>norcZJ=lT3DfAHS9ug|#8xUd9C)B_Yxq<(_azw|2gF3u=g!Sj)p z21$v7cd>c7Ki+R$1xDK#Ywa4fMz02#JlJ@i7@S?aOf7xDbK0=?@!YvSphDhXU?mrL zX=0r&qfrVbwF1(7mVRr1+FxZxnLg=*9-!;W_g5KS1NTk6wkP_{EQ#F9||N$ zh~9p=B80ss;?b)2P;DW?ko;6B2}?OB?yXj2m@LixM9Pcaz3FTM7dmQJ7q(#cO=cj z-jRrPSsL_X2}Y&gbApFk2QlXW1MMN`QeZ{# zMmZY+W93Apd%}$BUH=N!1Hh?wfYU}6mqD_mKn--qfyvaiO%1Rc1+Z8iqUc3SS$Rxb ztJaoEF!_MM6Tl*;+QE$!A2`zx#TS-AP{Z)AX9XOk7K1Dzl4n}1Sk8yS-}wLUfcE_d z|Nj~IkA4*h`UC#Je+i(y$p0Vx|A+kV-}>=){Oi9D{2e}F@!$W>AHrY!*T8@9qq!-- zfBr9lzx7)IzruC?7N64QlYcK)_#gfMR{)#vs6&{W8LZBn+k~)l*2>9<<}6h?hmy}K z9)vP;`n0K&CypQc)*E9EX~F>d7FAW=g*fF2_R|5JJha4|CL(8%%)+jSKus9?)|;b8 zfz3LIsC>@q8b;Xw*UGaFkH-qYlqr)Yj(_{jH%7gF`0zmj)#gIPln(XS5&j+9@933&*XgA)(= zP<8mGOtF0&IgEWV&-g!g=%Qhy!!z80O-q?#JRCC`ry-(`=Kw9W&0M=SVrDry`Zr1V z#=MTRG}sA3Am%;>0=Tf5{H`%y8aVX_?g?(v_^}Krb{S`82O!F5X8u?Y(h2d zh9DlmX!99DIKJ8yt@ynSv@pjv$ur$$HPY(sfF(ZkylCyaah z?J=(p8`!T`_bwfh+P2!aNA1D1!_(Zs$&qKY^BvkbZR*6gN54L7Q2*XNWW&Wy+^VZ> z>sBCqABw_YEC?Z$@=B~T3r3G$kQ z?1C-KWRtblEt_#mW#n4deI@ti&z>=5+#91ujT$*(B*DV!fNzAsojV!cR;`*h!$aCi z#b#iip8Xa{<=HcDV$4R39`$n=)K3w8W z;MJ&NTmTkCOz7VaA^XX>L>HJK8rC)0o{MVK9l3zx15YCc{?BFc zVgn-3v=P571kWp25xf{M5Rvcy8u6Ej#{tw`;Q{!QIo@JGBV^3)MRIa%);TH!1JsC8 zdN7D%*I)J5eSfhp(8V~w3rG~2HEM)s1+SpasIOgTN=J_xDFGNdL=8~`^#FoZuOGqA ztvwxfhrVG$=5i85I&hESH{&-5#t#tctB&na=yu#uv1yY=FY_z%`uT_hH4qip{k#^U z;unlv^+m;>Y9uPI{ZJ!O@#_yY5Ea*dtg)!rx~__%VoqvARBT?K`Z!VXfJzVtDlc8L znn~4KJT`1q;mh5+X&p`;jHxODOL6iHa&?ohq78&uXGB&M=kOdr9xlnpvsxKkv2q1< z(5icD*5Qkr83r;>+-H&)N9&3|n*{!mx`Ih~Ra8YdO*QFvSy6GROo}Q-MTrV0kFJKS z2(2>mpjx8BivXpX=>2~wD~g;ve1X(6~l%MdaZBIZk;=|N5c46UGe7V z5km>+RaIRvaqOF;M-CfOEnP8X!q_puR7+P(pEB|7F($QqyspT!b;b3k*WZ!`lX7C z=dq|*vr@%+Bu!N+Rm_f370l~dv3W$P0_RjNSSW{f#*h{3fEvO+DnvzY56Y-^Wl zMR{5ALk@I|%x5^hX#fYY=wH8E2hiWfq3cG(u5@z9n1ud4q|aUs#t-SD8Uzn6TbQ6 zdxzs-a1+O21W^DO5-C>vF@js^ghlL}W#cAKo;1OU=Gv{xE?>j zi6~a%onpl;PP6iMs(C-l!a5DbL<4ZVxHxLWFs%RQn_7iR{i6*uB?kl)y#nH(EXV_g zstR#qm=Gh0wo4VCJA`2eQ8}1{;s{F|VkmIq#xbU&5Ys^e`rDO?&%uWk8#C?qO zZu<18tf`RC5Do|7fWCI6;u<;?fOG70szwNmnqJ7r5Jqf@H*k|mC4AUX|9#esLA z!M)WV%jrG3cIuFvgau?^#-X_ zToO7{QIVF2+3$=&af#9Z%jSLi0H%7}0T6ucpW$E4%8sj8$7S| z@9!XQ6KOcxV71*YRj8Gh(de)QW5tpi1{sP1M!xo1gz^@ESgppPOo?sV;AEGLMo|=B z{Neiv<4|%NGwSu%N9YlEVqs}6u;QuI86<=GMxQCN1qILs?z7!%Ai@af9LCO?i<549Dnt)yH-i^!r9Xl}CVnUm2HJHKK@hj-i9a zdqgdKfy?0wFaTmh!!m^mEpV^EhYTLTDuL>&`dsEPqe#((b(Rk1{1~qDH)^=5T$RG` zdk}r|w+g*UDh7XCW+Ek4Fj${9X<=#Vm=s%a&H zM5Po!F;`72o^S;w!{}?*3a{Z5)glKvcu;hdY%I=&puILWFkupq@r4hr;bx@3$9z_U zg9GtRrDmy_p&7Ggs+nF>@TR@~vfzmmuN217=xYGe+QFDj17DlJXvwnWD_tusc6Svo zTfAuAOj;bF_2JuL!WCiz*9w7CL-pVXI76;~KRyEAU8xDx%k?tP5`4?goiSz7WHmW7 zX)?;SYT^TeCjt%2b)mZEAI_U-pc+`(uYaF@eac?IT7up!y(GAJ&NN&?1MU&HVOQ7g z5<2j;0eGz9xH495ZSD|y%v?aK#cI)a3ujG1VS1uL+SG;cx{z2*d>lZFGsEySwZVa9 z%a<8qwb->tEi9Th-2qR4)$YPO80Uenz1FWESy@>m)GHb%%arl`#eZqJc9EUJphl@SB8(4>A;-nF;Ebgw2V-_*i4UdN zK)(U%d7im*=FScH?*3ZnDlENLXn-A(Rk9CH)0N=V%dN7UB@QPN0_3c&K&a#J0Sbd*@LWANKHx3BQCJ8V7`=jP(|WlJGm*1M zE!K;y#b|DHFYqur@N(W<*W9NA_a1cbXw$T5-MZyUOnV0rShRQ%`ypKzNx{%c*Ia8( z;Hkj<;A?$*ckP&j)1+IsY|-3Cm2%E62Fx%$FsONRz@_G@IZp*t@E&FjpR`@EuGp?E z8h1>?p$qmYnKS59oIj8Msd;K{2)?N~@c}CsP=Wh>@QlV2ny0O`Pa@L4blH-{OBU7WWd9|+)2fuIiJ zukgda;lHV%#lH;6U)2pf9n_(Efq47>KOYDNfr|^eLobB!RtTTBLV;%ke*U9_c7>jU z%L@PDf-YPJemocO@FVyP2`&Ei0#W=MeAfKUcWmk57Zmy@c&GKkoyJMe??wzQ5~0@E zK^-Tu1>ysr0!YnJa3DV)iQL{j=#&wpWI{v=lz9*jjl;Jx1`G!&HpVboL2PZK4t%qp zxIOQi$Dm1}_*k$x5p4r(Wq?frad4?L5G3gVVAbBMNRg07;WSTS<&&WYGAI~~DXbDz z+mhD!CT!lkNmHE11-J|-Pkr;{8*26bcg!aoIJt3{Ad?&dJMNt0&6t^%d(TyntI zcOw;(2U=gb*~v|?a2E-8(`JHh7O2B9IS|U<54){BIHLRe-Ma`zzl04&qy>y-1%!)s zH*4Ay%&OVb7&@{>ka;pj1}QFg7Mp==V|#3nR#OmT=*<`z*1Wty7~e1!w0z9)1iUb7 zGqS4Y&jkE3M!@~R6Hs^JE5{_O;KcLE!GW`-u@*4h+-inF_VfI5`gul>JCRjOf?O6E zVQki%N0>EhjyQWUw*m%y(SUcn1~Bhnp~dhTbCK$`V33;WW^v6KV8BQj0t&~b?YPWu z8r;4n!%YsOFcpbX&FVCdH}?)v#WvTD9HLauYmynFdxp&?I3Us?Yu3CDU97{qHcWPx zdwWqg^t4TEuiD>1NTXr!PBph$$ZvtC1CE`S*)f~lr$^V$7={G2n&3p%CJkS~A*VRJ zv+fJ}1ywhQ-TGftFRGVtyxhH_qT-TLj}OnLAo6@TilgDtD4Np}4i%$G1&2_+j8iB9 z2Jrdkp8cKro$FcsocnqGg6m3r;SZa!UC-8xj7+q@W@jVn(U5v|>k{#g|MKIMKZ^|Sv%mY@v(G*I?DH=8s_O>okvP5( z+l62eg*$%8RvXuvMxga#SWIAD`Sw@W%>FAsfiN|dr+eCgjY5&|x#zVIdT?x{$t@KV zwL)j75ZP1Y)><21pQCEWN&ikgYdvS%>jxZod=+0&g(dLWG!iI@x`vBfmX2hAu_nD{ZNu`G>)+{TIVE&mgY(yi%N(YkVYmdDNWAK>N{%!w zW3zr%J!d>NSe!_BrB30MYaAL`vRDI39uHa$1y9Su0u9I+S9tZBAj!9S&8pQEk>m?L z_rmj-(qYO58p`1wr$!X(>VLCZRYCChA$Wehc{kqHI}@s_cdp*NAJ#kLs;hT&;hpQZ z?;62_MU83;p5K^SqoeY_0l`x|W9Ez*vSw!VSxmk28^)-N-kCdZ{(=PyP4W-HGk@;v zS!`ylsob)N}jGAld-N>L&=lO z#@SX+B+nDcZ~ZO_v_a;Mtz5kB9E%?+(CJrYnlVFhTFGy z?DEcR6v$(icLa&o(4<0BNqHxfGF1vomu$s?g#+aA(Ban#xs-~+B+ENJ9#!9&ipGrc zatAN%q4F*(z>li$7%0HbqLkEk3>2%*-MV$|{FwUA6bQA5+`;NASF248`f>H0DU+h) z4%Q>PcQ>W$_Eo6wOuFjG9X1zmwO7`uA5-7)qWm#8aQzx|5*#%+yF^pP>dy6FMeGEb z^{5V|Sldp(x@48gJ8^;AHvlih3Ngwxf@{<2apfI|om)3L$>$TW{)v_Us@He=_dydw zJ7^s&C^xH4eWw?zG+pIAy=K)DJ6Iq_3xrt&Ppn3LN9z6xSD-S48-|4z*2EII%q1PvEx40JF2CE&4*FPSXShF|ev;6$(74 z>!bJqS55WK!AbQF>-9|t)6Gy-iYoA2F?Evxg0vZN``e7Fm1(8OM%1A^8~!q^+eHZMFpTCs{HrmALE^JXr38l%o*N>PBK>XxLE?#QS_u<%jf{4J`^^Rv`> zlF{MB0uQPQuf7b)!!>dw<*Zz2R9y7)3iTfA*X!!~gKNM2cH_naTlQQrMIJy=MQsS| zOD~FCs`~=#HR>N-T+e?l`1}hmT+yiV$jM zoqF&(2F})zR<2g6wQl1DzHQrf#OlOf6WXwa0XaLq9;IPKzT}V@pcq`#y&KB2(%sh* z%&Jv<8{IaP&<@{1I`Mq_r1nYF2@VoZL43SwUMK(9Az7Lbn8*qi zUyyu)CUjsoDUEK~0u~48EG`gq99Bse+9$W~kle9D$BuUX?0h?SNMbKfTc$V2$54_6 zzN9s*HsNZQ=o0SFlRG4L0J=j*d3qyWOfvCzcnmWs=zzA;_U+J-0NWYqHtpKBgVP2a zBs8vLNhdz{(U!%&4b{OX#BC6#dmWN-6@2x`I0LKNsRXz1`U&mOQFZ(tUyPkPOZv`m z%hv{o`HXEN9V-%Z7_QoC8>^D74jpyJU|8!#wnD^SU*!w+;D7NGG|uF$=k7=U;=1|Sz}$O~vp zbQy76Ju!(6$dCaJ1FX(nR2S9N+r1mQP`k5l<+e$_*>b}xywV&oP_0Ul#$)V|x!~(A z$PlOws-qv*Kn!>V-K~&U=+Off7!#VyR~#OW&3FOTTD2+WtWAU$N$oLus-x-@u<@R5 z2m&_j=#KX3V9#FdFiG$8CdXGDO7-}fY}QJ*3Nn(a?ag-1H9B^XF+dDB2&$VGSLlH^ zL3^oQcX~@0THt%nT;Nq)K(%oT8U`e{Pi6q|i{Ng$o9Yhc?mc?~t9sw)KRH&UXYW3}`}FB64NHvxe&yvx&0Do5Shc;| zu5DX9FF1<4K&Q@KTwN@~eG7d{;O=G6eflQ(tcPPPc`*B;~ zHAv&yS#9xjb0vCUt^ukp54u5M_ry3$m{o7958ALFkhXvS*IvV&M`KkR)y|Kb2G3Pm zt?`h$!yDF61511_-Rmx6h5c^&_3!r@&;tgBX6ch5Kl|S8-TQVF;*2-5kDP3!w*`A= zpml`rD6D!{%jSV0bYfz+L3Ew6lTXc8^GfE*1tiVOc3~5=U$^6wDjZ*fSD$P+-;F@) z>dF;r#RK5EZ5TWG3|`GGp#dgMG#kD}T|qYUl9%wJufPVxGFO=M_$$DOXdAG*Q}h+o zoYF_w;DiBtLxsJ78|AMsyK*n0BjLoM;uX|vZ^bz9H7L9X#oh8`ENFxs$(UDoM-pxm zNgRH+O>Mg*gTa@g%q3(z_|_tuP0M@1R&X4Jhz_T0ZoY>t?Qouxu|eUmP__O>#EQzU zpx;qDc=%X(_^;?j5+`g6#DFE`!l-8JcLFn``EgnrPg%nWMsg<5I=rZZ&J~7%?{&rS z0Q|EIf3exC5Fx}#RM?J>X9*GR7*HuZG?V@pXN5OA#03;i7veccc)#&}lm*-=OfAxK zH?Rek4zN9){(J1b63v-(#(b4_C&~c4?S;nH@Xg@B^-P6R8n>(MJWMcv)7OmqH!*_T z{4I(e_d-Q>*UV71gH|}~>H^=1!}v4V2RQ7$Az#4Pa=2X`mQLSMFdpz3gnKeL`Z$y; z9DAIkg!APdgu}lCcU9)>yCBVjD$!_^~l7pCssBE^EJ<;hR2$NzS$fw;=aO*8<(dM&fS5`o`(X*l*fV>9%6V5-j;_MU%rC< zWum8M=;{7xf`;v@)O-5fOY)lVvSkFz8;sn?W8S>^Y!9!1Rnr1&>cS4J)~ff^dtSU{ zjN6sVW%t-2j(Zk1W5+l1BE&mtb}-s>JzY&JO@ZaymzH>Jj!E|A%QSX=y@lRwxQy4+ z`2NLA?xr^bFMkDQ&cb_jn07E-O;agq%{^y-+V^aBHjVrF^k&3;cu$RQ3}T)mRwdK$ zzTvc#lxfqkVz1-^p{d4x`Q`{Z?01%cp8R4xc2%4?gR$1rf+^Fcrhs;;H3iG{8h_BM zLl`6%ZAZ}IyIOi{iFx$HdrnrqMmA$Q?X{)@>&M$8=xb6_WUYO&!JAEQ@xFv~q2F=7 zd^ld>zfG@Fd?+$Fa5c#_v1B#A_24?!nt}C7Yrfp-YGDcP7;c;g17?C>BVL40onqM4 zBt210KuH7Q>Rx$qrMebAUR|k#^Xw07QR-U9;s?>sGZ>SFLKJu3G-ftE;B}O{lBJwN_V+{|VGp<7%p_ z+vU~OD@`f!YAUZ9*Fs*s+PJ3jN;M3;+OToc$LXsmX=dvy$Wqm;r0ElV#jO5`zKYT| zWmMu5eMNonL|++o_Wv7wg^k?PQ8Zc)br>!0s;jT!p|5y4GL&KUwbgeKZ3T4&krk14 zl}f8GA1SSnqc2%PWmq+3bvuT#Qge&Z$Wcpa<(lPxXVyDmNoH?K#nJ75GH=h?hMR6Ewkoha#MrJ{sFp=yHH&p+z`rH8 zr`Kq%kct_*EBH<+mW>}^%XYCHrmL0#mQi54*T7jpy20gasb%mbPrA9DS;-(1o07K=J3RQ<&7-`cG(2_MFQ@K+pU$kuvqg1;PN+7&|pBG4m!6B&y zsqUo+8LMaFziNA5UifIik`Cq#!|#OwZ7_6+aZ&_(Kz=ELbV4!Wdv>-MG+Q79jCKpY zx60v14Gq@QbyGo;;+qRK7~NTS@o~U~_9~X}Ssz6OqKS=U4NRbknkBHLa0yIzQk@^L z0)~D0iPj1C!(jBpfL67*FGWiOXZ48%OO@SqGiU9S+{ zqX#OM#(uu1&f?8WuMp1SRWS;uEIZ)>U}x7Q& zsGUjd1Px~0&EFk$oE|7qt6s&u**52ptCy@-#rlwxeQzO%QoUmNjWwiB*tSOMNUEDf z^S?n&r#GuXPU#LkCNIBg48REB7e*lww;gQ&9^RMIc?OS_JJqwq;QRDNQ&dCM(9hzT zF(JqsSGBt@GY}Jj1vnW#msHO}_62U?0)2Y-MLnr6hptloWepHdd2 z`t|RRslW~a{1?VL_4XpTkJ4XP@tctkpzzllyYZ;L*ixl0wq@!6+JGmutVliWNiBC6Fma zlv>uZ^c3IZDgOkbOHH)?Z1aZP2YV2h(L9Amu)DOK0XkM~Y*km2B zxc>@(p@0o!aXz>mM;@vuKEJGiJX8<;Xv1^T-wyEs6#^23D#waVh@$?z(8Gtx9U&%| za6@PW-0c?)j8M+=?!!NUDSaf3rj4y7!m~A_+ztROe6^AFRBGaE8#V!Q&sZ zVzLDZRO!Xi{)Y6ItzWQGg%p6yFVpQ2^>2zKkA79f~ z_x1Ph*MGo(fokA0p+_0+T3fUl8Mu5FduEDs*>Q%&4?h4y2Ls|fBw`U*Yp}vpJOEc8G|f$Bo+{0SFsU`J)z*8V|0xuD7<%|$AO0u#-@kwOcOmsq zhyEV_KY+gvJ^au38|z_6{7{;v-u z3zcplHRG9(%28Rjct)txABT<{G(@e#`Bf_QH#U55A5(T5ER$9obVsl~;+fD_*?5fL zoG59llcyZ-X?yn{91;fDzTF79ts>~IN6Eh}BR1UU46 z5NAzC;8f;!Y`bC;pA8JtIX04R>5@g#F*MVKCXQ!9=jod1S7WbPY!jEFVQQh-!IP~c z)-=%FmEFEKZ{*fd3`i^^ZxM(!Vc9*HjURY36wnLO9Q9};u|qP}lCf#1<+PhT6AG{^ z2{WQN+D>F;XqVxs#ppIsOG?4VUKJb~>Ox$mq0uA-l(IXPV<;PxqJ}^%v+ZPC(fqj_ z3R=pRnrA}a*#2=ZZ8R4}#@ocwu+2v=)0~+z&{;A=VAfQQ2WIYrNIc8g>9k`8u$SU& zwB&@aC#p2@OvNO?jQnGL`>1EkS=BDtQ>Xy4H!i>7TtRk!Kr}OcQ*1GB!llQ+-pg zx%s4tpi&P@LJ$9l!!ylLsrf&ZgOFjen8)|Uu`N>QuS54A;#v0ai=}38=V5=%U(hV& zkO*S(L^y7v3TZwP;~y4ZPIW9nbezlMqT|Ps!Tz{49&Y@_!{FsL zysBT~$akpOS2ezL?Aude%4C?LCWOXM!1&_bpHiy;~;@L08|J#Sb zPw^@>O;BUi+xpE1Z;aum#*G~}ZoC?Ajl;)%5^7&B&+`sd1> z+4x_J+!>j(y>wiy+!_0a)+l$DC1xbSRm`1>@VJ)TnXl|rF?A*;oH}yRj)C%N!%FGw;~R9ug5dUvYA0lj2wO&V*8|Wa>P3cC6evGUE3rv7*ex?&oTOmq0XhSInKw zD6BOz<)RsL^A3}w&H`g2dfD9h^Qcr^BwZvdcE)Y@zn9OQubHu1%)D>Rlw6Lv zdQ|TG)xNco;Tv_vXqveaZKb4u#Fa^%&ogz7Wh8v#D+UGyVNf=6zLSA4@_viNUoE&E zW#CK-w5c&tXF{AAsTVwmg5Xw1Ge0_2$|lZ!B+hG=$-ek%pA zXX4Cl>SIIHl>3t>l}ns&OXB?b5^6VRXdM!5C$<&xW`7o6;lL(KmbowKgPwZJZ-w3*gRHm|xiHfBO44Q| z$Z8xvtlqqbJ$&uFdF=Rcww^;>-q^&UgbpfZVy0@$%8j&OSSLX79)U%ieo{$8}t1!=7^Q-GW9mHuTC)G?HLd zZ={;lB{UX*MTMk9N(3d_DpuTNS#}(kIF92~JAV=nKNf*&Uxp|Eyz0KA`%$pGSbevo^uy6 z$hiFBGQjiD_wG;^dvM$=?A(pr-6a6%-%_#~SBI!uUhlIl`+Sh@gZm3WfJFJ{-+b@8 zks9~jbN~I=!CiU^I)I$A%5h&T15NiU4_O*v|F=eeUnuMkcLBQK|=}Bmng{Cy|r6i&M z9Z-WV712rSHJ6lw9&A)O?$vk^l-+!(N$9}uE0y?~VDp-m7FhPbR}y+0NJk;dIFKH( zml+0f8vTp|X&3IRP1iV(9tYA<(0iFc`teHz(m?>}tw73yk6kv9Mhf~OK$0aAd6hux~F82b5C?FT@Ahoa4g~LMLv94%deDHrV-Q zc!B=-P5UJ~JU@J1Zy>+<4SWs|D?Jm``9^qNSe@j2lYherglp)_H#rX1oEPyWpf|WU zYQrnj!qwprZ6`r}5vMBW!cTvuE$sYe#Ge4Z{ayIO7rut0JluSZ(<9nj(&>j2o)P}= ztGbv<)xi+$Wl%nVSAZ&Rmsg!H{CjwM_+z~FR!bofY#UQY3p2uJaBsO1PA^?l+(_d; zx;Z>8e1-%;KD~C4W&$=kbY=ibzuN+843}@*_(-@s{DIqsqC^fE@RHDv!)4(Q+;(uL z;L1WBIw}C|eYd42Mo=EYbA-dC;rE}$i)^W}t@_Xc@~}~Q5HCpt@ibIav@K9h3Dl%@ z>srDk;ZsU~?A>rIq8f9FYXMcl#o<%bJG7~&5uv!*f}WBK@&{-YXF;GwTZC95;#HZy z#UXmX+w!Jix~?qN6o&`sX|g2RRo0bjt|wx~(D zhBu!l659DKt|%CSq9oPtwx+7JKs;;74F}K(&`hnXmP^eNU9>o_hNp&uio=MA{?ru> z@h!Y1=XYSuBU4Hbj6j-=(i*g0)tdjrEyiMa3i*p6yN^Ae8 zTmZEPB3_fYX0?YJTSN8mD?faWR8b_Yq85qO>}VGNJ*l2s4GwYj8e&I=DlDAuq* z35xQWSpMh*)#KFfs8GCh7A&;>*RKQ7R8^xw*&5NT*S?|}qXkR&j`5YR`xi5Y?T_7+ z<nszfWeIEeMC4F9{~t{IGq#ju~uT*#2N4Gg(d8-k*oRjtEzU?Y~O`DfAgB!I++#LlIVbHesOExy?JBE;;l{cah)ap6d`JZZ zB|}&OU;ZUofANSJVf#-^@cP8`u>D1jPkvDzwnOXCNRlXvHX@QlY1sbFGSss_!$q8{~T0L7J}pRd*w=KkPH0dybvlCsS=AjX$YhC!5pg0q3#fVad4U3 zPHg~AwmTX*hf*6F0E6v)=}f{9!VpQ^NoimWDBGE$%b2hsB$+$O4ZI;IZ2!VX zQUsqsC8A+!*#4QtCNn1q5qC=1{zvzVv1T&t;US72D0x!Y{-yiHTJ!XOj}b-BqzKP) zNAY5ve8WJ8Pzv<=pFFy$qSzhURKcP{n<8jzIN(xbV9ENDJD-gmTuY4! z2KJUw1B-#z<7M*D^2QNkYYIPiZWuYXLZoo#nwW9L`r#N`jP_NrV|#V%*j@qn6dl{8 zv17Yv&3}ur9pq{pWprpmG_(x&Neqvz{TU&-bf`G8ZuM{*(WMJ^tm??}#gg~NS-~lZ zm+$ZZr_n;jQdNsL4JM8(+hi!=Y=|9MuNqm&?UoTEYvC2r@!df_r`(ON|?@Xajx0S86m9eY^$=*^IhR9WbdDdXNFXFwvz5CC|%kVTLD!?Ep!W zN`KPQqiSS?)57-A1)vDSk5Vs(rbcr(HEjQN8gx=t^rK}z4~g{VaB?_sZXM_7JUWq# z3Q0U{hw+100M0_hS@*#1jDJVOu~=t^nu{UDf#nvY`CLnMqz2L_X- zn1KG5f@;9MU8$>aT`is4N%f#eOa%&4AsRv-`kKM*i9`@#`}-aclq^jMdFzP65Y^Wp z&@m$k{FywIRbPkVQ26A0lyVq=N*$}7)r)5P@@4%qxEXvG@rdgAhmkl{_9z$S!J zypm4_-SNX}p#~iP@&<>-z!X6vIlHkzHlRGyFL)N_WGK77fvk%%s4Rjqt&uo*J#KWW zpD1}cbPjsJqpB%|ga~;jH#QgzX1y~B43gOy_4vw^f>>|KILbC4Vu%{APX*KfIzg*Y z1Gq5;92a_=yGtLow?>rc@(_i^T=i2)XjOQGue1 zksvB~;QeheH5wI6Xyp->;$9OI5h&IX#Y0gcI}#NrCb{m_QgNYvR9pyBR6<1+9ViBj zj1E!POd;Z~F(E=5j%pLiS7GAcV!{N8*1{1*ZjFf*h%elrC}vU=@n9WAB85#GD`jCX zIs@XB`~!@oIS$D zBlT1v8ZOAaXK<%b#f9N;K|UU9V5KTn;X(%ykHCb_j*S-tfJ}-Rcg4mG6-AO`V}_Ta z$n~)?gGy}k!Qq&Zj4mOtEQ-bq(t_ej>u}KUiYeTgt>Of+BSt);zE~QA-Fw&dbCNg|TL|NY$oUROjif~z-Keo)z5(9>f5;z)3uW~NIXYqcZc#p( zsi3hv1uOwpNg_KG1Pt=0e2wco8Cc*7mO+9EKdocN&4?L{01MC5 zVS^kgCII5bQiy_IZdBgd4IYya708DM*zM%jO*bamqO6f460v#}J2r!hu>iSyPlLB1 z5<9G?8&QLTm#zBbEaj;b^uW8MAqm>qcT;d7hDh8<;wgwMHs7x3vEgDhC;%7KhBIBo z0cfg1MkG?q!S2k%oONS^#A<{4IpV{l5%J+p6e2d<6^RXbh%`VZ3}wDZeAvdlJc&71 z4#$TZF$T8y(ue>tK?R7)*Z{GS0>qXv0iv1$L~cxgAl%I0^G5C&;BrxBj)@FZ>W$ej zkQ1SOX-s4wM+v7yae$2q5471B85tzDC0@-M*(PZJZ%RMGrD#;J&~S1z448oPeyv<& zZ$JzlwMQAXDWI(cDLI5bjoube2=a<^Is|c191{h+An2I!Tr>(824Qd7_8Sxha$=)E z%%;ajUT{Pl5QdHe6rrd(@;ljyVgcdP}+rK!P>F0AQHb2Nc>oCBjZ6t zI~5V`26;q8P)?kzi-_R)9;lIsa2|_6#~?Cs8n;)(Muq4WQ4>S*N3oG1hH8m)9$GRg zIz$2|MT5{wBV&XcHC3RP851Z%v_aCl5a;R9k-|&yBgc&tY0wu7VbgGkAlHr+lQtY8 zQc!{r(J&k$bct;}H5?+S2qEI;XoyI`5FiLdg#7As$i15^DlqQX)}-$y9_5k3#Ed_+(q3 z8yOEKRNb-hv5oah(DiyqqVI z9@ytcz&*hJAH(6RLToqg9`@)>)EW5?BRqPx^5|E@di0mbVBZ_#(XS?tUJ8#+*&sx0 zZ}TeeD&NYaCJQ4a>SZ0uvYJQI=8LId2a$ywRtY4WP=p;d<@Ji$)6DtV>XE%ekOQ-%#ovjDr@ zw6e+D+TmDErFd1RP>B6evu@8q zFTHhUvwx+p$koM2_S7-h*KAHgO{>AeckC|l-G?3%kAX5nR|UqX3*beq$c-4yo+dw3w$MK% z)>98Kja&lO^|eJT7W7v6h9_BxhGTc`@t(!G2tJ0wh%55uk+SX zxlrYVf{@*aXynw@CxOO6^C*O5LR)H?N*PLh=%Z4Ip<^z$)70n#!JzLPR3t!}iPM9g zbJR`2cVb8*hE#m<;)}OFh@RKgXW}~qm?-iQT}dG(4@%M_HHb{A7K32mb2DmN&mGPW-2DDVHW;!*m5@hGSKy3t6>hlTM9MS z6N}YQf#15Vxg$PF)jmxUAp>w*KHMoOtVc?fAMLU)R5@>w0#ab^TJDbv-lDx_&Xyx}F|y zU4K2{x-O5muD_OGU6&o1S5>+yB{JGrh2i;Ft;fULtSNDVyW4o}AO z)cMw0t9`53O1Bgw^$Ab4dw_#ztoED1v7&cJRD)McqM z-zvG1KahjZ0z!?Iz}ycIg@M~#nXf+iR$1zkvl@E>kNW7tU#F=q4|Lil5FhOVSQC9R zP*VYU)?_zoCW)dz)5?`iP1t@B4<{W7?29I|F%MXBt#>U$r&O6lnbSa;0}cii-sOOW zzO~?23>;7y3<`t#35XhXz~*Z$AZ7qOg`WjbCC>Kh01g``5h)D2} zH^4kV_>|=nb;(pHalivD73^2=8lV#e4ErGu?GOotS}0IBG+N?8iPh+Bm{jk@Cljob z>j6^n$!eGisHP5tG+|P`4HQQeq^dyA4a5&MBB2P*_U@=pS4dA6GIuXv1G>t3JIkz} zpwqA2&l(L^RIQ)#EzCK|Y;D7`)j zEZ8W6ZXg4$zhhrrZ%;OH_0WX+WYB5z=ir1~q}8Y3t3hA=xRfHbJ{4aDq54$e5h?X) z>MN*ONH^%Obi8L@W#D_Vwg(AhRK+iRBB?$dUjcSeCmrXW`a9CXljs!Gt7}XE3;2=2 z5}x{Od;xO`^4R|R415vPS_;09d6fe7j)?-xwIxo^8ZjR*gnp37~!d~423Nj9~m%}f$t7B-;u0vmNF8WLlG58v29}z%RCDloW zm65~5(JB{7Kk8vU9^}MPoi_}rbOYVh%Nsmv?Ws6#B~Fj9bN{u6_gE06nqipfSTxq! zP=;k-C^gUg?jF%&VhWz4rj#f!ffL)CwSg%<({y=FqzdorF?tNlU&zDcXbh?f*x0WP zr5XmVVhd18Q{ajM1~rYR4?xY}fu5cN*kT~BttK9}8I8E7xS`S0$k%=hO$-x1l=5_| zrTt~k0d|1*umeNU^0>Dz~y*D{ED|oA9ldezhM1|jiFSD45|?%UUY&o@`A59AP%q|aUj@p zprvJP_S#TR8Wc4g5@(sV{|Eg^{j7zpbz0U=SZhyAGJI%-1lUvC`jh*EEo;}dtW8}T znv!OLq-9IfUUITOrJuK?tPM>~_ZrDYfO?Pqo6f`iY5n6q`hTmBUU?xOy(TS=kFJg9 zqqpT^RgCq~k7thb(HoOS`sl}TeOauJ{#^P6xRP^qsLzdK(TMMmg!+SSNi|jFYxE(9z=vFP$FOOV1tcrSBy#J$Mr1xG>3Q$-`3bag@}eI-22C?_qK zU))LGlQzal`x_HE>AH+DPC9FILMMIa#CT4+^dI6l>6=r=I_cWcPWp@2B*i#sZ(XdD z4m~sn2XzrIoxVBNOMm{_v{)})`h3JofARL55nlSr1YTN$<%CGu2gE!UNef_OISNT@ z^sJGz#?He?dIWy9BDmSN%Byg*7k^zSP1$w#BW1|Bi>4V0R}x$vT8Za$xQLpsvRAHJ zX{h8iYZ4td~Ff=SuUl)U{4MOtBxZ>32KNDRO zn8qAS9d@b=#7@){b=B4KZ#S$oPv!^gF?5`^gM^cQ|tLYP&)38h9FF7NDGQji_;9 z-oyCH-LI(jLoZqpd?ds!MVZ7wpbN6^##dZ|;KFSCs|NHm@jZgH>5wNIWfmU=wiyUZ zLGXY%g11BUb&skdCu58+ultc77Qq!&Qxbafa>WoTjO))=!2arbYFt5YOuK+T|LKev zPVb!f9(|*qJbFZ4YW0PD`j2O7pN^|`aoL_TF`-YtGvd?1NEjD~{rMMn>6?_7Cftpa zMpet4p2(wbn-uZrU{q(5+&4F&M}H(|*rPkR;1+5HCVV@NKVOqR(x2lZ?kS_)`QO}= z664OT86({J3yWjixxYHro&Wj$nX&FXV{yct|IPa15$-$>?wpb%blhe)da(<@CFHow z=+*t+{Z8k8YrpK2ij)KrUAAbi?%bb3BnFbRf2F{AqTQH*tJ_pX^OgO^e%5L1=bdc7 z*~w8i)Hs z9eSEgxEiSuP(ukD$^nNG5>yR)I$4+Ow3@IDZEVPd90QjV1hy!eK|(Ar7@ff`iYB}X zJ5lg?&|43g%6y~KqnUzTot<4!jdfvj)-g1s1$91^E~Dc-KmF5bmEWml-P ztBW?b4bDVKSJgPrbV(41nA&A`(#Yj*rScySqJ9 zPj-h;K~)F6yT|N72hv5RupjB_P9YA_9Uzh2Jys9=ayGT?l%q25kwl?NyvOP8@$`i1 z%S}*+%zuWlsG<_h!3lC&k6nk0DKQSvn)TRjqpUl<2O4FHz#TA=D~j|rv`ps!Tw<1R z7NM5vLU&Ixat3CP^QWXpHHsy;y**&0WP;ISzkVYqfyGdbhDDGZB@Fr#`I!`u?fbjX zbx7&%@uE1;qa2;+v41g_sPZXT#I>sG8l(#(9~gLLkG+{p`*G3_l*ZcRt^&wUkbi}s z&c*0dX!8H*>Nd0i55Tsrl9a~)%TFf~%dA(4#fBMO879%T7-Xw!Vdp_LsK|b(TuF}& zO$~53Hwu_#4SJ#URI*vmkm?7iK&o0KC|g$%*qrrHk9DW^_?7xIX*i58p$y|7^;oKgePn|LB25Hv^(ypt8EE39 z5a||>=+dQ}U+QXJWw{gxb)HtWjFj1LVlEA#XVI|bA=Cd1nMn~eQ?G8&^Tr2jp(j2y zOS&dw8#*ZcnMkWP^d#vKO+OIofuV72pf8>7>~I=j1B^AM3dSStfb$q=>ZT3WK+_Gg z5anvFcu4Aj9UknHaTORYd}yFyhW<3~i7SOtQwM5@Zqij+4IU*x*&y|R^E^pT23|vw zks4$NY;=bPo~n}U*OA<$#&P9L15FD0ALJ}V8?gQ*CwEdPd z1I8W7!sWpDkqrg?&d)twkL~q%h1W@5?_H0QD?Rwn>r7bhS)bqUyzcRPnAaf&J2_{) zSRcAOZ%Th&zq8tt?6JH-e@aS{mwR<+pNwFmBDA%2bZDQe;t=B1qIjYGvysqlY>gAz zw-IDe!F3M8=7mCgK_s-Vy=Z8^DH7WAFC5xK4O@`N)y?0VFt(St(uO8nAhy>>V*520 zj_n!fu8QsQ@e9WG>y=Fr+h-+;?Vm$3SI731mloS=+}NHO3F{Y%?eN4pgx@qaxR+>( zFDAG*>fpX4ad6Mn!CgLzq1e8y7;-|X zutdVxzB-jyrfiKD+pm_S#_L&sh7hNp2|B~WmK;E1vwr``b8}c?LitU>-sDApx z7mV#2lfiU8cUz*^z9kKGd*;Prdut}xoF%cb{g+c|tmLhc(5-OVaBMGhV>|R89ouKS zu^l;81qote`*KywckR?C;>PwCgJOI7^$*62?X77P+kF+dlVntEFQV8!=f20{#rCTa znr)*Fu{l9--)K_sUXeJs=M#NGoZx;lMeZdR3hs}4iRGRP1^4L`+#BNu_tg}*@40Yr z&mo>G#s>HMD7a6=kzY)3pF+WXeN1p)KOEePba0=hgZm;K+_%L9_tI7h?pvPSNWp!v z3hsgI^5Sg2mw9P-j*W9Zk`5GxZCN!O-s!4Y(3ZF%+MY5pzB85bw1{PWgay@O_wRW5 z9?13|`CNK1D_)cj(8hdalhuTC(`kwmfp2!4Fpmv7U6f2mr?lTT#b9dO2#@S3_T1Rg zewX&rbQfc=Y*c*r(4M@ZaW;ZG?a7C{@q;^~!{=5Ap<6uyd5MBMC$>p+vPrw=>iD6Z zHz4oO@Bp~z4nQY!Ok{VOaEWo~&wXy7o{>1N)83sn+IIal*n^`<{{@0Nn7b77@4GR* zFeavBYi%_+b96{IVnX^;I;2lc9MUICDKS&4;ze}aD~4<@cG@^1%19W|gFp5nV5i|= ze0HLc9$KV0LOgwJM1Mkx3CO>NW?v+x|2UOa8V=TloiQq~Q$ln;tv5OlM`p1qQG6%H zN5F_%3&58%Hp=7bm~VMi##f(AarDX`Kj7DWFPq}S>^Sj06&tv^QgXF)7j5C#pg%_? zk3qu`ejqDO@K427j@%w~2q*T~{0w7&>>lhADEZ8Vd!KHKiv+UJZcPT#%6OIyU4j7d zgMz31WHcH`?XioHR|W&FAE29RCq@xLR*yX=1t*mx-QZ5a2rw|E$H@hatY`3#WqAw; znA~H}o1kbMIqr}LW{C#>>>hij2Q=J*l~f&x_>+5(nD?Q~$%u{g89h#hE}k+XzE40t zAPodB4~U`>5j~^FuEEhK^4lR}dTcCD@3AYq@a`55c;}7@;-Jp;U`Cnzd`fjRdSm~F zOiUH7wm}c=jCf(&-PGDOK6rCHk7TL}+7tC99@zcaKTXES8VlN{YXFdRZ&Ecv`FVGnPRWaCz6RUe zS(GFTX4gF#6VPQO|3GP-8nVG)^0F_+26d@aQRxY6h0`dyFW&NXGD?rxL2|BqaH}%N07tsLO)E%@w>g?M<_S$>z61?LVW{_ z;)p;AM~Qvx_%Sa^O=!m5QtE_^QY_N>2$I355jp{qp-3KxCz3p(64GeYp{|oGuPU|= zcfk?*`l-wd_2fIo5$A9>N0H$c87N|hgOuSzeR13enVxq|l=8ztO8lXexji(=SVxeB zv=6`g4po$jr3Wn3=1})vKey(F83nQ+P*i>M=l=E`rdTk0`>kW2zWe&W{^W;$@Qtmv zPRnQcMnN#Yps=uj7lfuiw)coQVjLzmc5LYA&wsD(%F;ZMXM)MeFE9&&MTMn@j&L;Q z96}1r(?4|bPaavElbdJev3w^lU*@xdKz>1fej!>Gh0eE*up=hK8U2B`zPQNm%VoK~ zJeltlpxvO$CJUW=!DeWYyg&HCiwnFy?hEDQ=H?lBK8R%bW`R-YOdDnk^uM+y&FjNK zLavo(fCYWX&o3|v%)(GX*O9|Y8XW1LUW=rb^aXSC@^aCUV16F{aZ*4)rdh}eod0{6 zqv^x!@Zh1I?@t$A9~Ob(W4T6NAU{vDhYBEFE5Qq#zkzgi$eE3}D!e8*JxT+XZxuL& z1<^=yU1$O?chs9w5Cc|s{ygnA~SBNx~`2v;_1;IiZPUw(d40Z{2$A|PC)xg73 z@*tOEv_jN1PrfV&fgOX7VJld1#FdX{p7^jO@SV%U7{GQ=nxm7jLp}s^=mNz)?@DLh z07NUDMJ`h|&d+0cLbLk{jC|+kQC8;Th~h(9Dumk5LgWvTU>Mmfkok6A4Y&P-j6goD3{&$0k%(m5|P6z74T3aXw8*aN9+_Ft%~X z>BG1LmD*?^ZOW$2d~|3Y}hO}J99Ce&Z$vF z2WSTJe3|D|gWIG==%Iy}P(hz}Lcs>U!Q332O*4RF$_mKmsxc_){DqRw`sm3K409kg zcZ1wuZ4Q+{B?fM+FPei4Rm?nRqmr+=2fhBu>o;sz5AoJ!XAVpsB4etlfTqX{EZ5Gv z1=Cg@;(h9d<3PsM>rq2)2;mvY=msr}0?Z(Hri;7)Mt$KSw1SzgCT1U#Lsr&$s%30o zo6wOWYQ>wccyq7o18?Zi;lqdcA<-9<6B-)U^Yu2k#Rg~7W@EFxsT30#16_a)xhmZO zm1y3JLxH|SeSLT0T3E5(BqMFwTv`Bj)n%d7UvO9|UU|p{FY8mc`3koMgKBIp&Npd3 zXz3Wl|D)6o9Yzb>t%XaWRTZ{Dy{&8Wrp;`#g(;U0=fHA9dAW}sHZePlKHMs;7>x}9 zvJmk(v!RhIU*tNA4trovQig+@^d=o>9yz5L-vDH)j*48nWG^~uDqb!$SrN-4Q5LBb#N*DDfrm)JO|#IdhuH1|n{JKR#CpEL zS-$~2-V~}RD~K@N5M`py^7V|E#D>78Sp}F2jOH}?Omdv)>@sj$N;%o*^x_aUh?Z$4 z43?`YmY+v`u$LYJpB_=_h^Zu>hmQEkO~K4`^7CXKhnE2JvOd_FnB}2R-=RZ&hL-GX zz{Fu2&J|?%d}KkYLGw2!m*<{^wfRj_;epo?4|D#-G~9by^L;PYIEln&I=7(CWKH|4r3!gsIS~z5+6d94zmUNTbHCH zf>6IV451okUKB!Yi-A!0O}+#OwOK=`sTYJ$n=c1KZM{?o^$dc-Wk9GRuwM>@s=X`- zb+;@15+KxLQPxX=P&2@N84&7zmpv9j80xV^7;51N47K$0BQaD#91J!4t7s(_Lrtc*8O2bQu^6i6E8rc*P`;bTVyLBK zFx29a7;054hFUfXL(RH4hN>Bbp|&dZFN&c6)Qngdb?XIS)YcI&YIb56b@eD1RrvYD zFzSg2jA{V_i3_8?SPB-C@X?AW%SaeCs9@B3nvDua5$K7Jqn^EKS_DVUi!zPEQI8aj z#Zh*}i!e-lAaz$Pked4yh)n>bo}}GXERX{8g@DuxSNq2Tsp_x92U0KGloAI>Eg1`> zLJw8>eW`?`mW)7BUus#9O53nuB$agUFp{djB4-Sen*4YiBxP5Bqd$EdO8t*YN8Pf5 zt*~#7i=~!dxu9ZN5q8JH(wXzG840CU+;GhmOBXGwo>4dwN)^}KsGt;G+(?K|G*yRsxPo?5E#l)9o1S*gY4S-wPBsW~oILXHlQ zYT5M6_>ihdv3+`ojtBY|Rm%qY%~gf3FeM3-J-vGS!V? zL{;%e8c|&r7g1Fz`4L2w_0%w;`g$TnH68PII4gDQAB;p)g>ev7$#S$3i>L~|7K^AB z#3HJ4;vGg*No&R;svE{2su@s8hhCMHS{sX~ZXAWEiZ70+7R4ee1a6vk?9jy#RpCfP zRdoSG_0188sw6R@x@8oi%D*0cO^}%S{RpC39ED4x5>tOZErO^jqAc+c)iX336{4CM z1xuqdQ$N0EW&}}{N0~+;sxKj>tLOD_X38$TGa;gCiA7YUH$iLyMD?SxQHZK^`2`Wx zKi`!!7EzVK!N*HY{c~e#97Hue4x)PDiX@Gw@<$-5pFVfP1Q$^SRc?y;of*TB>WSM6 z$3UvI1@R!&)D=-kMW=kuJ4fi)$RYo#4nV9!CS}ylc+VuA1yPP7>WrQ*LPVvQnwseJ zs>*bX6*__*Mv{gma&J_TPO?zTI_y1Up~%r~NgRYBh|-}Fj$t&3^%1}4h{v6tBmqf3 zEngn7A>5-_1HFBHy}H;uLW2E$T(zZ{Oq7_Yha_#Jn2J=wky4q+BumB4(Uf&4h^*zI zK2M*a%9N@W()c);@%EX$&OvP(isaE^uVOW|OESUd*Uh7Vfy>+H>tzS2GhBNji*oRk zy!7@45B46^B5fq88M^92ZK=4G*P=uxgZ`{H)YseBD|<~vLq=XxEE=y~6Ad`M2X#I2 z?@-s$eIuQFxhvAp-M0EdWHU=OAE{;?^5|kuuMMqqJ0c=WRq!c_p){a=`C~Zsj?3yx z?)50T{!WTJeZ5{3I&Uk}>4dqOX1%^%A9(#|osXce8W5{5sn?G(-&yvN&e(fY2enSF z5HE<%StNA*TDsNiJ!rp8X7rp5esuOMNpnd?Z;C68ipW%!DlyL*A7Kc5u{}1R;z15} z^Q`^R*^f9ecq5kL+P;cI^~6$4?4zg%QV!MG+a$pF$gQarcSW{XkQAMCVrP9ytg?|wLjf&x zi$pT9?l1=oE!ouSM4Jtrg{?gwNlYdsJNcl5rq0=qd?-^Dr8`Z1q!XIeeRS&ybO#fh z^`@$JsUy@Tj}+^Ukg`NlVwpQ{la)~qzAZrTe`KHSgA}D_fNa`(F!`Vbiti(KHVFUH z*XwchNIqzy-1`wfs}_Yv_e-}=vOGljHP%<8g6fy|prGL)EzFO^S@vt6UYNAj{CX6q z;|6H_*HFXi9Rx)w;#XaxMkT1?*B;$tc93DMC_@rWfF^&Pgy~Il<>1>?##Nc~A&jrQ zfYL+_lSivV`Z6VyfA}=}%$f0sFdh*w?Q|d+j|k%tVLT#Gk1)PRh(Z42 zdjxkkHNHpCP2F{A;Os}(>rHeS_<%U;JOLqr>mK~Z&kvsUo+XO- zHUCfy@UwwG-2TVy@1OOnU3RuxMGmB&4bcXFxWGAcHbYgUHst_2lX-TS$j@ZNd=qEV zM|^Yo&!&wiVEt)lwfYh|NL=}qtas|^s{KeI`yd%?9I8f2#0NaiFd%`<$q^yL zRC(N^sQg1?xH5}YmdBlAA5msQVg*agCb9v0KbC}llF{exH5shL4zF=SejBf1A#fKbr|L`j_I5T>8R->gS#?}4(ei67O? zMCe+Eo)FZGJc>0&=F$ut<|F~cKmruQyCWF11g54GNidE&@BUhQMp8jUB?!zp>a1cQ zzoVNFZa+wZP+c{TvUf+)wF=x7AaSpc^Xm__IjIGq%*n8pNPt8qaDPrzyry!jT}?GW z9j+_gy2DiQZm{je4?i3rS0~{wXx)$n80yR82BfohhxYyc%8K%`Gc{*|@BHz~(hQkV zc_!HZHyh_>crxak3H|b^r5Q;XGtLAKfA8)o=@}^*##v|W$k=t&XIE``?xi1&j9m}7 zv1`#y4?Og_um5Ol?0SG=*Ohl~_`f8)06<|{82x^BIC-gF(huBj=Vq(j$rwbLi-(6xAGjt*T{R~2Pa=%TbCa(>v8 zJ0IYp5qkb?5D)C7C-*XXkn)@24gNZN?c-Npd-c^Yx_2S4k4!qKD%0ZUHt4HvWcq zoxjE)Yfv@0ckda>bcqj~_esZY+tp9*XRb*3s`JV|wvX@CeC&N(d7;EbS`EJT`fIPf zDl{A0%l072L&r7mW6<-S5+mou5M2mA#`}{1v&6q2IgZZfDo~l&q3q!o$GHjEalB zHuySCg;(~yLMp=Gd&F+G%kFspv`$~5d14N}@%rneCqrMPVjSAN2mf~OBIfqf9FqBa z=oEMvOd7!WK&)mJd)RKii+6*z2WFP$7y{n^LKq%W8+OhM!lav;6j??sd{WYn^Qo``6`5|HkH*XKLwYTjg z!IZdU$DzjSujzS8%%2QP?r3N2Az~Igowk#dF+u|J3@L#nB(z`ylZ1pSK1qBGe0cK7 z89kRsB->-`4(;mDn#!Hf7Az7hdgT%eN1p=_)J|=RHV!6x=gAY4Byx_SKMbAWuTYyK zgxRVeqK(9{W9W%qKf!(QK5B?|Vj*-L_BIUE&Nc&Dv?1{-5JWKmV5f;}U?RnEa^kew7=%jF;ni2Tk}CF`Q`5MkU9~ME zYyx>Nm&cWdvrHQNr={d=)%rlR!ojnyIEZniB22 z4Lxi#+d~)$(!b-_v7-WsOIQsPPrzEF5K|o_oy>NsWp@ylL0XYPIMyVw3Eh%v4$GOA zbcg$7Bd7*8k|xx8z{-S9SQ{8J%q!L&==kGpcg#A<@o*yN9U5NhsWt}~rLH8~hdN&V z)`n|x@qQv^@uT*;N8gp2pR^FWl1M5E`~JpjCz~dis5AT>C`x`txsIgv;Gb+=QDFL& z2zo*iOrlhS;$#FZ;xC`Nqujz%43kW5;lWMxh$k2YZF~YtLF=DAd*5s?UOSP52gT9D z0MNwlUGTS%zVXTlc!N+9p2$egfO3wYJLlnGcD~e9;W3ho6x5J-@{#w<&|6R6o^P5) z3YbHdY2r;LL@>?-I$pT9C=2g&2g~}n3SmOvQg2l!W);Pi%M_7dF z#u3)V5Z0eH+)$Zw2?%TBJhp4#&cNXIjr#<7Ue(2b6Avu7|&t-&(2|e zbw<&o)Js5ERnu~_kk`3z4r|r){7iphgf+7uJLw__D>$ogVlv+9kqBVTE}oKV#syf@ z^U^)>09I9bPMSFqU|mx@F)3~eYguLKr1$`9$Ku)fl%^V;!n$EGisPrSZdy`-q|{h| zwPIOi`B;EeO`wa4|GTBI=%A48J-3IB8z@hVuJWQmC7Bqpa#ef%lL8UWEjcCD@7M>mF zsCBU7x1~g$*BV1%R~|G~>e8vtJxNoke@031_JNcE9N?i0!}qctK;KReu~B=J5N92!1A&gV_IBO3AehLY z>X^n85oLl2tZjUUXQw)AaVfIh>Tq_U5u80yeGG)|vO11YdKm4pgVOejEznMOhfzYX zX*A#vD-taj>vJ8nKYH_>T+vt4bucbU7`ZqR9*Fa)mMsB3h7k$vi6>KqeJYnarS5J9-?!r-P9z#megwVD6@B%U@&*%z!}FD z4*i0d?x8MB52(W0tae`q+vSCLm&m$#mmWcZ?o#Go!eSjbfPoSW|I>*K&Z)4Jy4cQt zSG{S|2LxEM9R>{O*=_6z?#5XVbP;$TF|~waJRG7BT^*L;G#5(aybyXBd+1b>^u`%@ z0Bauhq1nLNO{fN2;!p&(#L=C151mLUv3Tn>CRkpGAm@cot(X-ZZ2;A^dm^y|YD0NPzG_dxn_Su^O9OJ95%MKi) z;?N6SCxg?$5De}zi+v8MfzxXK1`cmY4c6fWn~5&7JvIzv?xo{BbpDOduYU3esz*4% zreib#6Iy$R=xAA;iHd>qhkyBJFKoW=$~on{{5*+MRx*{mq`h+A;LpCbZOdKra;NgC zJcpGB%gW2i*kTv_1O9QhS#$6CoqzG=hd*00(dTD=&s3Jvk^ozj>pa{^`M zWo6|Z!kziFeujSbjYn>omF&fTKJFJ&LnM#k4_H|lE&Gq5?C!t%V$0P8vSOfq@UrveWgUO}rPYhGEN1yURMkKeJSRvx zmx(gRZy7GZ1VQA4rshz&WqFhw%Wp!C+fb=xqL_qu{CujD1G}EjnL4$MPMIKvYFIuS z&xImUAA^#EMnEeq1JzRUyvho)l)k6HDgk=FxzA5Zksax$RDh~`;YTwphv9#yRaVMM zoiZG)nd%L)KJ^v}36n9XBhe>5RhCN2@T5X+$nW#{y{Im7oT)i1N0ti9_E>n4coKBP zbJH2<5`v>t>EZO=S$b)M-|r-$Zy1QFIS^aQN~9%Jqkekoy5COnPo)M2^NME9uBfVk zZKWb7p)&KcR3`;JVo4w8lCMmaSXYujA_&R40~@KVvH1$a8-3g!IgbQ*xJV zVO!W%f&b+?oHcs%Dl#pk3dvMQky)qVn31g$@Wsb~5Xe@b+N2WpL}3EnBy2 zUALC64NaUhagv-Am^^7Re!P?Ul+fhz$F^i{;aeFbD6*JjgT^O2#K5LF#gDPaGPi_C zh`BWg0VE-9vYq$Xmh3IQt}4zNZQk_M2y8UuPcAIYOY%zsM+KEv-PyeL`Ikn6qvYBL2^`%&bM6(lHg4P) z4;)S3k{BF$fIx4!G<3A~BIxL@1n8)83_AM!|7>(bX_`w<8J)W9lo61Q+BsheGLqx4 zXdD)e!=iCmblI@zm&>oe>LRe{rmL1LsF+bYJpn8l{BhOHlFI3YQz=Dq!GzKLx#dMu zGmKP?d@rJhxCX50V(+elzG29mhMYGHDvQzOQ-bDGLKsBVK zAfqrkT{O2WH`A906M4ol(SIBhyv zbp2Ne6K$Ed=(gt87oUrViK_nKLYT<$*C$^}!srVZfkbN)K%&|)km!%2kcf`ayrw_IYU6nuRWzZjB+uh)iz) z##==Cf?r-#yYN(+TRoO872SUGu3BEp-omTJ`2pvhQwBKcaWw+>E1uO(MI5=77mT^E@*lcNnfz{UzXM`U<>Tp1p|`@lw{WRX=hg_ z-fn&5hhyqLGpz{lXd^vNu&8VJ3H_W*nFVW>sF5ZJ(H zrxfp>wF+6M(}RbKJ0}OG4FrCM3M22%`mGlyOwK6N1QIrS=GtB~$6lsLhV z>UKr@wO4WToa{*&u-6t8`U-IupmgsVlf{D0a0q50Sbn_rnw{z01mAV0a9}?R$ zsO!-wlG9o)%aQRH<#t(lr@rHnZjqzg!{|;eY9^rBS^E%9xT;k7wJJS6Nx{tSHmiwPQUfh7ry`P=bM+1 zcpM{?*v0zR!%u$o)9*gBx#_dl)L?Wb(0HPb<$T zXViJK%qW$RQBur{)g+iw9>OURjABBzRU9O%DrSKZVdWD1RL+XX&?HUhsiWG%5bM$; z^xP;hi|wM~B32YARGf@NQ}c8N1V*OE%pg5PnSdVBtzZ`x6|zExNrNLRG{e;d;+j7R z-R32t*eEgzhYBDG|2R~eRA%F-MIBavCJRM@8s4ljrxe|hIK*JZ7RvGZ^zyRgGV}}+ z#Uv_f(>PI8SOH?K0>3T?(Eu?B&azTd(S@S3d>dto3wA7}qpwnqJ}5C9EfJehfY+<% zK>`>sok>;-R41YU(Z~@pQ6X1SjJ#kj(Mbmex(cJVIvxvNGZHpHS5)5LMM>7~r zVx6(phhjq&yYsaGPT21R)C6JNW#SKos*wLJH@^adDh(9VNAx zLLU;mfoB&JCSVJuL?8w4)O6;)Hk|jKdk#Fcgd3uWqRT}TUtfaS^XF+q5t>&pbrJ`l zC{TdnZWmDe9<4VGD6WhGif1E$;>H+2Q8X4%JbD2@ao5EF#SNDQD2gu`P(1k`1r&E* z9-#QeoXY|fpS>(V5d@&vgeY|xc%pUge*{l#tGY})v0?UQ;EAV}UkaXhx^?r@Q9SX) ztux}_iRZRIy1wbY+pk|XpROADblTF-u3Fzxe^d1sJn^~BYajUR4Oc9n!HI__9=P?I z+S!Bv#__~Bo=Aizc&=Sgo)}Q@{ErICXU|)F%}ux8+t~8(md6ty3R(Qg%&J9K-E_wT zt2R8g{lbvqHznm2wO2ym%JrLDHztAoG&0Cp;1P#_kn8`p0YrvmLoucG85{BrS!J371;ipQ3eeU zh=D7Z!g|luUqK0n2$Xowz_W=-l#C`h7&>7Pkho8U_XR395$ZW`0GoQ?2(EAhvFP$p#NW@jEEKWuvQfl! zmxm&5n(-e&5jW1dOcZhT^h-q%Ktjvsf%#%diCb>E{^lr%xN*U>I3VJd<=0<*#p2qU z%Gonulyj8}uekcErStIk%uzXs71v+2w6>;d4h>B_46$TE^_=PB7@}}ICxMK^1u#V6 zj0SZ_G)wq7k7ryfC zCohB{Dwi(5XU*o%ef2x>F~p48>pt7`VCxsZ`K{k^3_)iccpIj`+gb%)XvhXW`EUUL z=m!t((+|?qNnD9UvFQ8YjX!O@|Hj&d3-M6*C;zPT?Y9QNuK3x9$c;xTP$ra~F!<>! zeXqZG*Ft0u7UIN#FBqJ^pyB%mPz7(;_)w}mH|5#s!D{r3yx_V;;FYyv!Edlhxqk{aigt4^tXl zAOr2}Q?kW8QNyZ5v0YMJ!b*ZG{;-Sk1rgb{N<9<1z3&w$?JStj=d*dTCRklnRb9-` z2ruR(f!Zzq+DS=q{^lntr;HRaeqPl%>vNRhP)8XxtVUMzDqb8!YsDp~SXEv9z~3V` zE>$-DysAanWy+AFF*cw2!mCBq`O2!wVoLUv$P!s?-~YF7QUad6KCGeG7uZYZC1^xc z+f~(-tkS8%FHsz#YP`g#9;~_d|9g{i-ugL&^w2&$g$$-;Xajmx4pmiFR8~|Vk<3aQ zs>7>4g^K9w-G7H_Ox-|Fd2-yfQ7}{rN;NeRRMmKeGgp}eHAM+51hS|as;*l7E0tl_ z&v%o1jl#jAsZ(%)_f)(kI+#Cg?wsNF?5fHtPgSsH%RYK`oX+_3J>EiIWEU3|dy0*c zP*r7Rl~u*6?S;>)$1`#q3eX)Ig=V2$R9Ivd84=|j&B&_GS65y09X$DP-(Jet({(&Z zyRxDX(yQQi4P=z0Rzd08{>o+IyF7)mD1_{4v2X`Wlz6M0>MDuWgH?^cpr^&rQYk8m?6R6xZ|kR(Wta;k z=s2lsSCY|4{`{>w=!TIFUg%Jkm=`&-Ta#OzS(v6F;uWMV{u))kp<$@1ocHLj=)|VI zP@r#tLgbd`x2CiPD@sZ#t5_AQw#M5ERRj^Cl-5ywKoOl@2xQUi>D7>DwFc(TC_xvg6A^*xlT|fT zNk*W&4INhmilsvtQMiNgqNIn-G~v4m4m zT0{jij8;{ps2p@F!6ZoVQzbfJAs@zy1LPt~h(Z>_F9BVs6ZF*;DB(&Z>KFxFyA(Opbh0$LY}tV&UV?orb$-zmV0?M1O!;&H2z*@(lQTS3#gz{YtAQ|B^ya7U_V)UMktt)A)j zk=mTg=F%aIRL3VgF9bs81oFpo@cmUyWdZ>6jdAR75bp3MC;FEkd`w}m$qETJ zHk;?AlFuE-7LK&;5Mb8>N4kqWX@y#xm0 z6(k-1SF?Et?X`;*FIoC9d)RnLRm#a_xj|IQ#eGbJxNl4KOO*V!w7h2id_aiBOP4OY zW+UHdJ|Z4AA7aqU$wL)t2RBdUew>Fxt0Ei@RY8wd*6M8EBsO_A%0~=v|MtQBf}&#g zxT>O&HOeMmE8Apm+_cdGi~aB;5A%oRL*hX%4u)hCYxK1`n>Ko5Nb*5CGm=dLB%hKh zA2J>^RGEP?;x!<`c+lB^BP|>zHCZUu3Q#fI;50P~6njxjjcRVbfy#W1P6Hgh87&qY z7>ZdV>X?nZ!Pja;Npge0kyaBCBnUEw5Ll1mrbesL1VO|Q*m~CFX=DvfV}ro2R;$(C z-nx-(6pxq>i-*hy#Rjq7*ygluW81P@Q?`pIo$XJ0pXA$eiEq1ayYu9BzCHBh_U%tv zPYTVK*~+%d)+Al(18=Bx+qTxM*7Mt2Th$M$*-vhN(*LCF6L?SIp51sUy1W=<u&;NTtNR5kea{X=8a!T2pU6oE+Whr0N?@; zWB^a+i%V;7+x+_pU}I<@q!Jiq^Tj+?V^`NGEE1?~{8~cfXz!ycZWA2%5nv0oTm-pj z-55u*vx(p%oON9Ec<+}ljvnW)x(xKVGpHA0V%R+9gvKs^FI&b#-yQRs0Ep~rg= z3F4#2ntPrdg&w~}=<$*G=&|Omr=#exnb6}yanNJUty^Nz<4i)2pN)eamkp!G+9-N_ zX?{ZVc(aQh?QOJ#E(jl&v}*YHtreFBA4_k1M8n7JH^Wj2+*~4jEStalw%cx;Hx3`i z;o~@bjDe4Q?m0U3yZyeE>n{aA{^*auj+(vJ z?~nKOLbjLDe)jY1HuL#Dd(TWnY4<|**PYYHj*55|2v+-S_^6br9U-Li`o90c1u1fE?-p$Y?h}zVdXN06EzL$lZfG0?3hjBtZUo zVkZG|T!{ckN5$kH5thrOVJFg$KOR1DdV1Qk-|*u%{P+z&`tswT5u?UV%Uf93Ier{G zB4*6^^jQU~H|_d)2mHu?Sofm=BNE0>pD};gnoT?R{-RBQ{NCeFJ`H--w);yIN&{tN)Xe=j7Xvkwv{h zA@sbF^~wVAd{PRMXv!cJJ3K1wGz=6)^;v^Z*8FH1UZX}e(_1TFABM74GihHy>o+JO zpQCa%t6K;@Uv~VMa*XyH*`a0>fA@u_#D*-ztRVmI>OU+$e>O*9eMnz8psmqHPwjYx zqrQl?=M-f2v9;2lW8Z;=>Q4@v&1UmidjG!EF`>ulHGk3xy%&+J4h+FfmAtrM)xRI_ zr-nB78~7BC5cMS+EmVBc%60UZc+nKTV}-}R_`9xy*#JM<213K7H#JlVQTqmk=%Iu; zjYr(Uy{o>fmkq?8gAH3Lyq_(Uh3I`l`m(+*?BMl5Tj*glytEK+y~ML|LGS7>OE5&e z47)38s4FBiB&4s}m-k^$1czuA70J(dy@ywp>Tk<@q+>w;e*HuHg(?UosIUG+pC>pB z{7{rflU>mxwUnq5ft#4hQC*b*s$DeroaU8^>dKC;Ry?qle{!|XK1KMn}EHz1a zf<5kf0;jbeXJ+Mx>5E&UaL_^H8C1&Qo%d0n;E&_6Ec_E3Lf_>=3H4puL1P!1D@!O( zD33d+Cj3!Q%B)9yH|U@i8yXtoDaC)HQ6YN%4B?3;P;Xb6pYAB;Ie zI}}ezg-Q+_G;s&LG*vmMZ+i+QjlO+Y9}RQk3G!{$DxO`V2eOPGA_8@wGoj%5zf!E) z&r+#rtdC#iZUg;?KcX?f(r6j*?BqG)2ZzE3>+8Vm>x+R3R}X$sh6-*NMiIx-LqrS ztnL?T)=iVuU0iOv;~_MP7i$@va~P>|t2Dz| z0gMSEp?K)&yxSWOMzNWX-s!JW&&YUWQCYnW=N81KEc*dRIo7`(wc;9Lbqo{L(vy*5_TyBXD38N7 z*pf%@&?U1$lo$Q@#N#w$=@pscOoVFHty10njQ&`xH2GK`gG$mvxAa&fJ({WD0YS0% z>-qsUd>&J9NQEXBu9uCnQ^W;@$;WCGJYK1w=jgG_AXKgOLkQfg+C|qMTmi)MrlPlh zLI+&r#xf2C;6YEA1cf%a>&3}jJQYZB;Gw^e{)2K^uJft>kBhB!oIYSbu+fnjvQn@X zLh0g7m&3+Bc-#w%__!n^gcg$Ohq}IFQ9_P z9Na-UZg9#>hGM;Ql^o*<9ATixS%dI0MOIwciL&SsUDyfG5rnulk8k@h* z?nmb`#OVc5fT02|Do{iPJlpsoDxil&@rZhekw2RpkazieCEM9YG@9eEMsNuBhlMd0 z#%i|F5669UoC|0FP2t;2Tls5Sw(+buHGwN~C~ozZX)gpGoXx-A4HeSgk~f|w|5h7- zBkRh48{b2X#`n-7WA-f7blDSj-LmnHcj@nY@cBLXH0|lP-Ls9yEo+Y7srVg7-97NT z9@)lYIPcD2rr=k~ELFHQe>K4Tm5N_+@hb(7W(MW-%r-(rDEOCxXK8~%nnG8uER=tG z6!KNB!d0sZSM^$@7Y)HAa)bZ`@TW(Jjv{>J{e}0hQi_a0eU-kr&WK;Im8_7h)KNvx zLTyzc*`h@MzPztN)38^FB7S*)p)TsxidGf%?bf#^s8K#gFClZP4`k-~K&HOBe~220 zGDmt-Ch}DU7G*9am}*6ttB0DD2?Bd+m4%tnDC>urIsTaW>{1gmpQAbHkD1ZFm>F$i z=2#kS`E6b=%v>?F6=ue)F)`D45+**RNzeYjy9nXn7?TB>gXdeIIkOGWoDcvsV-`u! zjA|1!*HQMy4>X@no|>LEtbNc->Jn(?bp{ON&V%OQ z4ncE9r$F=BE`sK?&VlBlerPJ(9cfKG#E#Dux41!&HT>^x`= z8I?M6;5VT84QLARB_jO)K4|hEX+H`1NheA3@d3|7kD0QJNV70^MEj)4pJ*8H%*dok zS#y>y^Fqx9Pql%X{f35(N|};9Z)srw)QtB<&4tU?w1Ju_9iryQ_E585N2r8;YR+#PH79n6nvrdxrVFSU z(l@vjYmW3`&1HV9`D9?$eAbUOH(9K?Eg)--eagd{L&`1IOlZxTqx@Mje2vMPI|8xh zFkjY;H(4_yAZw;j`qMY1nYh85MvvlQv1#jBArM(+0I> z&EZq>=VgVp&zfOfV$D%qVa=p2vt~*cSu?qlteMzZ){N~EYYy)`Yd+Z_YsPenH3xN( zH6uF5n(;FA87Qe4GtSML3H{q+O*T+_HZD!F=E#1XW=*^wAyu&E=pmhF&4I&44DJ67 zYktF;|372Rew}8`ry>%k%-KP#S@~Q{`>e^HxYuV;MADR*OV(}Q;su+VhP45kAk&m- zvzM;lzAFH1PV|M%4LhE112)q;gw2%pU~^zcu(`5B*c{XzY^vEZ=@~GoS<*gfZtpT_ zR&_|4YuhEwN$rqk-?mA!vTf2_(@D}SZkse`bV!<`+at|TL7KFEeisS&xVZRu{3OuN zAFtpb=4BOMv7=|F^$*HMv(Y@ZHfCgWRAfYW_=w>nhClo4GsD<04M!ibDRa-VO-P8J z1Y6}Y7q-gzFF$x`)Tr3l7-1S25f(NArq7V6>**l_zK^>Yi&NrRf-^oLaVNcem0wbY zQ}%&zESANxm^#y`$I>~p&yNQVGEE%`@reluXN0A4k=~ZdKVavy$uTj}EV=>VMufv9 ze2QqF_%S_)ONt1T-h^6x_RVOrgENGQu6btIV}0>ZD-UtO#x$DfV?^&ZwVz27HsN7m z)T7Tl)(1}uV?!wveryS@vdfp~)wEV{98Y`KZ6hBjk0uR7ae5BgpbV8EEE3;0E$FLz z^sqZWQ+N8zC=u20X9s>CXDho8Y#B5#BqUTswkQ3!}^Lo(^81#k% z4e)|?JK_@(5)&)Ui0CVPR6o6#wQ=-_;UV7_51kI|HPDITqIQ<3C!NL{f~f&ioL+mY zoOYZ#d1`ma4{$Pro}_&e20TPb;EB$87cX7Bi1*!!F9v!FpFDDP5(?uPRFE{n$Ftl6 z0bPhiNi<%($S~%X1wGo&PdScWt*QC+SsW#}A5}LY=J>?KblqQ`r2E6D4a8I-u#fzP+XH1QbGOX@#u~K!IcGr>uW#y{VFPj zOIPIw=TPKGun)fb;bPe(KFTeR~t3etXjoyZ{xSU>s!z* zu_Fgvss5G-`10+#-uPP{g3Yzb)sI%|pIxcDzwW+z7UIHU*;xHZwf5PSTKtt>UsvCY z%7uo!S^ZG8>*keO`s)W!l7|{s5r*sLC-|#}>h8y1VdC|JZ~ew6wXF6bVN7+xIIg;P zwSM)JTBY_u^RFFs=+4l2)jg~AE4T6Y4^s_wMlH@c7~875i@#NCAEBV?SS{9YXy|V- zJlf}1Z`azy-#6CP*518~ctiJBtJV7FS8Ic7zg5>ul-KUs?NrmnYA$}$P5j0#EbMpg zpf^JQRb74aMr}_x?kP;_VREOY2G#YizWHfw_gcM<+SRMxs6%U7?!pW`jw!77|FpIj z%&2d=*Q3;3cDI2{@nRBK&lYvwSKor*s78!~{_ihgXDq7ifxvs$+w1TfQQN=&{pG*V zfEDmYk>5dGW<_6q`LBN=$~B@*z3Xe_Z{PtI|N7@YVYI9^2u8i@tKGjMn}6QE4YL{e z9eMh<=XYdv`ycs?=O{!&(Xo84~t$KUDKpVo31Gqk(DXZ^oKMAiQ`>;A_- z{{98pn0^>t@^GD2Uq{p9b{!gu){Dq)-^M5VzMw+WU#_itSk}|4{_l0Q=nTX!LZoWG z`22IKX#-}@!x&{0pti#kwL#SJ`RAXZL}rdGQ0rF!@3v>3>!1A%J&Wg)FJq{BV;sNm zss&#D4lkd5_P4*GzcMpls(S#AZqp=id$Jt;?QfrcikeuKu|%wdPvFf{>bAS0Pe1vD zV#>_=TitzPuIZ?Z+3RHUDRA*BSl2ds=a+(*2oYLDQ zr%`Q^Q&C&wR6fL)oW}gVO>!y=u+y*$kVS>}fw!!JiK;RVH3Y;MNMsP}8Q)P}7nQsVTcN)b#64P}7!9QPZ5xQPXRkr>3&bQ`6I} zsj0}1n&SPasmz<2==A;QI3CC1TSU4kNAe4$Iw)f_87h%dM$yrc$Tm@`LuQN^-tWgl zmAK}3kyMEvb6Mt@TzEO5l1N8Ow^sr zgF66>ncZR|H0jXs^iU*>C|kti)Oci?;`0TH$P5*w66(*!6ZlY|$TJOR!`U;G*&;JD z&t#Lyt?@AAB4b3K0Adi;&T+yai>$ZWh*#0Lb4^W@ilfw4&Lzc6!;u+3Ta!+SCUPe; zO~alxGfhTZJfj#B5);OlHk7@PpXs?9BTdkml+-d4O%BQe!Gfbl1kA`(6S-kXMbxE5 zgu{&(0H0)&Olt82SK>@y6Z1*%@YD6hk;qU{p3h7;Ic36$#VZL~Vk&(zipJSWE%4J# zr;^DD6{mF5J&?Hw3z?gAvvztPBPAC&KGV}MBO(AaDG7RFzF-lUj-&GX*7R z<3y%O<_hWcl$6C{C$%G2p9us^@d-+Tk!gO4i2|_Bt0QMj>TzX1@q7>pzs|>+!>~{!2vi4OE@lW^mIxv$&ir4^2;zy z8{x%C)smCqD77;K$RR(%#Jy5XvHd)xRBxu3PS(IX;oK(OZ(;tc!2vlmEPdO$OA4LF!;(>BZbsJaB_n=ZT z>eWvKN-?!;Dq18GQ7qOu>D)P#X`N##Gf^p{O;m~=&>EHcfB)%Ls1y|tm6BSc(s(~q zLXIgUaE@tE8?-b$AT5myOiOWX(Nc1ow3OC1Elp{Ymil#&WBN(Ev^1?vTFPvTma^NV zrJS~DDXSe?%J@38RMZJtTG|;}TGSa@n%yBSWp##@3Ohkd1)ZX$yw1_m+RoF`lFrl8 zldWkf*^icn`O(sNZ(5=aI_H4L28YG2@3!73UeDI+#p{cCu~AaYio2J%_LT40Q_jnE z{8!l%T+S-kKt4!+W+X~$#p~A>tHoNu-r|yOB^niEVXyWm@v4%+a|Nrw19XGx@lfhhPYsD$zkbDYFTE^^8WgNM zPHGWK^9p+Fu8wNy-FeMV^^JJxrB_~l8NqPW?V_fkQQgY*it-Aj0uKPvAH1^Usg@@a z=FKZu`SL3qCH2=t-P8jr`ictk3auPr2MuyOHHeDhy@}2RORHXaqW1?^$w=uB3wRg{-k1d9=D3Yk0?H@|uF=PzIj*h0356*Mnd`Pys0 zmqVn$gzvG5CInTmLG>X6C*jVDTN(@&EMyBC78NX7ym-md=hpq6+Mw(a!{4nuxT3l5 zz}ZxkVxg+}BCP-=*%EE(vNa{$Q54;Y!Dn#cKo8L$wSwn6=j7u}nrQF6`3n}Jy^9J8 z@QK%@e5t-9On5;27=?1B+zAU|B{s|qZVp|y3RgZggUw^}x#%IbxR$=awq$WZ z!J>uu*4NOHC2EOPyhjC_!{%!49xc$QgV>VBr6|8>;lc%j2jhj?Ms$fnGdoChZO@99 zN;G<|7zJbDBDSa&eT8qlEnNZ^3l_|qKSUj3M3wN8ZsomDwgRQ+&%=m0secwNW{c%_ z2@6&dBxiQ-ibjkYrqDt%VFd=o#1><~7dT*%4-?xEZDdJF zxoU=_RJ!1U2AO6BTg;d60=58jGH*`)>{)nc5j?nt4vDcWdR4GWy@KYEXo0pE#2&Pp-0*`j|hE~DOj`!gEJS7@@LJOnKvYO zh&FUszE~Dmr1w{_1soyq#c08zyJ+$JxpQ$Ia~96A)CE?6EHf8Dj1 z8cwa&3KlNJ3dD@TgKWmkJeKFmr7mMb?vdrtsabM9K2X8xUH3kCc`bUlx?rIQYHt4Q z*|TQM%*)Hk&K`_mq1Q1rOrJKB=AxL7Ju8gLdbPgx@B8;GM#JaNMR(1fDV=0zWuh^T zp+lxmPcK1x9-y+edR}|y=q|JYHKVz?IXT%`D9DD?VQx`NhD@I}JsW)`u2DVF&uV>x z*zmC5`S)Kp%$~_+vb<)*lbMyCPUDEzPfa&wQAbr874=N)g#8;EAGA&J?~i{uJ1-j^ zGBeVrPsfX=lpzX=yD};Ko)tmX&_;AE8lFBK-HT;XiJM3zt7Ug@ zd-l!be%9Yl&L=CF;XU~D27h!I%<%5nIWROT(GjfjGwjhIMrxARKGqkXZU@^fl3V00&J|>xqP?gFX6_w@wy&;06U8`Fk ze>52lq;-MSHw1P{hLMHafD4xs>e1WfZF&5deXM=-w=m3HHr;V|3oUQByM$ z!+|Rd`h{h<@U4!Sa4cpGuFWmxOu>fXmtr$e^o{x9XV~6+S`3RVL(9y_gPpUI*5@9+ z2OFk=brKLlj^Ka`b0WpH=V*Gy->NvF^MiRL($DGnOPYb znOXD25b-_A?tkpuW$w0m`?O4rt2nG+`~q&V)-c2le7!X*b1tn<5wx*uC);_?axL0Q zU&wO1W><|XsG;d|ahan}w4#PR8S4Y-D7rnYf6| z+Ouc(F1Cv!YQDWutb6(vI)!Xm8JCf|gV{=$>6sas9OIUrKFhTGa>w=^+qZAq<})#` zUAroSwZYK!JX)Hmkk$0*Go?2MZ+u&eH99`dY?q9SHMSbpThzr2pZLY4E`9n85v8$X zI~f{VYrbFOI!jll;GstB2EM`AxPfiZH*VOdY{H1mW zrGtjDr}fy94YmzI8-Gxv4;wO69a>AJVoEk_+^}IIDxfMLZNlfj5K!6(eIcM5tN^ey z`54QGPNfZ=ysMSO(NRhzvcP{W!cZ!pUXnNaYn<*x++3h4Zm*`u8CBFuShY2Cc_NWNoDOn3DrZRxuS@t`R-f@^- zBs2$Cw4r!5yz{E5cp#9N5UZd@TLrHq%^FDYEd7OB@!%3IMG|HNFYn%-=Gk~aXdZMH z;u4a$obFHU2%i-H(`%u3q>iM4#touQ zUVF2q(V%yrkDA5pcIZ6QgzyBJk4o3`#RVNpq((9xI&}>q1tq|vVg`z-Q180+^3K8z z)DoMnKW~}_i#eoJ+UjfH{`rQ2cH~m-FEMA}EU2PeWl%k28(WS2Df2ab|1Dly2k$)^XJpi=ee=I=m&fm1s&= z(s3!m<&joEx5|K`>Gx}WL=(O>Hk8Z?&~)Ln8+lpzGM=>e*$US;P+=D7AG5@MQuWVB>t#d1; zrlIN6(?M;SFCoU@N>^27yIQHx)Jo0i(=#$*w+$UBf>bNNXh$y`1~`5&knaGo3;tRBvElvG!s{Aa!TUE*wvwOinEl{z052eAkBIeon1-S zaJJ|3-5~0Y)zcz)C-uZLo3l{CZ(tAdAosPsT{6XA8|FY%_mqxxGt*ZO4vI2&PSR!-F1B zv-Hd=^q7cRfo`$4rrM%!#EPy9rRW`96iTD2IxmzWws%n|Z8+Lhp|p4ZR})Ih|J-GvwDm$4g_5!K zHTIgz+#BkGQrddCt4e9*{;n$}wxoL(bkex@yP}h#-|Cu9diKSysFSL`j!xS3HFVOB zudb7x|7tqv*Iz>?J^S`o(@C+1zk*IG@YhM}R&-t`l?B#GXE(1|*0E0dLu;M1y<{bJ z1l!zJn(>OCPP)2&*__rpOWr!EB(P2@En3*NPWod&om9MJMj)LuuU(z=+k%{cI_aej zbkf>+0d>;y4t3IVS%GxYzRu{RJU^YZqZ2x5mY+_V*GZi;tF=x#&?%iX!%rvuymLB< zHXQwR(wffdq_EaHX?CY|QpQkko%DX^byBLoPI|Q~Iw{IeC+%%ZC;i(8!bLW{re->< z*-#tp5N+w2Od91UlU8+2CZV^yWzxK^$fOt_nUvc#nKVWC{c18P%ugo0-({JU4DVht z>91XsNd`@C4V#HlC%xT8ofPJ!lm6IMos{6Elm5_koixcyC%w`Ion+jg?QW+p;5>L<-9zlV0-j*}hB~<0X@R*AnoF{m@?^wRx&BW zOD4Tw$)uf@OnSjBlkhj@eiHu9OD55AIb`xE$BQgdaHXw^?X^`o_f}PjiwH-~!q|;q z6tOKvIaw65Rq9ohRlLgBTcy&!Sd}h>yc*6k_n z+$tD@A%zAfYNbMT2b*;xce0ziD`s1bGV79V=J)Os1*uYHm$7q)6+js)Gt-nJg^Gg= zXjxSccf=gE`W81zalyx45v^DcNYPPO(8EE>h3af!?%dEERBh+ z(g_#%u~ktv$jnVpms4EIHl>Wi0o#mUp>$6ge*9Mylie-D7Zvl;<}I7IY~Hj9y(0Ha zg2X&fswka{_3YZ?Kl-8p+LqESo7rZ*$=GNOnL8|2toM zku^3)5pxuVes)~+vfCfq$Tm1j(0Mem(GQjA2b!wLJepI<*uITzlU8htvYBn-FySRg zo6%?nVa6gnTsEvZO~F~kIf^?rZo|o}EQT#2`VtqZe#Hgwy3s!+`L`1d|9u!P4R;HDfSw8qi zj&`WUd_Ak^AqqE`)zgmnRyiHH2#1PlIG|drQ0aAOcQ>rOMt3~hx6$-vm?#_*g`4bEITGPtE{akr(W18Ot+SmmC^#h zjJ90b5TmeTYl5jKFu&_5pV``gT82Hg;uZ>V{W|i+*66D#dy9((`Jxrn1Y^-aTAtJ? zW|#`~3P+IIy7khOt(K!pR%}lr%tVY{ALe4wMccF@ZI(1?7$q~ zve}v$+TNQUKYV!6PG z7O_?4<&HAUbVp*_Tcnpj7JRjhEDFWINQ+v!D!>8_K|3~4>XVn?q`Krj9 zQ@@Gu{9Q3In)<4uRcsY6)K?~o^G&8hxPJQ^WBoc#-6CUkA=Xuea2g*K85K!; zDJDqV6=O})V-sS0x{4*A%iZZ_vAoQYfIb}(DhA0++=Ua zo~j#7-XkOE+Cx*oV=g)x=56@LGF?^33Ts#5H4aokxLJX`8?mxRcW?W+r&Y($ZKnIC zmFPS1Tq8C`*bYSo&&uu!YteqX=y~@XS(}Y-SvgwzX5n7eysTElzEL#24P*LzMB^CK zcX*iSIC&d|vDx*-exAL$ovn0^jG$KYa4k&SPpx}!y_}!a>l8M1xz%QO)GOjdkFjtb zrqO9Ix+^JQB-mm}P@j`$)7DsB#H}W?LcY=%gLj)5gs7>~$<(T!dg_%ai z2)8ee3$%;YfEWyhwWDC|;4(;apReRA?8~F+Fu%_9%55tldxhyU+Ibl zT5PqG3L-aBG{|MBk?3NZaLNYos#Z1A?7}=C1JM?b1$8|q(Zs>&Y@?*l;3~eCRm%Nk zs=f&Ukg9PA)dy&C7O=QJzp<)+B8CNP|Z^P&>A5lAGu^kM+%Lvb*_PErU`AUx+e@R z>ErQ6A>y(vB!W{4C$eN~oMcJ;VK;}$M{&{Wp$-wMi9y-Q4k1HrwQz~~1gUngL~a}0O$ErwAtB!P*t*>|tu88}5fw^C zM7-;s)l^fF$wkMDT^LOQa4)}L09NEys2+1u0|LfchwXMPjGI>p-?&uJ4b_xt)Xzk6 z49O*-qXGmjtlg^3%x99&vwXX?p%f1?_7>S^6t<|qg-@T6P?Vwbopm(IZVg9*j8X@( z~?MmGlnbxJ%KERiv(FSbg*5yBJ;4d;^Hmmi6B^-ByLlW z>Tp8x6p`l9i|An?h!(cXZe97s=2(jx2rIUE1?@I8@}qc^7KxboE)8xWvRZ3ARb1O-b9J~RJ?ffC+DfQ9w#!8w z<)zQuT7g8mPq?HES)pr{X&iyB@&=1qT9YQ})6ha*(#4SmmlwHRuS8$LHH)AFRc>8o zsXD@MZ?Bfwy_GZ2MWaz=Q^sX*zc zMsh?6Gj9=hPb@%FN(E>jJg%HC+ed0fvYZrQwQ%Sb7&76;arrNzMQ1e=pB^lYw&G=B z`UuLXS~?6BxOEh|m(p&OEKt0ySB&#myMzq0tl5@&cY~n;16ey(ECAw59o94=%o1_L zf6A5ykMDJBX;fQeD&x+?{>2ljzwe~9>&5ba=aJH+x0z9$FHO85q$evJGVvCi-~wxvrt^aM^M;i zhMDdYwI1)dwXC5bi$}-xD#6KH!&S*wagB++U9Sx zny*Ik+VA>Ct9_%@#MYM2ZNNg_Z?qbS?i;O!y`XQj+BaH_q@E>NzR_xK!Q~^%fj}fB zzJ^xY`IWU=dCphYY88oJORKH=s#@*2ud3A+e;uv1{p)G9q_3vc7JfCY_S3Jd)y98S ztp+ViTJ$SwwHLphR-62_wAz}lr`3KP{k62(l&_=J)_*On_Pdc^Q>&%7qt$-e39WW` zbcb4PZiia!S3X*eP9_GGy0BkbwpLxMBZJ9t7-!9Db#<`JsBsA7d*kTEsPao&q|%Kr zq-k6n8UrtCv5Q7#rhlFnsvr zQd=o2(@V>+T`U`;6b0d)L2cp78=f0O?_(Y*UgeA>80H!=eDYhRL8Tg6Bf?UPtesxI zoIU4EMeQS_S@b=$g+_4r@U*wyDpg8xc!M^YMQ=$HY-X=m&X)7%{=ICpe0j6mB<1b5 z-b4?`V?Sl;YBEsFi1>4^W%1GE!e#EGHzSjf_{JN5ItDPL!70U&LoT|D7pbdUru?VY z@aNbvBMGK-Y68iva0hY_L*Be)XLjl`GDOzFY7rL}e3`a1CK~4~?umWu@bJEUo=Ui2 zSM0&1yv%BeEXtO#rRI^07PNgppFy#s*eK&2yK2Wa0TMLSX-KH3IDNB9rX(mPW7$%+ z^xl#rF^B{Dgy8kG$|&QPcAMQ+s+KXdU5*}=<#554;P}ClPxOuDv1}BN)km$g2f+a= zbBHc3TcwKOqnH>P%<1KObDu`FF|g3+?Y9Uj!yYVJp!k(_%*&g*W?NDWiwTZ(;hnu7 zqg)W?A~%De0b|RYOXpKDWt%aIqKM(KPOA5>_HO7%F>I{Ny-UuP8_z9c%Um;NF5Zg0 zB-hq$+s4HxF)Y@I!FNs&&{}(U5eqewtq>k&7>l>swyN7)@tCf$N-X@K{6u>X^obKG z%(60Mbf~QBx!Jh|TYGF}+nig|Xl}C@72RSSM^P?1oa90o3NP1Y=jLzixmDjrQ8ZJ< zG1MohycBV3w@x0zJjD=|BCXV%pO;@&hQt`E=5+Ek4HY{~3l^)V)?j!XCy!plE2gmA zx|h)*wXNN@isLtIo4z$RhR5iroxU&?8~eJQ+qKij&U~!kbyhS~Mrm2MGF?>9w$hjA~ZS1{;6G_i#8$a=gIECgWGj z9z-b$p$YX3ekvj-r}z_&_Z+F@{w4+B5_5%@*(mOwTbtrzM#jWEJ18PMhv(?IN5waG zsI+oZE$v;_YpY|-$Y%zHr)9HjCC8P!4$lJ1+Emnr0q0`*ureH&rcUd=wPD-35#i(T zGCcg`upDP@PVQmL#wKl8X^*mQTOCWETc4kmm93y+XKr5ZQmd4T*D?@b9LRlQytJ3G^Wb!#xjQX0c7uONt6!tyoHo9yjM>?0 zww^^zWx0;L97J`-bi!^ZAJPh;3s)#m19qH0-~=Q4C>UhW1IRxmVZ@`s`cbmCE# zZ=5$H6CXvQpByDe%SGKh*Eo%-#4$SThE3Lvx*b)Ob8<61m5bPQ)Xs8^Z6EWGRnq~x zZbS56q$K6#X5+zn{K>=sWaD4dt$0TwOn9zq))h={j&7o$_;p@dUsgIcF&40jHy_~D z65?%K+07Ie#yA)Kq~>aQzxntho9Rb^jg~YrGD?Z!8EPiac2HUTFxd=@Mc%THKT^>Q zj!xp&*|mG62?WEq6h=kSv-5c0S2ms~haLKslUWWz)ADAV{0J+Ml@y@w19BE!p(wn(~HMZrk4 zg=|#JtXvyfGWQ&8l$$opDdl?ewX0X~p@B&9rAE0hFxfD|I4U_To8>m; zI5}fE3TD2JHeo<#{Fw}bg+UX%T)9kNd5lzr9~RY!j>EJuoghRkl-wD)GyWpoQ13OG zR(MZ7n#H0FiVts+qqwqJww{ws6O_7LpLmcw)PIe#>L*sj-@#qoWB^LXz)MhPLYNPMI;3PTD%;!=lZlwN~P5aP07 zO0%m?vd_o}-}H=ZM0xr_$00C|*{Lr-U>XDogGP_RS-b^5qFyWrc#EPg!#Y4*OI~-! zMLyV-Ix#R8D6+F>&QN2T;UzMPEaU}v{X6cK%lGp&dQ8sXUHhja&>AttX^`NCC>k$LUq*T_{qsxRQ87pH2(UHn>SQw(5Oh<;)epLogdzL*v=#Mxu4(p{vE@9hu?X~j>cEq zc}x`KcH@ry0gz8ew7)*C%e22~%vYuTNnNG=JYouuJQzMau>;y)){6EM+oS!BaWQ_h zANTtXX@4BqL}Lk<0%25X`?R0iiuOmY?lkSM^rQVJmv>0}iP5-lc+q}bMccHWjiM~l zoAx(%j`oqFLi^pczq~!#Px7Jt+)mK`d|%qv(=Nh@kR>qg7g)HT@beCEKiM1iH+L5I zD|~Q&W;?i_MGS1>zMk?Ylx&Che@?U8U>@7f=0*r5k{Mxn`N1+d; zpkRZYYs9;FxFA3u<{ytZ>d`HN`Im}PBsqxETQmO*ALjqrE#(#$WsMu?7yQo~ zyOfrlyX2PC8AP3dso%M6-Mol#xOL*Dj+>4PciiV;M6H7CkVY2vFI&F@H$Wwu-mVR1 z$eAw+N~UFiU?1{tlH^|o3ziLXz|EEc%X4zeZhcHI36|`PSI1K5ZUykAM*&n;trqua z+zpAQz}zp%-lm%y074r1i-1=ape-zi<1USRVNPxlsN2GHT22lq06J7?!$IWTd1#D) zHJ;-jO3!-%fe~{nfG6WRuDnVa2>@GV!*2=zc0dOF0}>K7X9+y$UfnPO}BUz*u`7^vBm}fc2Ow7S1sc3TZHVbB!hWwfa zx&(Y!B0#(wSdpZS*3cAj=H)(T!ZP`CUAqp%^wt3YZ9MU=W--hVr$xY+lX;sSIO}=ohv2eNHin4Y z3;K<0Oa(?PPqCT!@0|bZ8vslWbxM{ErX^u^q+0-}S&gDa2u{$yUUV64k{0!DU-;fs z1Z=4Pa6ixH@FhjvtQ|Lniy(pWcf4GjI~y56yesrzRF)8%V!~nV=jN{b9eSH03r1u@ z0Z5ra3cxsvmbJhY{h(dAYS0BEH+MlLj1(ZP4XcM;{hXwrMZagyL_~ET}8MOGJt10bF*`oR$%V%8AKEibLONq`(N*0--kO-P-J80|dYaBsZi2s5ccrcJ`bVTVK3M>pK`0QlGHP$|ZK8Ss0u> zbNUoJ6@<=U%F-LgNl{SQMyuM>r!457 zw960rW7b&EKlv9v(7&jw&|e0 z^yg!~x}iUQbNkT$SDM`>^yhU1{R>gng8qpeL;qiVp?~!J_Mv~85A>%4`dtM5Ae*+B zf4evHH;=JjJ`Uz510IO^-;48Neq)Loqyf3^G&d#sr+5{Vg%`}puc&M1^onj zMj=WQJ=1;1O!RLD^M?_`<3=m1lLgeanSU)bf{pTWE5#Q(s5uIy)|uQ3qBOs2>9X~| zz+KXYYOxtGOB7Uv-&U~SfU?Ni@6D2YDKq8J61hu75?eB_y9d}-hl%-k)(cOAY$R+{ z5e~Z1MI9)s=tt4zoAs>?=FUcNE8xWFl6Ml`EENxKQq@~h}Td!tA0Hr zi=fv7`iQH@Byomh6p=Vy5>SP=5j6buxl9z!rhkwm2DZ!*xp6MQ(9QUG)Q(EGya#my z5Jxc068J<;-B=~22WbdZRIXIo=`Ap?uK~9MZA9fz9y&^6yJEiJYDg`S7bDVde7kbX z>H_+L(+t3;lSn_)8eK}->v^jM8IuQO#)0i%{r7iefllytWgTyW=9%DdY6$=W;DN@F zfLaVVRx!@hXoX<^h4jcMCCY^lP>_iYL#-jTE6UDBS?nZ7*zc0RrLgA~jJj-}i=<8u;H&5^9Ye2*CTn@Q%S~=1)y1y1nA`~TlUaR?2J+b~8@YPH!lZ~8Esy1B z3X!0+YqogPjrb09u3UpAc^hO1VU+uvG$a}%Vkb@occb&H^nNCU8~L;h<^ zlu{S@Y5+J&0U1K=y5@2V6X2rarVwu`~qgV{%hyqILlQ}V^{EIfD0jv`n}XA378JpTQYjzO zK8$RTWb%7nmXz_Yb@Tp=xl4*Lnb-{-J721o85elo;C6WOq)hq8FI$6!L3=f7AAc_V$Ut*?ZgnxgaSi`Mdx5pWpe;x4-@9w;p-q z;fEf2@WJ~>q`mzXdyBp4LTM_lzM=i;;3e!H7#}6Eq=sZ!9OWN=h&|N&-~;#HH}P#z zkiDh8>3rkOx8J>Jf5dK7qHuMxZ`JqR*Bd2mZyImC$==l7_}>%u@7RrrNj!;tn>|{K z8YzPN??v8+{ z?8ZtI`SMXT!&6JI9^K!3~cb~rI9ktL$5ysF|oAF*r4-aU?qO1Tqecdesv(Ujg=Pc%;H&U+|5AFyl3-#c-G zcB5=a$k^?vhzrG766f@DVX_ zsjhpN=-2F+M5vFdljV3X)$Y1=_$b{XWx9nXxZ@Kll!&o5l0{rEzd|u3$%z=dckiJfHno@5`yzePN^Yrj!#B*Xiu*#gaI7X7-FxsJww}Bf@6FwX zq)gW@A5OF-DoNA=r5Ee%`mYi2XT!~#f7ngjUyLi4@nNp#6L}&_GAKZfqP&-*_d_AE zDJc->)N$Q}>K8@XC1X*df{~yId-Uk3_GG>E|1&&ANujNBD@8&Jy5-Wv{kaq(LjZbm zkDf};mR=9`iAhdLPT?s85DF41bg7_Bhe4mNckRl70ZY=%9_^_=IxyLm%u@(Kl@B$# ziFz^+>=M7IUC7TyI5rHX_P}E?$voMK>XVaGSc=%>^iGV(V^g+C9BDesGNRMu~Sc(9V;0kFO2NG>x0~kj6@aj zXvvt=N-|4f$u6?^kg_dQTwd!a&B4yI4;-)K+hC&2j3R=QZit7ji&n=_)LfKxo-3X{ zZ5l#1M~Wr0B#zE;h?r*M0`KV?DA@lH5Ywl(O57&zdG6_7AU1j`MUD$BkcniM^#{>XgaS(m}HxtzyX>J_ zi*DPmo`tDz&q+FG;-`5$0zOC>6TOJ6DLd`28v!eV^Hd? zrDVeRw6t+!We9TZG)6^?Nlu=2T>9r1oaX^evORL9Xv{SSPzu`HFkP{Cq{W%8KUM8g%4Bcxg`Uf>s6D6vN@ zAWa>(!*3irHkGFuDd>AmULpAyZJV&AcA}dEb67oY`Q#^>)5oS_AtsOUbUZHUWAuVc z7daM;asC7TLCZO~CCsq~o1In=FgwwB{LiT=sj11yW5_%ht9ASb7#PzdlDY`iDTAds z!ZAqfB!}6t?O6Y?qJ~mOVZOX5423`A9G&n$*cvs{W2u~|JAUj~o-j;GOu+08N^&L7 z7c)^#1%B2zBc_$C0v@Sn*$IA}9cw%YLrkoM_yp4{OVY<4M~EJ$n8zY%NqptZFi3FCw;*B`mK0q>4 z?9_|a=nA8%aU3$>~`VST5ar9(@D%9Q4eTR`sGJmM-CrZMiIyH z(QFixQwjHxKf|2H-fSd4s6RBh`mf0PAC`_j;PsT=aHAmmcgxtWEQ3|nw<0^tT{|g6LKb2s`RR$#kM2b;dNx! zf>bgNipEIGlrLeaxCc=?aqO7sk{>5Cex%{>k;8`%O&KK)rsGWL$Y_c$u!y|_ey@OW5-$*u+N81vOi!f8nDT4_EtE0k7&IH>LewZC<+AY%E zGEv+TC3+|e8CAM^(dajyIF9Lk^yrZjV$w0uJmoMyH(7R4fI#k@dfFybfq zapTxg8u>@}kKEZ~+Nx&^tPnu=#YuBpc<58#w{`YtI zUsnz$4gQ~u6J!r2-mrhm&PM2QYv1C5s6P|;<<`_6U)l!szkpd7i24(L8G!nip>P1| z|3fS4AJ-}B-v$uufcj^kNITU3yLPC5tw7~K)IW{xVgafDr}#yi)PELJS6hnN5s3OB z3*JA6LzFm+H4eSh2J<_mGysv23kgefM4$Y1zlIM18T?g5$nyH_qAJ)1++hA152r3yp}63 zh(+Sd`%duwkqaWtM(n6uYrab799M}R^9O#Sbh$-mlL?Q@lZ9U&+$Tjqc?uP9BSHRW zxL$j3U;nQW!X2@vf@)~vm-eHJu~Y)$K5;hXbF4f8zhunCJtqL|%MC>7np4UHclgS- zabLiAFtnU{&2EN)ED3JTt4YNKB7VO(2t07?8^Hu(eNVbZ;?a4`T-Ik1S48jMtWe-r~IRppt0bEf8Z#~nBE%nt+F17mZ0M*mk_hZ<^O*vCetwcL^+)}doZk`Z%WM!e(4$Edn1b4;5w$Zp6HV4% zAXwikfh1d}QJ_S;>`cq)Et4irnlu47318NqCs^OO2-NpsZ4c_R)6I)u30C(*{m3;Y z8f&ydtig~ffto2X-7$5-cz`w>w*vifTTM{cFI>Ii=6r0Zd!PyX_e2l+<_Y83_{IRR zpSIHt`wqEGO(K=>YO;Rw$%VxFfna~a9*fo;=Ly!O@G#*^q5;uM^NA^BpX$f@skC30WL$eZq+cLR zC3m~X^t`DerMP0J6rfYn@yTFyEJuIV&-P+{$GO(1ZxH{m<4vWh$*6#+UBZ59l^5(c zoD~wmTbK~yIgg(>erz#>D;tArJ$OUFevu#SbBX$%XiWlYnCb`nSw65|a|Sa*dL*a> z6uY6TaR&vOl;A`ADZBk>-)V&_r3q0USpVoUG%-O*Fyb*dxKkAQ;l3$KXh;BHBoGK= zokuby?`t4g!TX=31>${)-4rYJ4--7veB@OTYP=8f7kiN3A(0=6a7#pSp)mlmg+%-W z&!a~P;uF9>u@&$eCn<}LkZCGNENwV)6cC&vtqHw7#J|~}`1O-g-gwZP18Qr=NaClX zA9P;@A53UX{MOu+AuGUr*O4{xlJ;G+87+}Bsi-yX%Wz4)DPZrr1nsk+FvuUau}4b7 zF)#bjzKdvIbS{miar6j3q8`={jm0B=ESASK;>-obnv}Sp73?Q79d(YRq5&-(+v>nLRSae?C`6I?=H@I%f50sU-b0}P`i^iT4F{wB+rm#q$4 zc33@BKP7f#G>(XnVPquQswWi&1phGs!2g#7{(HQ^e;R@RGB^0IA@HBn8vK7D!9Qwp zVDKLw5d5R&v;qDL+5rEk9Ra{UJuvvc)C&BQI|cqTfwUcf|3nmN8~pVGLB(z4`?JI^ z1Cf7Po8&(a^R5l@Kk}X+|8&gFK;%#Pe!_rjw7w`Y)&~1)BoIVS(XP$LBoCDCcOu=7 z95C%1wp_K_CsVks=pXt1c1=NTm_=d@dh@@N_+M^?5@V?VCC36P<(Kd`1ppm+kh_ZtO1ds*pyK>^+V%^AV?6FeTyW{)Ox#ie=m1NA)LgwLj+M&d7nV~ZA43=*^Up;X!RBK=*iRr{ zaLsQ+2hih+%5{wpl;~Bc9Db=q-0O4Nk^^G5(EVd(uP@ zd8_n)cqS%3yX3lfK}Z6F{)hIPL^jzY3bd1x3FwX1vcMS?o-*6YxGNY-rx3j0ap|3) zMmbeG2bq85&*fDGjpj+sl=~l(nlEiJ`grOT&c!gx0YyL?bv}~7Io->;$x7f`>W?5&a$s{>D(&<6YXa8< z%b`%HX11FooFb@~5VG;uYzP9FVv>;{U}LnoVq#dmD>}-J*j9?0A9ozf5LoXK1bPStCqG_?)My%|@R8q)$IK3*?FMTTN)CoD%nUj&LM@c6svc{cO_~K( zabB7KG5Kz)CsAjdhC^7=WR_UZk2f4U3ZEHdnh?+9DfO>qnfq3hmS$(1NZ{jmin#$K z<0Mpd9vM&mSUisl!o5LHA(EG?Q$o1#1SM;2Pf${t9jV_Vf)q@R>%NlMoRpYr7aB+I zvIz@Q!g@9ukoG@(B$M2+I2X||hC?R)wN!9CtrK?+9fWJPkouI1^gBOnq`~+ewhV}K z>6Rlz#0(gdK%!xn{b`90san_(Nvh675i#L)lO+REfhn|MAiXu8JOw(Inn!Lnu%jyU zgDaC<@=*pIUsXiTKT8;TxjcadDo2tF5uhAyJ~V+^iS#>*VIzgvn8jo!_L%r7saKCl zBiAv4c}n@)4p$#afO4Q@I!Y-|K*qtj+fbf3Q3ooJ@FBgSEHy4ot=zkslRwm0^VBkZ5<#{O)={^Zu!zW~*VgFg4M-ulDgBa{)g zFdoh$SR@{tk0#|4^WASh#2-=~=8w3(_1!^<6P1a^q={^zI>~{fHa&Yhf;a61g{k2T zCPoxCE3}dS`RIe}LH3Xe6aB{{QPvm_D;M2mCh?bo6(> z^T-1aJ_t|zVfIM#e-26IC?)47KXPZ@dzI2=s$K|@}ts(!NmC=0~6EI=ms`% zyo{4gWyPw_95hQy^`%d2k>=oCNv`VA1m6qmRdpOB+Xf(72Nd13o?o z{pJjd95bdzPkFdS71itCeHu3`9i?q)HW{`uv0>80iIZYRB#oIicQuZra8#|J>c$7Y zB`Y3Br733AKM_4FT8pSMnpaf4y6*_2a!o&e&;D?f>J3`kGYgzNd zEr;HJ|GoF#J=mM~*6#a{5Nzu^VTm7gEFY&$EZKKA_^#`Vx(n_yWwF z`8HfRzBqltlU74Eg~pB@;_u%>j0X*O;`7BCKKDB z?0pw34<6tLn)eG+WHWhc3t6ZC=3nsG{P`JitB?((eQl0i-b07pXYaFjwSxx^9$*L9 zeuJ1NI8_^)_a=Nb-8@duPsu>V2CO?$_P!2(>>xj&>{n8BcoVVCJqTBge?NEHJSHhp zoYI*&=x%4qe(eC7XiIg?*l)LEup2(2+rD%t?5t7XhqU*FGxY%9?>w-ddIoLF{1eRZ z!|&cbcS@!lk*-9p62mS{-7fh-1*X(Mp2|}6v|m!5>F%A6&YU+Bon$EH3zMlWVd=mq z9>j341N#00`_VZE_M?&%S8B?d&*{c^m)RZXPq{&&1ziR2Cyr5j#UvMjzlUCu-j)5% zeJLqf$M6V`^P{sKSiehYNQztRQ&Vb;9dd~oBrSzszE4l7f~Dj98TY9Xf+dY2r~Dc% zNoh-Q%ekP)n3a9T6|~s((K(nBM_Ll0Sq6N}y(nAARN4mbx9#J0$Cb07PY;{(Gxf5S z!k-A0zo(G}wGojj`}w}+clPc3$GH!{<<>TZMUS}GHd&U3u(J5O23ZE}*Z1w;XWM5A z2}MXs&#pkD=o)Gq*$8j^fMY+c6B-iJ_M+luUCEntXK#TwGNg;fyX>GY<~a?gBFwt& zqdgqiB_c-2siqxHBnUefmLyGs;QcOy`OZFdAA3g^+W~STLAp~;Qk*mh2=iU?)(ooy z@I~Ib@8j}!G(#|3<^bMx-IF%kkqkuYEzFflG*CvJ)3 zU^{V9J(5lx|M$(c_bJj5AbGs^kAM6O6DQ%UZ_T;pYV%ujuC)VVV1*{Q4+IZFM8|Sx z;OG6QOGWdtXO90PzM^>DI7fIB1)HA`*Eaz&SbA(^I)r-^{O(2 zk>JJ<@JU}DJOG*0&s`pZM72LqZbm`8NX%VFON~hwq&S69pbl8&dOt?r$rIKIKMfd} z?)r#5ow&puKIlTj&{bG!pk^{Ow94%~oq&wC$j;5lqz`jBhKBNwhKBwF<(T;88dh}C zk|%!@jyAOvcLQ_d(}4^X}GdN+c;^I`#=DVB9y%>=2YcP0G5~AOeSJ|U13392o2K* zlf@P&z8|9l#f>N!(`gtyCpa<{7BDW(K{m`4k>xJ;vCDxn=5b7~jbouJT%09bTih@Q zwZqy;BO1hhX`0&aE)Q~DVasf3joh*A<$^Q zVFVc(NwhvnW5~i0sI){OZab_rVreb4OF!XXs=UKDfhz31RcTcnzHwEBzo|;8O2&qY z|B+VJ@tY8S>0PBrd2UTWc>*IxrFFsuh1NLF6&cMrPh-Z|)PDhc`RDHw(<KkwOlgmxvKvpVLkKb%^sEZ{Yz#& z-~UmU8@v4U`tSXJhV@KaP|ya}M$(@7w?FwAU~T6;QW ze1sIH&CF;1-7mI>`RK`^6~Am3@tL)i0^3M@=HA~f;*;}8JBZJ`pSO$n%zCiB#AnKu zZ%KTXz0iK*Gy92l6Q51(CqBQvOnfdAAGp|ztXw8Omx+%dS(k~=W#aRHl=x&OBtCQc zUv&ZEbLI4w#AiYOA6%UHd}m5C;*&R|^Cc0VVe!Og{tquse1141N_>{j9QMQSwVC)_ zo4r(s&!Vw6-+1l!E}8iJpi7qa=AIN0N!RyTL?^7Ujra=2`t-~^9caRp*87l`-xrcR$< zu=)s?PZI+^6c{=ELEPqoAs-;ugTw?7^5IE*9d+fQC?hZlBR)cXW-ea&XP~}j$VUP< zrin!Hkm|}SzoQUkN)+>%I5LD7=@u5p7*wl`OH|l9=MuMPrWMV?RM+z z^S)~P)Gk5L2h?Z&D$tPtVm>^Ojge`Nf=moX;sZ_1qCQiXtbdku=kZLZ z@JV~kNN{3!^tUyF1vs^x7@AT9?h^XobmXdodfjV`YfmcElZf8o%-0fBXkrd9K?HgL z!aYyicW3gAz)Un$!i8q6Isp_n4k}j(*Wr}`C+UZ$+5cdVh_HxNOuWWJ4RQVlO4o!i zj~!NGY>2Qbfyohz7?bC)IH}Z!k_Dy?_)Lh$T#7IeC8RN(_=XdMJ;1X^6HH=&hobNw z=Z?DdMv$>SCvB#dC&e}fhM@h77@T95ABd(gNrsP|U4|rYE=!OjK^o|06d@?v;JKuJu;l&3lf!1Bo74FT5v zP`SBEE&`gzTSSCLkbu!F2{7&V@%-HGcXQF!4!B~nSK5VM*wV;T+pW<&6vnU`gPWCPr5fyudgy@qC0FaTG3*N{vqUAH-QZ!w-~% z=Aa{(!zY)9(TC2FdjpKcg+!u8Cfq3Im3WM`Uz9V^wP*y$iO8D~Mqv_cVxx4qXFppn z{cUG9=$ExIfJ@Hk8DwM>29XBF4jA{b5VZ*HH-S0zYLgSy;xcL5&WW{Qo*_4e@RGBy=qb$aEXE&kC|&GM8`n@X*5KT<@J8a`HBrK+oCk)r-bQ@BwZemh=q~H z=!%gl@j9513!@z;VJwFMPHrLyG>J(Vm|<|sLf8mVF$8i)9^1XL$f?aSrg+5NSK9# z*u|AdVkK07og%iXqip<W#s*#-i@V^HW4WCk(S1A#jaIv_}t8-oO) zL6KpVH%S+wCCQf*-eFc-2uWOeR$%rl{F5}>Ge^x+bF6v3`Sa$_yQyoMm1d=eQc_cN zioaJ%uUjr67FAJz9pt|GwClpk()hy5K zq&b?U-Sa}wPtW%+n7?4yPkZTJfu6m3_Uz&6p}O;NmszvM56OgrYIb-QbW55Om^TOi zxaS4u&m&AN2+zmEbq4+xp#f_^{l-o0D5u29Q2DR1*HUi=b%UDC(F)35#+g{|r@j^8IARzlGUJ%8M_>!U9m z6z{yMLsj_CAA3GlABA2$iT|Uj!&TK*b?C3ZSeUdhG^~q^JT5l)E$L&|N5OZFzYW(f zR9#i=t`5Gla=}9P!a$A*I)*9^p_Kb$&qw;h;Hl#uS0O%F4L)Jl8GHyDsD(O*gEGM7 z6{RhdPWmwP%4;A3QqEl+eh#JZ3gN;W?DBr>S%(f%F%<0hq57cl=$qBmRaKDhsjhnw zPc-JB94kWGiYoWCe(ol;=0oO-YeCWX&qM;M7RClOu zdW5eK0_(z0T7Gil&Hm8KXR4E`{d{4QbEacekY55w2GAqlol$=ZzESy6wX53q(c*Hu?Qz+?w&d zclzMzukukD_8S@!zjVMayqzC9_6Yu79q3qPMgG=<*91(?2>)K;@2_~@gVKB&fQwhh zD)$E+p^Y0a3gCV=mKLB_vm?{LY?#AN2tOd zJn|BHm=|C0i7WH>9p&#k;A#$U{9~b((#iJUnoBi|_jj!F;O~+kl9zb&S@UQQG~k`<#WRGr1xLv4Y|!T;1mtBRszK9$r+yv!y8F!gU7jVd!4K z_>~`zK;3-9TYy-*(ZPSZ0&QTO9{dn^n;VF1T&PyzH(sN0pG!Jxy%WT5_(`Ki=dY9T z*WS0^G7I=VYSKXf9sokP)MGAGU|(b)fV96EdMY%*<&t0v}| zrod?`N=tXd#jW63Tt@Mrjl7Fu*&jzj0kgxR8mAHuDhWUjD#DyC^+qEYAWdRgL|tij zQxB7~{A7r%hl9t}>}TFqV%ngf?Qx;w%2;xviDgc)&Fn~R_pOn^0`$ds$>$_W(1pPq ze)pU!MiEnpId_d9aFUrJ9pFOeX?Z}vdXr_$B?cr>ojig47qbj?@OQra#NYYAfaWC! z5G*O65)=r&4sCI{13sdZVHJ4QK2inMXaH|8^izs(d^az`dnHVR3%_bq!7E>QV}qUS z=W~{Phsu8Yh*j|kA`r}1unN%cWY0^T>`pRD3pXCjdpvg1(kn>(_^0Zg*io=gTv^?% z%5N6qf2!_|^;_ebXkaS?j=PIJRaaHoWO^;A85Jud7W1XH@ErMgnB6jv{e4PMRk zT+|~7z#~XavEUN8dg>l(R=8Dnz$flNN-wKd2>yUZ=?3v0F3lYX!5#4Qw0iiuH}?j- z)8P%wU$T7tmV54V-S^d98&~Jeqa)z>0zG~z!gTjQtTQlo>AJgi?EIZ^2L9{0$F>yM z&cKau23*}EuE6}|TONM;caAG?)^-K_RWChx`$D(^jS*Ksb<<;g6Xq;kyY+v=6L4dL z55DgB0z1}6eSx2J>$ax&;TT^)f9!7N3;gG1`U1n_d;trku*<(4>kaJ8Z|Mzi+xE2d z26T1c%%%kH07PS_?eJmfc&tOPEs;ZD_W3w>;Qr?Bfb~%aY>U?Wcuv#y2JVgX2H^ET zoCjr+-w(Ye9>LFIJOTyR#DhIF;t?#5cm({xY^4^QfeLX3UR)G$2Hg1h3T$H7?T?Eu zfVW@77jOxV+q8Z!RB@D!z((_nmJOWytouDbJb{-MM?8TrKgYwpHVJQE2H!ol-1Y^W zzw8+230QW~j<`x3J}1d(+}w%ho+|ew#Tf{H@IJR{K0gySmqKM1k2nP8$1wLNgncIYtm~b6}1sEKI_5X*W=s`KScZi z{FEeSaGg!U&-nBqHv1TNz=kH77i-S=-T>J41n_>mRGTE*0G?2O}0KS?h^0R)c z$=T!`AD{!acsFEnd)II3HyZu`r9?9Jfn;o#&X4kJA`Xi98~1+tT+!dunFi)6W48vF z)Ea1)l;~h@=;p$(I_-9t?CSQOE&DNt1|5Uoo03g#3I(K)I_2j9tf@)2sL3g$PX@SUOKo@s^z1v9 z42%FOq!SolqjfTblVJ5~5~dafTax?EGQ3i#?e`}Y9>0rv0Q4#7?-|cU-YR6lh7+%u zL-XVRe{cat&bsJ{K)eeuIQBq*F2LLcxp@W4m#?r^d{va6w=l5}&^Ufb25z{H9RqPV z5}30vZ`qyO?mr<%0(Wd$vn)5x3viEBW142o$thU5esgmdAW*e+-LeH%a}QwLq#1J; zZf@=Ye7U|L&I6d6vs8j^@PPmPvHsZlNPQT89B@YwTmU~@0Ld;!vO4CtHbnpJV=)H; zn-|dq20o)%3J~-LzL;yZOS)uI%Alsg&)9Mh0Df|WZ2k{QTN^t zW%L0chH3vIi;_BEdou?EfhBMQaGHR71P2MX>|gOD^dH0%2;6}~2^<`l%0Enocfq~a zxB|Yl03Wck;eqb(K}gh-5}>Zi@e2xbaKxvD#;f;Ch`mO`Js`VRhXAXl5hr~@oF~~^#C_kwohl!9Hg*cDC{)S=Py|rE-#D;*#K%cw}c_@QBCpsGRM#W#Wp~J8xUE zP5b15zI{+T%o1h~=jn(0oe=1~DWu?{z#o9OKs(u#`ijU#Zz5FT*BNY}ilFyU!TFtg zIJiH_y~HHg0UEzkNU~iAHzu4PU}HTAGbx5HSS-x52&W!iC^HdC&~Ex#^jo9^YoZ(G zY~m&&$EdDT%p=k~vQJyMDrUA+^?Dr%ytqj4bRdw1<8B`~m+5?B&I2i95 z>ehRrXQG&@MO8Ev2N$gnUIdxMJA%CLQ!AWZr$-@H$F5# zWjjo09M2a4pN9q-8r1CEHDd;zP)GR*-MV(|rn^~PLur%np#f2q&*aPhaN~cd31JG+ zyK3>8He*Gk+{5)F9X1Esx_@dCNL@9|Su!_~!q zW0#&NrY1y+O@yX;XLuL>RlCa+#*2A5H~+MY)g^pm7u6-$1GRcYXPQM#2vS-1&Tn?H zW;`5{m4%&kQtD4`1R~fSgi_s)NyS$GG9MKedDY)($@q;5aCQQa8s8dKIi zLG6St*3KFhw@YVW(^WbCTzoh*gMbutrUxdY1w9jj6QPNP!PGDoI-~N85jmb5D>vA? zi?OUJhW=p9?w#IUcv%m{@Mc_&i?yQKTzsHtb{-mzeqsAe_fc)V%g2wkXJm}PS6`tA zzEG9xU-|4E^CnK93Z~~oV;LN~C?7Sar=x}LoDizU$FlO)KC7M$t)7CREaM+A^}OEM zz@FZ@la=ccq4W%>orJ;?une#)Gr8-Kx%L3)amrbjY~5!+0(fmd`>o8 z1c>Lk;PZFQ!610o&gahEw_&5TF*IXXt_5s3cd@ltEeYl=yX`ssob`P8 zIV>rE`$g`Qon~gTc`)O(ojP50Rp)bOk8RqhHikBB+@v=7GP3YNr`*M^#d-;Z=M}D4 z``mNSyPj7&WumxX%g{~NcCtFD&TyKZHMkAdhK9u%lktgJe*f26>{{Z_D=1i2v|KF@ ztX#dec&BTpS{GPV^n)LC(w)3lb?(ehD{R}eX@lAjTDN|kUKdz9Z5UN{L**q)@{;nB z@~wjK4notkD}|=u3e+osMU?5v+=cE{8?fx3Fj?QOI&%O{JeZOV6IL9 zNVxhP#!q$upw?Pz!ndtft9`evT(vMgdx;0yLCBIkcb>`*3#e20s?NGIeX!tL_pM!{ z*3_?FbK7mJ0a&$i*W9LV3$I$KR$42<%ZpS|!}4WC%Zdu; zju?eDg&@w#)6~(*|Dqtj0NvHO^U#9ALW6$ejS}dmSE?0ixm6SZa#^7&R0V6*#!lK_#-g$SX1zK>#1zhvcf`$EG$qc=vqp3RbDWCG}VR98Wn_ZF7On5gQnVv zZSaU*SSMPUhSH+cWQZ=yKSRRb47 zm#8I}{JHpem$X*phk#2i@D+;0*R{9>wI}x6k0$UdfcOp|Iz%99kI+vt^Jb0x+5=OwEVvfP zYC8JD1Isx^@xeLhXW`S_{ssBQwA2zEwd|hXy;q}aaBZFbBr}`{wdBE9|G`}kty_XG znKf~x!$!kzk3(H6-&c6YulBxMUE{6^*f=BX8 z_L~<=j=uA^>gt*fHB1o?I2+E%(I^F(vdD_vyf)6O=1EBSN`ft&N4*$&obK+-d6MXr>|@8bbJk`tgpwZtSP-M7sq$?)D?|}EN;auX=ND)uJA?oQP z-bYH%ea@t0Wbvv=Ea-;+D~=r9{Mv|{kG!Am-K=imn@}(73?Va`u5u7gZcA_9a0q|b z?%leNpX9<*gWw#ViExJqQWN;pK0LgMbZy`i$9Vp_TNC_jkcB=#0H&c+040etZ{Y)n z%;5+PsEeTi-MhKEdFiH4o)dj~O?n&5#~5kmr?f~TwM5}rv{X_6^K-@7>laDz^Sx@Ljl;EAAQ z+xU1MF+u^pilYEsyL90n)zv=)7KtLPi8crLsyPSf(zPonL-^K-9qr29a79~V04$jn zQ3E9}g#pZj|ER%-%qVM(0jS;_Gft_C5`a5}064{A!-Vd?3twpcFZ%z^828X}7Dg1f zVPf~cXb+t1;OZ%ca#15RvQ__o&40q@4L+JbmE9<1@$BWr7{J=!8wM~L-aD)JVeFDN z&|AI$0l-H^SC&AzCYu3>$RK-J#)CUb0lFIs5L%r7to3ZQ%>bqe*+glu-WCL)Pp7+^ z5rD0Gg#h?K01U%!NdZQ7>h$7<4S5j?0NRlEgm8cWH~?9BOA_E4e|4u$XPR&^Q`UaQ}ZtX~6jwG~ni|NCVEE-MLY3tOpC&xG|mt z6m9!WS#uH)9DU2x@PAcje&*~E0QCmFzBvh4y7rFyAAAU3;eK-0OM5^9e0%=a_RXD0 z0)lX4;h{I)u@RJqZoOU`SksIHz<*pGD$1w3XPAKXPU!g!U<>r*<--vLKHxEg?nckW$&F$%y}SkL_X1`rK(n_d-KLEjoa zy)FtaOF#meKmx>zS7$=MUb9NC3bTA@`3m^eUh(9Y70zkN0=|LY7-a!S+Y(RyNfHig z1?Ynyiwc*~Ne(QXFk)(JG@zETIC08{4*JQ5*4WfTEp_E7&|RAdgmb`M;Ga8OzzZ(G=r3XBY1*bIZZF6u z8&G-PC3zx}KDt_@asmr;B9x%6pm3E)6hdHLrwzRNn+MkB>AV_f3a*=rPc+Ln#qp78 zy5=?`@D{GP?*%XddiCb6hI-9~YYxA9U{irG0ty5BfM?&56clcJm~ z0x7`rKKgj|vF-QWzI^c_CY3HADZod{4JjyCyY0!}(wm`i?aLJrSU~O{siR-K{NzL1 z?%1??<#P1&vcfy=edzID|NHNS7T~0nK75QU2NZt!D0Ag4xaQ#sczL$l-}EK`^y0}_ zkor&mnqE26x&g4@n^|~FEkY9-NfT@@-cXzn${U(simJmAl7KJmoPoZb;6>I&`GL>_IWV^DqCr0IWZX|?_E#st zU95=^1TupAd3TGB``Hdh_wiKgZh!FTEeB(Vv+ z=N2(2SOQS=rTIu&=+HqpxN%G&AdWiUw<6JT8gB6wC`Jq8Spp*OxC<#4%;?xF+e{YT zYeZ>YPLTGKCzzrkn*y+;3+%>os7Z>UAT4Xy0?+%Q`Eig1{c;oS={V>h z4NK|!U6eJ@18XB|7}++~F!+*LL*KTthP+E+4WZsQqmgak4Ub+bZ&-4yZM(wxviK`GR`B;qiz)6d2ZkBb~U_~u24!_-cl9$X(!9P)Qw zggDeLxCX@Gt_|zgZ&=bida&lj3-N~80K)UXef@^@pdBrE!@s?9A>J_D@P>Ep-=H_t zgLrJ%5YHP{KJxoFTJVM`Bd!tNfLw^Jh#RQ&dR;TxP?x{q-hX>?`}SYHu=ll-WDTc} zyl|JWhB~qa9G%||&ai%+TIX65oEjfD(D{Cx*{_Hp4e}`m-~Hqm>kvAy;GJKbIUpN7 z@K&+J8uaSWs@qnnRcb}>g3Lj`?S)Idam{M5jMb|Q0Z=RS@`lM53LVtlN)qtqnfun> zwwfrg0JXw0&Uh%RW$d7ew86OUcS&>t#SvsFS`H^%;TYe)tRMkvsETC`g68pmF(`_) zB1kAa{{r}f;)e&8j&GedQ~@m>{OPT$S1ey%v>Z}ZVVKUp@!_q!7PKK6LSS;g?fnOT zwvrk*F|xp;dHVlWUZeQ`iFpHEcs|lvzi~Mbh4}~&D%(_Ax#@rP?`afF?i|6(}&M##u}Om(N1$J&re|cUpsO8N&^ewNZ(qlbHj@;w*w2J ze8F2#SY$Bfa}Qr59TCp!9czmabf6rN43$fk5nPbNi)QhZVcEL7aC{5KfIAQTWCwlZ z#-FWSo<|(`f-5IX5N-v;1QB#WaOK8rpbNNf!mtI8^%(}>_a5{y|AyO^FU`$~2viHy ze1|S9U-PrONf$!E!88(g;MeWk@-k|}hSe*J3ZOSt_AXkrcKxO;cit;RK`x|#C(!LT zUu$c^QyMtDr{Bi2Ti(g9j?e_(o1zwuc-bI*+y#Hu_;}`=7iH~JbwnLN5!ePe{U(xO z{CDR-IKmDjgkZ`kiFjCu1<-+|=WgL37#^IV1$BlN@IV^=H086X(UV0rj@mU(h@FrD zgxdxA9SOS7tP|(#@Db^Q^5DESN(gu`Zr&2Nq*V@pXXCulU5#rfjFQ+9170e6{S-kY zG~_<+h?5?D(i_H$4HpDY+2s|!IDvb%P@h+c=~XktU|eK3eET>iz}yybjBWbBHY<4T zY_mLB&LewwT-3mKf|TPpoNyzBjE}s@GzIiQA8_IZ^`H(YYWiKFJj*h2V3*}X#?b%* zGIL*((js?F~X+7g2mpI1wEn zOJNh-(sj-?ZC*}fUO8pNh7v-rurzKWyQFx~yuiR0s13r}?`dlcf%!sJlG8FCnIEIG zvqom5U;6|71IxsV_0{^Cs%x*i?)n=BJn-N{4?X5eP6}rK08i*Qeh9 zz=IE~hl4*aJ74=xwKe!wCO&Z^*(K>Cu8I+$uTj_P>%7wmQVfd?Oa_~(_iHK@GmZ-=Q1D@Xb3CE8Ez!&hIUjr!{Ph8yx8 zfPiPu*VKNmw*JJCN-C2z5&)#7$R=+itZVdjEI$2#haTK+>aTkrW4^*sUX2KLh6rV1 z_mH8a1?u{y8!{hw=%N2Sk3~_{hHGj&*47=Dm&`>m5p*rjASHIM&=+jDy54ugtq(o) z~>k02qDI_m5FH}rbop*=M&BQ3eM_B<9thUY2{ zvt0oFkZQ7D1Y<#%|AwF3@yvN(nrdrmYWW{mZS5)ZJ_&G#VzH0&<&Ans* zgXtO92vB!+v9D;6;0-taOyrz@Ulw@NCfr3nfFzuZ>!2C(5u{Oe_i8`}-(Pb@O&!J5 zoX435W4h`{m0W+uY(?S@l4H=K*iq4R{S7ztnziX`0Ik};zkbx9Y~47;GbGDJax|o$ zZTI1EG~E45o^ zp0L{OqRj)>U-#2-JR*I$<~ucid;geO_Gk@6U$JljwQt|v&H&l1G9Bd`l(T%r^4$>S zJB_XfL z$dlLS_o=;2WqV3XnN*{$<|Ol9_mi;@2xRd$7$5jjJ&@}7XUAZDV}84N`}UUY*;86l zA~K1rzphUXkVVUvZ~6kG(R&`7ZKRQ^(i_uAwKoVbzcnhWS?I^pa5C-#v}pZb0j+!I z6+qd4>~dB44?<1o8}ZnqUO%T!sINL^9~OaEw^!4<+-p}W6^d-us%d}4)iZNZoxXsrxCqW7phy3}0~ z+${(AO_W(!_#kji=Uk*G;nEUaqIQElScSSMT!!WF^Uo>O)|ZyzfMU<$)GrumEy0aw z?QZ@7I8cP#9iSUe!MP$@l&+T!rq%*)BAlJ8OG724C00oQnwLOvpdb7ac_tryh%X<< z2sgunZRS*E7ZEFJd!V*e7+Utf0IU1#ggH5v&Q-5`X^%-6kYMkwb4R=N_j*o6fkgz;fP zbg(26vXZQL4(rd*%hBED(18Oox=OLy0qiabl$zH1IL1nyfL8?lg`h<=h6&KzKq%W1 zwRK4q>R}B;<3D2TCiIg%#wguhZ0#k}HaD#$UG3pW!x$$Tw3+cBXM{CGz(|*=m$g8Y z-&5)?ZGt!$V0Q`drRc5jZn3t!xg3OPv! z>mgl6H~Y(FtZiezkTprLrS_6*W(7PT@w9B+MYP(3v2B_4L_=Q)q#CZ0&)EfBuer%M z-OTBX8%lURYp*J^2-Tb$_IkuQhRF?}Dh=%6QV((&eI2nuoONFU4ddjhtD)Bn{LTy!&RC?a{4zjb+*)uIQMz;1?rS-BQ8=*#Z zncL7G)iPXFFHmD8G!%EV_9`^h1#M+OD`}pEA?7N@h6lspoZ>5Pr1Y0_)TbDVlQ@3t$Y|K!%AJ1rox($pgY*V)%PHL69jg2K@G1M)) zb?SBlc~LX!Hsk`-ty?S9?WT)Sx0@maES9?Ux)^n{Mj(mA=6o^Ct;?JXGq-V9wPbGp zI_(me+h`EQM9gjK1(;ixR+!tYi!ryp37A`c>&$IPE6i>4MVK3Mni4X%wfls*olnTz z#tNGfVx$~mN#eHZzb{DKCSMzCJ%_lh{ErI}w<$ktjkx{hLd5MS4h3@`0>;6b#oT^$^Cd91$%xj)au3Gb z5I!4l0pixP72=k0G2%8T0dbqvI&mA*3UOO|5#lzb72>w?;R_JAd94t)6%SmHxGlLZ z)_4)(cF%=~+oB)0M%?ba5OM34n7G~19^$sCeZ*~D`-t0`ciT(cZhN@B#BJq+?Ivz3 zA80ReTXFxlA#N*)Zdb$&8n-jzcH4vBg1D__|Jy5jQ8|#(YUv zZT+hz_K(Q$-r5eep^rcMP>_)`U4l9&Svq@yYIcL)5A+8CJcs%IpW=a^IkHYWkzVEmF~$s>wk26;2R?~$?z|L6CjIHt zOzes(CZ*Yos0i143a?+*oqb1c`y%~8BIrT11rH1QC5X+&+Y(%V#GA_UfcDu2yCJ7f zA?(eRGe@C4rELF)A6R&sl(uz2C+pnbq7qKgRuo_d$xBRmCGUVLu^2IYZo4WX3Q&6OS@>a9czbxG3h&`UCYq?`0Pd-|ekrjR*ROK~^a z7k)|1uK%d)aj)K1Z`Q|D4wL(+b!8>&?PhrnH$1e;PIV^ynRv}n{7B`0KpAFbC8M~C ztN!zt>K)xHAA=P_@1-Y zskhI|`skR`Bype-|6K$zNX;wRorHfumgy`Eoz?_BQAEu+%OD4WIOd|p`ZS@Kio+Xc zaJX3!jL1?lFfch|Wtq;#M+MQSeMOT51@+W!KW84h5(}SM!PVQJ#ED}TExV@T@H2&z zrL+qfLIEgASn$1f-#w?#ebTzP!}lzkAX#%_lPHoMYik+bu|`_O;T46`pdb?FXh@3& zG1D($yO_89U&{)nOO~8uRnnNqL4%HL*B_}ME}p~>erZ?5;U@|UrqK+vrV9yc(lR`3 z8yVQVmt@9uq>q{XwW%O~3o-nUrYZ5?G$oNAT|nN!f`X-6P?oI|B{7OIPce<;Q443% z*>^-ZEg-FNCvILr9OoaBFY(_<>e(%$>)gAow+@@p{rUORC{9|)1TUoZm>uK75`BkO zvt=$dKlk2Y_0>#0Lc|O$w(0kmC}p)JUVYgj4X;+4=Bca=-}@mCU?S? zEhYt$xn2P{7UCJAr~lMK6c+^eEC+r?Q4@g^^<1TXp!N{&NMm=^z-7A! zFu?)HJT^t-9`O_3kDaIJX?y)K@(!$6lAF6|5(K(RLqMoKe!|$o_nrMJW?(^0gDa!F zoEck+k^EK<+@8`h!ieKQ{@AvpBhGH#!Sd&p{98&<1Yz}P4+ApK)5O?87cQc=~ynHP#Eav2FQCq^Ld)xqpAWQA(So@Lb1ZR*) zHoF;DaJ^uaoJ9)&YH}K<%G4g_4@+t{9wTf2CR%$!)|IE?R}xVV@$5M2}lP%brAK~HHO2Nwg9|u!|Mkvc?Ubpsb8P{ORPTFLK5+gIKZDH z_2Z37?l}o~hfsp3jL!vf2J5R0NyIy1l`;U_&yE0&CEy+W41sa$v~5-_1X0AX=Cs2d zDgCjnkd&5<1*>99+F`0^uYD2QXb13eJnOKedX{$D8(00y%}9sw-=iZ=bhq7olc|jz zij0Y@LkUCScvElx<1Jo$kL*<_%dJ2*ccwq1wC#+u?(;2LDv8|9n1=x9*s*@~=9jU1 z;W2wbEs5nG_F%5I&0>80*GTr7xG^26_^(*%VLHjw{g0TsUy)0B*v1}#_VB(8@n~7M zL-gv!E2^k~XA&hI&ZY^_R;g39K3Qc=sHEW{6{)2=9$$EQjweoFpz`Ec1YutEv*K9p#Axu7~Wx_*IEz=PE2vT4)4Ij4Ro&KSx1Cj z#~MD;&v51+$X|Lv+7aV)nLF*axI>#-qaDgV!Q;G&^mU9#-=U(Vrs<}F>4n0MH-M;tHCQzH?^ z5r6bxA(+7Q=Dfqusy8ERrI~VEod`Pki~PLBiFt=jBAVG#go&4TcV6D&=EUPI@nTvK zVq4aMb$E3nw>j@HBqHieiWS-67|V6=>hr+{7BwRt^!2=vCh>C3mog@8$NVwAl97;j z*bE|Kcn)QuZR&6pWNljv*E|vP-~$se%~E*w&rDMxEC)6$$yK>NN=!gK%xIQPA6-p} zGI?-V4yUjX0&@~lkJuJ+MgBX1#*zR&LCTVtd%Pbd5Hhsj)RQ9_dG|uzqE@*FUUol? zN6$~x#f>f89~7s46KG40%28Wzhj0&wL@fI-odH+N9?iBw2Z`06_WateUR?e}p^q4nU<5>11@BcSihjg! z7Wdh|#&8@kir8ojwoP(=6z6x-=%$)3{xS~oYD*RZia_4Tvs_yAFK`E(y$_QjAq|O$ zAcSAr)@T15?Fi1LSC1zmBY*lM$s^A@@#%ATiRz879rqbqLV^&8#1Dwzr&(<_8-qBS zkc$`>od_d?%gNV9spCgma1qn;s75UPg_+YRoq&rt3;-W;l_n5SYgf;OHJ*#u4t=aP zRnBt5`d>a09|3V1YwGqojm4U+jx}=ejpZWfVvB}}4r;u-N{3b|M${oD0^-a7R{ZxE z*B{Tb3T>%?yBv*x$gw%=j_knBLdUw{ELT*-(hxZ==Qnj7mSeA}c;Cl%KP!F{%R`Lb zrm)O*TW{mMR8-s^OGBiMpP-Gh|3#gB7*9NbwJ{`wW6Q!cah55>vcw>!Vk|<-#Z!c% z9;G1gxT$)K1baKcJ}D9^ezt74O ztT?nH5&LjKHT8B)?3|Rrz*AyX;XAwq9DlhJ$?3%%>|m5P2lBWsV)MGNI*USRFP#JyS+1>`1;h5 zI!HWxXbT>VPC!7gTRLacGU4f!L>wZn+>@_cv2y9{IpK@6Fhw(-q>`uWgNhm|TYl zQ;KV%LMYlRVevS( z+wMc#%U=_TNSLq=gBWqWE*JK>Qkf9JSMWubK~@U}V&YEDaeZ_|(~NiuV(DTWo;M>P z@5ihOPDk5bHavq33=AaXALnFyM?cG~i^M@~NvkP|xaNV6_hP&PdniYxl`jWMU@ghV z7m;p`_}G}L;;yL!4dr>QvJZzu;MIhd0yi=W0TPiQ@bNyj6pW4p>=f?jZB(>%^6`iF z%(!YMQ7FU;z6rT7QQ+gNL;{6GFu!IgnE**d^T0=Rcb8Emo;&Qh6bWD{aL@<*2iicY`2yH3}A@b1>)t*BuV z;DR4IWYD02gXN2t_~7Jt^F2fZ4`uEtlcvdz@9pF zpib2VPXTHbe>&7Od8kMoY)hRGCsk!ydpu=S363_nw>i}lt|hl~vYf-hxvn4%F3E-%+fJ|3Xs%3M&t#mHQ8DA<~l>9tl<5W$zZ8 zJn=zY-7)DL^v|#iG}0D0*zOw`moE-#F^|d&jzs4ql?C%pzD8Al2~|I#g-o}yjs5%2 zAav3se*ba|o*q=VN)zv*(?1JRa z#@nqO(Erx{&7q!5&C%f6qskf)7R?3hujo#-^?dQx@y1Ai-8!IIuUN1Unu=kZNlQUn zS6Nf;@t5lMgUu_zRq+?&hp|tAzUAgY@qHRW2VgBToP0UQ57j-k1x@|?02_Ae&9}4y z3sbV*YeZV`OT~h2Y$mKS!X| zQ>+G7(M~t_?R$%v=e9@;2`&~j6p4Q@w76(M=f>Gb4nt-9v5LRm+TRBE=`V{!LVeZ9 zKqkR>Ii^hQ_0KAK5@1*HS6ho`Iq1F#&|)p>pfd473}ovv|BU}Mf`Kg_bL%a)+}y8k zpFTIq@?@s0Mrn>KbQ8uVL*Mw9t1LMEfi1R1y;V zjpJm^##$!J873U&Y(ylNMGqF5sngJ*#BwOt2)0k}w426`?shB`ngw+_>-m)nWhd-Qq>gIa3F|Chz)Kq2p zGr9IcSy>`jhm1hhz+n`gjKQB&T)Pzm2(Z+f(8f_%kV1eZ!;I^$n1G&zeZQ*2V1Z@eQ^9Xl?cJ1?(km^IWEo8= zvxx?VcR$bhb0jWLuP+LxFo#|(Ha=d$Ovt(sw!-+5p zpDzpjDZ{}x05W?<#-5A?E|Ts{v5CxBBDvU#D-g_t!k%JZ&t5%yq{JAh$n@^rdx|_PRm5@fJ5wXtMwRV{KN3U?ufqBAj}dv))Yf<+`=q~bN6 zW_UCPtr-Y`A!aEFbnVtH4OqLOKCE*QrB$X`ML55*Rdzi^kCs8fO}lCD5XW4>uHCw$ z4m04zR*q;)q3otC%-&I>qq4(8u=NIi+O20)Zp6R3P$i$5#wwMbK7hLRA0Q(^tI;+w4w83UGNK6KJDvCy?ne5u}f&(_x4tMFY;6Suj zaUI0K>PC|}eHA+(jmaopXPYYYXfxg6V+}wJ7?`ZVe;4weU&5IvGK)*D#Jhob5YJWW zc03~P`+G4oLMUt%hwj<^l6uLM{SKZAL|IR%3rm5x{Rz_}(q@5>0 z9wGEGSe~>KW*T7&9JqKU1V+flsBA0S1&~?vK|6`8tK={+v@=FzRz&1DVUQ}DB3)T{ zfU)dc!O7RaJO4vE2E224Mh5x?O$0~4p#Ylb5EM#OSz*ouZl=L}@J6WmFjTFlefS_c zi0)uDxN5-Q7>Rr(-$-<4Nq@**1KJ4Mc@SVjJ2OTav4aN<7&pT-l*55Okd^I$M6)qE zd~=uZ&8Ttu&u`uv9;g~!`3={+&*qvDoAw_{Q8IEOqA<^7EflKx%1d?o(1nI-N>7m8 z_8*tXE;_4`UW4owHq(4Yrnk*BW!wOK%l!Cm6r*ZmS$hQea*iFUyWcQP(-(jZxd4n! zjiZ|7nCOOTN>`G6jf)#Rw2xWT0F98$qlcb{$_~jCmI~xe^I8l7TVEerjJ=K=^W{1) zCk{a2n3&iDp!6*_4UWf#GU=R(Z21?*eQ@rPa;%}Cn1iYesNXo}EJ?cGj5_$PO_~f%u>pRarg8~jZ#>)alA=qJ;yB`ABuuGl*+;UUDzJsG^+dv{(+(Bou z`Dbi1QiWO$xD}ijv~4WUk-(rhNn+Xvj+sT@E{0#;X80xT3WWyp+<_zim4H&hiV!tIL~*3qrm&|4gt{>J zoSD^(I?p3olZlgFXYGk_ zN$=LQzBnJa#fVf{zD#ozVg`&@R<;xPow95-Ba=03X-Yabj%>OTiViuNDF3ntn-5kZ z-D<%m>$mpllbV_`5v?7CO)Ju^MmDE47$aOj*qBGJHlY+$N-9Mfl#EfonAfazmUIl= zM|V7@tl2uPHv|r#K%;HTITeDoR(6;?#%7lPh-H>Inn=mQ0aZk_J36a49OyMhnNtj} ztQ!f*y{5)UCQ{q07ikP^glZE|%Z33E%5w$^g>kS$qhrLnI?E*n0gM~xm8!@z}OR$)Uc-U@g>BbHt0;gH0TqQW8?>gsG%-<)QuUQIoQI{hl` z;|Ky><7iY_=VRoKGJ0daM|ox~yhjj!e07Ht0D|eYamkcjB33#^>L~wcSuSEJXG1#3 z@dSHZLB6ar5%IN=4u*u$vSvgWr#HQ4k3JE(N%lTUksORzD`c>ZQlsN3XCq*PW96A; zNr)H0W;m*Be5H>vp>Z7PY)ZjFfHMo+*z4J=VrC;1%s6|LhSczwmZY;=j~-K@nHK&H zb8*hw)7=pZqD!%Av`+>}Gsfxb)*~${90SuHlSVdq7lj8$k7>?2Z|pt@f;j|j6JuQB ze_JHhMxK963$EEcOgnM_u~(Cgg^j2X1X*aMf6VAH7#6l~=CI7}fyo#Sz!LWzTN1dx zk)*~Xg?A+?-*QEGYWq)^NI6Hv=#5fTKyM@UeFS^@;>bS5#i zOurztGz>BLiv-kiP78q?Bh9Ggy$Pu0>Wfgz*FY_wN=PloL_{W{mM2IpA5BCpb1zIS z!3|-bZHcJmkQj-rQp;EC>KG1fK`p0Tgj&9Ou&(as&8cPK#i%7nV%?oBsO9jBP)h_N zpG-h4r(FuQJoZu@xeE@BOb|0dEekKe5uG6B(L;52HKUfpE&yvrEsq`gWlL%~?UJbF z&!KV)YFQXh53%mrK6E^_ygL!K92Sp_p)hey#-Z^@iVMm#M4jHL;v<+MwtmJ8ykW$pz?9`?p~YB@cgS`KYDwVZST zsTZb}i=#BJr5k)fYH7!m9n#kZYB@G4Q}#sZ&DN;pLg8MH6d9|RMlJ2YbA$)kQZ7I( zvzpU9ds+Z_3Dj~_#FdxiQL=7)N<&zq?QxfPc3ukSc;u^s@@iA*|%NPG6VA9<~CcKFP&OWbGr5a zF15U+oz!xqW8HRB%c&8H*Dh)~J(lW0iA$!I{UUPPL@m=}<+Yt!PL7VnHdD(S8CUk1 zNPDOy5)=$$M-Zef)N(ikx0zZ_60+A0YPq02)G|e+wVPW0sx8#=_m@U3U%51D`Pv1k zC6i`@Maz~I=z_18%IDH0n|I-Y`Sa$@oikg__RT{2DI$+*ikkElygQ_cWsXcYDYeX> zyj9(*`UeMGQVn|2*AvELXFxH7g1@fCbA zu%H0OVHM!s#x`Hu%rH`(uLx7M`dFaIoi7h zg%{_l+;{N&jxBl4?AbGC&X_UH^uO4SUZZ?QJDu_E0kFLqU=6eeslh5&=XeR6J8uqw zYUW>?BcX9Nzwm9KY%!tM;96T`1o=rzB(kEA<{{95FjjcLKx<%N5F&_!^EV6{ z{pXhGtV{&$89rx%f!%a9Fg$pOH6%QAm^DldKR06d2nvVMZKL71MkoSRkDwtu7Osb= zVG7dKa3Am^(rI)IjY~1E(CiUkwaU{b4TPtr0q1P4mh!#V#8+ zR*n6;_|fQdWP%{FE=L$#FI0b@Z9GNw^|0`8d}!TDugi!T<}rBQ2XOEduKNdoA3Q`4 zaT%y9y*`7IF})@r5k4wekRxIxbCn4VBGxikce-~Z*Vc#mD5L#On^p{ z(P8K=B$AjWbAiNc89Zbt4K6Kqr>l{TnJq;(2V1si*m}q?8;ftnXQV4sfP^A8TMYiS zZE(BUB3%s%)8dxhZn3x;X2IMlg9*}pr{RqRbC_qSjHYy3_ZYMfR*NXWkJZx>RV zhYjOs)#-r@m>>CEh+2pN2p`pI8?aam3bGM047jrEDe3Oz&()x*??a5~C}Y(TT?v%sy5;>3#aG0_Ia z33k8@B3BG=u-TmDPNVBNPt2$@axr8FVuj`^r8&`!Xr_qbjAOJ ztt}M&YtVX>&um{XlGkY{!0?~?55WA2!c9{H6pqfZvKyc=FV;xkd`1V3Hj?}mxD5ja zzzY#0xncxEZJzuf+hde98o8fT8B)bcgxXSFgRuG7tu+EA0}_qZz#*@?8O$0Gq(JW1 zZh_T1%|x8uMpci&ij5^NB1;bl4}?IMfGp|9Mi~N8j2fdds$wyiaq$>?#4=YBCqQhK z8dEdYWP_O@GZ0pUb_1cEg)XEZ1A;98GEIV@u^8UAa_DwhS^&~w2@As|(sRfNw*~33 z7@DR%ToCDLg=qyN$AO5=3DKkV7(LcIFam*QF7Z^<5I3jLa5bXIwgAZqf@xU%#*7&| zcHFp>STPPLG<3*NjtUJRx=92vq^m}MT#VCF>{`Q5roQMX2ICMW(56#Vb|($jpNgR0SF_=Sb(FhC5~5H8fiNl*D$`H!4Zg+SPaLZ6dX2u*l-Q^ zg}adj6@fCaaqxe}`z9cvAtfbMrH0G)diJV)YOmg>_lNiGckK`GQ{v^{DNj0x`@cHvtO0#{og6?aIogk6OTXk_~TDJ@%ZCN)OCuv z_I23*-E#lIay-6yP#yH+{haNOJ+4i4Ar!Or2J!0nKG!})!K_a0?^v!5hRYAS4mKS+ zxc3*2qgwU2e&RBjB_XGecbUvyCbO5xERPN@li5iVE|Xa>=olV+nao}$vzN&%sNrQY zYk2TwGHZC;|4A}Cy**@hU^~g|n6{JI*(vQJv;EsiX2*b#wTH~kBm-<4nH|!0GCQ%& zWVR2~YAcx?X-H|C$?U8YA;E1Xvx6^<%)WeSWcKMxBeQ$kL}m~F+hsC)IWl`WGJ82P zdpRh5*~^hxCn)MfCB;>Z1P9f?%aPg3ky*w$FO%8JWcL47WOiYD$Sh)Q7YdiQ z8kwEmb~0O#+AcCXxSeEnT06y4-@4N5bd+*t{?e4qo zyc73ai|@c4yujw4-G2KfwaLG60~6*<`iEo?4G-dF=1Nbcx=-EPc+a-G@4oA z4rq$zsoT}2@Wu^lLva1N9DyM-&ra|_o`Gp)fDMGO2C+*7=iRtr!}^tr7R*QPjtfZu z4$hZ8!V!3PL&Tg>yAZbou=(?tIU0~0Ol`}w(!-U~CB7rl6U}W3>=LB9GPybd)}K*< z_roh)mHs1?+ZNe56uU+IIayY$SHg15$E==gplx z8&H#EVo4&5PPZ~tg{ShPBb70hy&Yd`T9mWM&ID&}D^u6>PzU1{j5_jV#He_ZogWIK ziu2SwH8(J4*6dkBnFZuSk_6L~R60=-5^X7uQ#ko4Skys|rBN5j> zdltdW&tacqQ3vg^Zc}} zTC8(T_A|lEn+90T49%E6oI{s#nHItq+W1(ApKY%|7X^0y`l%(0t;P73lbCEiO*SV? zba>_rH6t{A+K85LBpg+64ynq<-|TqmDJJV9;k!i*jSSo(>7N#-d_4BcD<$qxVH!UC z><+aq@tM&C zoSLO)1|)S@O%0Ako|8*()~L|vQApJZjIFGE7P#P3JD!4_1&QHLiPe(vOz4zpQ%BuJ zq+ET`0%fvOsPbv(8r;5P$5ZMl8;k)$a0pr6iU)UnH-288eX;#v}4QwWV23w4A2dTocu@b(?99Um{^x1?mUqGM+< z!5Yd=oszZf8Df#S3MikOs6h@G-aJAE)Ak+wM?-LfU^$w_Mh(Wc)22**+Il+t3|@+p zrXsCt)M#d_HH__pZA{Sa9Tb>(?|dM*N_?9S@}tWYT)ZRS+=S?6-V<@ zf~hc#bc+n#1x-=o1ZPf|1)2U|Km9`GM-8q9KAGW$&~P7kI>f3}wLK)g(ugr=1Y@dk z_%w_vhUEWs>T_>{2S70p)6s(Ts|+@rCJpvJwS$X;1LRq6= z)$kak{{~Y9rBfPH(|Vhc!1;oi9i(-!s7$%%?XSGbs~VIysUh?M8!5$kX0&zh zQ1coATe#x(ZSQ(r-i{5yQ|G1I(d%Q80x0_VQd82>diUOLZMQJy8t2VjvgyIc9{VlI zha0?>*WD02?DJu)_zj2#(KJY!uXi8Js_mGV>Zzs`_dWiL#~ysw>+$*_Zwr@|Xrf=%bUqD}AA{sVLKw!n{D(MfX;H ztiGY4_1^y}lD^{$_m2LaD!=>s_UYSqz-E*PzwG-bU$_?s0H3V;7f4BFay`c}! zv4r0qPf~zpwE716Exr40@Bi?Ij-K~@&*$}H1VvQPeRN-czbSX$z0LbQZ}=2`Z}j{8 zrhrPdfY*I}{f6WBZRmv1$LArV0VP;Q(i=G}EEEdfbo<@g)VA+>!$(m`(C_p4l|L9; zM)hs%*LMLby5}D66{zZz@B2Q>uTnGyCF@Xq8~XLly!#&fey_KqnB<>*Zhx3bl%|B$ zxACS;^83Bs4ql9%@B2J{2M$x-H0vIHkG{8~_h0b$QBbhopl$ak{P6#<_a4wyTwAv2 z*t?E|Z{L4k-|l|h@BKf}&VGsSA)L09k(4xdogq2zoLrH-0b!*oe8UQJ>t^wSXShI!B z1@l8lfSbB4X)K&RHgxV^xx%ESbhqje zktI1#<0GVj%)j;nQXBdJKs9I-OCT3c5xGQzdB5WW->3+zJ8#y6F>H(jw2kEbE}xJB z%of%xm?m;O0uLYFK<4ia>Y^pHr;U?e0;TkY1Vix5-wVl|K&hxmq1h-mVc0P0!}jLx zro`VyiN8KQ)#($)@o}}rcTOqe0aObk^S6<9STz@-LmB6$lXuvdYDx-l17vDLLnQun zNS-P2U%Gtegz;=V8&~%X49CEXK|Vr>+At@;gB#5JT_1d&E5Wq{CbW^}4P!&y$b=eB z{jFcU_0j~A9dwc_f7&Kp`+1e^`l1~r)amma|fFYwPG=2CAN$q?n!gV-Q7D|q5> z{kQ;$G-L+}9!X5`qP$NFd=<|6Q4W+5f=Tk!r~7UmN>0 zd-?`KOjBz(L?wO45{jc=i1a@Txs9Iw`#K9@N6uE00th7l(%P8>K#d$5v4lj9%!W7# z98v)E!!G{10JtgUq)b)GXz@Mr;Q4<~kq9FH4>B^2!CAe6Du7-hee@`R3MuBq(h&g~ z9$W!DWl{hbQ%rm|x<;P~gflCEqGO+#6o59Mjp7vm(1J9Hki?7Simk^>o@F#u} zARWyrffAs~FjHwQ}#a! z+5GTPL0c6)gK7HF9kBylvY;WdD*RNcKN*&i3uw8p!_RgmwPee?6WgZ+wQY zqHGJE{C5$kz~q0=$My9)c5Dou{CCx`l>Mt&y4>(j|BJphrT?+gD!=sK9ku5>O7HdjKh>Mx zd-DIdue|yHK<~es^8eV8p8TJ_T@{%B4{a>}PirLq@7_rM-zALvKWaoc`G3Dg^8duf z^8XPH<^R1yOeR$o~@?%>Rcsn*YDzpZ|XxBLAlgee(a0Tk?P7WqiZ=|Lmsc z|4ZgJBmZABvzht-@|@=8|LYe_Y<~W~ESJ)9dRG^A{=a%*PSf&#B-2gE|HX@cSv6QW z`<~MOt&1i%GyPvb=N{7kA9U@|%=G`)Blnj6zuVmO|9nxi(*LiIH9!3?DQJHB&;H82 zul~bN{xjchcJeK>B+k?rp#`5)Y@z24HtKKw_k~FQDMJo;^Z)XjL6iR>xNTta|MCH!EmV*XRWg`R?Bx_40e3e%q7!t0U;uzFr$J<^Iv# zJ-I&>G6Hh{PN|LM{#_f%{VBI^=-q#GW4S+Gymt>L^-pRf_3zwB>L1mkq0~PiMCu>i zVCtXJKp&3eoXfw6z<{ zaHscuW*^(f_iOw1NA7pM`udeq&ObUe7Ycc7?zK6y#~2WL`!!f@^3`YUo_&ghC5H+$IqU95&PJF_r6VU<5~r`y+v=6~It%W|hEJO4#o zQ966utHhpc{l*mSp`XY-b`j2vcIQ7kBV4M( zj_dHsnO=iZyqeAEn~SRyx~D={ZG6-Dug-cJL8skjt*ga_V%VJNy;c?# z6tybidz`Rw>t*M^VI=J0qM909g|3neEfW`LdtjupM}2dj^MBwHo5OCaudAu4!ZnV} zjHgx>6cw<7NEqfU+OzlIr{W^3yr{aW0#~USy$UP^_u&fnsp6~R-|OL9eQiy3Wkop| zG!l1UMQ+?lj1U}fAG~zN`9BegTH&6&^fs!%J_#axw643O}x zqT38dWVEfLYIR2;erk{V;u9V_}-%#jO z-@huZxZ&>_UGdv*zo6j)91)KH;k@o|?v>KZmwx~Cm!DyViU`p)*Zi-6t-t^N>(4*` zXjSMwk+|k+5PyFEjjs6tZfT#P72w~TSAsc&i+=j?hl{xCKF7a0ON0CL%g;ak@WaLL za8WB!;{9jm5)dO+v>#x83^6VG5UUT4)e-Zchu3CLg z|Mu%IGzIj4;PwD~1_TxJ|Iv9-B4~AD5zAHZ+b_S+gfQX)#1~(D_BTNO$$7z!$AWh; zi$!Bh3)nA0gUdhv>{Gh_&(7~1)_U>ix-D0>IXa%}&wlawr+;IAQ*ixvc+^!_mgCVR z{1ubr7ff>*o)UzI%>Vq;PyhDG#~}D`&Tky{`nu{W4+4uvI{f`bngJzxgh24OPd@rc zLdb_I@nG`}(M3!|ng}vPp9#c=fc(i>g22{PSCsq4NJRBJF?VE)K=ScNAAR_N#7I|e z(?c(4oW7EAl90aw^GD}7-J3hN=rL#n>qo3PBUoR-djwYp=_uVH4B%C{u0+Trh(e}= zKKb~g4?p|>ox|Yz2Mmqw(@pVw3?8=6{`To7AF+=dAAX?Y{vdEPMz?QX$8!~{NX{=k zcz+kc`&rF z7#2^^A4O0o_*gO0zfV8G2!Hqi`#_^cW%bNy>r$pz`8?a)IrE+t`4vYET%;x(2}M7j zyz;d#ym{rkYjfvhi?XUHjSd-vv;xUfx=&uoUR4kKukZ9Emaaw9kR}qsA#$q0Sv;$T?DESj558{BEGZcsF^mtZ5os1oLy_4pt$fj& zR?@W$#d}W~JRq-JspplVxq*yF&Ls-wnbv^3a<`sWlFe*rHKp9tdh zf`HF41^Hr2a@mqxQvThNTv8tUpCh?kI=12D5}9JLZ*n=avEMOhalFPgaVI-HY z7|ig1(5{f8S#F7X=l zKp4s8-UAIKmk~wIx5COT_q_3QW4UF~fv|GReFwwLEel>fgv_9k_m=LxZ++8}Tbf@s zx8#=Q7j!MTWy_1pmKT@4?|c9MpIcH{Jkt8(3(xPw#*bUJY~HwG{kk=)SK$kA1L^Q@ zae5T(HItBh?wc*kGeoL1xw4)9h>Nn>f+7=$b0 zymgCC+Xu)pNxK0940m(sji9i zI=6!@4Z8;oyfGk>=Lp&0KeeB{B z5>kM1W{jYyMxM79cJB^Q0#J8o=!J2M7S7MnK{)#bJn;#@@C@Y~03}!f*j5;Ta(Vp{ zd|!0_yj(ibj1~rqcVP2i8hIsM$qclIoawcunkIGB{q(<4E*6#hk? zca)5Ufze>ASuV-2xzFrbvk=B=os2N#nUY}xSLOr?jEHB+DsXiIv|Q(!H+RmgSu+qz zAnAxOIt(uf^D#1mXS(1W`R6Q&jg5{1$m`pj*|VmTU(z=^xd<2~Lj@bp)ZRJ&hx4wa zm`)vmsW5y3WCk#T$1Nk`#sFmSjQaG93~HO%1}j^gccsNd5wJ$a5wV{&YkCg$OR@<% zLSnuk{FY4jL?HNiYY7IfWJR=q(e6A5;k>zU3oy{>M&jw4NNjb)2D+@FBAU*U;;4?q zcT>cEE;_+x&B)0%T#Ls_QxlVcBj1!vS4P%56iXE|g_XGD1e85nD=5iBf?^j)`pZIx zK&7CM%%M}VOf_p8z*-6Za`*2jVoK(M73St-XNwsvY~~5>_=IH9ga&(gCW=m3ljZaV z?+Ssfpn0u(nhjn6X^SW9os`fOV~=W421-UOOM9C5U@@LB?w19$o}fA_%hnPBbjv}Z z6Y(5f(Us<*%^HMhfRAZ{vl12+X{{9Q&Jpfr=Nh~=dUz)RNOdaui)X2W$X|f)M;-7G z!fZ8or)PtgzFsbPX;IM{N%Y|zG#As4m$*+2`3s)zre)vwYQmhf$E`l^; zdM?YgW#{C`$;1{u}`*4hJ0#?p+)g|#_3*s_Zb z1v6L^l4wvJIx8FGTzTrmvEpO=7{K%yS)qFha8B+N9L^@b8Xr%j!s=wqV9Bd?&jKv6 zSepvibrWUoM1)8fN`JA$ax%Fatu*Orx0K{#mSYjc7*3#IXD;l_%^h!Wk&AR@perG{ zcP7f7HWVOn9%=G=pe#T+rFT5nm6Mw@76a)JK_x0TQL)78u8Cb!@JWJG0Rdcij2&ae zZg^SD0I$LWayt0nUvAE5;U9ep04T5;-GC+4bj2oDUBQ}?g~-BD1<*1PR$*>V?ns(` z6jy@Mk0r4d=apfHDzQ6OFR;2mNy8Fpt;Tapj0ZS#2Z<+%;3S+dn~tHhc{p*LT>*`# zj;^86)M<0mF_)}*fPu!DuU(UPk`t#Gf|w=q6m8KlMLJxJkx^$)&*iyVPOg$$^Aw)9 zgrxOCyqfg&4nAX~ugN&{mE6^NRnYR>a)cSN>OuY*-bNxs&g3LXsiZgt5b79aFWSIp z(mF+S@jq0Yr>w+du@GYfP%1F2tBT07WR1Sqt`&>%(d6g=EeAFSVA|r2He{pN(iUg5 zf0#>zS4nYqOI?Iv5d%wpT5@m0&fMJTQ>C4fk>caRE|Xr)`V{O3mpWE>N#-gP8%u88 zSd(`=u?`Ou{NNnoPSWc(0DLq7bx6%nQ!t6hO#nuR$a$Qz;z&{vPw5@cwbHE1 zot~RB5MdFI9+p@`9!feRpuC$Swfh!Al8s{gB677JVlk^mBr(~HNY)9jaKdFS93vZ< z9C8s`VT%;X7a^DdPjoFv=HhIPA16*Fg54v!xgNIuk7IgfGf;*kLZnxRFofP5D zohEHXx^7DUr*OP1rTr;5z%wbn>yaa$22+GkbUU_ffuh@}C;rO@_hEgidW)Qvj-|z{ zK72BiAY?lsk+yB!ylE39#4Eu&4q`$cuu8miM5;RN8=)Bj1mVv_4KWFkL&-Gqx-=yJ z9;1mlVMGWycoTAvw4~r&4c-xg7pIWcA#s*wcO4Z%4tm@L=j48Hw~pM!sZThDmZpQ6 zKJZ*nJ@}I!=^#2zRv!3FL59J-2Bw9QgF<+Fd>!8xywzsj_@sesU}!;j8?hqAkBx80 z-wZ(we{r&~?r-M6foVbX;O~au7cqWXo}LRGLrFfxxDRO6v_L)h8>WSjS2Q$B2NDiy zTfoTEl(d1QBa4IU!QU_^NMebtFUQcZ;uV94Fkur0!&IIYLJwXwL6?o9<8!@GD3}4j zDrt_Odhi-Z5g!-~kub6k4UOR^X&=GrPEX4Wr3taA5U|+lW${Sw(BQG6b{Ed3Lm7sa zgapROkUAMj#Nt$E0w?rOYn2vE5VEy*48CUHa#rh{2|Zw{;B;jKXvC`Jc^J577m3tz1Z>3z z5N+zDCiKKqjYwx1Y7li;g>e7~TO~o+42PXGb|M2wi0`SB;TtRd60ut65(?uP@=Hx1 zGM7M+K6eFChwuy=ItdXwYo-u1G=3CK9`EWQJyS9Q^kEI57A-*PI%n2QO6`eDw=uq( z0rQcE0zyvBo;7oNE-p4gNT2ClMF=e!Za-y6(Ib{wV95qX(r9EI-YNn_>O7b@ye_;V zB*?Pik8}!Lqzf=bNYoGU)rIWYD#NAe+0zJvi|b?p7oRW`Gm@uknUGuVAjhtE%vjw7-= z!nqm97jvd%W76pBz)oBV34`>2l0vc$f(HEQ(-X-3bPZTJPYhyi4g!-sgzOY!NH3Ap z_+EhOjE+GofBfXQN&l6TsqhcL?3_Ve;^TyW^fm}H5K|`|ZzO0OiPk-6_!y+bx&&l% zs%iKIV@{@=u3`wWsWQn10CiG#|71e}5{Nv6l{q;X^00B8%#u*uXQ*Jx9NZUqu_6B) zVwUCRupCErPIekx6WUt5AEUP>&`~|pvW8^z7n!@}r~YixI}oxQclLm|_(=Jxi}sAx zD0^4CQdVt;%E%&(Acdcu)-74dav;b1gA?(gwerKY5s)Sr^Wa;q_xIXOLa2Wd%F65fxGL~2Sm zuK={7~$-seuGVoOR zG7!orKnDI2t_u;f(JW#FZAVamYK{xb0TSD|EJFFzUhl#dL& z`b9_?*fUTD4)KwJ@#S@=waz8RKaOj2c|Yl2c|Y(2c|Sv2PWTx4n!%g`8tqZ{54Yt67By^9oVzEIGm6GXE0E@k#5b7=V(6iY?q~s;cT%DwF0hLPKfzD1<7%;lv0`*c9IXJS=ymgQ zvW~TA&F6UJ3bi|1w8M> zqTO@@c0s*(;Ud3iyKwQu3BdIm6dyf$>?kZaA}mN1UUv~*GuW+)J2=S#GNA@{xNz~} ziDKd}KF*J8$BtT#mLEHE^eH%vmlyyjvb9S z%8yiuenk@{$LS+v>v%!`RQQtjhaR7VjLj0ppmLvVG5XELxbP%*fw zUfCz65X}LEgMeyO$4-hq7_mH7`wq@27cIvlk19th4)5Q$cQ4I36M#jrPE|$#V`4kU zcE0c(rk?ZS1quk0z*m6Vvv;pws@9`NjvPI5 z`0y(PV|y#HTUJqFp$FYDibvVR1jp=(Ww9=}*qPqa!%vKZyazkN4!e)+-%AD;Ird_6 ztD-_|dVoe1X@dVvoOF{o+=X9oQ>2uO?6B>X{a^+XH>rdL1-M6{2aj2an_nWp`5lO*dRYsV1a)H`8=N&MC6l~CQ1h=TR;Bj zW9%{ZI2S0`dio4Mqu^RM3a^5JA{B2L>xY-s#> zel;QRXV>ncH;=vd9v%U_Q+f0w4?gq|Y?YLcN^dpVzm%WW&YWg&Sp~BtzmCxKv-jBP z_t<;3cky8n)#;IkA7l@*hiVOOikAo%YvXSF?z_PAGj5CyOm@=^a0*<0;jz*PMm z$GLa=kDbBY__ zZ%dq*nCy&u_ueCCFh2z)KUH}@TqRE*diWtZ$Q)CdwHAA5sCY6%bW2dxH$T$B_$*2dAceaev0qXChTrtA61 zx~XvEL7jm=>NXw$tc^XY*NBlLM~?x(Ou$am>_U_=J|bA&W$%dTKb!z;^gq~X)++Bx z26m#Nxb*`M$%!wVz_Q`3ZC%obkMICAS|t)ue)64@Cy@IkJ_xf+9M;xPBn=uiY&bAD z!f^B`VVH^K*W%+Ra>TUJ2jsEG+olc~IurmvMvum+N^r$s;V0RNYRWHHnOWTJdJMt& zLk__*ax@>U5k`COT`rudkft3!j@DKQdz3%wYTJDH zF3#e?5di=alAo%7=aeZV?5G{NUWMI$z~F?3*jlT4_{b5XFkMHFdD?@d1%VJ!Tp&M= z0C&h9V~=!1+p$$Cc5;leYYwdI2uFn%p^9Y4l$DW24&f?H<}{L z*x{;In9XPjd+$+~9eJ(! zy6n>V51OyboIia2KJ=BPslx1=50U8HgE0H)%lA(=Pne;El=KNwt>!ATZk^jUQJHn^ zcn``fu5ELbSxR*4rYp1f4&H=GmspJ`v)Ct^ugv139u+yeAvD5QX7TN%z#@&)s4^?? zD6`nsO;Bcq``_>=v#3Wzj;l+PFqB!*8{bw>TrZv!5dy-7T2c9!fd}s zn8iNcbYWKT>OozY-G1bLXq|AC*`7CyWWR~ZtYH7!%~58q-G#58fzd;jmhHd&i}{9RMDnF?*jPOD%3)C6(nY~SI7bJy*WO;Tqusg!3M1J<}YYZuqE zDeCOWgtR89vyNRoVk;bV7L}rB{v_wZQ)e-$O;cxWI;S>KojnoPbamFcv(QaVP-lby zrU~k-b!U%Y3Rj&y7TYX!_GomI)R}e!^&2&{zaf>HCeJ?kvAOc>LW?|Wsha6UCKT!Z zgH_E=9cYR?t2li8wdTpQ(}z${YI4==EXYU+&rTOyg6vPo#>F%LycKp?Ql4tK7 z+INrg?8F<*muI&xesmA=tn|xf$+I6mzBhSx_1rzkv(!)TL7w$VY}X`t=8o?fgCYq^ zU(KtWCAV*`KI_xv2}8StUpY(d)Kq=98bA zD9<{^Hc_5Mb#970YZuk0N%E{+rzXj>cF|3fXRNioeRR|0*%KY2n<&p7Z{Kuz_E@{7 z$}>VVO`bj0w#oABk+#i}XOFaLhCJ)ir+M=1^e4@gXCM9h$TMnebRI>U-q9oc$koGC zZacIeshwzODk?;05}IDnl7u!Lv?%OiFKaKo$X={?;d$(riLFNH09Qcq%Z|7Xqgr=} zA3{SH&ehY33VET!1a|Lw`Q?|`OZ-Kr!0uo>_;zg@8Vou5xUlC7kXE#k741R)6g3t( ziVD#eLLEEkDcSWhds%tW^}_SmT7^AFP`1r2X<;Awfz93c3n`2eY#X%`fCJS~|dMed)!QUVKrfwr(evw{G3C z1@Tf2Yx|K#7yQL@O0T2Tnf0X|#;6X*;&F z?R=}YWi#LGetqA*y=*VvqoR#VDN+hm3^XfL3hdO3gT@dzj-i%;L&%*wh#b}ft!!4I zkqoe<$W5jzg}lIx5fhy(Tw?8Fl3=e;zTHh5t+36mP1s&$FW)O-wTBn+!kcK?!$@J0 z!EnKBn616=JbRu!S3?1pA>Rx%+vMDUW(_a~N`ccLwt*JIt+R?~vu$iE-&_vpri~K0b}da#nr4C<{b{PFjNJAZDbqV zgt4rJhxkznBMY3O+YW3_U|*y~!Je~#??-6t*q!j0qUuT|;bQt6U5wEdw7b*?Mim4rPZ`ptfv=tx5sb zK|wxx<jF&Y8`TZe#7CoL*(f;MBcVq}5_uW!j#J0!~o2*0q5aq$lPKF;@U~ttYFQjG40Qns{96 zPK)6ZMz38@4A))b~RjkK~`*>#Ja*ZPLev@w(*CT6T=#TaU~*-gul=6gM& z@#>pzz4gZa0`LoJikRdk%Z1^zX3f-mqf;`ob?Eau<#^}NzFjZx!jrm=K35SOc)ba8 z%({*Owsy^$b@bqthEu@s5E6#-b+Y}a?ASixGR2$56GLV2u3l}1YGk#tL0i9$uXC?` zS2h%}ldcnQ!D;@yohG@YuEQqSAYQ$Ct$3)2Db6-K$#0td`W@C7cVH*f;=Q;-tr7JN zv{4mX>%jh4Yu3_ZNxy@zK=+<(ShGenH8HeyvEtfeFCuncBkJ+|feou*h2I@?AGEb= z*c$3nVkdt&QG5bTL$4wPVy(-^<=WK(zG{tpY_QF~{7&3{?V3|e+<~1ypFVp0k6B-$ zk7_*-RoF+3?y+j+%GLC-k5z1rqOgFimUnQ&262ZgN8j8*R)`ruPRJXqSRLX9e6{n` zJMZ9IBkV*Kbv{w!({6nv*@o)%x&^Cn^0}}8^Kat@pBSvB81NIn8|cFa#gZ4(WX&33 z{t9dzMdk;9EvvP6PSOZedeDas?Ge+6ZBW;*S+(EoE1kD&xhHBg^8`6t83b)V@D`R3wt;7> zt;8+SY#A5S9xPvZf##eTuEU28A36xb54`neA??{s#5!>4lBG-YHmoO~Jy!FT_7yr5 zI~g7#lWhmydh5+MwhC6ZqE;tevTW(nCH`2~ishhX$G8qHBj}s2@28FHK`YE%x{Q#E zm&mmaZ)p@)uf|xgmB25Tcy_p2H=Azo`fD%aG8G$8Geq05RFE%bi?t>Az%se5i3^Tt zltQz^x4n0Go|dKo@{t!|K8_ldpE*sOArP2EL&8CO|lm(q(>40N%)B6MDLVvc7VUh z-lzfkwO8=Hojn`!@(Ar%{On@d$cruF3+v`DT)4ywuFWIKB`3~-HyO~{>#wob*ef@v z4zXu7h7dcA5qROEMWCL)fGu#(Uqpil??ImDM_%#zYX&>MpRt0_%CmMa7~A~LUmy*~ z2!Wa%y!!S5F@N4b+<-;&iMp_0cOH#gIhf({g82&ZLbV*C=G&$rA~=BV?Q=kYxEvZc!$|F^?sKmYmXXa8_E;!EXg_3tH@ z_$7Ave>t=ZpR>=^v!9<;&bq%md-hA^OYQ3~*_XDjzdZNdrAwDDJN}o${WEaNS?iZ) zamX=#>EG3_zxTmVe3c$AN#OA0~MGAc4KlGN;{ZbUb`-|THd>V|10~8NUb-ZmbaRj{nhe;*NPfe%g>u7ZxFTodSOVl z>?5?zI?qQf?+dAxH;1j3^Fyg+ydDcvEx$@{8oWx?tCs!m;G-1HYPm4DTE?!}CZXz4 z>mk(g3&GVgj#>&^Ef)n<%lZo<^Dqeg6ih9@7*s893|B4h4W^dYgs+xgzGt<(BTy~t zQauc{oF7CjJM&h_cQxUtfJIq#J|EV?)U0mx9RUl}(e&+k?yHHBFJr8-vJYU2U5rdxLWMg*8FtvY+B^L@sal zm&-1a%d2_VYI##|wY)rBwY(;%T3)g~Y_+^1s9Ii#S21C!Qqp=;e2@wTn?9ZqdvC1@!Wk9ZlEEs3Ng-)=k@=-_-=c>|DQL`wP38A(*%C zZmwW{j-+<8D$JYm??o^N2;L^iW%b1X)!8(`{89kE34*x>?9DGQ2Ws{31@o4B5X=Sl zBAB7Ynk$%5nhsW8cA>mXZ8>PpL2M#}aR)gA9VBQw4 zVwOVPx4@hirefYooeX{j=G9G8%o~F%X37LiFA5qiFs}=un4KG&RAAmjXEO&Dm^U@4 zz`WjHF*`{yuWv$uc};N1jDC&q3d|^Q2PrTw-4eEB&I>M?H-ssf*NF0TK!JIAc#?TF ziqkP{gG=URE5nq`%jslpbAg#8^GdU1{`Ra_GGDl3NakBq8xC4x{`rm} znMrF0DKSGbpDWWP^Z8Jc8BElcjaJSr>>LghK4&S>CQW1$zn(CD+_-0+9)pdRMvfdY zeE85ILk8oZS{zfKHgMp8{{85L_})EJQ*mT?moBkr+1p%#!$mA5wr@)&PMiSnGwc~Q zhK*(;wGqSF@Jqua9J|!(@IJk9XgeK!h<#9Fs9zDs*_TvHsKGm&53e_XX=wx4fKnm` zvZr9iF=MeYXp`J>?p#U9IsEVvHlYsG9y}XfZWxYJ?gkDJhU1`+%3gG^L)WDEcpTe} z8*HXy^GZG@vkk1tXMzswFR8_8kvO0}fle2X+Kf*YkPCWVa&7#$vBBXm{hG)0?l`)a z+y-?NHM1gaN{M!^gq75f8#`7HIbv3)o1OuF+@RiLK=)LZit})!2~X0;5Nu#{3#G(L z7K|Q+LBkzBHs4`@*8{SEyzdf+1IRm4m#K^(Ir1%epyO=@9%nVM0j$4+qK{!`J#TjJ zfn97v7}>dcVFKpdD6(H2I%F^#%m)3KH7GM<_^@FxXHZra#bY1^mtJOz8XMnYPiSlwtaheORVU#ums(0M`BM9X=?qLOwr&=1+M!tO90$0z;WEF> zO4(&zO6!(py_o2%|8==$XvDC`G`z+ZYQTe=MQd`4W1Cn&7`@WSQZ|GQ`b`J-@7GVP zw;l!-=WzquIfk$-M#1jLwQ*Q_>uKbr`&Kbeb!vwWXFaMgTRhx^=aRd=b6i|!>PyBQ zT9y8SIi8tmtWSAfEUZqE=hN!Uv{f}Rvp6e#M}Vj)Y<74opzzqRx(9ijoP;m>lgENp zVqMrYm$EPl7iOGN>d<-V86#bmHe<9TTH4IP?8FYgab3_<%r3hnb+z}IB5W2=Fb64qV3CGKizG8!c@|tH#py&|2p>7FUCtAO#dL7dNW)2^yW| zM7N-Q$c5+8O0*(^R!98tlsy6_R+~~OxbJT>4sfvl#|BC)N$Em=CGMS70(wQK& z>7)s3_!^G2c}08(fhq__Fj-`PtVBhot_GJ1Q)#WlVn}S#?cZ6qPWu2Wgqr~}-i2%D+(YUh9N~yCZMZH-p7j zASp_$vl3UUb0(1KPReU5s#(W-sBmhtY-O5k=ZfBSVkAvQnHuRvzFc zJ!m8+`H3K5R1<+kk;}dUth4}?QhmW0ONLgu#RF5iXcSr-P+ifQymPl3m|zx3W+k#@fC!~eg-V*@Iw3txh|7gN z=3`1>hqveFuHRR^ zQ9#6JN*9+{ib}jCfyPjfr2^qvMl(FJ)J8e09!vwI5J->YokYw}nlW%NH5DD%d18Vh zGOW}tKZ9rh6|#^C3*FK=mQYSmIf&f|yDV=R7M7(H8>X8G$t{gG_V?ffrQpPopQ)+c zfm?c6xg1gIG~>uSCk0X*3V<=cE$Iv&Q+oim)H_?TA3YuuVxst(>6AD+htnnrdn`lS zw|vT4O2s1L@&o}otbs{ug~@b`vj<+U2RF5QkEMJmyX-=IX)V*oyCv3*1gEp^sR!#4 z!R1M{fa=seFCj*ecu;a4eBuasS}T;bQ)l|Npy-?(-Izt?U=-q7f>I>CS^4PDC1 zv@7_Fu4h-A*REW-cIDcit|>RPYd0cpL|_fL<$y<&@hhxMxuS}HcZvJ8y5YVI?HfUZ zQ-((uZf7ZrxWcZv=`Me~=Du<5+Ku~ev}oG@f|?f3zBoJ~!q>ERN`jv1+qWO*X!V zeXSSeR@VO}-GSa}6MZ6Tz0pygQY{2w;SE5+t@tm-_<+9=f%SDyRuU6|E_sm#< z59BskuflqkTBCa()zP+;?L^(w;z8GF{>M&^?ZxI?9=wxZS*Mvi{^nQ@}n zO7%BU?FU?x-%t#~Yr@!QpHi&~EE|4q)R?j3Cru$+Xc|Le2cW5zB;cLQwc2lg96vdG zx-8p!z@%$^sc8!7=uW8B-X>xD&5yrbyM7}Dvy9uJs~#6 zQ>*^XYa(XrGTdie7+!!&O+RoA{sYQb7MZHjH!cs|2!dupOhIjl_rN(Ky zRia!F+gU6i`F_$xGu4B}Lh(W4d{}ycA1lzFa&Mh)$@V%;SD2qBIyB@By5nFe6FuF4 zcXH_TC>>!NDp|6(vNM1snaJg##Hd-*3t^wKttO2xGjXS)D{GdAX;$rsL-z9q*pqTH{QQ^Tj~!toF{HN;MwA37bokQ%eS5Z7g5u_7C=HOD5zn` zSgc)AdrP=J_8QUh66!E2P_ix#QE)a@aYf@7^-=^O-N) z0a)}wNrNqPByJoXoQ!I0LO>x`Ozt4GcrJ+AGp7PFMH%HrZYtwmD>KHHO5<{J#A0HC zl`JM!E}XSdbu*xhYqD6B)#EUgFg7%_mY8xBS->e+<52_lDdPsX3ZOs|sauw3D99>~ zOJ<2|6(Y>dj654EatYDk5uyZ5GQ%6xmRU1*LQp{x=~T|2&3|j z93W9KN0Alb0=bstSJLfnqos&Of&>)1SgeZqXc1_tWGQi|WywI>Q8M$Ebq%A@nuo_8 zFboIQ3#% z*6T)X8KE+m39RCQP2u9eqFxw>BB~~Xoy?L&+p(wG>q<`agCpXoP#f?{f|J#P8|61o zy*IJm6Kv`&Ad}&%VR8k<8oxRa6>7h_FIe@VGSD7}wJwPGZD2icDpLE`el=gOx#*LT z^tCieJb0R9@Y{{jvt9${6fH5x^xS9_8-X}kP%Rd{0-)+F-lBiY-F59$#TWTGY#74HcqUVl8zO zP;u8&+tp&CBVlqR3Zy7(%HN%XZXt z>PYamZT#RJyl^$DBOXc4=(4L<%dX-+*YVd4&pl|bP_h69&@GfUtSxKD+uJ&{$1R@p z@T<|CuC@X_d)^_o&fQMj+qXpl*v z{gWMtm3P$W^O4{&Ww2YhdINAl{hS1EebUEdTif>S+qFm3I9Z(B@6}+-iUfpS0cFsi13BDZZ-8x3VoRYD5=J zH9q0=rDEM!s=FJ2tWqnlR4TP?TM26??1l{_FB%1>rk1mEijh*OR&CwFB{9CuRKH&2 z7vdv_;c2Xhap1{hEK9Y~GqVSUD6-OyxZouUZ7$2!*R7*RI6g?|Q;z$fEUC`!J$m%i zt+iA-v0tr@V%T02pN>vn7)$1Y%pu5npiv%PMpU}1Dl4HnX>%3yyslMOcNTMv9_TE| z(p5`N;VD|TR3(*l*Lw6+dSWoDXvbf+9$l_$u`!3RE`dH^c#`6CJ@3JLI(wB@A|94X zM-?ecAm98o;7f>rh zpvXeji}e;Gjs>CnMAvNrW@LPo+2*kDGD^aw;3~7mgNO*CsrwC}lfK{1M%aNxcqxTzJFU#MvrvgM9E$_taa22Kvvi}z-Iw5R&AzN{P*%R|NT$Uxqe zCo9I}^V)~&Ij*-<)*&EOq-rP@*pfGop2wiEguuA^$pNd!l&|u@lspyr7P50{9P`X| zKRQ>x{s<*K`NR&ul8!AC8BAy+?fv=_OaL*;9J`b{v6t(zq^`WHg2iaTqVgls`r-Yw zMsr`mqunh%V|i9&cgvO{(@RbX6%mOXAU=<%B4*(=S=i|}OU#*;n74eYoKY2O&VW36v=&2EvAQN^?SN9jq*Bj1azNpwOew4YwEQScs3w?(`uPf>lRq zS;is|*3#a)t{^}+Rwur@hS`+H(|IP#qGyn1SP9Gmd?+_amJTy{mYf(AT(z=F_mM4R z3)BF#iP1q$W@KiuEY~0kZUjE*#NNmp*75~fcRykil&7-{Ei;Q}X@fAS=$YhRjD3+M zP@UhSCw-=QXJIg;YtUeD(kFwv(gS7leFJL(GElNiCCiSULa_`uK4B{>4N^8=nivKC|Hf> zBCu=$2UeSVgWqu6x^aVkm0Jt#j7K3sJCw1;<%RIvfOsxxqbUi0vJ0<%S6wg^liW?KZN{*)IgO(;cm`r2s5E3dcl4I_UqU{G?{0~)_Y%iUnm?&)=?b^1b zq9*IWp42)#$%VBj0Gg_jD8h=87d0tTDXEJSL12#>GEmse3Ypqiz4qa9dy1cN`wk|5s5Pil>Mwp?`VNK(RPW7k40rcVp$;r?6;~g+=uK zAjp^wI+2!$)=s@v!n>)d-S8SKSV>V`PvM}pBPBi}0Vt~Mib@*qX2l=t#Y_4Dko5>wQFN`A^=nbP_7t#r zSEC;367@*lL+go(t#56S%Joc^>)kZ_sPgRvR_le#9z8?V7>%;I39KYr>5V-M#>-va z!`ZVJz~Y^xU!}2LMk&F|YgB8kUS8Hq%xwR9WBp3m)#Sx0$#q^@s-tj}DygRDTXeM1 zz?dkNH~aNh2Gi@@QK@Jy;ErvY_QhG*bG&f|0U5r9_HfdXMT;hK%5n4I`|^H)0@5xjl%S08_tJ}F z{aAkmum6qmq(c<5l9H8x)&x0gBp2%+v^=SzJQ)yC*2~h{-RCK)D07fG2Z)to)F$<+ zTQHc{HP)XE@Tp7c70t!y5A^S#@S`&oLwzfgq5w;s9(CSlN3Y(B*;J4Y3|^k3&nd#n z2PLg3il`GsQIDT&fEC}Op>-k_icg8M;#n%F8jn1x;^HCVN39LSHi$fAfzm`z&*>0& zHJu)3ekDrRBH~t3HTrlU%N4wcFvgV)5X3AUpBtenl-NGV3+F)%XX&mC`C;cRP>Pp8 zAZ@^2QPe805i5WmYNisUD2q0ZcIkCdQ;kwvh=OY4NHsICMi~^x`f_p)c(`~VRBiN zScBIq^}%Jm?Q${DMkzkw5@phmMN8K_G*F4j?4+d>9F0z@EK&%d+JiDq8l( zw?#ZTSMn9tw4VVmZfonhy~jG zd3+w5%K>Gx*jAf~8s}sQR4q_Atr+JOQ&pUSS3#Xw1u1IHIs($5i>hAC$ zEemWo>ep*7IAda5h!%qt#yf$ zy_*+mjhrE%AM++dFG>`XQz0FH04c;FtF1wEV3=P5>Dd)BO(GiR_F_USW3 zUo6@TZ5!6(6nNTuQQA$NKlS2#Zj2QyV8Q}6*D}X3%YfHRpD{zW)o!LU9jTd8w3pFW z9MFXClyLT}3wSzUnTDCovCjoR-GU)-mgx+goNTk~b5z#R1iguQLOt_h%n-8$rg3(e zk-0|LX>v*|7hQXHOcw0iy$Du2&2z*xQ~C|oT$Uq8oUqhi$<}DAS4lWqUPF!eGI&@K z`hu7}bJh%nEY5Xg=Va%2dOH2EEU(T3#(C7j>DlV6nFcl|ds>EL*ME z(n@{I$Zi_$IkOqiGo~xk9l2o5o|etBYo}2YrA*jYuT+pCN;F?uWkTy8F(Wre zLfN$XsRneF50ovbm$QYK;WD3HCc=f8GGqGm+}xbp>}k`cPMu=t1T!sL!WP$wc_P4M zGfmO!GrV9j0LD+14T%0=I=TEu9N|sW#{3Mxf}ffS1F_tM6;nGHbm~-K`AV+Gig{Y5 z>S>CB7t?a4f;q{jE4e&}WxJ-4!+dJF>|+$OnjS*lz9%bLj0fiI*+GEHR3(5+S!9sS z0T~YIo-!J+NTm#@f^&n+((TWFJHb7ltxvMDNnifGs~e4}0-w!m&UM+?r^Ib|xF z;+%|cQ!UTqX!Hxj(P)T;8i=c!JSDiD+{~!Wn9h9SDJiD_8$c<6I%P=Un@xQNr3OlP3p>Dm_|(1(=>lL9q^jorFi4Z-``@RK0-CoH27oDAq}n#b=Ot zEcFhnxo#6J3u^MD$&-91ou@sEo~86WBjS+QNj?+Sz;Ys{fpyBI%{vhJ;RB;!VM2oC(Ti zS9)pbNfeBA;-rvJFKsC3L{E#MnU&3|_IT@My)CB{g_wRPPBgU`(g&rqn9WjV)?;*K zoMe;&kQ2N;hGrz2X*GhJJ&jGXU=0L9Cz^T;y`+3*otRXTR*X#$=tOUmVE~j&HUbmhE3p9O>=15G;1je!%OhqmWF#&T zZZ`F1Xy|y6!W6EmN}CRYYAnT>Z$kQp2$f6`%P zh6-Y`n;st5DXW+q++jkG7x|wVZJEwJ9!(-1Hz_RN$2H#)>!CSdN=k5KSd*@+3BiO|*#z1;H#6 z1jsVpE%QUlwJewiYVP!0qT|S2D5iWej%DE!#b1#V)bSI>M~+vjwVG;H&1>AXH8r)7 zwQ7BB{h#Vv*_?Kp-Db0Mdn-p|bwte{YyVX5wAI`2Yq2rAM*kAw&|HA3sDQB=cXe$| ztx~Ji)Uw(?*K4+VRgAoz0w$v!KuA17~dR+Xc`up^MW)98nV2;`r zmCErp`#-r#rFRfsW!+?zTCS^9aU$J%lBxG7Qa9ozYgS?tfqM|CeAS(mD}>6#5lzj} zsCW;J7XwQcFCy{beH#(BM7`;is8At7gv@HLLRIFvDJSDn+~T98sR9)bASjD_5U6a1 zYdZ8LwC%kJR3shuEKsvs1gcQOEdn)|&Ll0}B2fLMQ;R?~vf~zk8boEb2vkyeQr#L7 zu|=Tz>maQ~pbDYMg0(rG?^U5f!cgpi$<-1JQkJAW>-;N zGiE}hD)%H&r$b%eYYjE0MWVJyR3~Z#Ej3i?u4t*Ddh3d^%&k{7T571G-qcb<4N_Zc zsiB(cdo4B8(6!r^8tQ-W8Y*@BQUTb8o()QHXQ+QrtyI>3RaNh*cmL_Gd)LhAqDzNO zbD}7Wram^aR$Mwg*X6*EYEh}nBqw|Js}kY*Z38-F*fc(+dh#UPQ{EV_u3Q$Es=8FB zvgx+moN3dh%s8Rm{g=Cr-_}vn0;<&7c(j!|rprW|<+|ziii@i($12(fCr?`N)!qMo zx8}DQXl$4`ejJ(z@XJuo*K$w~=KAexkR@kNqg$f-PXPOeIpc9=1~sj6T&(8g;_Ha=pUGbi^q-Ib_JI^KAiN-GiWiOYu!1yIj#uTE!eG6?oGA(33TN%W4F+?)jK9i zS%Bsbw4T7lI@RS;U4nly8aAxr+NZ}%F1q`#cU=e+wOcvq+H6-V7gKN3O(##Bgz`Gw zbPUdBnOK0R)XvDAo|BuKE&5sDoZ_;<2A6P)O{&6SIJg?;u#6ftV)(eT7$^tsOqWxG zf_<9H;UF`Z%dNVmOlFh$gbL67fxy8p*`MG2$Ga|!n}qObf55eH4m~F0**G?~O5Pi% ztkC%)Q%djt>8?E+R#WGcGL54BD+R@+;xrT8b{vN?0{6yQDs)6ddiv_pyMMf^WJgRx zAA;)#VGwLm_4tvi(v%@|f>1ggLDGL!>D@ovMf9dkoyGxkPMPY$B(S)CQ(b0{b*m(b zPKz1*{N4NRvT3zb0YnuK6H34^cg9_!6My_HOT!8FbW}>8UK!8bjl5ekbqW{>hMp=1 z#`{N@DF=g2DM1Ll7J>{goO;@Qz{htjciB{R%GAlqWap$QlMr+6DyQ+MgM!F8X(#rR zW9fImDX?O5|5SV#c-Y5x`CUGRPgW)&@E9x2fxnn)b*W@8f!UBtGL&9}ah5@9s@%7J z$fdh?(c|H!PiX4#a7~~UgZrqkqf|eiC#dPE`0`O5&LzO96>$qL!EgXv@@e9dIw_lD*0nk*NmoM5MQYE?bVM81sRG=uahAq27gu$15 z4F&MM~PIzd2uDZf8^@-MxKmM4vM{&YLOb$Ga#0NlM-sfB+=C*$P zu}2>9bU31M3B&stmL)A(tUfu9JO<-v4eW)0&MU$0;dW^-93&u1sfS`n@kAU)l2mWGix$}I=eBr`@Ok&YCWblIz z-2a!qc-pikPMCm6$<-fRs?VAeCU>L>2w!0`d?l0b{|o<%m3l#CXBe9h0qjpM)mW`K zqgotLp-&_qn=OAqcbE?30LqWXU**{t#ya(hFF8w`K;G{~YU43G@Tp*)N1cM1YWWMh z-~NDyk&UPIbD1LRXQdnx8QBN{dQkeuMH3qW%v6nLRGsH}0tf$J_TB?NuH(EH<;92K5;2_4v6wuh zKJH$3_ZqNrj*?iFU0owwgod)mq~v0>i)M3;Rk3QjrdA+6R8(ArA!-iMx6-^qua>n@ zQ3k7KH6yivaDcvwMT==SwQP0iTB>`bTq8AJn{d^r?G;L@sH>qL&z;OYPD*vMEYa{9 zg=srM@k|5=anGgNnhWm~Xw5N*&MaN2ahBa`!!UdHT1=wwS5}pLBbW+z%sZ95UHz>0cbKEv< z+e24Sq?Wc_Re>8in>X~17i+F)(*!iA|0}q16=h1AGpvT1lIp4o@p;syaT4E)7>dYm zLtNeztcs&Q$c7|$7>>QL=gmh2sE4%SlX?iH$E4v@RC4sZF%?+?os=;$e*u!Nkwgwe z5eMKD1}()&Tc$xHi2!vln+tMTl9E>BSfPYwv!p|U_!dFN0ww&GijmL`&j6G z@c^Q;V{9yh_`8<|H(AF*aWNLc03e<=7@~p3)Po^9p)fTV+P8c66%U5?UL6dfzl(uf z=8)s+VCeFLA&UmX>|Z(_dasl6YszT;1;ZhBfbF;U{U1LZ${5039S&U`4q;sJ)2qXw ztHYtI!=bCgp{v88tHUAo?>QWD4vAeq@vGw@3?;8V97=oWlA6c=-}&LtzuI_6PAU9L z#zT0G1%_1F$3wl7JPycsJY-|q=wI}7h|_c}`uV@>1EM=p9qZ}?qS5CqS04~v9TAOx z05|qDqA9GxNKqQ`BU41}w^#Rd;{0Bs|T+Z5$rB|L-yREg2wZ&W8+VI4R zwHbSyL&@n$8;@d4!Q*WS;(?{@iPLk>yRz#~MBVRNQrj&oIZIY2?Z3Hyzw0AE zpb@nl%ercl@jp03e)9unyVBuwVv(PH|0ygwv|m09qS3B)@J_7IT)g(vSX*el4CmB# z8z%AcK+xlOj=$^w+TF2esZAy7@2 zqt;q=+ejku^N$O@Q;ss?5U8rIp=Z?eJl<+(67Bx;M`3`M4NLW!T8;5iIshYG?Y&MsJ%@**5_HBQeoRwsimr?>kogR>L@aZHNd&gfUqe??caWvT2~Yz%HX05F3L#h@RbbbWUw{X+FgH(wW|E>-+lKx zLJOXeUpOUZ)GyNEq8zEiaP+x1$=-hNyWjcFXhD>aqaG(ZT?@j*pZK!-Z<=cXV z%&k36qZzGD$}_3MHh7c2A*FA-6jD`CRS)sH%e)xdnivprq+Dxy*J-@BUQPn z8j+kNHMY&0wBLI34fe(bw@H@bJejFoBrSHGH|dbt@7|OxNouHAx{Imf4rImXLSojHJ`LTM^t*W!9>K!`jq6)01h6V|JakJsNn* zZsb$r4QhL^Qfx2s8!maI!|-ny>oSmL$vn%Ve2hedKN)7R_z3AkVKVW>z3@2QS&bGZ z?bY^*v`5r3!?KC2U^*o`NSxYGS!x2|D(R_v)qNt-aT$~vN_+agSt0@AqS7g_E_5tC!WT<=1eSAN1nXeo`8%P6`45|B&Z(x-#(8T#F(jdt(_EEwivYPm*Pt$5F z(pM-6!7>Q|lRfY}YAaG9vVf)N2Q-qeOj>_+&)$70eWXuNXqV~AK22C~Xtf4wPhcf= zN3teq|G`0|glvBtCh$r|egIn!L@JZ#CN39WK15SR#AF9P5KN>i9i7RXR2DPxa*D0C zj|d(yM^l-^+0UjK#%oYIZD?oaG{UK2Dw>S*&Wx;P_@@uS2)LBkWJ_z1^CW~Su_vZB z_G{fx)xgV^)g)e{#7FD2CrxVXFA_gAMLyF>1y7aBASIxmwwQ@A=W<4%dC zrjGvI=Vj=b)nner@oZ!yxiV>CN-((sGkomZ&PeiFIc3M*x)zgg{4M*2MEk(}pFU0q6%USqG#lhab^ zB=)NFN^&-4oyHTDR~nLR0?m5)mER?6lNaAev&mjnUKx4$m6u<7IgUw*Oe>cJ=cSjv znXF0AFXNn#F+W**3l8>eT``5PrZ*5Oc zCLJreD(T#dcxu1Q5KgVX^swaeWMW_@V+gAD$O^{T@}#quafTTCB2(BkN&C+Yd@f7c zCySWMmO|lEVzPC~03>$V_~~h=(mqI1rlV!5n7 zY5$3W&$^`j&&4bcpUy{FKC4BnW?_cu+`)+WbnavkR*ffQEXt}NI~`vgFXo4xUHHpZ zTWAvb4>@FQ9%*^(YV)9Z7LGPgep>UW_y0$4p282)d;awQbMIL@+B`*R&7*y7HwBx5 zr2S`JR)ju=r8H4I7xBw4o>r_G`0Jqj;%%iB2s!k{)9P!@Pul;GM_)e4fci`FPyS`En%GZb5&jwf247He0_E<8TAt($NM=^z(@>}z4WKy!BEcG47E zBbuj01Z)QpRKkF#n(Oc<(UW*BBv)M}iQy#gb-2|%H;@xF5TTQ>IC6Zc%WlHmgm<4!7#9x?pSg?&P%^ts2-yv(Z$*oDh1BBDi)_ zbCcTSG*Zk8VA&QIrRYtp5uwZ50t$ng)r_}MDa}$?X$&*VXd#{#H6)_aq&DWWgm#CZ z>eTejCLGfm^U%fxEv&`cDlSMfxob4$!oz3_2bC(I3W}58q6jfkOf)v(M{Uf3uPrLb zD&({#z0qoFY((UCd@UNN3aC0tVNG^p6MCp)w&);pG=tW}8*Lb2O;%%56N0~^;Uarm z8B`QhxCt%U*rY)*g5FL}64%+)tTlT`r4h|yH{w1JuHt&MQc-c(Y9w9!(b&krb@Ey~ zU~0`~N{eLjrU8_kK#LbF6$Vk1r^z;_0kPnt4^*YuOH^pBW77a=aL*4iZ;m!u!D-U~ zb-2cY#F`75EKQKmMzGn+Aml`*v1vLrPY@KRxd|j6NE+foO9-UGCWqs@if-1DBSj)j zPR=wwO%bMvR?y_=QYNn@7vE8K6a_&i*per{J3e5rZSEFdBTe=$1zcObvn3zw{3dHx zYd#SGY+(@cni9KPTTL>M(-Hw8r^#udXWE6ZQh@KlCTABd@e8=${Y`c=Jq~vim*67> zt<}j#1B?c`W$A%#G5XzTpj+6Q7U<@t2fDiSKv$I>=*n6%16}dNKsTd%LZB;rJZqqf zJS~DkW}wS^66B0P7kW&HrU$y9nr#k#5iUNVg+vq+6dE=@w2N>B_T3x`MsgB38dOI_(~yQMOR$r%>0FE!4G%P`4o?)Xfp0u0A8w z9aKc9i;ji5TV<&8JUSNYrh|l-!w-zby8C6UyD2T!t(LKFQ7YDXWE`8G7V8>itn)l3 zXoz*?kfGqWFBR+_mcedID%h=~g6qbDogb0R&f7Z{?AnN+J(w2kYC&=CN)LASQyjGP zXtxz+>HBE33%Z0zyG`lQZe4n`TbUm1mZnF$1?kbQK}5R|k=7AjA+M`( z!<|ie9rrWjbrny#;ckTTI^=MEO6^Ks8H;!$BDJG55Xs$)ABgzi#=H?Eccc@f1h3$` zU}eO;@EbxrJ?`baIw9@_zX_>~xaa@M#JFdEA#2>zKb1A^QGA^w?i~_djf;Ctf;2Af z-83=ot<4hm7H5llb=l%x$-@)kUcrBw5cfjg86WpNFO83T`WMpTUI9Aw)8hkQSJuFH zduHHUJ9*%nlP&Pg>dY4S^1hob@Oi$L8TgcEvIoBQtby-_?167_%jAKtq$PXc`vwKR z-0ui(X5ib7yTUeJoFwq&fa^Tck|oD`QUty`G6LU95%`v71inXA5%^|}1-?!h`225- z1-=Ry_>||y0^iqV;MVfZ$m2Z1!UkWPYZkx%fRP*;4~++GrUu2GeL3+;3_C=XZ}vssI=)A`#BWSL(?4ZPJO4- zxKr6_HSVMjrx8{)43iucZId(2iR{#*0HpX%-pF87B|hcR;2S%A#AiEoSXOrF&5l+vs?R;c3)`8FbM`hk;^gkP>6kR`fC6hyhvQG<$}t7;dv$ccIZh*Fld5n;PLm zKDJ8jYH0x-)}zykrdbMV6>d{oaP=E8>MNRNvmElM6>(J16lgP!Q7tM3st&5%m^ZBe zofeSq=xw1kt7Z3Y1X$LV2pf$asvqMTcRXk=t5wX1jD!uYTqoLyaf93D<~9=!w(MrR z^%lFpt6;W;2kAO7?&Y=?ZNoj;vYYSLS`r05O;fnyXw!0u9ptvZ1Qj4{zMHos3UhtB z#6)&gn<=;<7;f@QW*|2|KQ~}%9?jt>H#p4#o9FT0 zF;#=CrpteZ&Qv)c5={ydD zV9pS9HqFN@^1|Rn8a&XX(?BkT!k0>36=|@hq7=jg@*C-x2xGX`FeM6~1)gXlpJc_U zD6SP~!_XAJOuIy%io%PK=h=b}+XdQ16iViai&t1ipNoMnO;4v1sc>T1kx#~046`s? zHbOV$2Oq@{lQ8!IBRD10Yjw#0+;wv%Cf~Z=QG{ujueh}FG7ybRm z@Y8>cLx3Q~zE>l(Xqtd2w~L4$NMXthlG>JzDG#B6^0}=(I}TLVfQqXEP+2q%R6G(? z?nwug-J*yYX`oW=g39($P_Z9#Nk%%VY>}w4YEo3m#bpWM_J3$HSUCUz+(p$BU}e5! zv`z&p2XJ=~tmI~gm0KmOT%R3QW}x2zRs+t`&fC&;cD2x;4 zgvMhAQ-@{Pm6#E@c?>g(G!D$5Ft4e0;KmeWNK8;&un2CO02U0U?EITWY!_Hjs0CEJ z=nh1DMPLM(^s82BbN?}w!aK$Ph{PbDYFF<)W~5LdA_2pz4tuZd5s;vz@ZghT^zg_8 zJm?m|IyZ#}6@&*Z>3Hyx!~^Zeg%j{#jbuDA6&~EHOFW2X$AeCZ2W{E$pd8&D zc%b)W;KA>U!0&9%z=InE+5S={9{404)MUYf2PGanm<12!Nj%6Ij|bn9c<|BjcyPDG zgEuqrAWQ*ke!N*0YTbqFg`$@NHJRXz~ZBI5l_yUFfmMnO1 z9Wl11;{lC4tm+IrxS#NVzdjKUW)mLlpNI#q5FUin@!(E@2c6^aAW!0f`DQvEd~y^I zO4IS+Q#Fk%NAX~3IvzYWB$e)u95A^8^NAZBBoqTPJ_ITUqh>gxa!i$`F4~vc#N_!z*7~#-HMytBGAi^Vh zo436P8!|0Af=THdshSmygu{a2X`hbQS9I`>;m(elS%#V`Fhv@ z!)T9m#4DotP}1@>)Fu&*M51US4GeqB^gN!YiPDv@LaV4EEJ~$?JM7Z%C{GRZh!c(w z(}{@YrERC}9XTC#O<|srXTq``v7!-TYG@RTxZV!?=9zh_;JW%w6h`zm6|d@Gcq<6n zPU)~q@*(7b2~N&MqvBF1?Oa;H3q{&-MeOo$p5{uy6{<6bm4v9XxC%Jns-hrIhm0Dw z^T}Ha)?mz@u?uc7xW(GvgJ14%WnrEP-*j0wC6ZYFxl<=0h-0$Qb@Yx)?H!c`xp}#{ zD3>ZIZ4Sd`Nynd`I>}DzZDdh&v`etr4(Z%H1LYgx4{(vgkxgGedGgdr4nZMAZ#>~0 zm&!?ue$+f07fR1}!nmGlI35X?Kk&0t?34xt9WOg6i{$cLOFBSCt;k2-I;9G>ihaMu z;hbD0*OSNdoxFVfM^=<@BGUBJ(~#0(L}^bH=jZ0+s=2l(E>69GWU03);gRV*M^2qi z314czX=YwdZVnk$^BDchPvoJK!7K~glYu)lU(xL~= z>p8)W+b6i9D%QF`m1K*05M6L~!Z~@ub3#=Tb>BU6X22($FyX9o9PP!9b7iFXYq8h> zx$J{8Hf{|nS~+ehGe1vrPVmup%7okMapyBJHRf>%FnU~%8RDB42BC4{`0s z72Ar|X2Z6J7iC~u{mwTsu-&%?@t!@6Q5mHJuZ|t!(!MaGP=01aOPqoDJOaw>&ce z+*Uu41>BZ=EGxLp>6sMV3R@=ux4gS10k_=knc#NYRdB<&?YrsV_O<4+$-(W*ja6B| z?F)C6X9Kry+)+Fc+}^ln?&RS1{MISK?NeowfLqIC;P&H{S-|aulFNeIM>E0g3$>Gg z+ZS&d1+WR=_IU9qZwhex?&_()?YYMA6@Xh0jqWZxaC^4)^5FKBYqNq|L2Wj0`}*n( zaGSO0p$u^Q=DMulR#?9}8@Ro^F$3JnmSh9BFRh&v+-A&Pp9XH9UYrST)z_qf+hYyc z!L4p>8o1q8J_WcHG;Bx*w`UK`oE+SW=C(}$w?Al%P5`&*3&+6it?Truz-{`HG;sUI z>WSc1v^WjiKDTI6a4TALd2lOSI5oHxESM79B6Ft%w{XLQ*})AX+UgCHU|ac`?ATVa zG7Gj%Up5ij3Kvhnw&?r`*p}ar4cqc+HjKkICD*Q8n+4iRS4o2z*4V%}y;@3(v zd-gxXqA?p9Wty`)Rv1&%V$F`e9xIBmNFs_UttgAe3!(-1RSH<4Q&6ZBIz@#XTRZH= z!Ps<&#UX@W9<>Uh(E?sDQdm$xzj~ov`^T}FF(sm=OsEBM!GsZe=A*IV7zfXWZC2n! z3$y~K5PvC!){ehD4yKLbnJZuxsD<{LA7jj260@XRP9&;CO)9RiaPBvbE8wt*8TG(T zyXt9-n@eI4;h06lf4qQ2m4ZZJLDf^o4auSTMZrl#$#GVYsCw$e3BhGi79m9tS@a_O zi`ISe1jgbfX_8ZH5Ig!wD z1%EL}C^S1^9#_RzlcrbL3GZ=@Ts{d$t>b7g&vCtfMlA6+ch9}{gdtnPd)(+RirIhL zSjtQN@XPEkh}r+Jt5hxZNF9Ux>DT+w_wFw%)k=M`&izJzI5zU)?9vkaD5X>-Z+~9w z(x0p;DJd<*KLrN7pyk9a9d9WH0l!+QdBO);C}urdRa~N!=%r5C2^}Qze!L6TF|nD__j|$+lVGYf?#t5=S%loBf{HrJvn3YgTb_37IrYNs0AyC^^Ss zdMy4Yx0&GbVztCms=7RHzZSDU+kmBKPKt%%FrkR9BQ6f=?Cs|<>r`hBrpq|oa*9h> ziB{^Al(JG*hQ=22K{|?3j{Ex)u~Y3n4Nre{tTIDk9HI$on=)ReVou2encp4zC&=J& z7TxeV>cUHG(Rvn|tV|)B{^Nmu>)1m@?!pEvZa~R#YP(XDZk3jmmZ@d#wMC(yufR04 zs@X7!wf!YdDH=d2Rq2>wT&7^Z{r$z540Uqxe9etcjt)Dll-%QGO1Tg2qY;gM`{+(g z2xD~ud8e1CB?j8RoR`~kzmHzU#5J&AEP;%ZgAySIIdKK8vhuQWR&L$gKX_b6cZ4~; z-~Rb#h+4=$AUrJUi#jlBJzlEe9oP>KvO!I>9m@Xvbj+#JEH2C8+9hEc4I~^D&3y?) zl$DoPeRGfxDk-Jjn=p$jl`yxL4y;Kdz>y-#LH`&B(DrIXP%CYE?xa#wCPwX&EE=9kD?Te#7U#UFH_A zyuMfbYeZ+~ruFz54ihN4n{^iddc%>6Sm173t=7Plj|= zZR3%yXIP&ey_Cni8$ zUGoH}D_YZ?26eS}J(CG__x!Jiy2sbm&N(p->PDVePxy4gmjb(|HsW64B^huRiP=P}LqA?JB9M790DNK%7U7Koph2*OpK+GXxC9a5$&k$#v|QRE3+eAUC$WOH5N^QbSs}vN4k&CpBm}5rz73n(JMl_%Jy`m zdvfs%3Z;w(tloI<*`$P`G|oI<)kI8-+d>CA>Sr2A3NyfLH;EKNtcSNGJV zkgo7g#*prF+Y1Tlj9Q6w&pf^%Ku8x{2BfnNEz-48&6$~kI?wDYg1Q+iE(dji`IAFk z(SpgLu4ZFas4H7N8Pv_XW<1o*SU4Hf%~<$1lS3VtlR@3gg_A*D@sg}iS9a|bP*+gB zIy=-A&D}Tw>WY_SKpn=PwJX!0Zq~xhnNYXte?8P~nOjjc9_s9Ea{(%&qq=SLkk(Ix zxjPq?Xqg~qFE0mi4B_kzRRFFrbhECXQ(R)CL)$V8zA~Y0ZH2(DiKw=*W>QpJGJ6VC zTTrM^j%vTC30@(pEiX2&9MzT=)25-+ur4dAt%FD!s$rZ)Ls1%LWrABnej2#NA%sDz zG7;nEN7FFQDM2fW|JZo6TQ+?H+CdVK6%wJrH;wQrH;&=ng2;H> z69)Ct)EIBhP3g$DrZ^M%ipP!dmZc-#g8VB&zKXT!$hWR^3goNWmO{QI;i-_X;l^>u zSA99;oBMVO`BoF6(hzg1G2Wta$hR;&CGsszN4~15kZ;8}qgk7;_C$1y#ABCRm}CigHi;F%e--|?6MGZ%k3->*`tjB2gMsjXA$67_Wr4fVX< zX^72;IS*FxD!p2*v1@DU^g6q~uAbHN2Iy?SVOV-KuNkSWsj022t&?Y3N&f7aF)xxUqpjf5nggHzFTh}X@LmWcV4BX-8mX>9*}_PD9ji;+^6a;Niq7hs18%dyOSe_S z5ZO{|;&nLYsunWw`Z>E^I*IPY&S9E%Fup{Huxf%@9O> zHrM@2IhzAP;;Luu2mc}FcfV<8F|&1l%qza??`UTen7OzsX1Z+s?8q6Kfq4M4c~V_J z%g#77C1aQW9Ud*Di2MwuN6MVNF=dpboKZ^cGI}6ELS$P#gW+CTqWs6P*x(G|jDA)F zP0a6nPSQxuK6Cbr0(zV#pFSZ(Q)KlF{G~}R=M#g|U9-lSO9LcXUjCKAB0Sx#h zVysf`{MBHgD`$enP<&bWH7?D793S9iR(ZwO1`AwO1Z_Y)T`0bhhCZO3CY~nrjRF016yH>Q zGr^;UZG&MD6hR<1KPA6wP&V;hJ(Vx`DinyXpUM;8iBAR$@txxmOM~XAT)|h)df=`J zzH<`2QAKx>Bm*WASoU{nFbJvwsx)kzvOpD`nXIL(ljunVD@};%!Y8?Ikex*E`a}P? z;C0uy;8mFlUXP^*uUjVuud4Lm^|TCLMRcRxTUAxbDiLiElDG_G8bS^NSOIP>XS;i} zpBq#tl9@PSk2m0X&7iXcswxit8;fKrPUmw(oSRMh@BgBzvJ$s4{fKa8)TuI@(XDHJ z986YagUK?&nkHge6nCz@r?QI5P!Z7#SRY0>TYBTZk7MAW4m!7jXN?bMdR=^N%RNv3 zmvj7FB&H2oYpSRahPt_7jMpU^wswB*oFVx3Tw?QaA*|ts`+fneH_wG*`k;bnJQ~01 zw|4&$G13c;HkkMf)h!jjR&;(5fzf*|A3D|(ct^dAU-h>>foSLxWcy=89YFwFw(l!I zP9KG*+?X+F-zS3Ds`~(ZKE$Uy(3~y`W1AmEQ1qd1<;Kjx;UBhcUcK>-PolT@&|7j4 zn(T9f=S+0>5F(iuH$f0I>)hZVYNx*wz?TFB2G3EbKrr*gN)X>Ejlp+z)(1Yma&bfQ zv))*__zT@QRw}K~O^A*kD-#9LHw2PfodGiG&TSnm0fA&xL^-Rh;unLnTml6&j_7#b;7mao3vteFgfh|+ z;YmifI}ydCA>&M9zzuD8B8-j74GhcJwihu=N>X@4DQyL@5Q8awPJ1!d5kBf%kR5VZPE(nDdd89yT>6V`ip7Wmzfu6V}JrK^{xC0R;crF<84O-W` zfsobO*WQ5fO^`yKKjt5_x20m?-1W^E&;$|o{IS5Gy;+39`CA8d(D*yPSa8tUNTG1? zM-WJZ=q=t@XmI$cwTtF2TyZ0!Xb|C#0#=Z2AMuIA!Tm(c)7(GV+0eBEF%4AY&MI8$1>1mQ=1V`nI*n}1=~c7Bc9?GVzKQ7y`wXd8@##Z<7;PtmBtA*7SZ6)EYIni*DS_;QO2g9Vkdo~ zGzHd3&;W(tSjtHXmLs6V6ve=v3T2c+6(TM5q%kT(UQv|NT|3k^CbYDZGz`@|!(NZq zgJ1kGpB?==5*R+jV#bi}v4|1y+MD}9bcV1|(He@yhO{BglMo6%uU+~r49f)1gvJPI zfTerwP`708m}gYp@LK-nevCo+kP{m+KxbZyN>;s=@Akisl|t6==w2(({L5HLEKa4x zhV-FC!|aCH9`3QpNv}2i{$HJ8XFMWFrky(q9*6T|zky5x)dU`_dMOq=!`&#YqGiz{ zSbL)MW9$5E#beERq8G`5b7p{0OvSbrE|w%PA#w3273W+1^v`jVLPkeHw8ut0A)cfk zV@DHnZhZWQF%Nddq;phoaHZKfuh_bx3Kd$opdRB#6;M@(>)6PnV(W_vSNKt<55dnH zqwO-X1Rbj_h{5_ufe8gFS(;H?I*^udk~ZAEz+piKVbF=iVWP0&5rroWgV}aW!fua4DwYK04*l(nxA)si+*)1j{;&9cgmY zmef&?>Vm=1reZ4>7Q&DvqmNUX=ZU$7s6Kd5k2llcwKVX~>Fr~E@!ogdIZHwsnusnc z>5|1nZ(rX#XBqN91y*SXn1TkBT(i&a?K?|3A{WiAV9fxPX!jlM)BAX@0uB@Qr0d#I zFG>>%)U2vl2cV!aR5+>jI?|Td4u-ylE5dv@#ZrdSi*>v|xjymLADBVV&Wk#Zkh?X9yXFCen`?Xl~&(Y_r~xzTQvF^7;iI zt6=Er*+-8Z)n)4kaAB;cOTB*PCnu<*dyeMx4O69`tMK|2KPCoFqrV8d!tb0u>&0rX zU-K)VGt|c;E=dqQ?^_GJenZglk|p(+c{GlWg6-m$mB;5dg@ks@C)>f>m-zGR zy?!6_Nd|e~^c|&EVCc`*&pzt)DL#*%ZY?-+%q!J|O|Xx41fk0Oj?eG$E0AEvf~cEy z6y>UY_A`Y()fe~s{P@)c-#G@`_|FtgeNlSY_j z1l`YpM(Etu(PLx*ep0-!e$^WA`F)(6Q2e%!7H*RxWPt*Wb@Yh{_?F-2^Q(T#XCj0` zKsX^x@IL#EYF|JWqWCXD!Z2t`0Y!;Yl%t8hqd(p33;HgR5vmSmLb>6{qWsj-1BU~? zT;YVtO~t@ky_j23Yv9W>eR;yVshFx@8AnG@^?^TM>I?f4UQCk0o?>9Z7SxD0Fwo@n zLdo)irJ^V-2?9$$niz360i~M&^}j1 zz>aftHYaqPb>rg_9Z7)Dk>V|dJ&BConwuX6GRjFQ>@`N@!QwoCUwqD*oez8l^NEC* z66hogK=%g%7bOBp9RfN8f54oAV&ooN!bO4v7Z+*MFrfj3N-2);AR$gdBLRhUjXI?S zIjR#Oql7XY$VeU91v+XIQqo*xlo+Rq42eup%%wYokdHtS8@WN%g;NTJ+jqFYM3GUs z7^S$VC*V+SLYDAE45t?WE3l8DDGB?rJr#wJPZveRcTtZTfS43d1u_#R+PxC^WG*4y zQ{f)PXBYLflVa~HcLThF5YEQ9GT9)T5))A~fr)beui|DsV&xpA3WS0Jhf)x!xMsB! zJTeJ|65Rd863z%BsY$rdaT!h;N~V}Tfi9!C zm1;-@h(;A2MMo*G3ZNHF*w?F#Vjz`6V8JDu3p4_zVD@JKkx6VyhWpCVkOUl2oP7Wg!e4pa511#s`TP9MY1xWrGwSQn$I2R$%*0(=sp z3GDnKs-Jt^_y(bF%uFDRa z&wNO|OY`XYJ zDGp&dAt4Pc<9%n(o}n>hCUCm&NJGm^{N1j(CUYrBCbxeGl|nM|yjY z1VLn&@4}mXkZVw$=jk0e(tCt>o+I|JjtqH*(6}^kqHM|A>l{IjEB@n09Fp-4iBXV9 z`@GU9lN_l{T$(>aUhU}>I_44QS4S8WX}pL8hcb9W+7z1P6V0-^vw6N=c7*i`B^4YR zj9EvXUr(tYGR?kTuiy(!KlmKOgW=citgNU6ll2M1NR6pN>p3e zrO!__rYau^ff+w};@AtTDip9r%HbJGaGm3DLsY;AG3!UWt17gL;mV2%A!GK&r4iPf zd&C&B2A;0RauXF+cm=8+l=aIyq79AwXh&WsR1W2MWd$BKq zu)L%kE>b=nr26+B@g7MG{nw`akQP!aoJ!bFK%%@iB#q}BN%VhtSulhRL!^f%8DxN0 zghT@=@}gKj?Vb^2K|6%)LZJ~9kLMjQq(Ex40-hryuU{7m217v})I(H8S-DouDgvpC z#Cp*;o~;k6!C~0JZ!p9|wvciS$>xU3{D}2;hl+xppb-*l60v+yI3@ZY^(Fm?{iEB0 zW-v}>$SF-oC@77t7d3j~$XAy6gWezuSyYr7lFJ}rM?o{71Hf}CkYugLO8r59&MH2l*SJWSXR6@9}htzUj!OD4MZtuna)|>-YFo1t>SpmZ?ufX$6 zr=mB2a(;A^-ydLs99e)40eUt>0@OT-*H-&{0VTkKP9W$DT2vt;1j`k1v~p!7u8OZW z@uhh_e?SY^!9XwvWr&NVz(-GS;`i#n@(7kEXq%dQrPL6w;N?ywE~Z^Qr&sSye5%sx z3zz|m9Q6bf*rcIC)(F8DtPtfDiTZ^-Js1mGPn6)fOCU~ifuJ6A#EuU&;kLCy(usb&d-BO2j^B#wQ zFdjg2Q$enRs^O)|N>IV29VsgB>~Q5r@Y&Pd?dN`r6oP0#Q|CHKGlkJ*&M(Fr3Z0bo zxD>~9q%iK#>S7hXj3_)5Dk$&38x1>!^Bfi6-I_lEIX~LlHVxQCRn@q{wHbGH7#&nc z)@_kR-p$ElasihHvy?E4cd4og#gn(4L_39;*{%48rI;U`MF^@o_U@_iKxD`E?H!&D zf4A<}1CD7hLlxCX7@-|Iw)5?}eAguL)f8VtyT`rZ+aaKA_mJy8IKl!B^;Fwu8eABm z_euu}ZYMEyyB9?$!ddV!9|}J&sd{LYVC#adVzQQaDtNY;cRRnG?=ZHTsD&TqB~OEM z32*q0J8oy-n&8^FD86pY=9&gh6#(1zMebmCu-la#o|JQ_mj<4q+5Un%ICy-APxAEc zcvp9KSGUlmEwBL+ppyNrZMBViDS#y_b!rF2Bj_qDp+0M2rJG>pj4%3H?oMm_21s`NFzU_R6vwa5% z=ww9ciW{M72*|QP-_B5$zJso0m#=FS!x=DJgs=ec6R=EkfX)d_-O%J7!C-{_;G-aDHSo3Z%dK-?zCEAe|5h@9Q0w@b1=DCyf8pZN-4jQH=Mea7dth z=d#=klpkvm0rSt^Ix7?A1HDlo{Cz8P#}FRbLwPUe1&?4>lCDQCKz?WSD9H124Y)&X zkaxs-XmfNF+J^z{0{>Nk|M65xH_|qL6xjhwlp_%SvkHyM(5RaD!7mX0wprs5UZ4eX zCXp@3RuwG|jQ`lie1Y+-9P7?t5kI^_xJ`X40h_%?^dr`x#etwP2K5}}iY!L~E)t02 zS2;3*&*sW;fIn(f06ukDi`-O>#C!knrov3Xhe@gvT^Kw+CDi|)RKCpddLP}KI}ZFA zpjEBlm5LMU?0h>LVW`i0n~&;x}N7 zdzoCos@-)z(gxP8UnUQ@6pC(pytAW+kX@0vhB9dqP}hbe0GUO156pJc(@3Cj05F;c z|9R^_4){-WBAr0}Me<^I_u$E7))XLo_x*qj8}%~DqDWXW;2+2L)HF);Cpp#wbKOd} z(}Qd!TNZ#U#JjvprU7x}T0$CmLpP?x$EO6*8`4t(29w?9_`HCrBU(+<6(k1cvaZp@ zz$8Ox&CKi|u)b}w>>zsM;V-BV@moKKFJsxk2(kl8KzO&(Wp{TWTTJ-Y?wc${(7N?5WC-3h9oaJkm5Rl+=!$z* z+?zE=uscb>{68;ExN&9uRB6Kc`B#!AY+h0|MVfHqs=A8HrU~|@1r_>KS;D&6(aE!f zr6qV>$hf(Hj4WY&eK=c|U=1xV3t`|Yrvb7h3G)iGCkfY95EgP3BDV@I(eE9+;0EW6a2S6ez`Qkd&B3ZP80A{pk~PW&-X6C%UlEb6+?;MFWy>+*S|74eM01D)l0^Jfjk|L|Zn-Usf@v*=Z}{`~1f)@yguZtEPFi4Mijym(!h zj>5oU4gpZ|hZ3hhzc~-bMbMEI0cqZsFP8~vSORwGm!G{6yEL#xgjWq$(=JGtHRC|wMy=!vmwfAur;N&hST2TS`Tev!Cqk!A35^5 z>#@HCGqN`9E3V2Vxqnw^IJMCB)M|A&et^yg82RepY|*K$ zL#87oG;Hr?RE~}<+^B{}w$KP_PnG7Vfkg!=s0OaCf*q8!!;wqbOTsZ(q5{V`t`*gl zY%-MU#q~!mc^wVmor+4mQmb-gV~9d|$`EQ;C$79xU!hi*Fm(x)qlT-h7CRp4vg^3m zHuee8o*vYq4w6RY2auv4h+=m&_WV@WXreC}wZlRR|0#8tZ^sohaWyVVQ8LVA&6OH# zfTG@^*1{<=ufb_tJdIpdWc_)SDK0r}pT{LvYAw0fi5d!x0BMz^Rnb{FHgTepV6!(m ziP%*yY#Z33MAEDlNl4}U)TiLN_~lgz_)q-`4Ohn-MrLC-d>!pJ7cRlGx=W;rz3K89 zh3*z4T9Z`|H_TnI_!=Ot**$#QvZagW&#AA~sW@n`TAHPRYYyE^O4UepRqgBr%X$&N~?BZHzX327<3yLF~OA4#Sh0fF02zGdS#+v zF~;kj9t@cA*)67#X%-msxQ7#q8qg(`%6Q#^kHUht$D&cS*`3p+9<~o1KEw{8mJFrL zUm=nS(=ExQ5oMQf-0O<+L+@8owP1$I5f3-CvE~pHzUpE9kV6kj#6tmBNO5iYWJ9Fv zsfTokk?4pp+0z~94x%jMkaN(TDUj@xzP~#l*zBPD(1Gl~Pu_@n)j z7t>H328qE1L+`-ZSJGTW5LF?qwzC7QDg;qKR)l3D>L5D%yK=}Vt^`AYswmJr z!1m`zX-$y1Yl80&p*3A2{9uZ#?5Dm3vMOvVovJ8M-H(Kz>pD8RL?i@H?pzwlnh-p6 zb9H(`aCmcZURpv>G?aL0&x(SvjNsWuyg_DMM)1ttb0=g3@*p1CclF+p9 zZ30;s0=-p(0LI5>1lA{aEvHTGmDrjOoRYDU#A!3Ci1QTaWkL{tu5~%0C96sxWJ+9P zH6PI1Jj9Q9HHR!hfV@`6v3}}=cD_YTYFy2|e3tPzXIe2HaCostXv(XeuNMbAb*oG5Ppy4U{2} z3LKLv5(Hda(j+2_qSS2Z0w9&tG?5yqXlF{Hgt(Hz-SmV(1uD_|0|fHoKfGUhqoGFr?E&KJXH$49RQ6lVOc7Vh@?U0JsRyBCVeJQkkur_ zm7qvjsZpdts6=3oA5EkVW{u%Wq^A!m>WbV*CJ;KZ3u#1%h{QpMA*T{4 zkI0}#69=uvthMMWXa~9z&)sv^aq95DmNq{FsLcc3B|hDG!#rdY z2_zvkqN{6^9xQ13Bm~3+J7%1_x>Z1cwFSumG8tJ#1?ilFGVo zD0`sP#H!x*Xiv}uS6!O%Ajl4OgJ7qGu--wQoC zJ#qy>Pq)@RA|$%IJP4uuP@?kM*5`W)L>=kTGZVPvfjU3rJkt}FC{NjtNEE1S$|?Av zNGcaG#N0C;2gqDz@R6(kmqnQAw zgog5(&?xka#KcH>AduJNqPucXK7|12p(sFdNYu#avJVsJ7>Cq@B0nNG3V`RDfPToa zZn0{j2hi*p71j=7wE=fsigp`ah5&co>8^+nMdx>GFhk9v9I_7{I;aA_U~neLvbB%~ z0mhw@<{czVh)((%5(c%SK=@5rfPySQ;=JBL9ge2M2|i88={VUj2zh-3%QP&E6WM-Yq#(gD8)@LrJ@ zU1Sdd!BbqGdH_}mT~Z414Wt61mqdhn%0b0V1q`GD^njvEW*g%fiT#wwhFujts-hj> z`wK>?1{~5siHKgyVVbfD?SKIHYwLvae(Bw(S91X-?(}n;*ki|m&NuQR?oR&Y`f1@{jN?(a7&TCr*K<}E8%T+=WWw$Hu3^}Hzl~Qec=0(f%}_R!Tl<@ z)ABqZ`F~h&r$zq2ayr{NfOEe;pfka7dN-XJ^4P0*=41%Uzus!GI$u^bqaN1Hn-YdkV6ONvC*D6eu#aGH@q zM-BO4lZPP}#3|(;lyBYt=!@U^?|tvSi?_54pZM7ye&vzdY70CC91i1jZ5;78zw`5d zdU~jEC^7K%Lo0Dm5vG3WZJkQJMn`FX^uG_CFFijz@a;nzH*DO9w~Q+Fba4BuH-^|y z>3QWs;_Rz;Y^u}n);*jSUh-E%d}!8rcELG+LAk)rJAZ^h6W(oACr()Z@sKi90u|-F za{+X`RkThCJ6%I6RMZP9Q8D8Ts#A;e;+*oWH=JPM`dOMFwd2hT&jsIJ_Am z1;V-kZP5}chECydqhN5j=Oiv+QB#CJ@8q^m#8#Xtl$b z=YWA)kn=&-LB^Z{p0Qy5p1l4?c%26$`g#8ayh{r+@VI;rgP4mZId6c9SFP4?Q0?LY zv{pzI7z8zeVSEiH+R=>L!3coiIUl@0!&dpE#;L;jTcnrfY1@>&(v!p=*$&OYLL&WA3<&!-Bk(!+`9mxqSVhe2lN6TgN{ zasd&w&d2wf$}l@=P(eLz6FIgYL=odf4pc)-qc=>gtG zs~xmD7tneaJ^VYm^VY6gw_*K;4Y&R3JQtF#uXt&ubMBymX~RTgU3ocO1gceh-TL(# zHf~@WtQ-IK`~}}w-5}4-VKTYXo=c4ce{qNxU(YwNjn<~?e}2IuM5%UMh+6L)JlLsY zns;Fo;<&}bk@Xw+hT)ByHg4X0<3CMq})|NZo zy`ZI4l3bykppaKO*kNZTx*tP(!*jloZBn*4_aZQ4+UI9!K*>p*A>cV1Hj?X`H*H~C z_*Um-+^l2GC`+K%_+VZc`vlq#3q6ivxKM&y&X%ogtNoFmou^(lR&kCOQt~r2cMC1$ z@bFBEe&G$9_@#5Tvb zY{d_h*w*;N6O=f;>X9az)pq^xNFmDFB${mNmMz=(wh?@6elt}J$2*-kd}9N4|Np@1 z2OR}n>Z(J0r>v51No<32XbrY`Wb4r(yi044iH0Vf_&{&}yYFIhUdKQg^Uz)IRl`53 z57h`t7dPW#Z9JH+#qg@dzW#UlyG}>DhJiF@TDq)?$Yw|@TltntLSw`FAC4B|DyZ)& z?e>B81L^_uaJ;Jub=b;(iRk)l{60_;MsB|KSDKoW&Tg(M0I5~M6!R+p&a*s;@` z#Ich|RI&B`-nb`D>_oi~61X4T>aWes5rw z4(+n;QH3UbfBR{6T5BsMF=s}4M%pr(?T!24AHxH!bm^b{*B)h$71B;r>GY{nZLF<7 z8)nnepwK$qm?uR0(Og|0esbjsge|*`UHe1#Ymjc^ZO#HzWyQ4VVbhJj7q!+Q#;>qF zp(Lj4zxv>QEKKc(;2{SO7C#EUu-JP0aG!2AwVgn34?v1Lu(f7 zVYy4eYnx{2MGkfs7JBjDMgfNFA_x5k6i(G=eM9^=mW;)J8--|J`kFi;egQHZ79TOs zJ@7ypz{M=oYLVj_`HR0ITR(N`a`BTBxK1n<=l74R12~J zK%~3PPqFcUL`}SzBR&;i16Y}AJSM!6SDczmQ-Y6B>28s>Q3dDd(Wg+a1ppW1J}B3) zU;$XsNW_Qp!AfEQegPn*0F5&bWQXL#Ldyb7iR;mTx8no118@ai0qNk=?P%`XL2t}K zV%X3CUf2Rkxz&U{A{8JENX6XnK*&+~mE$(pqRGPOf+}S`Fl7zO$j?|8Fbg1p{S)&; zNxu9AM~wG7<0~k$fKZ5f1fJxdbIdfqrn$$}m`xCay#)j@=41{;S$)hg-K&Lv)%)cG z57Z~p8XYZ-VPf`S%09<50xgi`xcuoX>~QV>7J*!cj_iL;E> z!N|BDpp?A;(CP#I44UwOKkEJZfhEHzrT8hwL@&z-LQ(H$_qh+`1|SsOejd8L-eRgU zz5vi*9d3+yY5Bki^&v z2ib#t_0v2|LS|U*05M7RAdoSUgg}N%BH2Ejh(sU*7=x|RS3hbJ2{nO`SG%nHB#qo( z;H42K(TKhC5?zx*9U>%68c{$a#3Jseioh2vPY3ImgaKH1a2StpEbBAyNdMVy!9Z>f zNdvAkS%$XyWr;5CK{R6Q+e-xF1CqycVS*Tgt#)T-VGd_$#sgp;&4VP8UnG+BpFPul zZ_b)EgfA@fI;MQ^OX}*+Kl5i2Wv_LQv3q}rfRgt1j>4f(l3XpJgb8?&Oadf1ePS?^ zES);#PQfH5yx8{h)9h65dQb_t1(r=HsTWW};6kcy07`%Zr?UudSh{91Ngm$+{!F6p z-m{wu0GtGuw6zuq7z4ooODGa&T|O*PfhA%4dmj{>(N^zel7}G2yCjqFJ*3mJTixF$ zp``6pTPtgIKbLM&NwFW5kf`cUCN0eeZxLj&5VO$#9x`FG^yry^$z z4KzZ3e(vhj_$BjW29Zh3T`SY_h)nX6m&_SXCi61{ne5(Jj1iR$0P&H@^aM#J_g3c* zB9j>zl1#RmWP-UjWiXiBB|yXrCezEse|y1Xv6%MIK}fw-jP&}dwe6OcE^C4W;IfJ-Vz;F7-@#3ejKe_%{l z^34EPQZ^En)DOdwj1jTq8^y!0 zYCX`Oos*Y~)x`okv$Gn@~XI3ymU_XC*zQP*7NCx91lVtBTURg^AMaxbb)$uN#0*^al!hTDH^r zW`W&aSX5YCT*69tF)L(tC10z=!WL^|twu{TmF6eh#~*+Eu{ukga)38?wlsJDc(W*1 zSX6|9;MGCQC)^X|SsUrTn2i%Q`6 z7e$3d_JRT|w_@cnrv%GnDBXPW#7R-uc;>Zb<_3sJZPrcq&( zWqG|6Tdc{cXr;m@Pp}gjdCeYUj~b8EvATZhPI7_j)MDxW?5`@|ymVdIMv#%cX3gq6 zVVl|;o(tpr5vy?i07~kpy`}q;PxciTqov8|JiG>A7XedNW+}XuRaRj17(1qV{8pNc z79Cil81x4YG&i?U^Du`K)65@=@`R&qQIco&q^G5)rpcnm9w9&35q4OX z#HecFD5*Iv(^PZyRWwUBtqa4X2*Oxue{v3NK61=ckTofyn#uvSMeXiE!7f^y-znFV zS*D8?f74P~Dob{z`U>*HdQ)Sa6;Fdv*P^s2-Pb)OJKu$)EQ@8Zbe85$O-W5oVo7>p z9=bxh%9>cC(SXrNk1aod$D@^Z4^YMehA{_SyYv7xk+ds|-%LzMhsQ^c968(sha0_p ziYK#``4?uFuD>PfiZ)6~A=9pe#Dw?+G}DbEhYvS3H8wUhHZeL%bnjJgAOBcKk<(dSV?2?YJ~?@*AO zn!-|C$w^5G3Gpnx|L#?*5>bVwMx{|V%WL#5Fx_YoZHS56OhGu;q@^Z{O7H|0Z`{3# zuj z{rLf-6(i=l$8#hyKF77QeV<-L$wcWjTjgH4YSqdWY=t}PVHCCDUCXJ}%my>d@K2p< zJw?=2&Xp@xEL(I--2^-cqIJINH$5Z${L`;KIVTz=9!&!6D^@IDG<{ag;<`vtDSkj{ zx!y{ZK}*0Ry3m?`qW_8-@rEd|68i6)J`0g&%&m117)mbjWu9(Kewy7VlGiUyFE*Fb4Snwe_ag zE4qT3qloswe=Lnwqcv&8g=(YjEXK89U(1tE;w9x0_F9!zh6T9+s?R6*)fFn~{`U{M z&PQ9K*(`&quf({r%GPgs5=M;!_?L1(X}wV{yGE2D2lapd45>0>UbG^MDYFKsp=Zs? zEM=vdojD;u|I?FYE4raqrUg}<3R#qOvQHK7x znzcG>O_t~|GKUgjUB*jj%j?3_tm$)#Fq5GeTg%Ff@)&CjpUtvvtQKWZzyJPSS7eu~ z2z?bzLvH$9Kmsozaixs>>Wi5jGdm07Ss19=ClH^|)&22Z5RaZd2eTxU7nhWlu4QZ8 zW#wgMF_su*wm}tft@-qm_kY(lxohCf+0oN)!+Z?I#ftDlD=(`sJ#oSP_y417T9@m> zD$HJlD8+6}y`)it#&T9}fy)DMf->w7biV)b)i+B>9V?$cOS-ZB3m$^v1GDe9}XX^!jiC;jR+@-z$ z@s+EVtJ)9N7XerLOG$58d3gn^V3lf&bN2jA&%fW*sdP^4a{d0}t5>dE4Y{iS<00zA zwR+iF_{l5!%gbV7?yP;{J)}MHi)IkKM1tX0osNHb`tWwDOn=4t9S^m<{=@gtvubBV zm-F|RAaUjD)T;y6u0puG8y%>2+PZXnp?=|caz%%))BJ?#2d0F0=pY?puSTc%!YaO?WDO~&FBqx^=Z6)byoD$-7_Sq8 zq&b|fueVhB(Y2-6CBdBMYflQec1gx%Cyf)w*>Md-W#Tn!x#4K7 z^y0Nz>@F-Su!F6!(w6j>$FwPIH zopnIJ=4R}ralNz+?+uD6iddnefbcq3tlY23eO{tD+4kTnABxrv{lr?>{tE2{KqlKJ zAa63koC9=;SB+z+bRVVxkYjU83oIitc)7Ny*iI#hT60-WpUKwWpoaEAIeSC{llh?( zfR`hkIq;k9_Cn%v+V11bqU{Eo2bI<&gL){&AabSBPRHe~1ld&BiM>UHuMDXQ z_cNYY!UN0}u!V{;O7~5G(+{gqOKh89**adt1fV>AUIT*;-CY-Rd*@6PmRs=L0$kZwy@&l-8|ZfxN+=z3ovfy$rX(kqm{yG=huLA)WcaZ*y(GT$uwJ{MdoL^tSk=y% zbZVC9Lyxr;HRN|UbXe)9%)r;Hl z@hKFQ9OfWp_fXot*4on6Ey@G-CFpA9>FI!NF09{3hzEJqOXC4ayX{L)tU$%VAWdnh z9!_Qn-SKx5>*Wd7ZvgENl)E7=Nd*`g#r(jM@@EP*!rq-&q7*4^+57%xe?$&a-AK-w~D5c&byX9I$E z++fg_&@A{|;5q-eE1#+_toS&)){nEVgR@1Sne5B}w%6|`&?e73r2Xg!q^&&>PoV8y z;YZr@+Wkq}pUjE0%Z8HnqV_?gEvWf($-YF*{6qIqKhU0cY&dB5nL!E2P?i8^-w}wj zYewX3VrJI|0PWhrpuO?POMaluTd%i0V@4a2l_hBdRK9szK-6Ys&WePxt@{sSYWcEp z|MvU0tX;iYz_vj3k3KY6yJ|$%)`+$F>OK>-1*H?=Tf6l4=8g#4cxSI!ZNj#|bHMhl zQDA#DThq5%c7lZM_@J4{En#k{<=NbGJSAq7SuSs11(V@$`FVKGZ%@9vHRfX6?TWvNj(BYSYdOf7t%+*`__!61LaX?s)LAhfh%$^(83Z$J!V?uW(*+{HnF`}?B<_x9o-z`cG_P(*=c4a`^ z{?W*|-C7(7w-1dKxA)}_$L%%a!R?wrxP5L+xLr6Lx7Upkx3>kt?eC8Vw~L13_JiZW z?JWUtJ8gWpoi_}(+sA|3>jU6+$+&R)EiA6ny0$-Vzc3EmE*y^A8^?y*8w29@_eRF; zjN!PQGXicG2f*!bkBHkf0daffXt;ejJpgXQF&W)rRX-4I7Z0KB*)NYo+cm)XA+){l zuScTo%%QX$``4qx7D{j^AdaM%co8?9@)2UO(51@@yD|EU)(Zo)=nBPYcCiVYZu%)9@fs9 zH5S%RSTT0i-i3*J6xPmOTf5K4+7DC&XYGYGgIIe%uG0BtLM#Xi-x5m zB+EGVWmwv*r`$OGbh=$>*8$hc8SU(uvmLC1pH(|}v!%t-%Gwl&=~$;$PAR9=c6Nrf z^D{cc6v(i1Sn*U_tU}D%W-+x{+O22US)=1DJ8SKLgtZ09xi;RaVM|7vrOgR#r(l+y zmS!zyTxUBv&Yta1J6z{FItllHyV*z#@zwCLWDy^ZzCe1S>O@bl5N9aPlqlmHO;wmqzFDqISZ=j>5DM9183w{$|-i* zICWZuM^51p`4rlro}0;Ii;fuET>t!LH?*`l(Py|ULi4&iEmZmjqG_-OhH3Y z*YmSs9hP&nrO1M6si-<@r_NN*@Uxthh>_88j#|jlYQ-oc1?)68`){z6a*p(b$d2Qt zsM@Z;Bi6y>DC;<KTHW}bDq=YmaypdS zzWoeFvx|n`*$ysh5q6H#5M-??q^ze!4OG$0G;+kK>5!G}u(T>>lTgoxzBZa*h2^*GetjSSxjNCjmj}^G{i_6!GCr_&8 zKKXVm!>v&uZ-F05o|1n9=_Y$g#YS`pjdsz+91n&9SNIt>5|UF;>)zg@VG;DjEsY!OUBbopI7IK21l-;h~zNNPCui4hLD` zb?nlk{dT46HlZX(xhqhDik`tp#eotu#Tw+F6c}`&k+GW&Cy`OoC@5rw*H9RSX?sHD zCYZ%2MDyV7d72KaT-$j3dvE>f!;e1t@aKR3!qEykFpX2m1q1d1B;o)(N|7cvHfU9w zJJ7CZmv#l^jJD2*PVGORuE^*4mI9@a7dcHMlyV;^DP7k>?nzI}Iw@Xw`?g~v*%t7f~( zv5E0SXGrJ7OIkg8j+Kx)R(ge;qztEL>mg+w*%~8PthjVqIwxP!Kd3ArojoNOYY>G_ zu}M*(>?9VWjZ);CEuB+g9cq=*o3c7kNyo*NY!@C^v5(H3hjkcisF;39ucE5-3PE9< zHa~MAiHC}38LP2mRfxhzNI?=lLL>Gz7C!bEQbW;~^u49<(@EVZRMKWfwx(b162x{rY!pl<*-Nu7 zX-{E4Dt3{e!-Xh4gm`*2(#fC`XTTx)=%tuTH-AEvDfX&V*7T4N9g`QU9L10R*`xov zC{Uv;xza*g2f$;h06|sY0LLV5#k_0n7{J4Qj^tEukRl+^0tlixKIAM-QC578SrfCn z3fj;JBIRqFra7$xWvwj+&6FngDMAiZLZF}!!qHq7(xG6oYq3BXJ$uA^ZsI-Ara%}H zCWplQgm(>TJ_m7{pa@JYQjGjoJ!Hn=0R1DS{LG8FOp02>`i0IVzegGKF9E7KWZ7g6LsFHFf zh!YoE&bZH>!AuoG&2k=ejs3moK_Oug6_BmxB3*=!f~Ek5=P|DdI3$A>=ut3aEO7bU zc|s@;ToOJF5Izx6s~v8dnFQeJ=LiQ?L7;wg$Dl_QV;sZD4+TlkDv*t#0jSUA#H;{r zwDafAofpVRjSvDkOMA!}z-|cY&Ik?&C#kQklKo_00aQIRApAnbl#Wn{=>q;_L#hBN z8C4NW5(IdGQ$gkF`68D{gyXT1ti^>I4)jyoIA%|TJJcN%n<>JWh^BzWre6e<7!al~ zH;1+?U@>+2q?L1e2R*nhA~=eW%;(1A!%a~eG&CBSAcvpVz_a+j^iYZ}4MD8tk)|$1 zrz#YJb(~WmjUmt>A)1})7npeA!mD^K$P((A!TJ?y`19ZtJSS(>Hs|xF8}`(c<|sLR zx%uT=>(4&Zenz}_(8kpH#9c)9is1G0c(RF5ZnV|!s-Q_h(jzfjZoy8VzABmvLzA9E z`F24cBb4d@)X+@B2T>$1&^9-H>x{+hDkduxDtzN-w80q3^RHveQ$f-8M_&~qlR^d2 z2q6N1gK#9zHwx?uIL*1eRXhxesE^gO!Pae z)u|s}PXr~|Q7KZ3HMynrCb+Sr;?Zxs0t7|?a!P3f2cD|%AfsxkWor#W2typODb%VT z6>n(FT2ngp-`xkzmLf}WKen{4Ed@W&3SS}GprHIT(30ZiX`T9sBD4pC7%RCUB50A7>fmMCo_7P?gtRAR!*YRRdd@c>X`JYs z2x8TC3TnJc`)P$2=5{>X@6?CO1H^u_4JY`C37uh=^cTxOjI8v!R}xC;BB-2fh3+Q8 z6LJ!0fKRl?FAp~}QM4miYhZO&)=q3M1PVu9(tcM?&?^0Pk~ARG z)QdwUg32Ui+Bzp(G8#&;{kY_YP)p~5;3YvOM(OG-p5@N`7H~8SL~Oi3f@pv%)Br@c z^ok&TBnQZB1rCM+g|$tk)bXsShfL$_4Eacspx{i}sF&%^I04y^&MB9)1~d~VaD`4f zGUI@#)M*}KX@R5_+^n~g;7w5-p%aKn^hlR1iK~s$zxg#i(xTzl^avXLnjXKV$FJ!T zAT*dBFJ63S%=Gx7#*B}< zPXFcj@Ui5+C*Jy_@bTW~{s?@m|MPLJ`kB^ln-uR>O@!&uD;p0uh$NY-gZ9Dhw zWBZ)Dwp3RZjKq&e-x|)3d#kbdMyxuFAIn?5IgB5-mImj?bsgV*!=E2_6pzA>o6q_2 z<9i!|^5eRfeEhg=WPW_i$B(-O-v{T%hC%$eb5wq8_3`7D(fIKPe*Cz8bbj3I;m7@@ zqw(YGUVhv*IzK+-<;VBLqUXr`Xs1<5!H-);;m5!A@Z*D{@Z*afeq1*?KR)B($1S7r z;|m^s+&daS{tft%^3WmmdP9A~)P~885lxo*84YeaLEISGXwX?&Ta!|6G}Np0lN+2k zS4@9xjdVnq&TKS=;9Dvj(-7I{YHDn1Y-|c`QtMd*ub*z}3G|3pJr1MV5yqwU_cYp1eP-Jxt(w(%{rq+(D2Z#mDO zur=UjEOn2v%kw?k%C_j6DbB}|%(?TH^9p1XToCFLF}7}DTi9k*uH0D8yPi0I{)zKs zY>*gf;vT6Ga_D?RXoIV9&z{|Tc5$ykp-tJ0XW5hG8Bmo7pDh`?y%JpeAvW=(!F!>Zg`(V_W$aWi#Jof$;$;LNe+uZZ?_6 z!%bN3p#>8~)EJsr2UIogV#DgP$*4sG>R4Y|ut7pS2n0u3vS5MrpJ zx}BMAKtjBR1_n7zOBO~ugp8d#6t9%JS%EpF24h3kjm#l~WNRQz?ycLl(&$h&lT%8K zR*g2`raCMRLQKIhWZO6zom2^f)wCjql_AnZX-ZoIhb~3*3+Yj7ST&ZysGliONDB`n z#JmQn14)-s!>h$G;vEB6vcgSs3$A z?Qu`3c5l2#^fq==kWP|A`W}LTRo-(C4Gr>>BymMZ8+_evY}@LqG&u^b_iUimJ=(88 z6(?B^S$(?{9qei!iEp3psoo=Q(+X{3~I zkgHSDK5wN#y_NaNxvMu;lSaNlUoRE9kd_c>J-UMgTK%Qb1yY!;r-d@gLy8nc3!L4$ zMe$nqY31vwMog@SVm=m^4q!Y5kW|)-!A3U=%M2tk0WC%|)k{b#7{5mKMz)dPqikU7 zSrx}Z*eQ{%6xnxNHqac}pf@&PjCxwZE3d3~R#Bps(1AQgo}n2%=M`ktq?d0{*7K?X zx*<@yfYsR+r8x{*<;Wr*{OjhdT3=PQ?ljhW>Goi{JcYc_PBxzuFFA5!h}%jPTc-#Y zNV9(O1hw!`F%B>IIu0>f*Sd-0nawA`5hqC4*u060$HA{|Xp43ImFP6u`+zK!L2FjZ z3DFvXrCBAVVqC~o2|iJ9xRV?a-cnmAqAggJvW`{i6|}j5wYa^){5ZN0?;KXm%~q3= zyn^JEW)9=7xcj)XNUj^RZt1IJ>j5qN2Q_92X9l^`leYh4L05h?8ms;zlE+Wm~{! z5~h_$=?Io}y^ioB{IJo4F+@W_Bi*=0z*LPTYwR`9?AZ9vgeM%Tg)lu0Lmg4XacXSH zAZZ1TkTh$;=%~Ve8$ZOhG%q$NX5jY!H4sQyOq!Spww_=hH{w6g4%?+-rsv>4 zZR?gT;HQxDI?##ukL^``63TW76>>cY%w!St$9Hp~!1J}S*~5pbkl?r%ey{{yR}vse zz##B*3h?u|;?cx6W1|d#Cdsk$p@RC@5M>}akC5_&OAsIR_b@5fCV~W06_Qo-V(|(| z<{&7ftQv&WCn&+zVe+6dgu3`9f>8xNQKpNABN|cPxoamOlgE3a4&l23T?8lea`3{o z$0B5EVUIr{5|0Ff@XKUIpA0bPyzvC&Bzpk^yvBS&yw*xW{{6LB#_-9s#2o zLy9<7${45NKJlOlF(gJ)A*)7H$SqJJ)kb36i;YrBft1WvOW2|f*Yh(LRZ3EiG-w6@j@=ml*D(mC6qR5qCy7ku|lmpI#n_Ko5lfn z9keUKBwQ@|0|jYrG98e@PC%Z-L1fECc2B5Pz!w-l!c&h{GOuhf)IC8okw6cg$^py+dxCP|~6c5VwybQ5_A znDeMr1oCjqj=CT}iIXb!pV3gpFsHZ&wz*j&AMs&dvmfz!#XQ_e(?0E85e^E3<3Kp9 z1bB##YOTuJfJ|r)5@D=6G9EH_7l|IYA3RBFN!35=mpmBVxQGF!0HOaTMSslp<4FYF-mV z#ueZY;fe?H2rPuKsTmw%x+!4@PluO91vn9a;PNNJ6~S(#kmG(kxO>kAJhnc3^OFR< zNp2+aAoCm6)0kA&sl;rAm!uGkB0QwqRdBtZg6jm)u!NU5-<7AiI5@{#)`VQ>=a?SUlYu*610a2~yqGNq^{;Z7DbW6ynb+SqvBCZVqOmlJ0x7R?DJ7wcE(yXmQ=yKKRrLU!NyMz2q^Yf_R!ZTY zeNAUy)7jT_rqp~*XPAM$rZWMCK9u>I&S(jZ!0>B28^m#6(-~Ivyd3v6o$>!ibVf;3 zrAa^Bba>+7s3YvCo_5z_wpfc@yf`*8mN&WaMbqJ^!yGqY9|=FAA5B`U$ZsQJm8OaK zTswT^@R5)seYpSm=+RY+7vHs*FV0WFVO& zyatRdn>iMnm7 zVN^KtSW!`gQkks! zx~Ef+n5ZZx6I4KfSA~T>c?)?(23Yk?Q4g|Ei7RkD1;_$6ZbyfQQ(GyaRurIoAgQO0 zAZc?EyL5nV(5G$8tWcXS?WuZ}!q=g|rm1PK) zeR67n78V*B78z#P@aQ74$1#TA)uQ zIc7t{`iqsBVhY9%cEcAKlOV+*Me7N?s#jK;q-em%npg{r3Gh#Wl(Atw1@m3frbi6h z;ITp8UI4*}u!t~~jAC)(vcDAVbrM1$1yMqRaz5PwB$z#!IvTKaB_S zs)({Y%pO)?ObxR^#t4g5WA$Yzrd*##PHygJb{kdE7G}X4ONn*IB_2D5*C(asNTYax zn5O_B7!?)qMj zGJ8Y;DOAJUvCEDgJ%*$dWLU*bSrd95g$!yN0x?UNJ1zsdu*4(8Sh-8Qb;&<_6xG)X zDQlRP3|-1GgI+jTM=QS}yMeUX3v4*5T2L@4%pyeHQAplFmaKArb>TQ+f@2DiVXBaG z*``WC(%4H`H8B84WdVt51@`bTMTjz+UU*dg%)+rNW(rQYiR!?97@a98uxIcB7~LT*7u1}lBpwq~%&y`@w%tA@ z%%(!#VslR^LIu@hx{&5L2`lx|!5(-6amw2jPP8cy53%V}$QkvRT-Xukh3y3#K3EHl zC>w)Jm`$5hbo7|zm_bWgyrfU`5}oR>TkWBRI$oZZFx?hr3$ zcbHOPHh1_msn7FxdgLs2TOoR05!%9RJls8_7;zppD3`&8CDq zR}^E=(MZwgWUH_Z2kAskRG~2ulHoQ>I3}T^I$DR36urq=fz>{tP>&=fmhb^vR7nYq zUF8@(=Aw0lPb6v-2^o&oC@DdcNj>yh!|A6GyNUxcR{Uc`Lre`vzfFZ08iTT!kg$3s z(79+T3q<*9?nZN(yAOIAu(qODWym+j)V~D!ek$b*Q2LF!lfYDGw9emE0(&HaAP9G z`Y~3;U%L&0IL#t_R3U~6<9UWcHQYS~hwQ~@8ibwS7#TZ{fb9g72E@*ti-Tfk>B!ib z^e1EIsX^FDd#@yQ(wsz4c`B9NPQXw3~9H(IG8z@naD5t`TJFE{X-qG87QAt%pi|7U%^{RrVDDXU>vE#Jmf{^aJ03;)RjIf`w*% zL8PR<-$W@Q(jn>#tA)Ink0p_sj7g9w5Y{X}6iZJ_K{#e_F@F<~lJ)@)sCku3LObHpoar}t_Y`7Ob95QzFYK`%7jJ{iKH1PB;!HPr&V%>r;6+dC*3 zLP3h+Vb@AgKm;8!-O4sx_cjX+c_}Ta$f&^N846mk0xO6y%}$bmKskPh!Yhu~mc1Yg zuli6RLrAPHgt?b=E6PRch;BZRl+FRW1qDmPI113%H#frd5NV1Q$JQgvp&o|Bbt47F zEqLqWMGI-#v({@usQ_3hDY;20&?2Y>At`v1&{PP6#AwPj)p~_%g|PX6c;QqqC)~y< zLUKY%gE@;xvsFACl6VQ-Sh)thrl6Q;XwEf~g(#t?1k@YEg2G=h`B8R;IM%omuWQ5U8YySIPloXW-3j6=Z2bs$^NJlOM~1EyKYMAzlO}bp(xmQe+k#c8_2T z8uf&{q9zpsraDYP(mm>^e3LFLv0COM9$>v;q96f@*xZAvi0~o7hB{-wgGQG>3~=uwP`j$G5QQ(TI2_&3_plso_Q6{ z*ibe6F-}I;zEUSVQ>F~0V3(*Lh z)&$LhRO!Wto9RR&6ID{(tONj%y&F$mgv~u$&fyBe?yG)EB~+B!Zl+g3KRw%p z)RH#Pk+D*c6SwKf5=jlhU2aO@P7`~W9Z-5ZScr$~P^s9omBj+FAVmXT9AAZ0XrVzU zq=lnzLTp-+5E4maq;3oC7CTr=fi5u77Ca(CE);E3AhkgkEr_53!XS-RqmrzVJ~HmU zXAqW}!srm{MS?(9*k4q*22dGp(rLAaPUTLxP%sqOiKL1Omm}a8HPG`v zr5ZScugg)zu<*VJ3=0pM!oGa~{bb&V1WTbsMi%5k!&$_@CNQ5QQq(`h4nT)L6N-$b z=z_3t9^u6CZaFl=$XnDHX7u7)@pUM^c2CC(*2~kOqC!FhXc39`O<4HVi13Jr`S8cf zpsKxJx&y%oV$iMV#!xsN9uXcM9}q(SZe$33YD5TaSR52Wt4D^=v_Ba_zdLRS-8eo7 zT{CV7T|7<*ojP6!ePrAax_g`uS~^|`P5dJubk6@{2t7DX2(29tgyxI~LgU5*q0`0- zp8SQYX>Xw_IDlpq7^S))PdLneeK zyg53AZj=!E#8@D7wS>^y#{{9VCWPKIB7{yiAvAIn2rctK=)zGU^nMS7W{eD>RUQbn zj|`z%0>uEK_K_g;E`JEk2nL~3{2(-c1PDFk523ZeA@trs5c=>~AatD{gx)&>gr<2R zbg~~h4ujBzCWI~=5keNBJB-VYTkwI7 zFO@jszRMFXGx}_fLy1-5v?XyrzdTu#(Bfi+#5zdOPiZ=Cg9Owp`R?VY%esR~SVW1` z&dU=~g2%e6u*8QWQu@ZWYf;ytdqR7iv2n3T5aKhw(fH?U;n%dDYu9?F_k{KGSZ)11 z8?anMyO*kWe044Cn%;A*XGV_=U%BY3d+6j}wQ&NaX7q&jGA!`mQ`+@gt<}{200m~^ zW9V6Ain?lQYij@RH7hJfK%B+(%rDwlT~l4N5&zWe{PdcNZz53w-zJsqf{*!TearVy(}}$Ol*>?c2NsM}4+#+w$X{slr~A(8*&}e0e=?$sMKQ>up>Ax@StyBvD0! zTrrjiv z>HPAo+qZ4U!Ph5yCiF~(0!v)jlK!Oa_;AP0S9&6QrogCidt69d=n{SYHk>gw{;?;# zXKF8tbH}DFUWlQFp+(mCQf*Q04xGHvcm1L#tY;cIo7TT-4!)#6%95U?OO`BMvUKTk zoW0q3?*~0rQQ@h*7>{vjJk7a)^u#T(E>V{b%&*+FYxjZf9;GK5dek)c%7sG50O_EA z*iz@Byj^?toa$jcF}(xmz*PKzA%3$_pF>TQo&fUBB{0-!ydk1>Z zktC<2X$uyTQ_50f$x^-X;akDlI{y{reLTS%#C`pVm(hAm}FbhxfUooi9b zzJ{LO84$a1ZON*{e5~E%u1-eW*+0+&*=ZLnlEbTKDrC#Zs1e3}&<0=p#v}qtm z)R(*?&-l{NW%{N|y;0DkTw_=Hv9KmRCoPqy>Wdc&W0qyw^6&jO#xp75SB)z|4SvQw z8$$T0%iE}H;4=MDmuXp!U-jBdS$2iPB7StdX*GW1(TN%?5RIWMW6Rkx_c6!6U+T4b z3|}$2P0cr&8Z%SzvyN$Lt8Pb=*p|6g{JZ0Wf9qADmS0n@LT$HHe7&i$gybNdHV3WD zml?~K;a^)Ec!T|-mkU2oDHJdqLc7|i=TmPR^sj*h3#H$dW%}}eKpFl0FVNi#Hux3R zjo(8>yILDv)cC1rUH8h{QB}TdVEM9T%a<+BcPI|yw|E~&mzaZHrUD_28o7^=lAbnq znL;k1vXFlY^7=2YU6l?o2Zy-0DuRA26E{kzjhY>`v8L&Z7okYMu(E7%^V7TOqd^Yi2uwH;?RDMpWdY3H#WY6 zf$&Bh%9RGA5~3`frMc7RLpyXo;s|wUzx$}`EA|!p663Lv;Ve^wrNPL73*^0cx*(~q z`kX{R`t?^|atLz#T4|#q)Z+9LRg#25(u`Y|v*p@~|3SUkOr;3 zA=hk{kTiE{`dy14t|xRs+WpZ7og{0KvZ1)TL(4$dhNbo4S5H^mx?=hA4o8GT|JO?p zVzTci>>4&euu=vym|aT&HN$U_K$sUR%2ZkU?{I`c8$-zKK@9C`i&aB9a^*9Z4PufF!K}k>try zk>uskk!0`pMn{tUKO7xN4v!H@&W{O6zB4u?dH6>rlC0Wz;PJM$#~-fA#ET^`l05E@ zBqw&@bu=7Fp7%$Rd!cGLk|h4a5F~kkULI+KkR)dalI$OfBo7Bdk{tn&B>6{ykfb^g zlGFxAk}~n`^&-jgGeME0V~uT+iVhE9>1tpTT@P0Uv z+&emvoX+qONuNn1@h_oV5G1*OD3a_L2}y|F0wKw&r$<7P6X{}V9gHMfMnsZY7#f5m ztG*Q!N%YfMm=p&wNo_DDxo;?wtavIoljP8pJ%~xR24#|mhcn5lXM!+^9i8jPB)fw% z$)O=k;v^=C|4$Sc0wwuybvTsVKMYD9_RRbKP?9EhLR(Lp#;NbD3s&`gpxHw zq2y>_DA|h&_(RD(0iYzy4@%Nb4uO(16H2UcMpXbNNgc){l|z^$VJMT>hcL4HO!DxEO!DC9OtL=!lhg%dlEx94gzq#S868P>pBNoU_O*TsRB#mQ1 zlD)^rh9nQ1GLa;4@9A&9eBs;2cVyB07;u&3pg)pyJQNT~9`zzgXp<6vNA5l~gh!4I z=aCgdc;whn9?1*DBM$}SkyY)1cw|Q)9$6EdM>Y)Mk@Z1&8>aS)HBj>IG1qV^uf zBW1yPq$x0u#0TY(s(?IVADu^D%^c1nD|ZLykt0KSBzGhpsSLs+D{4pLk!J$&NY02n zvS%odtf&soBQLEU$|Kpqc;xUP9#NMYHNkO&=J>%lk`ok1jt|EXv`OG4k`nZ-ACBY& z$C1`RII{9*!*Qett`5f$`!F0i9tcO`hvP{8P#h^6j3Y;f<4AHq9LX7qBO3zaNIfdx zk0S*EaAdU?M_8)6TH*+$Zss}k)c6Ez0!uVi7gD!I_wlkeEOPG%CPOTJV)SJsw3ERJjup6X{F36Gjxm=N5dfqX>Q* z4YDlWn!u$=`e`*-yxn1R#{-xo-60c{5%k zeTx>dg?s^z{{_3OR8JXD>rgi-W1rngyxMLolr`>)BRZ2$*wppA@WHnQI4JpsAp@J{P z^LTy-pU3C+-tMm&yP~6dwd=jtv4l-I0OKl@8xK%l-!YHPGj5;D=Q`&s6RybP02-24 zXb)N-XICu_S0?;OfT%K;&2ioqM?Tle6QS%LV*@pbkTkB)8~OvZGfNO!l{wn2cW&N< zyLD@87%q6l#&5O(`6Eh1VBsAr(fXhvKJXbQAd77A?ajU$=hxf zs%OW<%q7)*q*`p>?nMgHlxN)`j)88tjz70Dcybluvu52QwF_xh5eoH`5TR@Y+VHXi ziPR6^k&$oDr#?wv37(;n)wvR(^Jh%5{0t6=>f<$eygG>n>C*eyJU&*IVg zTsldN3Sh@8c4)5^g{W7lk*JW-MW+4cdaW-T6bXerVBA?I~H5moz zr+ttu@^2yKOWw&Yp{8HLSy#ezkDJD%iEJX9z@n~4P7&pD#qWvBJdnp#e#!WPp7%`g zD6pwyO(Q?4Ad6(-&S~OTEr)r^FR?FF$G{ePAmXWA^vTj5k75xF=gyr|^YCLqGVkQR zjJ*LO(PKJ`qSsD{T27fV83iX!m=GoHaUB0NCgVphxyV=f{8YX$K8L6J-_rc1O);&p zsDVgqfegn!CORJPo|K#04JH+dF43a=690mKj#uSpqJ~bdF?S>tqx111h~!9M4oSseXO(OciF6`F%; zrG-tLM)o8e(eb{FtYkUlMjUUgD{9H zHsdQK;XJid&>qSs?Bh^}^W$_#dhF9dLuxg$&OTSr1|(&C1e|rg7Ao|SVHIL*Q04h2 z{A2bJQhk}iH#&Qwgb%jHKjsk7p1vytXU0(pY%-&>h|bA#@q4G2zTkcam5+=M9bpdk zv|bes_v!quGko&gl}SmLJf4yN{A1-K_92pE&*-P`#{M>ro%~UARwVHxXY!>lE`9OE z=Trw-Q{^N6q45Ef4m|VhGtWMIYz6jma+@iW^`TTP){P0_i*@@6gqDYGW9FB0a zG0729%%0`XY0v-NFYv&*e)-hi9CCsubBF%B|N6`)%RW>f>w5ON=l~x#Om^tqpAZ-Q{IkzK{qz&x_aMn`u$cR!KbRkr z+sX%X9jrSP32YK&P(`23A<;i`0Be&a1S|dooPt-9mw-=t2{_G1z$XB?{sf$2zN`fS z9}h^t#|IPe<3h+oz|Z29z&lYZ z4*{X@oMuDaLO16xP#t>J_24g3IW$)!Zrzb{^$f;MSbl@z)d3% za0>kJ5%AuT3HV!LzVH(8h7k$)acK4taL&jC{D2Vl5OC}$1YAvn(~p4njZDD#g9&)k z$ON1yE9oQPtdR-$9k`A^egr&sR096iFaq8*8UeS%t-%DGJSGBud^iE`9*uw-hY@i0 z7zp^#Z~~q+IsqR*y@nBR-dG5@PPWK!0-mvZR03`YLcpgBd37FH5e~$#fCupDq z0^k{2M+e|@a+u8+0>JY|0pRC?0`Rg?0XS7W34s7Ob3_0xrRO040QcL%@hg}k0`N9b z%YXp9dISJI8XSO~p$jzVte0vZ8eqj6n{Ecw~aQV0Zm|oIj z2jGJ70r2s00C4%(0r;tuF#_ zvo>QK0DSiT%FM9=@G~d&Zz;lz{aE;yN}@%E^Y6^#qw+8L8fXRh?y>N1Wnlj8+dkR~ z@Om04fdDwVesln?mg8*35CFb&6ad~D6o6Al1>hv{CVXgF2=9V`7 zq09`Pp=D-dWLh$nEK9S3uOnL&{Ay(@_sHa=XQ&yWnOaunn&yz^2`%)SmaS?l!w(R( zscr7UjEwXQCBw+fU>Pc;R=zubRNL%(Wx4OgdO(yzb;Sdi5I`cGt`h8D9;v{h!F%>MO>?X35W-%oj*QjzNL@ePqBf=y1KK;zo&pbn$ z2b`3;7rFb(xP8rA66wwSyxiQJY&9DfJR!k`f;{5)$xl;u;~6>{OBsK8*Ppi(92JFf zvXyL>gG-HY(x3n=yCOYEiVFJHJINL1W0#!7C|V5WhES~0YT z6GJR7Zz}HkCVNVheuk_WFTJe1Y+L|~I=$BV=%zzikmsnmMqWP4HzptvN)4h$xo#(e zFSD1`3zxAaL+~W_1<(^9dM$^er`==?<+NGh;Sti{z=X9gz4+3FmoF$6x?Z_JUZQTI z9A)Xzj>1irr{?R^WEmdCCk)iT^fJo4e1TtJuXrwpWW_g&?C{ZNkLOwPjfoMs!xA1U z6SNmSc3ye)RoU*;8n8nTnv%n*R@QuZhdUZWonXwnV7Z{ba^Y3}s*5_e7}spMg$0(Y zqCzasn(r>KV=O5`UZ0qWittx%y!zT}uf8rSLig0MJeF%Q#a%d`JUN2yWr9b1;+NGI zF1&K#l~<_1Yp=Zy3$(8xpB^eI!Si^&R)90jxM+5oSxA|v9Yi7aibf^a>+Cx>3o#Ug zTe&%w93wZ+TTHRLXGBItVqbtdL7AveYC$pM)z{c->~-ZkbSbiq)?&F<(-bRE?W|Bo z5f1OviENVdDdF4e{Pi2(`G=o>?y+Lc(Q@;0^H8yThC7gP%P;;!!wi*DCh4dQ*>Hd7 zFW>zfuVSaSjg4G%sO~MQ;I=fqXok07KUL}VAH4H^x7zK7Yq>cgR3F8(qu>f#ZQ6t= z?5t2Gs*~7c*J}{|@9vOpmIuvL4ONKZvTwTWcFF{93TiX{>EF6--7Hth>Bq|huMgpa zkx!R1+6&b}rHBjHv329txa#hRZt7nn2aQ7-g%HPGZAP@PjVeYj!W3d0h9o`c7M~C< z3Z`3%wc@E0CMsw`SM+={y)6;c9?Ba9zEo^q>|dT7xJ|awU%Z=7Jpb8Pw&e>1?is` z&~ev4{nvNiefJ$)J`yoCzd%^A6!sOb-`CR8T7*MV3@3(oT1dJZCN5%B-2C+C@BZ|s z@4oX63^7}Oc;s}t3YsiwRr?-k;VpD}TY(kR5{lu^ml%ZCKl}MlfA+JV!q_`+zm2lE z-7soeHnpi%w)YYIxU*hJM`%V?Sd*|Op2Cvi)7SH#3ymZYR+X6M1tTsrD( zmSE{d8mwH;NM9M3{H^!igL^-Hm%$EyTYu|fI6RC9pAnZ5lEPAr6!_+*f@l&awLJc^ z^qUzgVpk<6B~#7FMdO{f`Pms{2@Mbv5C8s2_WIct73fq=c9DJtkb0@?tPsX-~t~2B-wdFf+zXf}5 zUc89i8_7ztGX;fHQejw4)rGhH*gZ_8Qj%Dbk&J)26VuTT)Iey@w=OCd-EUrmH`Zh| zMNdshwc>a*l|d1du_m#^fqK)HDbL4~JDC%RL9j4@)? ziC)t1MtO6JJ}Ny*8Ha`y>OypCweef*EosbxQpqUAQF&K#JhduIQIh*m zkp3hkVz;p?F`*u1L|c)at~cJqpI^WAH!q$)QNORozG_7Zd8#J&drD#Ts*mfB);>{`NQQHyq{IFWE2H&wKy%|Nejf=l}fl$KU_n_y6uEa?}`azs28jUX;U* znVkS7?9Gs7J~)*5X5Q$b%r0*zlh+&|lsPjbl*xZ8NGMY{B$UbdcEC`kPP~$ojF3$C z>cFwgOIiN0Ok40+rdG@pgJPM7#~I7yd1INm+s6^hO!dVw6E}`0mPz-;G8yBEWhf>w zW0|?*iDgpESO%AsMpld`n87`>6s%D^vvhp%Op-62*))!LW|A+SSw7}?W{rP56SZ+% z@yspWc;>D#$1|0_c&2pB@l32Yo{1iFJfr26MPdRp1DfRV1vHtyfM)%;0-8C#fM(Ws z0-DVczJO-cSOc1DzksH2>;cUpUqG{UYyr*02>gtd3}|A;6wpld1vHDt641o@1vDvR z4rtPS0gZhe0ZpENK(lU40gc@+ps5{uKvV3EOZ4_}1vEL{f@2A2;>RA)Ebs+1(?$(w zv`G^vqEHYgA*Ly%5Fv0(Q#?4P*$T;EF-`2yn5GWGfnu5g5rGufPE-elG$$b*IHb9A zNJ#S(`5PdlDH|5jWKu{|95|%ewqQ_5Q$iull!`zh&B4-PA>trQMd$j5L^Oo~BbvxX z**j!J^H|o9h^9PPM3Z&T{f~5X@?_>Ycg_WmgmP3m8cFQTa( zZ$y*)_&6e(&Etw_vi^jK=Fs>fn(co~L{mLHqUmTkcHrI}HB}{9%Y#NVnfphIXgXRS zd$87?GB~2izjurg&7=3%uFaMaO=4EbuH)m2Xj&g@YG^u!PNg__91+b0`{)tP!`_Id zAW%f}ogooT;ln{9nvx+AP5zO95zPr-M3dbdFgx?+popeDcto>%ctmq}oDog6H=WgURjVGch@{4Gek1L{?;*Dr-A74aM;EQOMjw7O( z;)`fzk2#`QKPaMEGOmbbo;RY29&sxbIcJnmGLDF*#xJ6oJHCjf+!xWr zjVq#A;EQOcj3=UL@{4G09cx6h&M%@_H1>#Qxi6wwF}8?ivM-{UI;Mzbx-X)M8B0Wy z;1|){KIVv~#23*l8b?I4!9Svj8&gD6>le{1AA3Zz%^R5L4daSvs=Niq649&~dqlI; z7tu@^J))WHAJODcgb+BQ**Z9)DTZXQi01C05ltn8M~G++4vA=LARaiPSurG{*+KpW zh-h{Wj%avBRJT?cIGj1WXizwlL*dNydjo|tjq8SmGbIRTTz`1)t*{6r?)Z=d%{!F= zqM0ghG=pr5ExKlCH1iLIgQJ;R8O^*S69Y0qGiS??XhuJoK0HCQ8%UrdLBo+ZK@I~e z!<3)7WnGznH1osUq0x*hBOB3-UwTG=OXO#wmajV|qnW30Yp$7Xq5KT4pF?(r%S;Ka z`1>VjvbP<3^1DCy!I|=5;S5q-E8~*ZQXa@4V56mL_7=N{-^Cm)L33RuXp%OXxgAkC z_7=a0-!BiIpK*))3{P@rqL`TxqC#U#&gjJ+FSU2DO3p4iM@!GdBG;0nB)KSw@GK0v zv8ewJR`vgX_TB`%iYi?j{nx76JAgwUyZiJR|Nq{5jyLV>Mi^ck zeDVa1`p|HOpFtTKy5Sh_p>ah=x5ej1^Vl1cL$P8ZD#cR7BKxj@DYlk6;R}9Y2k0~?^!9QR}74PUw^$Sn8!Jrlm zm(h?BYv%?KzGyL+z6Q=a6y(B4i+6mcT#V0PFpQvZ)sD4O2pQJa6RxWg`Iza0dt!8E zMAU1q4CvQ8ynFjUJqv&d5vo8)?OL>Tw(n0PEXFt)23ROK&j&}3-ow>aB}QgO41N9O zK3ymm=62?`o)8d#dzTWq&B8g-*&ID{EES z+S;o0d8<}l+OqUHD=TkR`m9wcx6+@_S~>oF&Z?GM@z6V@$@kB9 z@BDO|-kA3u!jZdo=)L@#bm({13LmSRH*etBZxMSXAq~45bntN;WTkd*c{lNfdaKg^ z6bCDPO|QfDKX90rR@d6zxcc@}Kzc!}$F; ze$(H-#qU- zeq+&}vOnUtW-XJ;p2mMnWzUG8sEES3Ee;eP=~RAm`|^0G%!5{Qsq^smrYQ9}wz zLH7lUm$|KFbnG7hr;t6=fpG#&PKD87s*zjtYjK=%M2D%uF1=rgm`PvhuARiw&IzcDHO_(sn48&7q|5T<~u_D(a;4O<6EoO_QB|MQWWy_R^NNbt7jGg9? zBajrB3&W1_@?TiBi;MUoX^A^=>C(i+Wo(%m5nUEmrqJXtc1p$Lb~1Hists1Z`i0f8 zcM*zRvUsuaE-C>c-vfYS4jNf=kZrO)T8^8qb2W@%jTcNArphQwBKE0Xk!Br$O*U+PLkB^PamwKr4- zqREf4Be1+imWfMrOSZ(lc*&wgUsC{>)keCBfiiO#I!>VWi6{{TI#D3ZmX@_Fs}W@y zIp;^T_mNq(VDS>R1a4_vNJQ#cxM<;O80#e(mhAn1u)5xb<0VT_BwK?tJMFObQLF1Z#kd4*6(aZSeRdfA;1t|TiB-BGN?nkU zNyXMwhs?A?)<-~r3t`HZRv=C)6ag$qn7=_7`uZ!f|XFPQhu8HpnEBjx_BW& zy%OeQi^F;GAHrI6z@tYfvxlj0tpxmym8;t*61G?YVgXyACd{A5=PB`Xmy-jU5q9M0 zkt6RPe*f?xc8HaL@Ra|Qgn)zx$_I8uoEINIckaNS=?cLtH;NruVTX9h!$`|5-_omu z`8=4w^2Z{%7+(Q1CQwWYNh%Hpi(X2>>MKznK1=EHu@?AZ~6Zs1~7KcG6W_caR0 zU6M7XXHRP@)Wflx`X)dLEJ33bv3SRvx!8&(B4RRN$Wsl z-c`aAwy%kZjF?qsB9xw8`;NJh^twckp4JwGvJ%LPV)1Man`NIpYgPnC+{b@eCY6yd z&;EDc2*;#*sRuz+>!n3(kxO7GyzB9E=gg&Dg=WkE3b@55Z{50Cn6V;eFinnTJ+?Ayyu#PgV{` zj1;I#Kznp&-DP+c;42FORslw8=CV0_mTl&YxEZl=aa2>>_vwdw0L=jhULic|Ap!27 z#RMUOjvH_uuV9ZSMC>7a9E)D0M5G+aeX`^3*1dbTu2y|rNOrI6Q-ldHMTz~5 z&?K=e)(w}_r$v||(4;*@n{?~WyR&W{AiEiU0sXmX-dtRCIu!LIsLc{HecIG%qB9xw z)OzZ*G@%4%SNPUbMB91YO|LCL_>PT>0iI3MrivJ9gkCrz3-VM4TCL`0+%$-9Zrd6z1<@78C^6ffF+>+2b@u@-K*r-P?VnMB};(a{s4 zqigf$MtdQ08L!p#n!=`dChNZ0E#=3fgti-KcxIEV6DLHE2YlQ(s)C+B*45m_-L>bG z$&?$7;%2wlkB*zU7V4eTr?RPRO0{qeY;^SaacrFDEgdSZudps^x4x6*$<9giNJK0V z=w5Eok=7{`@`Q;K#*YV1-kEVLlO~nm#=N_mu*U=Lu-eg!Gl3jOPJ3@U-xYwe`OXE4#>(Iu$DHec^h-?vw zmoM{XyjKONlqp&0fE*5d2@<>nTu6-s?;*+F_ zd;*K+I`-;HFV+d{_;F*$j^Se*h?cN#2r%ASLFK!_v5w`@x?grxjh!@+P2|y4!E94d-U)e^D8*S9qyVME% z3eO{ki=ZPThOB0*_3BE|Xhy8e$gWhaK^GoBE_xi&^cK=oNof)|TEhcviw~_KtNCgs zQY=MFnW7iNIER3t57U-Y+OTyB9zO38impyW}bC*6v`+Z(&qY6D6^@^5xxo~ z84Bf>R^`H?MRmo=u?FGmnOrAc-56A3d9DUZaFsA3KIty^s;43BV%Cgt4l!l zKR60o=es_#ge~(dT@ta37@B`wa-^;<0rif^fVE#;vXyE@y2K7$0tK^paev~Lb>)uG zB^wM~A_*3+je=PtvSeAUEMZF(lnHL7&4;}oVNzTxOxRKfLPb&*W>5(Al}UkDnbg`X z0V(${P1ch%fq;QDfq%A`FVqBsuPZqqO_u4>q$WS2sTGg#W>n^TjRy#wI~!G*HPdft2zBXjx}&_z*KjXYw#{eGR2 zVJo<8#60TgzEUK9i1lHsdwU`j1!NR*E7XA!4?%&=Fe3)$G!!CpUV{*M*jl}jFoNY% z=q%no7nFsR!N~e5B<3$dg*+ zZKR`glJ1;IABV%zy&5EO@~gTA0itX-5N?4Gq47DlAO~i}83JTda$a8U{F#$S4yd8l zQV&S0G9`N<@pCjb&Td;qyOc$s;eQGr-Jj{a6 zt9g2?>fCtZn4pSsoIAD=!J*3r_q}!Ka=OZy4V5!vCUgV5K{xmn8?tc3?%9^k7X&_D zuxM-~sz*tzvcBNZy45HK&tXywd~TWG{Qw~=u@<8JXop7ihAvjvJ@?PsNT@@Pp>BL8 zk#7YK!Q0LC)rLc;jatfIokl?e5ANJcDN`)+w~g z)OuP&`0d)Y2FLE+S^%{>8{GzK7t9ym2Cy-up^tFFC%apDz#B8L6tkPa(}=xJ7Ed3k zN7U0Aw5mKUgs$AlC!ygX!VkVrl8#MNrcM)tcoNd>M{4LucE|D4dR=zHB?nL=mkO~* zHc6XUgRP@9Jft)XodTh8dl_Uah3tY%0p&&knyyo9V6Q}@=xybOTEj75YK_#Wyfqs| zSVRZ$ErCq{OElv5(HhkVAi@HzQ6m<10*#78poto&AntsUGGXF)uvu+5yX3HbQM&7Zrd+n>2YMv2XB7Ftz$>quVH5ZP21c3`>N2-lN81(@1J)mW8gfYGTcIC7&5_L2tlU{95w+ufm8-o_5*7l z1IkbB=2aP8-V`e1XF@||h%u;Z*V2U=6fD>#i2K;L5V%ko>L`*Kth1-v^ctO^3kAp3 z6%ZyQAt4>$u<|Xct=Q28d%DzC+S9pDyqB|sqzjS3uDTMuSZTa64(^!PV#YlR*pWUW z<1aNzfk#&wO5w^h3Lb9l&!MsTkl?#C~N@xYtSoG7GHE0li2qSjYd1af38Cr^j z93S(Ou52JOAQaHR^c9)lqcSSTlTNsL<;q5KDsUddXoFLERjq0rh;0&!QRklRY12cFmN|ZuA?w2$m!K9KP*JQMWYzHlh?tr;iTo%{z>&U z#?*QmV<3_L(RDS37#SJdP-9FWTPzD>jDiS_F|m%uc$GB9NIx25Btc*C)fmyb#yD6< zW8mXE!=J`Tsjo2x5uNg{F;+Iz7^F!2YK+7N8sjaZUj8*kdP9vd1=fBw#+n8iBa--{ zAC2*DU5)W7%o@=ciT*SOX%asgBh8=2m_i}c*BHqSHO3+kZ2uYq!PeIpi;0al&=@rC zg5eKejqx@y{JMtv_(y6(jj;^2{xrs#1{x!gO7){LR`}5vBphgpo|jtFpa3)m#adru zEP!bPjgjtGV^}Dw4K&7De;Q*vO#N$&m3}qGP%7G=##rW0V+bkTP-CR~*BGOyqx))% zVUeUUQX113k<%J#jG+;_#z<;RW4u~lW4sOoMmnG|-fmQ546dUwM!tfjlYr@o(IGXr z361fWDPD~+YH&oY#z<*OV?;zv0L8^byMYigHG>>NVuHRHfHlUetLkZtnE`2xSU(zrbAu?_wycpPJWR{X&+Wk);mK6{^okZC2wte79HK2Wr8-`+jDckSG< zeH+`xx4H|rY$+(9we9lQW~^A3lg+cWEUZkZWN!4%&=K=Ul#=4&gY4kl14TvqQ34gQ zefzd;TelWc39LZNr*-I1gp!k;jr9=OCal1?ktPjM0Q``F*A5i1qB5g^oqh{I3`~!K zW%7;sBq84rL=jd!2vlRc9zy{yQ1Y>~pHT~zt%txjdeUiT3(ZxL4yh$n2T=gqU#-^y ziP*NakQKTMC=sXx-;8w#5rVe>>@KEHrlIL8p5lWCsS0d=g>M!L3*o;e1)>Hli|Z*! zSB|_-b8*-qN68_|qA1|*ergCxBQ=GdMZfN)bT{D-AL4M&y}`466*Z0EZ30Q;pCfSH zvy`r;kzUs7TL~yZ|?Y4yJ0mp6-%q}j#%}K z_9B-%nA&5u57n~P9oxtD@;#2-yRw!}daVa7ack}*W6x(DfEQruS@XU2ZL4RE2=9im zalE{3?j&_Iqh!`zqlLV*7sc$R+Txx2QWr!=_3eiF6AbeZSQp+|svniWO6`>w4;?CD zB}VU2wl5ssgZE(F9b&czd1IYT2n{Q-i51xdiq=Wfbd(#{P1497SoD=V;UCAu1z>n5 zlMlvCZ@$pWCAM}Y=&I-_3kUQt^>EP?3w%+Gk`IJ+P{rzT3cVr3U$nP-v83eS!5wkE z;fJQ%5I~<`LCXwdQ8}+KFVKv)fZQd;+optL5|X=n4@?c}#`Re!m{cL*9WFxHQ6ns4 zMla@YeOWoFooDMLtkx<(P;f@N9mC8o)T8R_j2mxK958Fk0P?AWDPpJBvmOy#Z$9tziSU=k3#pVd|c z2HVTgBpqJ_@8TBAI(9_wMi-#>vrLFYZY#auX+x2)?s!^DUuK$~B37dm3qrnRGR$S; zohK0$e?e{Y0x(W=F@Zvs#Fc;*A<>=Nci;$!97t_VFR(UtG@Oqiiszj@lpVY>D0krE zRWTXXb|e(>w|U`(Hmr@iwSb7ZK2*Gu7K_Bnlt?LiiFa_KAEV>ba)(rJ?10clBN%I~ zbVo=6CU=#(cnF5Y7_lTKH6icd0EiYr>_`W(C^dR*7a5m`3U@Uq2QXf5)mZMZQx`N+ zIG$okZ_1-hqfBq`k?IJ;Uh0ZPttn$tCtH_p-Ft@Pfv1>jAlKNk5iPpjrYHFnOQ+7= zd-fvMgQwjvr0EQ`mVAVWfpt}3j!Jj#)TMiPADXg3Gay{_FcoF{BBT*!)IjOpvo9Wo zb1_fEVH8{&u7ta@j3m0d_j*~dp&CO`UR^`m@U9eVw_dLhPn1xo1mCrV@|t?dxaBjN z5!4qCw>c;!%~Rn%rtD4AXc_5}M#>}jaJ3svJCY1LdMItzGeA>NWML>%pu@S3k>qP6 z)s!X=XTvb`!6z%25j0V+j(B1$_RC>!>XxRFoQfN!4Ht}8pGJd8I`r_}*ruJr^P2JD z9-3fOQyd>h(|PE@Hy)1)dB(xmIyb?Z68q1Bc_$b-Or)ii* zvzNR^QjL)$jPR*C0&9wMcr^`ULwybDNi`qMNAZS+($L!SIQ9?H%_zN|;kCt?hO(N_ zq%jh98KT1Ek!*wtD?Xg6Y8oaFRicK{poLxsGSrKc{231QF_euGCA0&T$ZAT|qOjw8 zZHcl`B1cD&&|tb-81bQ)93@gG;WE+Pa@0cdElC=x(c^bYFj+~W7TgG~j!#%d`LUGH zJH2&F5HEGmq{kjB4oo7WyMRp^GabN13Fm2Q;Jp!f9OJm2rKCpK;@CG7cEO6?aF#eUG zsq?f!K~v|%aeafP&IxaX2T7e53^Q185Y#zg=mYBffI5S}{e7u(8K`r|?!6-i4jMdU z*vQdujh{HxG}Sbv3Fh3X*MPwz$4;@_hdJ|3)t&ne9yMv^{it*JYj0Tsr_SN8Pna73 zbsjJ_{=U?ib#ZkaG$B4v?i?{TK0xl=W5le$xO1Oz54f|=b{}x(2i*C=bLap6K6kd| zzB=gT0oaYFcQ~F6%3za?bLXFZA3I|ipNPKU-D!W6K%P1eex-l!9<>f0Sj3huG<;J!g~=QjrR3Yt3)A4of> z1@qW>ME~Hq^YH$maA#m1Ja!h(g}qOxA3Sz$)??>VaOY0pk$-u8=%_K{Cryi;8NUFp zCh>)A0bc!Hu(0um&z<|d`o@IV`H2Bg=>8)o&s}~$3f+6e^d*5)=ss`EO1d9~=3P8p z{}PiF5QiQzb48#WdSJ}T06BEevF`@Pp(A1+aOejdT0GJIAOHNB=5IW0eXRVCw2EH& zFUp^y#r5bvPhv3zX8lDuoqW>jri0ec18Zd{Js2F{vG=^ z>>KH8`7-}X*@*2%C7fheq#wd?l6@zCD}N)4liHU+$~dWA`GJeG+IQdbZ_UPO_9aV~ z($v&6ERx{`OW&HlF$pl8mD99TT0z67WbaAsQktB`QsKDHNfTmXU*e>MlNyz*{qQ{n z4bK#q>1*?41`BqH4Ae9#p2Ds)RCad{->96G< z@6Sp}T87(fV)DivAAa*SN3`-+93^_!sjO%>Bx=ZzsL@m6S7skPe(`($z2mRPHpSCA z0Mq1Ye7bYm^q6;cU;g?szidJ%{1V3?HCCq_B1csWojQ3+T;jViQ>N021Jn346>qfD z%Q4fX=}K(cCzlzVu`eY!;~1>ehD4d7oY;MJ@{}p`_PUC<{n=D$nhPlUlBVM&s2EEo zs>BhabV&lp(>4kLvLP(W1*8t-Q&qT>rm^XYj$<*d=`k^u_~Xch1Rz$lq=hXp54=* z#dxOg`tr+5{1W?u#&FpSt)leE6iT}^?I(eNCBCNX?odGNp-V{R7vzq;;BJdn8xln> z$(KrwZumuW@Tpa(rq?MozY~>2(BxN&VHU^i)4+b- zw(Sc9RuQu)N}(RWr&aWoEbf@Or#`=kSp;qZw?+pd&(sYl(Jo4}XdQ*%Y`RMnLm|sC zlEsBO&pJ-7X;_^PF##r8)G2UNrl5(W=^lZRrki5$PFoCKrL)XDO4AnF@YZZdizp;@ z3iWUIv?=6DnuZlYBwQhSUSx|WW;$L)V;1)ejQY1}%?&?jNJ610P(4vc@uD4tDI+*$ z;rOS;0I0=c)L(8b`nSkTl(?R#*9oLVU7T2GWI^ zO_?$sbyo25AL69@jAVrAo(>r0!yQ9!_Cey>XvWEyv18v9FJH0IN^IP$40DEK_6!TM zfo~nkQGg9~1ejh59KlCO!&{~**pfPqxg1RCtF2Y8byyZTcq0Gc3i8lx>3RRtM1XOKwd1@KUh~e^Z zZCENw#a7jiW~k|Na7ynoWz@eB>h$SIt@wg18)nAmMk-77q-OvjW$<(>K%)~VJL#D zrcVn|I((oav6=;Q6r`ao=o4B*qQE$fr8#v+Y3ZhP57ySP#7Hq_6z;La4jVR99vYU) zMbREIgE{dF8Sc~>WEloa1?>exHEL+8867h<6;>LVy7iL1VbSl|=yQ^OW8mZ>HU={Y z1lMateH8oyNGVNs#>MYN$P;=pb!V|g6V_Uqj{VyOE;Wp5L#zc+0of|el^Q21Ey379 zcLgMxYU$o0-iAm z91|ntD5IwTnx@RM=$AaKgiD$xj`(Ca{B@cKZbUxBB^E;!0DHiyIFpCs1Ey6fGL@S4 zOZtI~rp|@CN^*zSrRkN{$&;eYQ7uz{nZ`vm8GgHG;gt9NUJuHdjL#coNK_PZ@21?R zrab}{Cdy@La;iFmZaVZ~^A0|qEOlGtgL3R+ms;LZF2M2?YiLE zttGt~?ADSQI=hX_Y7V=dnHwUzow>O=>~>~Ov)Jv7tl-&gTxKZjHtqqt#fL;w?6!*7 z?bP_i%a$d^TN)#`HbHJDPr}q$EGWP-s?yh{q`a4uwEXQ=YjTO)7Ob5gFu7Ipmw^KZ z&TY3W42;{R2ud3mw{@oH%pgh#$rTi}-7+&+YMUPm9}sJSQQM6{QQPIgQ`;OOPN7iS zz+XeHm?jJrk@s{tF!a}@L?M_{vwy}ta z?ZK=?ffL(f`4S27d){o3X<3^4w%?(zCW>@b6;Yc84$5uaDQT3 znz~zzS2X#+Ha$pQyE0&2yR;6kr3neomh%d&yrM7wa^^4Wz8pYhM6Po+C-Qkyxf3OpS5#NqOg8xvuXkEIS1wAZwwY~`aW?FNWPsVZ76`Bf&aiqo<=lBf zy1gaS;4?X{#d=_Iwp=EY@`?&um`#jN*D-OE3E9Z-LF381&S~;-mYr=`t`VHhv(HVa znm0P*ymm%Zp@q#&!^)pulrFLh+Qkb}eLHqW7TM)+R%6?L!eisbv5&(< z^H6Xw7v&}J^#sh={!HDojt?Ou#eek84bhr%y7i$wKLb+@Y5!dSdPf_)22^M=RG1M23PE~ z_EC8Yy$J2|i@K4FPF2Sj*{L6$@@+_AOzHJ&%s&!Yq4dcYxv(;!9~z-kaU46$qCD#9 zqH{H7rJg$Jbz6?os3FK_gVOjZbGZkFkr8j)NIO{`MotYYE{bC3l~2x}KgaaM>d|pp z*3jrvoIeFqF>=>?P6zYoI3e(R%mFh;Qn{sUV3-?rC3?`<+OvdF| z*SqrZnU7CXde|v`Qay3pTlorHo0=V?R_Z%cy86kdpKx6H{G8|P8Ej8Vy+INf<;3w5 z<&xfmaLt%)PCJe5CVcoQ|I`d;wFqu($%Q>|ef@;l%3&XCnUVkLC-CwKI$eDf#U>V0 z)IKa1ot2f#HizA2hbv$)%(&w0r=PG-Jit<3ogzk`in++;hXh8O;VP4C%&yq%G*+g? zVx4An&R$fH-14&;)vivgAF>aPi_UEG*maMZSbTWZM}8b~Y&$0E2%L6I_lcX4WaD;E z6`{?s%FIm^CqGNqRefLBWfu*MdvJwKwz(@lOb0}c)t9`Uy_qgr&lzv4kuMunj`q3w z@EBT8T*{KodHaL3^&9XI#}unzTNPAPnUhV|v8Fe-Z;&1!KR}$U!U3O^=knLD$AG-% zgQaoF*tG|1q55XSZUBKam%A!{I<|ZLy7g?mdqZlf80{1Zk}NhLNu$qNw-38KlUGi= z53>(xFJXplyb!YUO!nO9=yd{~x?w}A1>4V5QqcJ57igNpw!gEZOz$D)98O`}zZC4ePbVtJfKTbt1*3tkI?<(i@HuBe7b+h~bo`yJAln3@FpEe?|tN zSW$U0mc~$MEe%>GfV`SU^EZ@{BSvD9ghmSvu(1+tI|8o)m!5$c69NgBv{t3+Eg`Gc>BG{Iw}q@Djz)+j`5Xq{5URh>13tII5icP+8%`q zNBHI=f1*V&05{U6!(X2qlf!ddI$pr5Pl>w2^_Vf}kQyxt%}0s_IWWfu%S32HUT3ds zgYiQdHZlQdCwx-@fSXP};LC!`Kj6zc^?$&Z{qo@d5qvo#2)?`~P`=JDlO8$#mCiMc`YPkzI;YYV@OZiA$@YWC%m1Hxyqp*~UA8O; zlrGN;kuJ}ECltCoV_DF2c|kMi@|@+(qsucEheVg--wu*4@AT5;gscGR^3Lp3AG#cy z5GY;Vn!TYOU5=ZV9|&FEo}1QyE^9Q0R++V+3BJ5EKD|l4JbhL|<9zw;gt*B8@a4%d zGw06t!z6O249|pR|N5bB_6C!j2`#a1HSx#FaOu@<-9$|PKVBy^N)NH zB43Wnz1lp!{Pv+{@Z}Y!L*~nt^fRIJ<&mk!L*~n)=B{tRmuX7I?<+i&75MsPaaV0?Rd=g z8~bk@zp$wo82z>VpB(>yGym*()b>x}r+)OGasD6e|KfParr2#ZJN@?&!2Z?oFwFiH zhyNKrTjA%wIa=EO1wUKh=f69`M4`X2|8IvGBd40p{u>EE?xDt*N`Zu)){v8+>!mCDv{|-xGXREHV*&nj2 zRh9Nf5TiI>Rb_8!w_V(mnVzvRd;j@6_As3B5VDF@wXiF9w$Qt=Y@;h9b7SV7t9BEr z>piVi+Rb+56Y)~4dt*i>ELf(p>9EbteXP(bcG+H4wGYEqaDs9+W=fgvP5HO&cE>;0 z6h>`hm+YR4n^ML5vl$*3W@O5lN>=VoA3HR6MY)~Xtv9#g7)~6))tbVfc$}WErw{6h`IZa66|#em~Yec+EU8L@EM1@7)0;5_6IaZ=5+P1zEhW#{H@W}DT#ZyaF`?u&DJaqNzkhL_}lLMPC& zvQ63UoZQX1xmZz9+vPAj>Ui@(VgF%Ky$q@zg}Mp5_DIxC-oS-IEu&14&xqP#dw|O(|XH;O{veW6X z*-$`Tywi(kHzdH#h#eWr-MkqY^K8z~%P)`$tc9Q9jsYb4x86MLjt`DqSH%Td1<%yR z)B|%j%bSsMLQ7k!Dg?L@?6s@n;`RtE%T|zbfUyZrzFfezusqud^6b~I`xk;gKdy?HW0aed zwef4zpnd^1D&U77zW@H@$x{+a@SHk*x^Oc`=FItg3yRom%gNf5SwOyjy3KA2*Eh+v zKwbgzuP0BLPf4e>t++6>ynLRIotJ0_s!DAC1h<(RGtT_%4@+ME`d4`Me01ugk4{Uc z(NpsBP5EV%vi!Ww*z_qg6F0~^ck1}9HmVHlcc(Z))=r(4Pb(i65*8un-$jSZ&CbG& zEG_l0(YHjzl|IPtP718~w6;B8%2$zUUT_Ca;gurJz(~V2x-f1EWR)-S+XtK=cuw%i z`TCroq+la%uA8@M`{e|OG8%A# zoYVd|!HHb|oFMmHLr!phyMIowr6DKSo8BlVC<&Gmz z$O*QF&IwM0#0j=FixZp-nG@{z8*qXX&F2K$%0lM^A2fp#@GX@E7n?;2iW(&a;v?!P zCValXC$A|^@bUdQf&0P-g&=^Ee^RhDAX4!0_9jTd(Evz+8>HaFe0;puV+FYZu!4^p zWd%h6vVv`b6;#z>1z5=Gqrhmv2mWZmw)@k93ysi%^~WC2g1_CPf<3$I(}IF5(p;IF zx9qA<3wC7s(1P5ZerQ2HCagQW#I2ZE;sJ3^oZ`9afyoRA(B6op6&c85p{ z@FpzwC+v|w*DX~Dr}(Sq$w(}Isb`Q+TG0|iad zf;|Dyf-7gXH%<$31EK|&b~Zr^wgpHF&ibJRn*yK(ml~x7c>&Ub9sV8`q-_g~6`c0R z3O3!J75vZ`D=27;70@8UGnGnJWhEYXyT6E!pBFz*p7+N}JV?VAuhNR+Sv;Gk#n0pO z{#5BAyQ+=xa=Zt2^D3XN7 zl~u*!PdXju2y?coWCz&+t!O_s+S{w_*}Z!g+r@Txj9s=pp;a* zZ>lFe>Y-K`3B@zdob0~j(t+dGcmg59Vr3$rf5&}xjN9SIkdrdSKhT65o7CR zFR*4L2S~d7oLjeT6^}$&UX`e8R@SD8I#O(F?d;UCqv5l5LSPbj5s=TdVAEKHyxXjD}6sw9|mc@S09qLpPIPD&Miu($lIpgtj zZLpg%Gkf?zS%>;A)q6ivUAO&=9>2vKY!0fqX=CO(A0+R1hL~MGPdIzSzzitiyob1{ROF^H^S4?q<}I zylxWE)b3s=gHu4;8eZ*QC}A}L#gz>x23P>4<&8IZp&V6Z?c8nK=_&FCjHmXkDtX>L z9ha45xJ*lZkJ>|Q+>Uw@uB}L|4^F#9iORzRhg_D;ve+iO?lN`5qWaJms8xKR>a8Dv zy-iQ@>GBlOB1dVd8`j5l#1`e=dbY#LI(3l>9`^%!2l3`2MK$#Va{Yvk*xQ`9$CCeI z)A%-ZTzY7n0LZ&=NkFP7C5V72BL$FQivd8}ur>~T7)cC>xWzaQRWf7)(j@I5LF-Bo-+yL?lDk(aj?h!86txE~V(&R6;Z`ZCZRT3^+KTn-j zxO57aH?C7f3F#XvkZU`2Xitr)016~)?R@?@FVtZ`3CptY`9M+6b?erqc%d(}^+KOB zyxI-uwQIoMpzfDRyJR3kBHp!Y-__$qxV#P4jDL4VVfTTVIWuu3fVxc_vkpaO^q$tn<%* z5+v>hyTPuDak(FU08+&`5>L|z#@1;mYuFlh@~TynDLq)P9ysmKe`0@PKWaAxP&oX7 z{h)mhY_(BGN)Lbz0F#o&h=uqGsr>m*e|m;JQxBDS+R81E^k4B(=hDxpKw3 z@AP`^xo4R-TJ|)5%Kapz6}7Y*$Zx&|_Gb#VCRPHzv%FJ%;1f>>Ap72hSik+|o3Gi| zV5o5DG90p%wiN)r{dU`D|NN(C_%kBZC;1cFAK=dyre6Mv(&PhV?^Y6USt8~2>1UpP z3Y7%1>JPvF{SSJe-;zJi<*&Z_5>VY^(n_|HziS6@+0w+sXP$YQDo8LZV88oqO$EQ! z_dsb?NzI=`s4`K*x0fzUTr&Ter=R}gQ%^lfIQDz?JN8?KeP3KuKLe*-qF`6Cq@SrZ zC^gHME=^prWY#nFfVRgeF$mNEs+Yddk?(muF2^FSOA?n%YXJPMo>2p+VBHfS73w%_ zWvOrpBz!I&Pq9Avgf~|HxKlJmO{ib6FIrWq0_Rxq&b!NnN4CVdc+qGBsQvzTR7>gc zD!q=B(l0N4!GY7r9edY>8ZKM5bO~GHS-fb`&?k9KYUIb=wbgUc>MUP;jzIZJhY=%z z;A_#s!3dH)q5eU4#{N@!yjDu>Y$&BN8%n9922yH49VvCFo|M{FS4w3DBc+B0E~N$r zFQpa*DWzgVmr~K8NvYu>N~uBrolt3SCOQ7`l{d^LLO^lS7nJ!$Ou)uZJw928AxA z`iCr~`h_T^dW9sVdNd)Wk{e2?cN$8m#SNqshM;^#rPkGxQb~2C)H}gQsaFD*QvHLM zQe%UZQo}-*QiDU2QZI)nr6NO?Qa->yN2P{_E~N&CETsm8Dy0U5E~Wa0ETwuiLrO(8 zLrT5Y3@P<;=u#>&bSc$0R4LW78B)p@8r-PVYavUiL7_{j{vk`Lej!S!UZG2=?#+-= zUA%fIcqtX@g$667UTKDu>fa10)h~1@)jMP<)iY!%)iq=()hTo-^^#W)1uvzhd7&Xl zss7E9QvE`eQoTZ!QawVKQe8urQk_DVQtg`|rP_urrP_oprJnygNU0$qN~vxkOR3Hw zOR0{bOQ{YaOQ{z_lu~U&l2R`;kWw_skI!QX+Pnmo;9j_AH@^5D_uf5w@!e`~<-Wc9 zjBm_C+t2r78XLZf_U|v^Mec-o^AhGI@C0Sa?%jLLdmh`1xnujn_L=vG6{$GG=1B?e zrJ_jlo=5g7`}XeLC+}0JAZfqTChI!R|dR_B^^*+NbT^C+)+;z2iiRQi#@7AqL&o@Vp zq9r%5mA5t&s}pOl4`zea*IpgO2C-MPmj|+eTK`BEsYUc-{ZvetW4*L+RM%X@d$8{I zZe2Qu6TU9o`r501`OBa|ue|c|%LDuOkBlU&yKirr6Uf5(elY`*7qJ7Cm|EDqTi4E= zULQ4T#E3c(IE^A+W-q%2_K)l@%Fz1uX1%pu;XIsCA<}+URC=I@NHXH+tj95|rV`b@ zQLz55$cTu3{frW%aB07yx4QL!j_=fU6e=>TDSW>OFJ2Cp_sggO?_S;&Gse1#6zJTM2pQEx?Om5Z#DxXv9r_Mqg81+m#+pQPCa z4nXE3Y9kKwCSEGC9_S`KzodJ{lF|)g)*>TVgzBwr3*=ia(&!qgq&a<<I$z>Lz+aI35kEAf0~P~FQSTe=+F&ojw446 zU9!HMdZRhq+>7hINh;D(zFa7P*^X~iTQp4fwl4uKcgX|UVj~q z^lN8;0de)kGYCvoHHWuA&8R7E94JcZgeg?*U(zdOAO_YT`gsu?muoNC8y_$F@jyz) z4li}+@RH$5c&fo^efzLJs&FNMre6Bph!@>R0jhobjv|L}hih9;J+3MODRgn0!XN78 z5dD+7De|8Jih8g8i=9NZbdWbh*4OLlp#g+a-K#e$)5m+U$whZl0BcR2UU|6|2J2cBX1Dj2`pElD=pLB4Wo=#SM9=D@ zXaJ20miypJl#$k-Q&4CdZ;HIZKjLH8cfSdC_fp!lZrz4Dj)+;mY|Q!*rx8QXYx^OWnn=<9fB^-eG;{TBCb4$EQrn^Upo^LT$md_C~oa`tbd3x-*M@ zzYa6Js@e`3G!QL{;u~0_W^~bLebGqdK`JUw0f%m@2aeYOYQiy!HvqVKct5tv53GCc zSskPC18wej?&&qwN+6)Dd?`{#BdC!%OHH#K05rPP=Du6}z@!Gx_^OSCfG59zWK z)>7{leM~6VTvU~UiCxshqC^RHxK~h$braSPuOXmflsqj3GwYmQQw~!Xb(~>M=;M z=b=8Vuhy?G@5}p%Ua=PQzFbDZoGu!C=#zh-sG<7EedvbR7tf_xU%8(afi5B!*;Af+ z>S;X~x^o#2DjsR>-N)RAlMe|#c!ZvFxyX_7)RTV{@$+8pa5NHix|V&^zI{-#VJ$~c zZJleMc;b(gWR8vuLt!U-ZOjqgyQFLF6MuNh$4u`1P_5$@D9X4Z-D`jU`=@G4lX|!6 zBh{8xjmxdS=t_c?de;8#w@=l0#{CShh?r2U(odv-_cKSZNLK`S7V-@Sso(58Ykmt9 zGvZ}HAq@mW2JnwCHp29e6rSWF_klH!KmJGf!TrBC$5pL+Vg01OQa=;SwTMU_>3}_2 zRrFbp0N@ry?T$9;LnwvX1~>P99z@r-9|trnlJ%$iwP!UsV7T2Q(*X6sj~W14Qnxlm z3c~3g06%nPR39ixe*E#L0YO~k#Rr6LhAv==Fu{W@vi|_en$GHM2jGlA!jE7ET|%Sf3iO{wz`+ zz-ljn1Ie|bWO<09WJBYkWJ?gDq~vcSO5P1jl%$6wO5SL$C>j4Z5GB!n15whwxuPU8 zbWt+68KPul^F&GX-$j(@QYa)*(!Uv^WN_%BguI3(O2+^9h!WP}Zs*`tNv}{D>eQWqC`u< z`#+ArR7rKpGtWF1uqd&uefsIvp=gqJA!w2g0c(;@0cw&i0cw)&!Dy23kTeNtNnJw) zs!93RKVBxmohNfrh$ zP?8jwCfOX4CYjJ&O)}$eph>3w4Kzv5=4z5xLf0fCnxRQ1G*6Sv3SEh6wB!3A_lZ*^WlSBupNi1I3@L!=xI(Z8Z zT$A((N|U@2tS0f69{51X=-@R;bnu#FTCH68`)iU;0cw))Ks8B3u$lye|K1Up216fy z21~-Gzm@Mavz`>N(a~hc2GNTP&!yu zeDGi~eU;GHqb2+>D`AI~_YbdK-D0&?bijNd?4U;&uwt#Gm=&uqdjw`$$zgWble&8K zs@3vpwnjyv(gDxG1Nf2-%Ej8jVoBIORH7X&kxHb)+M3mDwYF-t1Zz*x0ocn2S{zhS zwp7eZSn)$8ro--%!y8tuf@fA_!bydK3oCxK#D2I$d?l~)mSJDBT9g5Q3?WM7(1bD= z;)kzwtE5%t)t)uv#&keMP_kZ{x%goO@1o)kC$D0wl-2M@A+aL$z>0%hw|c19RZ>g| zITUt?mB@!YC5H~>VDAsr*z^Ib^<*QH2a1*e;YJnk-J;kja)=-167^8YA$CX;Kk_!2 zHhHkgNLDt_rZi!ly2RpEdNvWTZsmrD5;Cu*#fPvg4=qB3oj{mJ35#&X0Q2 zieg^u*4v^cSFFU7jZIa6_R~+2EvyUe(=4pPV*nEZBjOSpt3@RN7h8ZecyrlTyV!1>?9gsU0 zc5ukTx15C)van$dwiL;(jt8I!om0Oa2w_G*CcO!HiDz>r7A0btGF5;e4zZ)my1CR{ z6@noF#cEQ1v8-pdRf#)GcrjYhLyN;&{)(6w2KV3 zbOAy_hOw5AI%gC5pq?lfTKC|lJS3T}YmqTi3AzGpB*Qn!*y%&hfg@+jx|Ec)%Ly5V z$m|D;GuNZR0cu&|&L&U5U{e(i2=;@a;BvFirbsEOz=$eIxJ=c9@0L7VqUB_A>|TT& zeyHVXj~f$hJG1{=gy&wHlJYkBF&{J)JKv$UhZng-&7*`lu=5FBAml>$apz>`fBS8U zoWj2^~JI^A5<>G2|8domrM0*6GTG@r)@^6uZ zwJB?XoJsdaaZ?k$a}n-~o;>Q5biHhnD1USvIB9Q}?3{~$no>+_wOK%g(N$2AnU6NY z{x9e}K%p;ZXHkE^?_=LeFgBC1>0pau8!XW+X$3S~)=C!g+#*Zc1taa76fWYC*RnOr z{LF*69L2qpl_G%}ien=nYDv^xE%*juuy0H$VQVW^FNHb2D82XwA|*B&*;Pdq zWOOwZmlv*^+zSGveJ$FhItA-ctzElXz{99Nr(p3MZ35lDvLxDei0Z9m=bRKM_3O*% z2G!^WYmqjr3$+$EeP!v2gSZwb2`MX9@|ErhA^~U|FCO=gV&L7hrqE^hmDeidl&xmT z%6vr4#C>G_dn@IY?kL*!30bGja74h_I{{S)$}a28C9hS5W1v^hr_U(Qx)m!|AZ}OE z%9X=`mb{hCp*D63w_kk)$6;&v>gwdx$;tC6O&gO|hOJbShQZ!W&49Mb`wCsjVF13w zHDdCHsshH6T{DV{Q&y~4DFL@Ki6>PKTTX2)u*fX?R{e(JWM8RYUIMxW{3*$+38~Cj zvvLJnp(0SeQchCimZSC2i;IE8Q$&{?ldKK7~D_N3fW!!Q~ z56gC)!Xiz=oA%Y0>`Qh@7Vav@UGmJ>xN)&7u+S4CeXJTKo%c5dpfu_$dA}L{O z1yNziw$%a)uNJ_ySJ7|eB(}ix;hpmqg<(T;$p*M6?g^QV|f{ld6JrPwc1?mI(Evyxe50f?nw;! zm6FxBXT-KLg0&2!Skv!Tx2X19J|Vogg!QNJqc?}LDtQKcFiQn0C%!E&TUKtatZr4U zUOs`a)QcBBW1q24Wt1)_E3*)b3Fca?g;`iEw|HVKZ?36+q}qM?z~{nL!KS!tsBpxx zY7UH53)up|E%q3TB__tQI`_-!N2}GHRI*0f;PN#_ulKAvu=q3~7O%vf%CaS8+~g5Y923EOwl3aZ*x@>ZzB&aFunS0-Df zCeH?rSv&$GS)8#Vx|KWGPPT(@*R}wq?Sn7(`E$A}_bM!daV63yX?uNHJO}f|O7s+s3vEGv)FTQRG5+ZE2BXJgcc3w!;h) zX{(y{6`Dx<8Z6nJgw^0?ATro2r`3LS8@`nlDqA*@S-`qtTR^(vbP&2C3)kHJb;Z%9 zbVXXAx}qo$U9mPOU9lH8+E8?bdLj!Spg{lsY zRZyO^`>2Xap(>6Od#BG!B2z(#ifzG*io-;F0}&OjTu3K`6|kt-gOc$bl&Cm{P=XW{ z1;L4m10jnF*Kz1ZFj7`WRpd3HDheA>6(t}B{#C^Rzp7$;ld9r4$pe3?V)OAPRYgGq zRZ-HEs@UC#s@T=EsyO6dRpf(lHmNF(=LkyfM^zjF)UT?@_oFKIHB=Sb8>ouH`>Kjf z4OB(mhX}*Js^BGRoL^Cq^S;3N7ZrH+avZ#+p{6(>K=;!WCs#G5DM%RHM^l_$<6l#d zF1U}TI0L@!M^h*{`5&TVG%6}STGv2SZ2ka%`-qBT$^JzJGTWr6*#BN5qJlKBE=C#^ z70djHilQb&#iB+;#eQF^?_X3bXdo)~`GOjV3fTJ-6?=R^enrK?#ze)A`-_Ujgl!-y z_5>g*mVrYyA}WgRD=NT1;kcow;7M9>0GeVw@%{RmV)fA`HATvt*t(ix-SMV1MM6VO zk$$={P4PCW(?C-sHmWJs`_&Xnn$#3?{b-7~l}%}i<&9{HIco&3Zd6mO_opcq-bYi! z`)G=|cZCCgn&Q10O);0E@T)1HI~r(;#6~s6avx2xyfICI9;0iDB~59HCAy|aXr89n zACRW_ItWdXACRUv-;}1<7^tQ=9*Cw`7nG(b4pmcp7Nn-w9jK-_b3aW{7`UduV8!wK z4_0grOjb~;0+SV=geWU^1}`g41}rN!2PrEKh9E1>1urYM1}7_yhAt~U^(QNGn~)XT z8<7>;8kH4C{mP2`CS}E^*^S7GoLx=Iioyo6Vp~(P;y@#^q5#CKiNT7K{$)ij2y2tF z;!~(talO>Wx-F?@~AO8LilSUtN*kKv(4M zLKyya1x72*G$Jgv3s9rN;)_-OgvC|?x}UJPoZOhOC;QV0HqD>Ck{EQk>|R2CZpP!{hst}Hg) zS6OUmTv=oVpe%CyDT`G(O)87Dx%HGq^5&+M#iEAFVr_n7$|A|1vY6YbvdHnPEM_;U zEav%97M6L9Dhp|qKDfa!+(3gH-l2-Pgr;PLlAKG5ufbTw?EC171Rq^NLE&M)KV7lD zMpw+BF#PI@*?x4z9RIq)v6$C9bHz;^eZc98dQrlO3Ipj zw%^;BU9;KEc6kj;(bi!2Py5OCgsp{LTBD|{!BC>M*Y;bR%We~2W_$JOHLF*zS%Xt4 zw``BwG`o%2TG>r&V7MEFDcGRS-okFC!mrzYXY&YH3zY80mO>SK0 z$@S!XhRuvj-Hl35Tnt=+z5LjC2NrW=_1va7~G zqs@vi1`ZR-k9^a712ds6e)p{zVbjnq`%1xhCr;~d^9|4S?EU&_1WsrVw)6P{2C^4_ zUCsSU_%{qtJna)?lMDlXT{|MqJE#B}hs9~_a}>c13+Xzgy3%`^2Bk0JG&4@iIL*G% zXaL`1z?IK0l7)8b#}=Xzrt9YVCLRovl8s(V^L3N=^I!ey%S-GM`@&5I7hn>98A^oJ`O8PRy~r@9qoJ?uKa zR{JrpQA8e57Q3K*_9^=m=`%``t|=IH7n2u+nTq7Fi-wu@3H)+z{MYmciwY%)UD6E| z3|gZ+^^^0kWQL{bn#iU@9~2h_8g|Mj=g+}V`|+k8rTH4a>}%$v;xO`jo}F)H)6-_Y z=Dtc37erDu3eLw!qtd)Zv8#62(RjLWsUjonQ}ziv&(3LQVJC^iz~xoLCGy5DR>BNp z(KP0J?(7+ual=fyO4BQgvHJ&XU~usGtA_x=(1u^-XR)6H&f1?J$r_oX=TGM zYbG>@`I_k}yQJ035I|%a6=&FKAEQKSHuE*}RqUWurww4{pyJMa{PAg+>BWUzb-_v> zt2fHh&Yfjv-DLF<%w&`nb}j5G`e7X_8)|u07?G7EtXf=kP!|%pr-Z4nVQ1LK+Ubwj zN3CpJ7`430E^0K^Us01SlyjO)v{NXG!K%fzmRI$u24X@$xyUJ5A*NHOPQpsNaoq&7 zhpvjE9LOoUgm7nv)kkDSW+ue`$W`qM-1*wrP>v|+0+nZN9+_ksZp8yLtG0mGheY?II_KP>$a`ikTKz#@>&z21Um_KrYml; zE5xR;4s8BP**)_y`&dQds7!W(9e00t{6pcM!Ct=Ng8dc%_*O?Db||LK1^_#)5kfn8 zf}L=}z6N4O&fOQ@-?pU?8=&&7u5DX^-HM2eq}9T-;~(-5*)d!O*RGnbdae+NZE<5? z*}^Rdj~6Oi3+n?_kw{6vOjoPE0HmOR09z-zGkprp~VpOR9?36EtUv+(bd`H2S zf-QUtHiH%@snD^taNAa+Vxn6c6|0HR^TX*q`2|t|-=Y-)$qKctg`AviE8KcSPl(~n zn~-Bj;W1m7P5EkXet}%zhQ|UOs&3sJ_Wx9aU8OsBV*L?(5hY;#3b zJi4HWA<+g!1d1{!`gUJ>)IrgAU#3SN6dgajr0|Z5Tf(J!Af&@i-f(J$0f&@jog9Js}LIp(`p@O1qp@SlG zGbrFr(YBC5(QbFl6C^0w?!F*!P_!p>P_!d#P_#EpP_!!+6vcv~SWpz(Df)NZDcYYE zK~Ut{w-*~H;uH^IsI4Mg7g1D1*F_T*xMLE0EqK=C8?WJv- zD7T9C?@g~|RJ8NcT1G{?K3^9yDxw_PH1SO(*}?u^{={qyZT$b-{P;t z|Eg8e&bInpgR2ejv-SO$K*X3XEi};&y zeDz{9%O7Jy;`n#f^gH^chF>a>YRk^Q z_!+;U9cPIx^T!MpoB9p?inf^v)WG;vmGP^K_#HNvsYQz$S84w80)C4WjNz7e16$$# zHT^ywzqeegZ~X3|=XdAv%eWhH_+>rgm*rl+q~BWjx8!k)zga3HhHErV0>lOQJ#u12 zxIp3p%QbOTzjjp`SLv5gb>X0dkdYcYi|d3>Lq3;OqouQSjeg^L9Q+r5Rk_^fB0FDH zh^ykS*T1F(y2Pd~DXc^`_R4h&F0)*<@ZkBhM26$#LcEPwS$Qq}x)$uZGNZXOXDV-` zr(KuWbS7VESGAyR^81iiNJ?FA02>2b_>dY!4g{I6qqI|toPu^$)@-ocbKRGp(cbFy zYpTUK%u}E4JiwKlB|B4)^XaE)ShTJoodH87+O2VQiTmpObd*!=N)u^hf%colzg?BG zd`PAqry@xAwKCYX<#g>)ls9hKyonlC25W&Ew$jC!d@-(uWQEn_i6EDk;qrfN`wXRB zn>TOT2#3(s+HW#&ZulrOt?PpJay$#M2JK&@3U2^dku{VFcoPJf-120ad#Yx`D|3YZ{C-C0kV zwX~g&)q|L{Un|ZZ{}MYJu$eL2=*t)U#=W-137!pN!$StGWk*~kChdy-*GnglW$i%< z#Fe&-EwlkhpOL`eh%NUqmfWkgU|X|_kXPey&&n&dGymGRXV2~ogbjq0JH$2@_YAN3 zQ`gGSGnly!FhYt|TABrGLg~dHzucR#8%V?vX=JF_?gXRTC1SJPaEVy!T(^dh&Xp@@ zen{|^6n&SSk+C}?gB#$ER&3u!c)SNlv|@AlCK!y4f|t>bm3W06cf2d@>TmKl=jpHZ zX2=Y&ThG`nb|W1_ovzrnRW-qb;@r&6($}pOYaMIWawAr1WZ5#B55N8L(;@D*$S8*) zyZ0bZwQI+Anhp9Fcoh-7ms@PcZ18G=K2RW*i6!(ZZQ8yJyuq7}e;%Z(-ee%9gc(J1 z&~RWWT(9QF+BK`$gZOyOa=8qzhc8)-fp=kZ3W+OpMP!uFK){=rCtu)wNaYBzQEZUw zDu6~8R<1%1#B$ftWlO{o+u}uws4MA~^b*j+gxvV{rV1^`a8 zu#EVDrUsTQUSwJ1Sp3Q6&3Q6Ur_DT`PB&qRGJsZC8a&1E(*yWms45!Y6T;SUT`UXrA1s9vNJee*t zT)3Y^S_#;NW7| zHnFWjwcs|u2`9mXSd1BqG5^QMm_J4qWBwFbjQLYEG3E~u#+X^OibfD)?uj_YMAS%Y zdt@=@ksVkGB8xE(@`t9(YeUDFS$uy-7Gvh78PAKzV$A(pqlhtc)1!+qkLGNRBE~$N zld&!G81tJ$*=fw|lui!r}Dnp2Ay^Y~W> z_tqxH{Ps{*ZDP#tkLK*DLyY;a!hXSAX6@~FI}^FYm{MTi95_(wq`S49E>c=eBd2r0=RXXSDY6`khyZh=V?KL z%=2M_%(Yv#@2+i(XEJ0gxTvE3MXjJcZvM>B2=y^opBFZr6+28}Uk_wdY4Y*0C%GwJHE8=1Se zMHOVGL4sr5jBF!wH$Lqd%|_<#T_lhr-N@XXwqtALL1y;ebhU{T;YQ}Z%naJHi9E>M zpS33~${@3FemYOahOPM4LM?*KfM*o|uVzZx-I>Rs9v&A`6}Q=3!O6s(4#`C>xM@2P+#*3a<}Nm8oK&OkuRLeFWuX7>(Y~nK^^#fp!2rmh9i@ z-0|56|IYu?zhD3U=s4I%Qc~oTPZoh4&V%`I-h>Gsj~_R746$RrPK3|J5Uc6B{wap( zqR)+9Bao3$Xzo0-Pn_^ExW^FOv19vU0=wXKktzqCPhoW5eoWopO}zk~pJi|>@F<|G zwr?DU(H^3(dI|pR2ul^_tCQFJ1(%!|k(FzbA~RZ$OVGaK*MUgoM?D28w}I z265j$qR($Y4>datv=_BP6WlR{&>C!Z0@_dX6X5-|FQ7eVsU#2)lgEt#ryk>T!Xqm! zm5#H@=Bh!dDVS>pT=vm>_Y%FX^)}qSfI1D2&tQ*#JYK;^RBDxu-!r(+VvrapQbd0V za+>3!=d~f6e^S(DuP07`*+e~J1nMVBN-{GB4??d84NMt0pnrch{bHZqeaQ44Jx5di z%D~T=HA9h)#|MB%6Mi@va30J^!(h1vrNVFMylO%Aac~2o$F(s?U@cVE&zYqh&nAo- zO)U&VeMafmX=no`q@@;AhFfL} zGp54`%zJnOy}&{<elR+Lb%$`Fhv6G=ty)xL`UjS_VDX2d6@sXc;2KLB{u$ef2)QMQ<0z zP@?}8UAuJc+^KVqS%8aKVuqN0*P9)9ERtzy*hjRdVU_f4fIHu{v+R7mQ^zi&n0~st z@6GO~_UY25<@;$`nmr?p(KP#IZ_!isklkEey8!!JCpvDp>xdaM3ClenH)dGhE{Pw0 z@cw)6z4H#7ucbM$RG6lVo*E1%u;?s0RTH{>JJIfL=YE5SjvO&8rEizy=FL88`T@hm zJIHKgIMOoMa?N0N0NlBgH@Iz^Hp$6JNv&J8Y|*?~Gf)$^ct?L5noJsB*UJ#5{&b~7xH9YuTDPPCE9GU<*t`#bNv z{q|dL!SfhBM+U|mgXYA2hZ(1L>ncnWDpdE|wQbubS)dJT>sGDY7QFNJJ8!=w-l{|+ zY(k&jviCzYfinf!fKIZL&A_*jZA7w260Jq6a*qpOf_O{3>0&G325La`boA(s2HYl4 z7eqTJc~B(ZPihS(!V3vF6^gv@&O2yAzA4cO*Z{n%Mju2+Ne#3~rUvw+)?|ceS=J)K z7zlF2o8rv}Z*V`-(&*Gm)d|tng`@3cC)I+47Y(>XgIyC;uq?*Ma~WUr3jC$PKg zZ@$^2N#iD>3C&_h8u1$AMozQ0Z%0SR5p^PaU2oY!v=9lhSw&O20~EOhhU+v9of&Ml z=qx+QnpoLV0$BDTclqtN-h87;V?1wGET4MFP$$6V1d&l^-@Wky;b2vBtAbxmk43 zX_?SXWO?gWxZf0%&N43ju&Eo{7*3OoMI&R@@(gnluNPi#-HN8E-U4U;615dQhu!ay z*WQHBn=}@UWur>&K3qUYj`}uHo!FZ06w%Vo=93Mgss6$H@_ie(@kWz3#2bz`o4oM` zCcj9lq{*Anv15l0?IhhSwA{Fxa9iO-FFuI-pbB;*v}ys5VmzB`Ei7pdGtxT1Z?sMj z(uLFM$b8X4CRm#3AHjR2_&xnPDJjuF>djk7z#r0G18zd|BBQ`s%Udnrzn1N>l#*Er z?S{v-(3(qH_cJouD3}ABtrA6|BdIkevFKJptEe}UI%H5go407uTs9X87ED~3>`Y2b z!X&5A#YuO7=;mOs=vd|E#p;#lV7R3PAw_e%PoLoge_PpBr+_U09J7f#Et9M0a7+UZ zD8Umd(s%F4%sF`y51+trU-l|mz~S?j>^5ftPMntsT3#t$%|`<&aKhRvx>e%_?nE=f zq^J7;?rBZqg`3aiTMRS>;H_yX6o+tB8o>V3{cf2^dC8-h-2Q2D%&8uaM|C zblyS8=34XWggmlaoD{txGF!BaSFVf0=s65*8CwmbL-P_+@k;nToP0iR%IEx`^7-&N zQ$BwaSU$^r`f*b|?+dD)4;T5V=c2&s`8yx={B=Ul;G^=wxP6r!edWJvk^$%q>I*IPcPjGh!)K98>f_ma>3$C?5-sC=HG@NW71kQA&k zK6QxPCb7zGK6{_=wS|`p2r1M&tt->=Wm0mXW8p|c=3EHsCXU_UOb=O6G}X%h7r%A z(s3<2jCxKDubvO$sU1Q+4-BiGbHl0UK4I1Kzc_3eiLHV)bpS^spl@E z>!_Z)ji{@7?wk@xJ$LDl+_Kqw5vb?R{f2p~=N=uCn{y}{g?jGLt#|LfeS3B9+^)4! zZb|^h)N@Qdv-Xau=a_o-QosMk>iH(C=eOQ^?}Mhz5}LPc)jCOS{Djrc`iD(L)6$Qc zw``r5oZPm3vLQvo>gVES2`yVEx9ixodz1=Vw!E3xrel|GSap4cu%Wb=_aF0C&_{QN$v^M^ z)=xnrtrI-|+%J@Z9v5CgL!5+2Ku->>p!*IS8d^b*c8gduf9<89`wR-JpvU~Pp_GE#BN$8OwBy_*95_(*43Ek&okB|*4p(g~F(1XHB=t;vuNa(&E z<{%Q91$e*&^uVwZdSBfn^r4^=+?>YJ9qEXKS~8HTHa`t+`enizA3$; zkuhBy`6f{RWSym4yDXcgnCawUf{}U!S`4drU(AFDRku!)LGB9CjQ2SnRLZ zbh}O3;_a{7T>OLAZT0N0(GP{qVsD6FG_u9n#rWcJW5*h0n8SxbI}AeQs!=}aKoLSu z+haC-CrZO-iyZiX+Ld3$ukx}OcV{e)PeRorl`IZJvXAOMQK5^1)joQ!o}y<1o8<3B z;k1e0bOMRX;+H>BtvY)2NJg^bX?uYW@f-eA(exE}46C9tRT?0`Dio|&&)$9D1`DWown5&;&Vij#ni70Fc;n=`KTPv569@$g zpomEHtR@&wC7P=~gc671kk{2v5t5i33>7G4vNMzi%^xU=Jbt7Cdjh%ul)Yt7n}QL} zBy`g0P~yBiCyN|L|4ISt-Mur4W7{Stq0&ri^{{nfQc{~XfBbRR`Vg;9(ANzwkxLmY zaUPH?dU$qVpKcwKTYmKJTW>U}kJ>v_4x$bYHF&ut$G-mV$5Y>Y_rs5Q`Gw~}Cou?g zIuJ~K2X(Hf6Lp|O@{J~OUNC#3Be}W9j^%2(Rmb+_>^rb;|9-q!Qu1Z)SKogB4RbBImSdJ|JK33)iR)dN*;xPs;%EdT8^JU$glrTKEC0wnhHJAj-T#4=JJ;CK z*aeKGk*lE>h|SDBk{b^*$t00om6-(^GF8JXR+$D&5EcK!P9Y149o-Yh1pSxgAV$1v zb@n zY*a5-9=pSXz{J4pRj72uWWk7QH0q7w;mpQhv*g-9gLNP~Q)X5x5{yJvrpUx+4H z8uv?q1UyAX^0bk;+A*0av+fW_=3ev^_TgnLo+mu=O{yBBM3xqwH{=`DA0{B@hl*Uw zc^tQQ=DTmd!%9(wyP58KdTp(8?;gN+?l7uLMf3keg(a?cHBUHiIbV$<)-GK5N`6&+ z?5nSM`Kdg1^vIzv5ANT$i>pyZ^T!gXI*>8^PyBi9g8a&L>?_ z8j3$LC?JYYa5O{Tngc=>x)KOtgB#9YU?1EkAUmAC(Swo2#SE;M(7=Q=2ZZ7b{Q^z; zqvBBM!2|oLM|kfTZ`HX01_u*S@h+T>0}n4~7j*LW1CuEWCKA(5KO(9fZDBY9b0YT+ zdz+au@nuAMj~rfx550Np1ZqK@A}Rsc-J_~USbN|(;@MsU#U_dtRd67=f`Ed7hYsRt zmz`jPK_1T!rtj>g-WWJGRHvMoev}h(4w^VrnBgwULb17qI+(^wEbO zHnlW;_~Az%e)Q3~a~FR8^*5UqL~V3zo75`d!}s3~pfqo{`3X!6FJZ@=^2`%RmE^kFk747~V;SJ@Kr ziYf=Hq&7-_zIx@?Z@>Ba>#uTij~+h!rTDVqU{2QFjM|8eFJodOCN@~s#KcA|QycC* zeep{qxeZ~SO(K7*rmO>RaTvt>^L|$_K z9BG1sPWUi!lo1G<;qWG6z{Lns9R4igVgxx3;b)q-7@6$Qul^=}qm6na$8ixmBO^v2 zXA>sRA$>r_kj`P!91i4Cl*c)j0`tzFKNne|!^kO7MgUouizS3SH;li?5j53d<{sqF zu8V3z-x)T~p__RJ6Qo6!=TO-Z59oGLBv}rXaZo6Ugo7xOkt8^bWP=AMBTR6x_mnfV zbDBH5VMlg@>a)aqmGAPWGEimnw&iWxJI9azcp~p72o9Z+8;Z|zUO!hv$qo80$oucT zLmwybO>R_TzweuG4j%mS%fsTZ>*xt=XCp~(=*O_p=s=2MAO3I2z61LY960#p zp~Gjx<~JVF4lL3I_?wOWe<$sb$7Smgsg3HK{n*#!48TKd$XIZ}2cMapvB=d+2{)|2BAfqe`VW5UYv3)j;5S3pIYgeO2&>Zi+-}J*~3HYc4)JAffwxX@AeaBW_s^iw>JH>w-|KYoTL3w;dy5rE7 z`?7F~VdxA8QV2->V3Yr-I9i#DjcwWx&kZFy%_{FC}Bt> z@@OfgMZl4hl^GD@m*Y5wje5(`G6O{W)8O(-rTFJJa$QGrk7`HD89>PjY=C>N50Kx; zJqmyX1Cj^s9r{Sp8%K5WnK)8LSqDlYfGIsabb90HJu`JcSrj_BAar^ISt$HLf9@YX zq&D=41rsTBasz+|=nrLUvXBhn)Is>%20+Y$zNoYT^lHe&hIaHWk0qrI+zE;r8HyTt zjiYzj*Rah^6H#769=&(yOX`#t-S!Y^4MAQzcmQb-CZfZP@HuuWr22pCu6sY_S?FUb z_%O&xc~a)__z55`2_{`C+x1PC-bzt_>=YXpR(I;fe=>-YT_iCh$GIY z?9SWxc|Ba>S2QAv3br{nV-r@qU{!SW#Yiam77mK{BsR^U~+L1iC^!p_P< z35W#{aY~$Y=KYI4gemqo@NwM?e51R1=Z>lQ1zhkUFBp*-i!wl8A3L^v0?iyt zz6%@K$dnpT?TiN4UBK9bs#69?d?k+AkFGgI(?#YxF{>D8P7RaOPGERn9541Teod+C z+#@^f_tbo~5n5I1D94!SYDNQG#o%x83=v;fG5YA?opxb&Ud4Q6`uua`A?>VQc*cTR zrkyUy$H@OkHnTqoS*egm0F`!U_1Tm88txT8+${rV!r-8KW5i&!5fbB$v8>VyhXLs4?LJ} zxij>HkcXXzzFcSjtGx;|OQtMBrIR@8EIdCJXG)yI=J5cpLU(D))#_8EdttUYM+M30C4Mk`GL*2 zzUqrLi}B^nvu6uMp*SPquREts;y!j?p9^E?a&gdgU>5*oOLu&>XwicCM~;2_!--Rv z?%L_Qga8AE|C_JjTLq8+qybR4bjOZupWu}uD!ib-2M!q zI52Nc`iZ=}6M3i36kYt~%8lQP@7+7O7KbPC-=*{BGv5t7nVC-=I7e8Vb+~%fB!v}u z;v|kOIa!)MeaT{aSqz^{od;t@_6?G2C}zQPoz88f;|Z7<=vAx6oDe5Oo_-=P9@y%o z)9|(&M%ck$OBM6f7nrXyI-SvUV!`IkIBjq3S{yPs=EMn@eFD!q%SqeRB}&xxk*dPM zfWc#EfDSpt>5!{djy--N{zQD2vxON99oIUU<^>zbJCS0{@ z#dNGemJ{{!tRt7vcZ}etMVJTk@f{{HS7hC07-q*-MTVm_*Wob9RV$_e7I#9@7~zRN zN?~CsW9fyoIazy%ktWtw9KC>(6nJzPdi;dN=&6?H7_}VcicjnYvzRaDT>+fO7LOP{ zO_I^;)~sH+YWA+<$4{KVfAWNucOT@VmYLjYfW^FsTR_93K07{@OF#8@^ zoj!XRy?45px=fA|^RK{Db7s%ZNZ$n{&0%FVcvmZ4&{|GBB=Ct{v*|QO*j-M;V|Z-t z95JVOHWBk7mhke%^)w|{t(vgwxI8XT=w!E^hZ$C$K6^Ryv&+T8i^}I@`W(<>Y;g!C z9gIt7r>iF^R!A^fHn4RTI75Wpl9_MJ1`PY>Bb7u3@_zcF=Xz|n-1@QN>T_nx*~POk)Hogz9(Qwp|2@EX8lP~0pL$R-jo|#trr?L^5a!*}RDkGhy|BYq4XzNC8}pAR?T+i{rY=btXW z9DmtPkx1T;VAn_E98?G2BVsXsK$zwnX8Rm5TQYh&%BB$N(L#nA60F5kFv`O1|^ zbc8CbUbGmj^UVQMr1wBNeHu<7HDN1`UII>D`D4}=Oat7b>#!E^M478hoh4`8DOWjB&e?<6FS zzr|>aWq&MP0#liB%H&D35)*RXVIs6%@!(8G6X)W2@&Mz+ADW)1O#OV;<^Q}~y45t( zB)i6Be8wr=S7bA$^enz1KA(B%(&fKhE?kboS(QiF!j4C5@7H;0Xo;f zjiYl(=|I;SID>2E47&T~UeYc(fV+gDF9jo?C2JsY9w{HiTa4w|^C~k@&X}=%+vm$J zS(vikW#>#-DmGTpal*_gR^3p>dXQKs899C0wl9_f>AZ|y#$R^Qu#1fs-B3EdmQJtr zAdPO~``y#GF1-|YNnX}3UACA=E1zLZOOMe}9Q=CEG}j~rbQ%QIuk^gBp{*{Hwz_&M zkhZ#cI+V6L8$w&1_tI9Ef@mxHc?8<(XzjGsky>f1L$%aa2e1s)R$J}cRXc5!ReNo< z2WwXJ+G#VKtRh-&ttBNzV(pJ}_*H-6hrLAs5bw{nOeu+|B z{l#8c2A=4})i2SAtH0Y_x1&~9%cE0Q)}=evlDay0=*Y3JzWrB0!D(y@gp^m%V>`Aj z#*aIIbHfO%OHDX})KTMaCZbE%!gTD@}F;stYAMAlYfEnU2jjuV<%ONq63{+t<8 zViJq=phqZ~YUjUFVx0*nv93a5>1VN1SR;FN?o=p+g&pFc*{joD3ac=P!a8FpEGlm@ ztCh?=loL6T)7ohV(l4iw(a}!bI*^V0BGTJ?u;WQ;X6KG+oLIWZbxvmb#d1b3IBfy$ z6w)^GR5|UJ>_?iBQ0YiY(HUl(#`^hZZ=fiQI}>+WN*IOI zQbB`WF>V@C0|Uo2Y^ym&?i5H7msu8N2Yk`F76?aXDMx? z>~s*4Hu`?BnJFUiwfG8UQmAg&X+NiA7d%^lSI>!96grSqQ7Je{IYPiav|dRZPG}Xf z=mI<+a7r2>p=DB+QX&pmGjk`tt}wGkhd8BGa$3nQt|s$=KI9zUafPIO(?b(UIVz;J z&U5xJpD6_rwW_lfijfjqoTVyf6eogIYOBDIUmi%Mn+b?YBi{ssK*EU=Tlz)JJUgo| z$~h^dz@)niB!&cJ$e~fv&B%v|FI}5CxpkK0D3V(~D61Drfy7ap%Jr;6u&>_(o0Bw{ zH`VWyd}69^zhNTolFC*gyLFZYm_Oiz%J2bz+6(|xx@x^03hW{&Fvmhl@6imS-uwv) zMtqB;8>OEV;D9)ws|*)!bb0~qnt*>1;3${MP=d>;(ofJ}%SeOaI|Ed?cbd}F_k19j ze@M>(Ar83qQ;v&87$qCH?hbEJ-=XgmAlXG}N0SAemIocEU-0C(C@qF$2o;!FQE8M- z^**#9V&R~J;~&!dp9hc?+rQmA$F&3s43%DSSt9d37YJdQ*@ko#4xiq*e#3fgef7fZ zqI1{%1sK($(TndlObl`vguz}gCsAgnQzijV0&(hY{^>JVGm5h3u3WJUPruEZ7tWi{ zgm+0I;)rJKg?=Uwt5*XSKFfvtm>M3o6T8f0rh-P2 zb8Kl=q1O>*xr!;YpFMldY>0CjEpi&e#meev(p;R{p{{dUlE}Z0 zGR<}PAkIQh-?i=$|1{Uo>0B?~V8y4Q|HWa^1dl`>(hER_r=`^}4+7 zz|XJW&~AvE`i+}$H{);FZr{3vD{kFxa9b4Xw~Ol+ivqpqdfau1YvhgkH^nXe<}G>a zzuk5g-=<%qO0EcPi0k!kNNPmftiE;g*3Fx@v|CPU>#^IiSl)iDSSzT;bs&>B^qV(? zx>$md4EpC?otQrZB)NzTBJ9D#&{R^TiwD59}hC014;#NqOT#d5JV0Cx$24Z9f~k5Pk{ zT{nFVUlho2W(GCR(4sSZ(QR3XQ9nD=aA}EX3dQ2J>Qs@dS4Qjw%Z=>n2T+ zX;XQt3TGaF%!5T=2OKh(=cA;4YlUK20kJO*V7MQc{f#f=()nr-||L7*4levU6JpFU&SOk;lgS^m&t z`M9xS>}5CiAXMWlK<{bj@V5vQkr4 zDbtr{ zQ?Qf>G%@~T({a?qX|stj{Gm`Hr%9hm?0u>1j;1~hKK?@k6R-}7@%E3E=c$2QBKr99xumNj~j1x;)>aT`Wz@*K%=Kjpcdv}1YKyrQYa@{ z03ADKoa+At6Y6EW`t~S&60}cmK<5xM{%VEgbn!S^R>q7T!|uE6hI^atp;mb8)2Sub ziIo(c&*N8tM~$JS*;p#Z_~O;jgTL1t7@*t-1C;4-k{ES)L?A4ktVmzkB-i5`qjTgO zCs`j~sExm;NJotrIef$@S{v#A7o&>}hbtt{IHK)|!asdByrviOzp{^&*H#5jE{NX4krBZlJ^qmxU9jrHogX$4JuHlqg>h*1}4 z?8LZV$Br3g7%*ZOohLtdh`#};gT$cwM*n+sS8#HmR%k6kj~NaZ5cd!RI5WRbQgV zz>48E++B2asz`MKt)*Nw!5B1r>(=OW_inRLyQOBmrLbCcSq>M&90s@);FJOMaom0b zXu##5JB(J`-MZ1kl({XqV=!CT@M>>rnIZ-_`}L)>=(Rz232boVXxmw{W=sdVUg7Og z=-x2Ap=|Up6`%e^7paq?ujo^ZkC*nw|Br9y;yb43G!Em%$}k=NqMJSDds4?T-v>x?51@s z>taAVQ=ZDRSiA7;VKIb9DmBIUS}lVWvrcHy^-dRj?VFB{#)-b2J58T9WeNt3M$I{N z@DL0XzCb%LMWj?SHO!W5wgIj%!8m|iwyEwk6~PNXD%H1P2c}35Q1r$(TG?pPO?Gt> z5@(Qi-~-!ba&;1*6WMqQc0{T^2=l|uDtgOa)jiPRZa8#ZbP=6JCtJr3bbvP<7Eeb$ zmjgbL9Y>Q6wfF;RjJ=&*g#(wnb)}<=RRc~sXj`-|rNh(dB=5x5lO|4_z=496BKw!o zRHiS};*c-kWLL?w21>MZ0Vb0l(oxqF5g99|If`gjiheF&W$y~ccCX1P+KIL}JzXZ3 zgSB-lT8|8?u~u69_rv#Xi8&}YqqSrg(4uv9EAWp~0ZzYanjQ3oTRPnv-jZGKcj?@v zlX)f@9b1kw?zQ9+KoeWFY(>?I*Nd=KX+dy@9{YjyE}dm(yK%BO&Ppe+1)YY`IG~%# z6|Y;aSDY)tR%Z?DLlC>aB=5#5n{mSZG<_;Go{L3S^%Ziqx7D(X>?Ash4pr^j88*k^ zQ@H=_Kv68xLvK2fU~1Fl-i`bvhE9<<<1od@*El4;vIXvwDJ(nV zZivA;Eg<((a2j{FE_@So?nE=IJ)I4&oK=;C=>aT(%bNo`nZfu++;HCH1?aw7Lwa@V z0%!Bg^u^;Octwsw5S3b?D4EE3ZnPD7AN`g6=^R=($< ze5<(<-;m9!`dut8;galm^HuTqj2Y9#bTN&h#0ejd0~orQweKa;zSTEr2Rf1l#FU4V zDfq$jcciI)uR#4?Ve!1&tp=%(oI*|yJ&9*ArQFR=aL8ZUWN_YO@+t#Oits^TxR_jN zvX5W^jGS;WTF}Y(fOx2~*|X4lMK30ooBbc@C4v!{kc<{9ZDtR|Ct|V9umRxnS06nefRo^eGzE8#DRP`P9)AS?$!CrzmZ_aWh#!axtc05bHur%{<-rQi1 z7`{|AYpz$fv4!9sa~~*_v`OrxglAq^;AL`9XsMew)h&bNjL(cWA86kqFe#2raFeF` zOW^6#W`*f4ssAx%k5dPl0vPx5)YEf#Zz~kBhdITqejgUm?#9%GT%<2&+l=v<0$n)y z7S9ig=P4LB{G2*4#aH{1c82_>KKtQ+^Tn${PEAc2;4OVCrUE^A(oFJ~m?dV2=`P$E zM1RE}&f^Sz!n?(*jdzrOz37d>#G1rpHJ2$Q)5FXy=}@R&eNc*L)mq)!CD952Q>XEFMM7r$x$@S$!4 z`uONy2VKn4d+eC;Wc}s9Xv6ss1q^q~UkA`E{#lBC3E|IsMw{LDSRhjojX@|;MCh%69qa)y`o<{ufa!6PrancpzA{)cR*VqCA!HRA$5XI2yE>qMD)yXc z$A^Wn(RGM$e;rJ=+lCu^2V$_ZY}%=`J6_~=;vTXh1*p2yG>%H zKd1*lB(mugi2F!kTM?lF7DFq@QUeZw)=&1m&N8c4j~;zU-kO1Y7cV93Ft857Vuz!g z@k~lrBdMleq+IMJ=4%60!AVHi2 zQOkPx_O;9Bv14X03V>F-0E{MS%4nG^602G#wr*tz;>z3CE)^BkWUh(Tz|2<5R=$Gx z_hEwvsG03$cL^pZ@72I?2>G^cG;~@d%GMCYzLL0%o&!Tu`}Z+BExTywvXeSYn-3NM z9kg`;Jzd$7LUcn8m(wjm^E@@BPfy-!k)5kM(lBGIL?Ja$iq^7Kc?$|ZJWBZXP0tcU z!={d6_k)_GqGfOyeBoxKGWeV|vpTvQTH2A{iAM;UzaM%`ra z>~r3*)LsSuS!Wge;NL+7U#*)8F0QKzE-I<33cgfl6-;kJ`>0Xc0f<}$uk{57 zRh6bDbf<)&g6H}027v}q!D8`Mk8lqP4WfcqxFvrOWEd4ZyACRNUR_l1lK*NIOi_8= zRPX{5Un>>7xXvngYF$+@?EpCIs)Fa%MFk^;Jg;sl_~SaO;E8op!4vDEg2zs;y9ypT z>3@U@9yO(|D%iaVP1t)mL2L!4DoxYjDTOZQ%NQNisxbm?9v6|A*!#6&RC z*hmQ1N(9fJJ#Av0MDT;#S1;B{1mC-L<$T>laPi2Y1N-v!PVGhTsG$(DhVqYE1P>e3 zuTCO(U`n6vlmZVbf~g8x7CY}07vE`cN4r~n@9w?3ckgNUzjr_WzQcMSe>AIJVii_dQdL?~%72S3#qoD+ckkS}OMfJ;uYccZ zy?-B9+3#DeCHNz(T8UQbDk()lvv#MNF1&NM{$1@}gZuTYaU~A4Q&K8REyXTy)`wXx znDrQb8)tQvpb1$bN(KJYip3p?|Ma_eah2N{3Qa?b(#?%kJ)HO^`y$`Uk55K*F+ z78@P5+>v+nJ9p#mI;qd%p7Z{_d-pB(g;l?Ajf080Vv;45rP%DH)3*nw%G6?P!C~tU zH8-^NXPzI=TSCsx=%&RgO72)8M(BHaR4X}W4#2?DKAbRXeXzjxF-kkUHieYQn$=N4 zAG;C@%NESTC%R_N^uqtC^89{yDk;%A!|r&n;}d9vAnx+zY4#{&jcG^_lxeVno zOJ~Vgz$MKrkImDkPE|JF4(Kj^uxLO#JA${K^^zCs)XBX66c9%{r9>(^x?r)ueEh}T zRaA6NrYCnupfrFQh6x`fR8At~#K1_|%}KkfWUB1w=wL-pE!OiTR)wSjOcWha)gVc?8g0x;M zF_75D#g;0d4KYB#g@Eyk>{iLAICe9Bs+{7VGU2tLX+#C?lQ=ff8-iY943(lg62xfKYt+ z@Q@(cR@|4gRtjrziPa6Gf=sN7K`oSRtJ}bT1k+0HdXWts5)$QV)7JW!^&T>ChH=#Q6>r@hz zV&DLyWDucnPgrSNUwzippFujv2piGOeYYk4`p4J99T3OHlI^y87qR7Xcsj~1v0CDtK>2dO^MgB+E2 zYMHHpa!~ah;t6`PmwH2b28GxNl7wk)n2C`hO$kRRVMSGqw4~SIauQG^(UKNNu2=RM zY7AwC8bFfo^!T=tGfv4OStjX;iizh0Xb_y>W3Kq0QBSP6TeWDOKw#NIHWw|pRM(gqHp6J(9j(ER zMW+mYA%h9j?8BB8pz1ewv`|yYpfR|RacixnN}RRC1mT?551Y1Zf#OoxBEC7!zUC9e zElF{SdTY>#);zsvt-?IECL?J_hr>3*(Xj8gL?La9xaJl<5F96eBqdr*kS(z_T*HHC z^@h9;f3y%Fk_onEbnZyAgl3|dNRTG58a86^i4PvN8f-A}{rBHxXk2rVP|>`Z0ZwRU zVYF!N0FZ73CrusATB^)cz;}r=4xFHB{`Y1T3AmL0!bG~SA6U6d#mARW(f&|fnoKmCFE-J>bLl6YFZ}zy_w^qX3aiAkL;~5INW?$2@aQR#`eF9 z)0tv=D~#THSV}KG;1O!d2a$5uD-h)8H%cV9jvh}AQSzs+-lE4Z9to`0RJjDJHAFxZ zmarD@g6aW(wN+}UEiSEL^dCXcT>%1!YD^~bEj`ag zM}L_W7(pdB3IS<`#pH^w%t{T!;=yPgJu2&0UzNpszd_B@P=0~+h;A4$lHk+OqZVi|mfObCNwF<8%f(??<9WvdWGqCE+$TRsAd zqMD$VA&NlobEAg73JGzvQ&97%VYTUEXTM8TA+Z97P-JHFD&Tq|o{Ufs4`J8)P?_W3F+7I0h@W=?R; zhzkh=IYzn)i=MBpG8W~)L=bWHvDW#hDoQPoaPcQ`5{WQnsb+oPBdS7!AWG@3*JumN zM^w??ZE&hK(vVaS-5LbqE$H>K4GF4JA3+u3a;;4;IYpa>^dzBW$Mmt$eM_4_aw_QM zS{qk#8x;~ltkCAHpPUNDqqV6@ZUe8;pPF(CA$UORkX8XIIiQ>h3b7F+88bVGoT7rh z0G`m=I0=Z@8z$D2Q@m&DQAc`PRHjL&1OsGfotl!$6mLpY)r7gA7L~9n^A%P~^96$i zmsj43tR@|BT9V{A$X8*ZQqPoSHBlnD5*i2+K`m&Q^*%DIU5C!7tE9yt5LAPTfqSsv z-tpC1kYGt|+IN5>ePNbl3q$P5Nw~`bi7f~dfilAC#5NuHCUy^lo`e_v?5w9rf4Y}N zf3bzg9CA%>*-EymN`hX)JC!u_P)($}SUkaoL}8^h2;$#YYZ+M4iu8=L6`=LKNfVt( ziKMiwzDf)4FA^fIg}r%;*2zpHNG21Js;X4EgawwE77xf*8HBLtsJGCCG#-{4dD6mdS~52o~5{r*5?sUTr&ds)O)KYTLQ)!YjE$-GoxK32biuzS?ws^Z#ZN!z~cV+mUr9v;S_-ln;RUs-YRnn$c z*`!U_b>efCmZ8uvzRXo#R&Fuu`WxDDflSzRJN~iQD;>D141bBW8dvhg|5>3`=@nJ7 zO1D*ss(Rc30qeK}vP>g#SuQG^)YrdO)T`2nS+m925Ar7fQM;u|qv%T&{4)8FA*kf) z-v=*Vcj?rjZ8Gw#$VqaR@q_o?edn#W-h8uh*O_c|X9=wVkyzu;U+ylHm;p;%WQQik* zV7h=E*z|pNpb3BFi-%{pqI^`)K#*52ExB!+Ul!d!JB)-7x;?r=G&-i?Q&ZXZ}zN%7C6;7Bofo zG5>h}VEkWo8}QVVAEQ(Zuf$>cV)*&12`KfU>aQN&76AV4+kxPZt4cE@duzZw4j|{h z8<73+e*|Uk>g51pe~Tu+pYf0X;~(y-FlGDz(|ER??ttbWHAUZpz{Nkl^x)isNRL}h5_%xc|7%S^LqLI@qZBh32(gH`Be9V*YRoo zvjNKa0r5`+;_ud#@m>Z5a-aBz{`eE(2{HU9bNJjH!2BlzU;$h}K75NBsA&KikWZX| z1G)0coWAt=28H*sfX44Ne+MZ1lf;i)t9$YS&mDjZ$p9XMCPDedlX(WeIr+WtY7)>G zG!AAz@K4pS-{ki;;Pt@vizmfXBK0)gzU~R=wx8B<%tB>AaQvyKgY=)ub=)3!J)r-H z|J2jZ4CF#Rb@%cFLctY3hFWj?5!qv z{+O$mA6|d@8S#whf7WcED;&@P6UZ>2g~tW2VEGGR02+|b6uR#Kl=F3>h}w-eW+7Ri zmd~070ROBx0EF-0hd0LHm6w9@i)Tfj^G2Cl4StUcUZmwa5Wje~;5jt_HSKTao&>MF zZ1f*17~MbQf9^i$pDT3J`FFgOk3tr@2a1>9y=V5>PsmC>c zYW?{a#0x(MvmDO=HTzx!`4j(u<&{r7`NR`XKKayBG;hdpXh6Pj9zE|&3m1fl+x8F1 zc7vT=561zGmCxJpjL(0O<{iUPct{0#9DtGWZ@r1|>z^;b@Z8f+q34f3@dSJbcAod3 z7thNV#ES(lb)rdU=8J&Fuo3!gdIA9cJm8N%PKLAXzG(4M;mg6%-f*UV#vd(SzW7Q2 z?zf1$(d&ls#QxNiPs^v3+mzknCGm3JEC2kbS%&CqH?RmBspkwvpPzXaf1iEsx#wxr z#ES$!5BRIEsw&2W552q1@K=C;#=v8#sC>@EzbF~*B)ELFkbREQM32`RVcGpB)-5kQ z*q`%dH{jy6Unu1EWheMcFCk)d^FRBXh5^%G@Z}b-oqfGwGe6Ur8!Ogx-stC^f9{3n zYoKqx-mqb#nwG!x;tS7-=SrV3z4r`R&TgxG>BW~`diiD5bMYGE8#U&h8)HV{8ikAE zxd*`Gro-4htr{@tzh}R{_Udb|5q+b^jhnnr0h0=L@xVdANXDys7VxK@R-Sv2xW&uj z74c8`s(4MjE*gqPHybx;@`i%rc}vf0Z@75e$~PQ$0QeVQdij+A_&2=hY2e)S;_*9f z173K6_+NSX6*6D=8t}%O9{bS%1^dc=@pvgWpgaHr&;jkA;#KKw{u^(;>F&KB`hi+8 z*!~yLfmdGsr}Xc=FC6p6be?#;#8_}t|6#p^^8&EH)kHauXRXI}C&9&24|o8m|LD6K zJk$M^Xt+!)(JEpf|dYdGlQu{Hzjes+zw_|!crnf0@9g? zdON1KJ&HA^w_|!crnh5yJC@&$<+mwA63cJL^4pYNHZzL>llz>Xj_K`~-j3;Q&d+f)?bmn24dJeJ>%<+o$`?a1@nR8ubO|C__*a=7AL|Mw$lcRK8LM+1lE z(jBgN*Z=v*=CIRG=x36CCS1-(F4v>~>ru7cLBIIBBhDorN!NdW#8=_M#~jsY&EarK zSJfleBf8r4=zo8t+5h6uT@H)Gg6nnHqyPTMV*eZcM1V}ApZp(>%2C&bG6U3gJ^92x za4G**cV&qzk!jt#XZP-mjP$f!yLRr}v3>ittzxVATzn=z6&n&|a4HM? zheLBX$qwOqn3b8icdr2#yTr~bJGO7zwsq_0pMUn*r=M=wvT4)CjT<(sU$<`U8bz|BjH4bV3;8($ z+T}}^n6yrmk1_Nd-%f$=29LqZmo8mm80?_JGalp!Iq?~1)zxZ35>&cQIdBh0LJF)= z@AJ&F;@LRIPwZ&i{sC`aUxRTRjTOkw2e}@UXz>Rf1|AK?Mtvf#VT`F(T zS{DerXo1P=L>Vc-g}5(jE|Y;$ z!LS5&7nEVN_{kw$d49`#Q20DA_)9R|;`(Ka&x0WtQp~TI=V2BvHE>*x7&q5#v3N;; z8LSt1j(IaxS-^)L$!p2PKz23UUuv+NfdFVC|u6kN=8 z%%O2oRj1;W#~i=8+z-)kz*$~E{hw+n!Snl8@JY!>iO-|M#LH&A@Zt+p^T;)ez+RzS z!+3g!CKhv?vu2XXRR;Q1xLmld0D=(E_>dwUN;PjToxMJbJ~KFd8rQ}$uwf(g89~t+ zv0AJYD{$`jQn5q=_eTKS^l8($npnKnp1&KqMu6VUDG+#VuJX%Y&>;U;of}@6Z3Z(Dmp!( z#yqMCmgCD6_?>s&efPch)VeLP2>H)nI%i8v6U;0PW;woW95XBM`!v56$oaxO=>vf@ z0>N4X^8uVpYQ^PQVCZ%Uj1=RI4`I`$u=WB55{cvP%uasLwCRWHE(qfrIZllIk1;Vp==BVZ2|`i~ zn6xoL7$$g+2|`y)5Ssf)HN(M}AdCsZ(9wRyyqF*qufzmlkc}DN5H%(UV}dY@!iovP zm>@K?GD*ppAdF=Q&8!#pX?SlbmLUw9orq-!kqL@r2t%bqVj03%hA`CpF!M063?V*n z63Y;}t3QI}>0%keScWj9ri*0=xw0dcA@q`U{}mZRDjS_9zIjxD!a)?Xq0Wjc4%}q} z{uxbtqj$mteCBohqsJau)6-DG>BeEci!eDIFRiW+ke~Uwl6$L0(2Qf+dLpub`dhItB-|+V!POOZL8@DoI#0V zjgTlYw!xz-RQdLW35o=xk0CBFeepSuF%^b{XA)x?Jh}>|&rMK77=1Lji0SiBX*wyY zFntnZ#OMZ(t`o)pfhsIU0)uL}Pj7GW@Nk_=;0(MNE5^vt`Y4!p6FgfKiipC3#3(SK zJh^zYyF*k@6N*QS(no^nckpax6cdF7iIHI1A~xUIWO{C9I36)l9|5L6z_V!sP>Lvw zaX9yU1en0HVS_P5APQKyp!_CAiIEbJKS8o#y_+R0LLUy>h-LkHo^;07zNbu?Jb99L zeS|lQ7!K1mi1pTWW@iFbRQMwFVc@w3mUUjBFf3vic-D(`rE3kJ;S|u&c1a)}Q1WMu z2NAL(8c~2?&1#xw@GuVX4ApT9t}j9JtG%ud;U~*5eJJ`(?XOQ@24wM|C4VJjN3@v}6uBN8NcoaO1l~`lN zD2e-C4j02*Lx&9&L&XrwV38^YHF$KN%MINp%#Is}Z;8{Y92lViVde5f^Mu*Z*INeZ z1F6r5E*37phyLjVSA1wbIDuu57^tTJau0y{^W2CrqeqV#HIf!D|4tA>q%h3`Am+_A zNydamIB~)mc&OOy;T*#*Ktga-)0t?DnQKL5rRoYnM&iru!q2zLEE_`x3;+>9X3ga8 z6DBA`u?!Fc^!{WXYS}7gkk1$tgvO0=_8-6~)W4NXcY}rx8|F3Y$}%^^1&HX6nT7(r zifMET02?<I zoBj~Xt(!=MCUOAO4^-tKnljmB3InPp5OG;~VK@6U49AiSzE=YF$<8PuqxwkOB%@aX zYi%f)O~D9PN{jp?!-K;@qN)s3U!p@X=6_7AZ9Fd0MOu0E@i<;qf*7a_h02R)@fuoAY z>2(e-P?+eN<8j3OrR&VzL==xx(C-z&hm5Z|9tXkNHBrRlXnu{?^&!J+6^|2ObrkV9 zR~dS)4;@{rczn%01laEIIy8dgalEp)DvEfVnqRRZns{8S5-UohiO13Y^5qf7gS413-Q}n)MNu=?(SSFTKMj4M&1iv_%c${8LDPI&-JT4ZCMHSJ- z<6@CmP%=Ndcw8(H^ULN%8INNt@!{MkwD!c~^u&oe9_PoD*{8_kalAKVn_P={ zoS!4n$Kwe9|6@`t9{23isr~U-JZ@~isQvL+JWl)Lv3Q*K$7AvMgIGLHyR@P9qhs-S zs10x4ACJZ35$%u1;&HV<9*f6m9~pbd%}UB6-T7$Rf6REK+tmLlf0Xzr zpT8!?1q-}mw~4dP>(*f_hI5gWal;# zDeeXLqOS=b7GmV7@2Fy8>kWE;_F+Q<-j+V>p5E6m9vcjS?&_Lwlb+_C+jU5r4jmF; zQSgJ)lET|>*cPe*A5wEo2>^G~`?C)jTw_V90r#S>2_Njgq6LC`=zaS>WUv_go!{CP z0PpF(pYMhYmV>|dT~GtUz4(n;%dTg5s?T~H5bpLq?JM!5cf&>MarFpL%Xwh97rh@` zrixWRarFpSR?uQ+PFl+5bGnMr6KG3N?K4rf9S3ov>oWDnL0qar6(88u4UDF#^D)DH zO$Ya&@Z9FaWAfqN+;UJJZ-s}X_Tu&j52PxXaA0@8eVN6;Q{lm$ZvVgRy$6^a*L5bU zTe&(;=(PlYX{j^I4_{`mM-`hz;5tXe|lAOn241|J+;EUEN(hgMItnuKhg-Ak=lwx#xze z`v3pjy477&xqHEuu@dc0`EYK&CB7Nt?-%MeaN3>mg340&4;C0QVZ5hh=R{M(sM|H) zX?B^Ft`yoW;a()7F6&~Sf2ZUn;;qZKTHvSR=>ijVrLG^AzPjA1&Lu|e=2d;WbHP@< z;{_z-nq{5rbMMkd9omeVy(666bT~y%aY7K+Cbi43>qzRAuwh5)k~)9Tv0znkQ}I6I zr{#NDwl3>73PZHJb?V(LZ)MwTqCEsdK&NEt3*F8zR zGVKClxys4*l2heY7T1Spy0CJ4o4aw<6^YI~=PG+To@;rwJxM=W!rI;zkJ;y`?Myhv z-Q7jogJ{%Fb-C^DNkPwFSB%ia(AGg zK)}uDZI3zaq295q6faqi_0D9+Df+3jvSX+HglHbV|13McWIN;IQ(C2C?8LmIBSy+K z=T?)Coh??qd5y8&pSrV27od#UR9cl|rE)pG73Uj#KM9Fv>{y`Z{34m72gg4zwzIqp zz@ZD7a=EvP>$sKv9e>!2r?x;y02QyqQ)T3G?6tR$S$SJ3s+FzAABgj754qg;_!b`8 z@#6HbbUpNuKl7r*%FX2#XwmH{nsl~X&~sOj%Uxwv-l~%b(tcOU<=8j=dj1~sub!nT zqJ}+{A*+$gy}4l1xe2BR?^At5+zme0 znzy<;`t01ht&boVoPX>fROjTAE_9PYnmQ+!yo&0%=AC3PSAA&V>YnC{s}J#AMH~uz zP8@Zf-`#xjfzmve^tA5el6=dJ3ktdOE~<-5U#MaN-Ms2Nmz=-4XY|F@DVJQZI_^A2 zloz%>fLwB+>I62ZPopoY&IaDRiu$?s3kE+R4gA%@&3oFZvcrdJ z^k#F?0PFwjg{$X=Uszr0|CE^>)lBcD4TODLv=4SX5cix+G*7JElWK=Sg>I? z2NiNX*D&gKFVty5XxwI^VNa(iy?MI`SiDm$xW$`QxdWDvMb3MQU0TYvo1H7F`gT{2 z2?!0LkVqnB1qdf(XQhHPJ`>j#vMMy&Md_#W_A*s<>$>a7oDgye8N&_fW`amwJO5$9 zx}Jtf;ZrI|Su}J-p(e203Rne$x^Qi!E~;8&vQ+S+EV)u zd`}ZiSGKaJwn*os4pCca=c(X)4bv^`}_wtwJzI7@a~+>TDaQMt2&WgC{- z#*Q!4E?u9O=zNLn!CP56KH<)mkIoSd(*^nyKI7DMl4p{veYOoLNZWDwxcCn2b2*Lb z&Q}h>{w3FVL3QQ$RDr@RuFd){XIrNPI@>lXw-%|}BC=zBmz;s~>%>!=wVrliz(?c= z5c^rSX}ZYrD^p%sa@GimSl@@arYU9PQ>Gw&K7Fk9YU&~<#gupO^@eO+`&jEoTCXL2 zB{jH6Pp>6?dDrH(r0-hNH*dmwE$M^A1Cw4$`h*xSO53g_ee>i5-ux#&d%BkN`Q*si z#O+$rM|s<|q>m@pCDOKQNgq8zyO#91+0*}jlRo}!W6Jh9`{lVUbJpeO!Ec=tU)NyI%x#>r-F*ui=jiKBXz}RgId>BT zz5?XAxeasPC8-T_c5b0a>asd7&#jwtSF9v}7wcFz=Pp9gF)eM_bJx$=?h278l#*-a z+)JtJ2n@e z!`Z8t%g{Q4Fp%>xcFaDC8g@Zp<|wLMKbPk?i?XBSEb+Kbb@Dta9j&9e56@k0JC3L# zFt^A@?IWl%Q&`H5@OIPrzU)Zm=#e9sQv8ZBw(8B{}W2=kbUfE;18gYAhjwO6) z48OhTt`wETrWiYk0l0BQ5!NSBmhYCq8r&Ryd79s9Vo#1(JZ2qfTArf{&Pq1z)0w3* zDzs_$j_XN5ups8%cZKEIdscMA@y_131*N!EP3KPJ3&N};Tfu7McYk4V24sLPW!!Bw zS^qS#MD`}-dxf$#v1Caj5qoj6h8aOEu+V_B#aBe}@$4;}&%t!3d)HDG9J}kmQX8%E z;jX7!R!S=?!FxwMjUzU!l)oY}H#lXT2AMo2^2;EuORQqAF4X2SDoA$ScyOwl$)aTJqA{ zG#uEU;9gZYXqdC!)yY!UrsKfgOP`H4qpg0<{vGaBjf1*5>(Ub8CAD!$2=aJVxbgzE zt#;0u2(n5vUey-Bk$srVQ8W&Jxvd7nkzoFr-p1Jv&#X{dJ!jc>p!70&OeO8;Q8o2D z#;!!j4}bNxDzv_cLaS|HIL@|IxoXaSp4zBvm)b$+=w@QhIv*iNvkhgejp0AuItX(R znGZF?Bk5qa_8N8ERiaF}e<46^AN{S-aX6o3s8;8HH#|Z5OQGjuXM! zV{`UC3V{X<_%Xx=G27pzGO4OvYbQa0zRK;DbM_`G4YjrFh$@kV`T_4hqR4W4uw6ni z^_YagZB!U-H`}2+Fl7owE}OIew~thQ#8#5=BwTK#&lUKL@;{=_S~8K0VoEpCL7X4h ze?Xs&WK}W(!v;D?@B{n1^w~^S!(i_c<<&`KA>S9}HT3xbQC^b_%~>beM=Gd7Ee`A> zk}BD8Cnz-N>kzWAii8dJp_G^+%?S&;ffx>v3LWQ>oCkmz{q5uDaf(g4y#~&lR zfz~T2u#(j0tV!O(7&;JZ(@$A8)mQQEH?w3Z&thh9XS&G2Q6(VRxA9^JKAb{Jezp)qHu3@o zL_!1(vSi7ha_@EzjBMbZSr}n5P~=H|L+4OrEsnh?@))j$cv}udR=ROLDALEvawtMb zSlK2}q?+#SBfOCuij;AO9Ev;uJBOwmikQ4g4n=mjE-s3cW00Rl=XkvwjI2dbtSt*8 z_5fgoh%p~W06^5D2Soai^E%Qay$P4^9B_kckJ;GsxRd4p77!nR5&4%85j+H)!3D@c z9I_miEWx3a6(Q=^`JpRAx^N`tgvdG^Dy|es2VO@zN>+?y9>byP%8|_NIMQ4}k_rAE z-Q2Dsu^wv&(0Q@Ny2&Z=fQ$LM2V4e=z-4V)8=AmO<$;U-Ok2|xBg%Tv6O9JIu^Lk?QHVK0CdQe82RK-urQc%kK6=v)D`Y(kM2 zTE2kW*9Te_@o=FeWpzjclIAh{IOLISFpbf%e#~kmy<}H2ofoJmXiJ(&JM0u-4eEF@ zn6zc*SmHHMP=Nv@ISE9;+E80EoU}EjvW%jNLR5<+?F3Vp4Q;Acwbdo zv8hl=+Et1~-9r=+Is^+ANL7pt7F*@!S+vEwhpC}@TGFmTB&N#vZ-yJi9I*}~IUD6| zQCM=p{LxSYNjyi;lj(yr5T<14|8#|hXjLFMwPYxiiIDz8p-wHMFrbjYtxQ@mRVh>G ziiqLJ4k+acKrY@^fm5wiI0hVqVaU{RxALT23sbtc4S-sSIkF?<`KOe~p>Ck9ENSgk z;cwNAC$EE*RWNHXMIUAQ_!p_<%A{R}kC|ACe^%)8aeQ7umkUz3Z;Q_=%I#2!rBEKD zwCVxznUX*ItN6T}E*yMTQWAYO>GM{6UWOAu8Rm2Nj2WU+rL<#`yDJP+GSz?1+izS&Ix)Hf2~?KnmL7v+`M7+*DCTMY|G4C7=ec1cHG;Fn9yZhA?aG@T=x# zD;Nk$!OL*LpJ0>g17skd5L%W4X>MdeDWC-HPr(KE6t$wa8%e81G8ue+LTw-d{Yw$; zUx!~LX~5;DA!eF^fXOW^Ck>JuoW;d0nqkPnaB}fK^f^Q0 zQV@?%tQA@e&j8|ZCq!W?1u@W$6}lBR*=b4E`)F=*#S(t zj`}P#8w`blABC5d6iukebFD@RUKyHBnkE*SA+ON=jvJV#U56VmOGQU@enup?*})M0 zxd(2%zvRV|R+R)dbXX7Q=#mxO20P8S0V6_aOm{93B{&-j21B>N?givE1%Pb5AUP#j zMBZC~$e}_+ZY@US#l?vH6wOT*kvHWKc}TzaX@M&DLz-D+|~sI_Y>5v6Q7sU z=R*RHAIE1){uOa>0~wZcJhq;tMMV3fE+A`3nFI3Xd_W$`0rHCh4A@L3nr} z`Dv{flAnT4SRnQuKS+KVb`Hr3AVN#d4jF(L4<3hs4jhkF1mTd4RZV|Du7+zCkj;ER zUJe@vWMU5v$oJ*}@+#O(^njZJUO>Jc77oaSVH}X}&I9DNu;&Bvqec#p*X68~@t_O4 zeE@j_ya(!F+^b$dUJZK|kT(?r@-o;- zIt8*C`SwCc{$05cl8+QXav>x&`z*YhCxo*X2f(DNX9APJeBMK=S8HLh`10A^DsBko=GzBo77A zc0MHc7C>^f7m@+Q&k=lbxW&O*9Jm_!SG}mb8-`54MdjByD%WRGc|WertFs65M!P_EF)E8*b<EN&ESxnYQB5#7-!Q;a@JPy!Ux54Cv;u8Ua z;wYIyfCLAH38n4h4g_=6oK?hS@CpK(1WX6vQ-;b`D8T^-kVF{INb+{%fiD4f7JS2A z@Fhz=_#V##-x}CC_)=t<)bNXe9Qf9{Rzf?{%JxAY@U4Sa9{7Go_XFRYn<>EeaMdtUts{Cxli=*$qKg$0o@5?Ef zB_KFm^@h7SqwRZrR3Ft~Fq_j=oQB(7ti?#{_nItaka@ ztq-(4{n`&k*{GfMV(;6d@3Z%<(f4uxRH&DheEh|){qf(9kB^N?qwM|2sQf+~l^kjqF7h0vNxRK%;?zIXf^z$QF{!1BWvcjCMFSc7QI5Zm9cU% zDWfxJnA)b%kz6N=>7S4%((oG}lhE_A(Q-t>jFX!VH(FqU*TxAIeNe|Rt}zw=G3P%G zE<8@U{D+g16ViktVe#iKZk3!NgH-cpK<1g3*5{)9?=_Oja{15lrSS zDrAsHr7?_iluw@~0*HBpJ1$qn{uX9K#w5`RQ1G8D`k>&0BswFfW^vu@5}i;S#|l0Y z@}Y^tD$JjuSrJD;Q90aZX(~p?dhZSB%Y|cpTlQ?v1N->!hf6)Sd)0FAm{EU^ZbyI7U^d4yveb%T5QR z@eDN+z?3~J{Z%S>mYuQBo-xmaPlr#bQ!)yyGiT2jXCkLVr*s^L&x+3mK8McgXQC)K zozLVG;C09+cq+(0lTYAO2%iI}8-h=mf7an+ojQHW@EiwDMPM`F7d)Lgb()N2yud_7 z^AwxPoSHf{6`Yb%_FtUU&IV8#I3-Qlr>4xQnaQbC>bs=%1oU)H5Hvor``<7 zV5#64>-3q^Cj85$*kt-g30XoZMF2kGJ7S%w%v zcvB&xHiJ`{FO^HELl$=0K66?>9p&cW)TRHcx*U)1pTP=SEjN(TT5(GBHt)%|Y@I42|~Fb`vCb4|ynI%>EG zUdfk1`3fiCJGA{t4wC_a+%Xvc8*V`@Ql6+=v3}Ft$DeeeTP;BC_)Yg8?R)Ik{||xM zp;0v-wU_SyG%jj^+9AL>Aio&48@qF`T>&Sl5Veg5bEuuhE&l#!0QBHN?MR;&wE;ts z(KLXc(4E-9D*r?dx8<=i0J_1^2X~B^IV<{v1JVHC_eaZ6jn-g5DpqjBvDBjqVI)Ai zjf1v_YO*M)!odaXtw0|auwxwQIFNe4dJzX}c?=Yj1#1k=0qWo<9iW!RDqWy9U8{A! zz()yvDhBBQ$^d~9c)DuR=|A_&!)FDJqHaDuC*e+jK-lcTX9>Ppd?pDVC z--FHr9A5=dvC+~9y%c^5zd#BRx(%m{EC6%jO2Wk`AQ!;rf^;?a2vR`>{X+V07?U z<-qE+mdM9q&a51Z(|}Zg^!C`e3Gnw|@f8P)!B`Fk=R>gp_kUYZJmd?-gGMnFj~G5s z{B*bwio;XZ_p3@^@f{_x_((}C{!DxxEWWce7C$-<76+GoCm)L=iWOU18j6jEjebz9 z8fGX`k*Hm=W@9NR4puE&y?*2H@0Wn$@|CwQ48_qK7Jy=H#R5=lte+o>&5a8|v3ZLF zSVd5*-{e?4P`u`S6KNN4cN+>QX3B_v` zgyOI-6fZ9g#p5yT@cFVXVV9h|kd}dlD)@bF_H?p}f*~ z1B7kn43wvN#)OFV>f`k)2W0~_vikT&B?rnH{JB29Rd+y{+T*UFsm$ab2OU(-oIZ2r zw0gSCQM+t%c4-!usm-iLHX*h%8}gA^IbFdW$aZOaMGl+w(-POo;VEe{z0}2J1M-;n zAOQc_P31x#(}IVVk}>DzWB_?8o6x}N$ab_bEhV8iFlq8)oi7~dC}lV)#$<3JLkj_p zH*My1-6K4}3D zovxcOS>In>#>y}Om=iXoPD&IsJRt_Fj$Il3)5fwWuPj397)k)jBJ<6vXqkkH+LR`G z5}F7h`Ah#oMN}A642O5ogj}@gu7rkR@6{sI92eA(Qttfadt% zux{`mj8ZfWk0?eXp|(9S$@pnQ0|tq~@hzw=MQw7#nQ~p6J_N_DAKn0m8EOVm7<}xh z$q-H^O(V>Ixfr7|P#n&c{Z19iEVyeZ_xS$13XDRH+7TXy+6rS1GAGK*;m`XSiSTZq z2?O&+O&H^uR@mh-IjTggXcfj`PDXKoVF22=y|0{=%Vi41l%iHe7t97uBCeDFdJ9b0 zOyZc9kx87*2%W7rmzPVtrV`04>LQ~ySq?+yKUS4FFKM~x}#)i6Ig+^Kig zr>yVYgjGaa#xq?z&}nwore@CfYBH7_%M?4*8R)D@%|01cWIVJcudrg5cLqDFQr2%Q z2Et^>fSQ$^q0V^9`tB{VCPQ9nRh{9^%9QoaeX>r+W?g5bvpkhK)1}FV%mbN<9qo*E z+Fhw=%6c|}?GLHCjluRh{V)J}@nF=rfafh$KYzTX?TB-V$Z&NkE#mKjIOD0n5F*{VMBG? zSLeRcDeHwO+P)04hB_1s-O-SlN}6TF+og6BVP%BPocip^#()XH%MFqC5FZ(K+a=(RRRD6wD=Dr)I%exI z7^)pXS(rPsV^#%rw#mARml{N&+KQL8cWG3r;hfZ?wJ;`MZJog@ry)g@KB(njA?- z2ff7BlgKBwW`AO9uJ97uo-Plu?er4cZAHZP{MvkCTjwRVhwBT7?Rr6M`)O;Yy+{z- zr`HgbH9jVY?Lm`{mi7r^`$S`w*sc@A_Tm=oz2d}nvmmy;rkB_r6vWnA=@J_;*&)Gf zLyHBom48Ao+lh68*_OU4nCL_`olkA|1xr#}WipT2h8sW#{?rDLH}-nDZHr*X0&ZLVDKEE;#QnLg zI_c%MdjQjZ+*W6Q{ z+*aQLt`MB(;kNBr3In(GdAMy$)&Op+6Wn%-m)jn4xNV7-+Xh1px0S!(keJ}MTR69= zs-+D%fIFH<}_mJE6`aE*0eyxDqHdp7!t?cK#7m?fc`h0S`%}Z{Z;sxY(6DK!&1qjT(PH@}pF=De7FAHv4uF}!k5y5RYN3z^@ zv*5N(^c-#Vtfn5f@a;_u?(EdROf5Ii zypyycxk5LPVPw>5dV$eE(m=kH3}#N&nG89iE@eNKc?g7LASI&;)EB!E z`3TdpS(1Vp*2Zsu+$f9UiQA1q?jjO5B10Jo84|a~=e*>$7|D%9sS}NX_A4@EA6DZD zP@BldkhXn})JRxOa}V@#(Fwf9PYI%dZ0*(nJ-HU?9I~WrvIZvuP8ua^H|roY*$Kc~ zLsPfD2*wlqWE~?>6oNx^|8Iigg1j2f)PkzD?2-16laEO}NkcP8g+2zh2*Ht3A*=Os zU@Ytax}Q^sibDCAy;QK+ZeB(yFJ)cF`Wzlxoh_D+WuA^YJQn{p8Vk4Sh=9~>cb3M! zh+<+arFE8qyy`O9VeW1nZ#zzn5_P(4wwhZEk-!~7=|^N*hQuRE+WRy6Ni3O^muY;- zNyVaxM$@Bdi`inf#D4XB_&h!Glt$D0aSN9jWjd{^L@~V>Jc*GRb@Ae*OFnr%a-Meg zSpRSf(9@=P1{P?fD4hl*{j!!`yktq&`RI9Uiy8gX#jx9yqZm;c>rxR!LiS7-D6YCC zcGLN?^N96YHDL8JU(ccCGisS3sB@07nz7`r6g)GdpRXvR1tBcMk^xtEtm_JQ*-J1u7M_iSBjGS2;12$HN`?m}heffV7U{}VM*ppR=NI*rZN7;hI9X zri@hdyaLlQ%%I$9FG6c_$SV7L7$WD@b9Q5w(WQ3Ug)nx*>TLa5wh05hYf~-ln$eMRz^K*DV+i{ zWd9Dfp#)MI4BAUZQl_VKsmaf2UC-z7(y??gX>j`^fQAsTC=ziXy4YE{CU`NUcoCooW~E zY#hCeBdL?VA(84-QqkhnbrebJobBrD>N2S47g02e1L2hrUaJrW9SYLX&!<+QLo()~ znhtAHt8s|F1?cES9I35%!7`wv%m4A+e|%SZS3YUKgRx;-QsA_H3P!w%rlcQv_aFc9 zT?Qk2Cy=7;P>NG4>>8w;fofPiBAAR~dTu1Q+6gK)|ADumpja2r#=v_vHZm(#t7t)m zi5@7SI7Y?V_j$t_FAibL6G+uI6jQO}`?)3k&dGP)Imtx76+8^GX$Kgaf?EaLurU0c zci%lJomAdQpM)!&IR1Pq(|Sz9{wUbjal8Bu#Xz7yN`eEl!?7~hCE5DIyC>z78PtW5 z2BczFnKEV7((9ox$0@q>j>acP#;DXOI|P#~TO(v*@8~D3cTS>V2}W(oAdCKklL|Gb zWlbiw%IV-4>j7#GCKEkjXv&zvVx(;UfhY~2l#kHB^E{|5O}=u&yC+Y+i{7EuyC+rH zO+2%b6Wlu6HuKtj5lzV%(yQch;*|KyX>yEs!>vnE^GpJ94c zl#|V-+S;k`l&wIJ&9r02cr6}V7G@QXCfTIRYxm8^Ye#athKE(9d2PSTYtO8lhu8Kw zy!LR-{JgeJ@LE@VAzr)nZO&^g<)wLT-4}`1?k>S=f#*u|T5FEi5-T>`*x<)&AXb;x zmN!2`y!K@BhC*IjpX0S@sJBN5wOdBhg~0qhP(S!K_028%o7rVWAIh@eCAD?s#ikD#|j#0deEv$Mp6 z)>F~2LiE;0G-je)67;r0(A%vJRq0?cPH!!O-pZfl^roW%Ht-X@y-?}U+k=AMG?>&J zz3mY6wph@c3Zo|I?Zv2Iu^vuu3JkhKZ+nE{22O8+#)6$zML1-D;6jhN1Sjz->`a#8 z`iQyi^iteypb;zhLIK5DkKx5|)xJBADAu5XJkz5TGHRX|9 z9~H$wYn9%~5lUsv$$oQBK!&PyHyI~=Q+bJ+>L_ac9di|^~sV9x89%Ox=S)#T}g&JFdxG$o}b~=!O{%3X<>%D zo-eAD$lNyN7!Ipqr5Wy4m*KY7%)@XuIt+)!zIijZb%Nn;saS~NuKx>oTBA20T#3YO zw`SlQ#BpDEc2gn8Re{BLG@hWX zeu-%A3rlh|7y3=tfhTB3IMZ#on6Bcyb?!W7nAq+y&USGx+g+DqyB=b@FBh?0 zHQ0<8OC)leiSG{O@m=UYJ03_B%U|Q9mLO6?zI-Ft&SA9O-0*0Q?UsP;h|<7zpAl@g z)MdM}ETdV~F9^09aM(`26*eL?u-%h_?M_s?l%}o(+i^;ZZV_zvkZTH+JDg@!{YSxe zzv!@C_!d}*)~vIi7Ie2#(A|nGt?^{8Rj^%5&US**INN~+X+(R$=vH@g4Ax}Y)7P~ zW2YO><_-u;EvGvoHRG&(1}l?RoEQ&p72fVL9)k`*N|$52&l2O+dl~O8aEfIR33`({ z>t&u$Ey*#S+=V48^KF;zVnjvD^XTp|DhlP%-C`=bE|2a$C%hcG+dxMvvvl_*It;jU zcQYL=7j*Y?#ArIvotw7hQo8l9Wg59j;t7qD(S4rE)n=+f=~6b++d#}!FN!HWa}v7G zDnZ5G$ek%W^W<}@IC<6ZrbXh$^SMuPGD<5q0bAKg19dd)6P%sGmt{8yo{DpxV((=9 zQ#zzyamk1xcN(7_z<2kMbBSSJ3t1q>d@3Y_0U6 zJnRyrh4FM*DaM1*Qr6>)6lHX#JX2Ge>}aWy)@-D+${7tS0`9ItX@XX4u*$+qb?jYK zCP@5ZSLhiPemZsv((XfLf~0R@sX9Rrp>SV~`(`Gvr&^sLgn+g^qc|aWu{J^Y05!~u zX{(`5+w0EL-H)Xllu`@>dok^C6w>+*xoSwn1Cs`}+X*zFs2T=fq6{x~3>M2ymGk>?c`kahn?Tma{fv?!~ry^|n)yC@Ta}u|?adf;BWBtS4 zYN^^Sr#c2&l*X^%-OyiMQe9oesu-`NI*n@>s5RD7&8p=p``lR#@8h}gG|W|cV*Gcn zhf%50VWCPi;f`gn1{Sr7>Zs@+ZRsRSX5uezLnpK<6$TAe$Y4%b&)0ExmawbNf)8L) zu&zR;%CpO+^S*^tTu6ZvK7-*h5saU z$BrjhLW)y$6`j@5>db$+ne0_cRT_OFyBx=A-HKHD3n9Zam{D%7NZCz>iVw?D*56-m z$Obc+QD!bpSznF9C2B57+3kjIWK6>_qbBx2zP;Aa;3dHe`yjs+GYlNrhFNAdr0h=^ zL2(o@k!f<^^k@T2F_1r;!6#+tTt1}+cE3Wz~UQ* z^dZ^g(#2`b(l04NLDEGKOe7^v^z4Q(MD(P+Oz0+@Rf}J@*X6oze>JdnW3ymW7zK+$YG#XZKE!{H| z8dAyW%MCTG1|6+|8>>}#hvfRph}VF5xo#*jM3H*Y{y6;5ts0Amm+9?>=i@OkUcnL z4#|UTN}9wLVrkNPb8U@`Do!so$Jc7Op87W^;o42VzPP5E$K_5^tx>1cTa7osL4|`d zX??L4F{p2>)~2zVbuuR6D4LT7jUf$A@}&J}jRN~D&A#ZHU0bJ+fo}45>rL;ExBeUwv|PXAOE*jnj$lX*gv(B&*Lf-Y|&9 zGjPX+q2uRXuE6`P8{y5W^%|vC$JLct+DT5*AfFToL8Sq_ef#Gtxfg~?gQCf%3krc{ zTrBAo_z~zKh6&W*FAvO4etQvjXEnB%1B_p))!>?0%{`Sth9(%il>y>1;wYElG|pwj zdBkNd3=1wJ&T~r*&SQ8C!5M(wUm#z=yF+6HlKd?M6~$(j#$?WJHtHcI4tKNJTVth9I=^^r9DxGm&!2!!DfPpOwMKo$|T-3;pecJ#``O%!o(W~B087Bi2aOl`vB)JD$Mbhj*yvWZmjaq7wH53 z!T{&CgLPHa=LAiOdK$n4f1e!7ZA6-fqOD!Ze4C1S_-2AK68!4O?Y?VZd{FCHp_MgZ}~p8nl9BU1$Bs+h|f&$SyL_N zI?2OlG$Wbu7jFh%NmZFdRaHXD<1?a8tADYF?eGN5p)?|Ku-!f29b#NHpVB~g&#n`6 z$B6FY9=Zd$w%0p!M@HswnSzmn?7p|%Av*@LV{!B-PGqQIAY`9;a#fD&;$E(63OHQ1 z9Gmzzx@7lMotNy6hF!9|Gmq>(S??vg&PX2F?e&n|Mk2eH*LcV-(#py1@hUIbEqh*& z-H~9H>%XW{ifI}YJfzTR{cf?{v9P4Z{ufkjQ8TY`55m$KgK(;+?Vkd_vILGu)&A%);yPG zJo^YIvwXta{CGa$-CK(AKJFpBE&hZj)mw`PeHibR4J8#Qq8qmqi4jUE&yusHglrNm zhEY-^QZN;dT=7mE;VY3BMECgl^XCGby}T85g0=HVvka^>okLncaaD)-4D>-lR%N1^ z;2$R_(GnXEaH1miba~G{cb?X4gm*sm3EFhaN>X1w8EWIiw=SiL*Xjfzic$sHkn={K z$@!0{L!?i{ig?S4Xi-57DyIBH#4w2(Zvy|h=~kBiklc=Eb}p>~{dsNtZL6DWK#S+j zQdT9hH-|Gd@adI3%P41Yt<*7()w-<~q(=cM9rKu!@yuO7c;rvqMm@|{gKaaILj||x zQZmXhGi$*a8ZQDKd#YB)`{yYXmqqo)4 z_zj2nR6YYB)IVO0Sg1j~D8(tqQ#daw5Ze00%=SiZm8xct16JiR<0>=9jBnSv%y?Uw zml@X*d-61}A&(hvFY_|v4Z%EST}TU}LXKjO*ti#+6^p5#yg+SArNf z|4xn=?^-$^F;Z?;lnU-_^d-h6&*zA7bFB|CuKy1?V!XwN825fUpBQf_MT|(uvYFtj zlEk>=WglYPx3mN?Zuo`|G42vsTb3C2J>f@;+Xd5=NCn#pi4k){`DI}$I9tEy*&<@3 z1y6Y*kW$`DpGy7ZP55p_`ohCVFpV47#Jw%+l4eKn9<4o&Cmqszv!_z2j$lCIZlR!M z>i9xM4G&H)Ymu6RcxRm4X5NF>uhsHz3D4k*7V&2Wph38yA>vG==Fq`|6L?`dgyo~H zPB8v;hXx|jH%RJmyBw}Le8_POrmRQ9{9D2$eEl`~$ncT$OTntc+^GfM>t&{_?<~cG z3Gq$on#auwBo4E~(xJ@37IM^6*13cDN^yM6q8Kl}>zs$Q&_mT=`ivRFZ^Rxx#1658 ztOegpma@KHi($~*2ww%wGu<*Oj<6#XnH`kihZjf3?+wsbj#E4p6LUp3^k^M|Nry!+ zc7VR{Ec1&o`s#6fRb>E<3Z^EbhiVW@=CN1{xv|vj$!!6AYkMfb3>^(-bTfWL^7z=z z7|l%T`6zwII0l2&HqA)uM#a%1@)61DR^~u+Gv?a*-ffuJ48_yoshKob4KX8ia8}Sg z31ejkW}2JE$6u_+X`Lls6BC*-@c$at^3uU-{KBW`f$;uWb5ry8cUD)ECoTj8#^x4%8tssufmfxvnIQN_>a3;sGvH1NSEEj!z$>paF*bVE4WHRnq%U;+d*7thGB(k zov1P#CG?gxOWaYx77P=Ex6A}Q6yC1PJ?!Qtxk;{KW*U*`i|xh8RRh~aJ;9U~>p*jp z0#6F1Vz#Yd%~6RDff`eIV@gvRbXbKmrUYc(dj(C#j>_Cm;g^AQKx$T-unwJIy!V(t zoMTM26|F}=1t*3Ardx0^9$;{mn^?2eR7DG|PABp8`i5;9ijfIa(=RGh9R+pd76~Jk zo6?x|W=gM}>A|H@#(#R5&bn}vx#Mhelknt&GBUv$3P-2KIz*SZ2q`ryO%_68G832M z^eX{0Q~03)!>+`y$Wr?<`phs1G&t6jp|DD`oroi)Ht|CMG_R784%ML-?5OGtQEs7L zU@n^Nre>*G!ZI@M+e`dB1PmkYiS2eo60tSmj0IzgEd|oydPEkpEFGc~E2AS)Q?QxE zuO#B=FYmAwtVT?7qf5zkV@(ouz;OFZmlO+RqKkX+W6m@ea@G}Ybe#s8Kq;HuSPSySJ~b4`28l$W-_C^wy(9>MchBU#EsgrmwfRucA*e z?L-gjvEb9#D^aazAI@R8!6{rKLPh$pHlBcnnS~?%*7eTz^-_egJ}Xq;Blj$E1KJ<$ z(R&v4S}^l);XciYPDQ+5(LSSRX>Vnp+B1V6L#MxuIKnzOMaOZk)N6DGI*cTKF|SR= zs}{#Vl4_6At9P0mW>Rm**K6Ykh;1sKrSA0fD!m%Fi5jdGQ$D2h&~L3{vQ)=J)v&Ae zC{`)$L5xrCwaKh_%=9C{M;!;bN9~mzo5riMqxR4s8%*;)tG$xPNKHCssfYDaaF#XG z&n4S*8OnolkJgJHR5$tPG`zYYwc=b3GStb4p^JfQczeXDWFHxn2K64P*R4brx(B#H z>d|`*Cz>Xza0?rp9pICx_UeUZ5Cj%}@pIkuqt}=^$F3j8^If_d@$=_{1LT17!>1Q> znDybkl8yp$;lO&YP_N#}tKoU?vz%v()R_4Yw8Ph<$iK8c_JesA_ir&5nBad_9OGw^bUahoF`xX$>(mSUZu>gkP-bLkKeD&t5cLb0Hq z%GmH|PGy`}RZ?ZF9`UM-y&*r9v8XFgW%N|}tBk5c1uEm^+vZgnWe*gpjN_GlDkHe7 zP-Q&7zDQ-0$sUUtr2?A6MG@8aoq_-URY~H z4`033So`ukT0@FwVweVq2QzvE6j@qstbHXII3UYD-3N`qEkKSnf zRH5F$j}+bSuQw8p=IM6Wro+|vX8An55rE#%_>asNDG5@H34BqupURgx=(lEc*%9x;-qI;gWG zNF08b9myezRU++Hx_!`=o~J}?x~m{XJc1*qN4TJ15EOZWBPU2o3yuO&!ioilk`)|Y zNs<#BIlJA;@3jKK;R+J^Y9~Gj$DS1&t|B1^((pX5cIAevMs$4N)G^6VaAXAucTpfa z7-R>Y+>Qqv)p09Hg~HVhs19>qR&`(v> zcy-5RtZv{d1b4;!Wyh9(UnD!mZmRK@9m`(wksZ76%$zvNv$z4-QP$&ddY?W*N6t8d8JY8CNa5*8GPy$%uxEH`pk|KYJteIo5v-q5YJ{ zrFhJ<%2D>%)hmzNe(&m(NBI-;Dv#TKzd(6JKasCIZore6eC5&QqdZo8y;yk!JN=bM z-Iwx|$E(+r$2H~QCtW^#DxR9 zX@6k9++^=>(woeFdjKZ;U<<=qtJQn}>yfa_`|*#m-)zEaHkQ$w`?dbeKtFlr!dnO) z!CGseKQw}e7JPkF-Vg8nO+l(BVHs5GPoo+&ZnqquwPdMD*`I0JPfhdCls+rX*&cd> z7)_d3$7KhMel~zc_*!rpgWBH|66>~lvveTPZ;aT(BW#2oJYeme?GNz<>!xPCSw>YF zyha|<2rUlt?$PSA*{mGUX;}RusxVu_R38o@zC3LHn#mgzGaZof%g9^5o2Lt_xKhzv( zo}o$zrlMh7f5t)U&_N6r{TT|N&uPcV4%#gT&4cVvpx+#phV*9bfYA~Ej&qLEtpK)-uxE8x_^J4(I>$}MO@{e>wz=a z+}y9@qN4`PK2kBtVHF+<>MLk~hS(Q?K|xjdkd7xUDu*G7aHY>C=}iXf;Gu((6IVw~ zI1FB#{pA-oI-0@54WtJe?}-GdO4yX4vk&0JEpOs! z3Yo(3S#bnEPZ%d zKu>C^qe@E{upQ`Ecx0tlOeB@kU}p#V=!uNpEAa(qdKoWK;fi55159W>dxO39;X@*J6oUoEVZ;Ooy@6hCAAJ92wSpn1_%PEH^T&=d;hxK;2}Zzp5VxWd=A6 zMme_?vruR_Sek;Yp9bB~l4-r)fpy6CqL_^w8 zDH2kKVH*UJ{+nSTA{zoZ708{(LMk`NfOG-Pq|!V*`-z5>mZ0lR>?8OrB)lDV5#=}3rq7t}|%8$}?8GGvD`%21Re4AGBr^dn0bF4>x^FC?RGLM{$=D1XU<4@d7eXKn7|{LI`ZZ0bjkw0oOPnmuOt$fTCRF8VBTM zB1Ie!g7)^qf6CGU#J<=c;;BhK?1!9W#0&W$o_>&@i}yijZ6CllDM4@(k37g16^bw) z$x$y6gv!Z`0AF|V17FZrkX(rD#07kU^%DRha)NxU*N_a*-XdCZ3Xg=4t>d}jfZDJ18NF&x z2qh9PQ7{eYYLDFwC5iPHc_c^@2)?d`b?aQsVyyyt3lCVyC_90qZds^BC_lHNYm>Vr zH=@cbNvNdvYCTFf8)3s4T5JjMn4&=$G^z7$D?MuW6)qVO)`V)pyS@Vwh?V-Tb<<)@ z$SIZkE3h#tQ?*XHNTP}A|5K$)Myi*XR zD+uLh;k8}YSCp$=0p6fBKs&amQSA4Ezt%-PR|lzF#1`dxm*K=w@!Bo*1>5T2uj7j_ zA+41m6UEdOx0rQOsXnOj;IiW^b;{1%QI`~_84K$b*l~qxU4)c7X?*6m*_094eDLs5d&U z7%EeEnbM)4Ov5$kmKmLDhut|49H<$zun9gkWDgI72du$?!K%UdP;j7buxcnYkjC-A zU~I4&pKAv*^pbbwP+$P>O%Eh^z4%Z#8zD5185|fGj1MM;tX0)m)ZyFss_~9BUT7#E z$}EXhqCF9^a&VS{4Gu+z?7B);863d+)xcn4kZ*B}3|T7^l~SeF7sBMTZn;b8)H?K} z(w<(N;NQTY!Xoup-96p73t?4+b#)!A^e#}J+(%0Sy?A0G!vSA8#~m`ut7(faOIYzl zpX9hOOgqJpxr^P1$9?1?#mPa%tWteyKyJUZs+QW1;~%^ul&w$wVBJ<%H@?P7!AT+4 z%gd|aMV?CBCIFOiE`$rdxsJQoi=3vkxacglLvj~|N70f}yS1?vKJ-447B?MObA2cb z`J`7+OSG9duE!02&Z!+0y~ecw2YU%^jV8Mh*Zu5E(S}TRGp_M#i|T8IG+$LQAiE+L%=SWz%2vysAydS zwhKlQu0%c5xXK%%Q$PWvPMR;`2EhTM6n7eYb2KGN0R?#kMDYcmP$U%uQGr0&GC?*5pz{AiV)@+qVq)p5^(U4ce#G+3a(`lZ z0L%cGD?u#J+_V6(bT%$XEO#M%Nn&|w4G{3^h$UGE*ZGNMpVQPl#ByQ-d=?;Vl(Q+RpcQ-q$x6zbT@~&{41a<*b;GIFFjyYd(ucz+?;?Csmv!Eh_IlkRVVq7 z5JKZ2G_tp#HnA1u9TZ*X>3{~YZhh(Yco>O>D5W-4l%`)LAPynHpmM`WKH%M31?=Op zU2{xSMWI0bRDqjF6GM3N=DF$lD%WJkdMTwQs}TFtg9g_M5np6n71t;#$PG$dj^X7l zKIzmekqyZ0_6FC7JIXP!Vx)OpHlg1vCdCyunJ^%|L_%ZlLUoGHVriaFC_I<&IP7-g zBSnbEG?-}skY~teSi8N0*GGy;RwN5O-Ky8T-3c!{=0%QKL2ax34xBRy9dklkl}q2C zr7p%(RYjx-SSNb*(km}N);-dIOD|z2GF6Gw7o-c;`%}}#G_-q{3hmE^XGdOn1x|SI zx;zm{%>Lnp3-6tu4os`vYL~(t(j&u(*^sw~>?m;dFS~;HsQP<8)^g zysp4&%QpNaH*3ckblJYxrSM;c!K;&K?_ZY36P0yagx9w161>hMnu^OzA2vsRvZ#FN z<}EzLR1F`RAntKUqaj+J9q8e^~q^-TDd5G1BZ3+tAh5R z&Aj;1OE2%-yhYj~ZJpV+ecO)h+jp{^Y?u9YTo&p@ELwHY=n(Yf-RQvPtpq`wnS`O@5i(cU|NGDT8O2u**32FW*IjVq3)d zwRiA_*=}pkqtoiNb#eNlc2R{prC9tq{P5jd$X()>gR~>FYv<10xa6p;}5 z(#Y@%gx!K`f^EZG?M!3*yWp7FbN7b`Y+j^w5d54`2cFMgSrJFfE#&%RJ}Qd2d)Mwg zdtRJYrh^x;vItk2FPwBJ&X&^wX^*w{?P+;BbP>O-18*$C4X2mJVsXq> zn$H!TFSct2QFrehhG+O9Ub>}$0V;=Q7r`|~Ckq!Q+ad3q-L-o+9NAv`ucswG55bEH zCJl>r!hLWia8>78^b zuw867+avAG{BU~uV&r0a`ooTnP9(P-xLsCN!5;_~i}MSd?feO@97NxH`z$(w&=NvRd#>!g>!E*|#_0=k=kz~!bar;=9rjWKZz@s2DoR>-o1C-wfAZ6NIj7L+4`r> z4y_}zswTnvfR&!uj-Ap@36~nYF}%ADd7}Q4{QNU-~_}pzI7pV zVdjGi7e4sl!Uxg^Y-nZ}i~GZk0AlW>gZ5ZlN!Z`MP<}y$9dTAw$4n6igo_2n1kA4> zOd26Be4u@Rw0mhh7DNEC1|`QcM8RK`teHt|jXU3b>D-@m{v zXdf<_Hc-{t@rM^=9A&0I{BXKqT92zS>yAIUpkB~FTs*DPQT(|JI(Jv-XvN=MFfJ$` zE}K@s=hjExxL{t8K3p+P?4C}1>J2((AFjkPq`>0W-(YV9F07j71GP53`G$l;>;3c7 zE2bd^_P?RL5xQW%KfMf$!tb9GZ;*@qCawqT^n24wr&-LZ{|emLn>hDlQ`3v4(-&iF ze;;8pZ@%%yo9xYU6rZ221N5iwKmlr}-^BmnOj}@AOwmONmDw8-{)-{#kEW|oHhbp1 zH{N^`QKUDeHxeiw1%qCG@4vkE>f=3!@4K7bEkOcEAa4H1hYkPql~=h0*prn2KbMsN zSfwkH0No@3MjQ!18X+qIAQ2z|o^U0=el7t>BxEJPOF{xPqelvKB$og$I}+d_6p~&j zmH@k9A#p%_Z2v+5|2x`1_DX{SAH`Y3_-MSJ4s3zR%H@L4}Ku$QX=89Fnk1ireX zPzijTD*=Y(HKrm`ZS$5#Y=frmBV z=Zb*GeMP{Y_jy1aj#&}#TnQ0yEGq&uxaUN`i(7p~z_VNg2))2XzzF>OM8I9IaS=ez zWn@h2m656v3ZRcG02zLGp2YdTH(rYWzs&icxL*-!EZq*&^A!L`xd33?l@b4ctR(+` zG0Xp4FYvAmXSU5F0gmP*09QG~*2_1}BLTkbkpT2e3)jx8E9Q{^eI5xw>1<~BL|q99 zaNlb=31C42NKhD7TLMhss{vl{XaE_m_MIg(K$k}YWc~@t0=;gE1KcyO2H1ZU8lZN-UjwXoZXOMA`?u%S09&6b)ByW`wMYYOeax!?c7H9W0d9V} zKm)8B@@jw^hKn@7nuom_AhADB13c~309*4kKut@&23RqarvYw!Enfp{FVp~uhkP_Z zZCjxRSUTvd0aib8^%~$CU-i)dU-|r}2HOvR{G+8cKvPx&?3-5ue3~@C=F%GAmt75T zW3dMKme2q@y&B**91TFpzP|?8;ne{D=_)k9?-px-z7iVX8^s!+r$7U|Sfl}Z3pGGn zkp`gl#9Bh02H4@F0sgME2KY@s4Y12c1N`s13pKz!{uuLV z+&%200iLQVr2*OsHNd_S8lcHX1N_R`k{aONCw(-)tF^@%plXM&1~^)z0q)FcfbVQ9 z)&Mu=Yk=o!eKo*puLgMG-U1D<+N%M+ywpzvtn+Aq9zPARrnCl-vE^yQRfvG9P5vUF ze%CxAVENNo5kQH&y8y7csgV5lv~%*OB?09AoA+mV9~yCW2j_iNJP^QQ%hK(F{0*!I zSc~p(h+pN)0ayT7bf=g6vED)(a**jS+UzI*TAgQ<`zJOyDu6nMwRmgUc1H;C74-j` zz4rjG;yC-hGc&vAs9`&9=>c5n7y%MR5=c~4)Ig&5UQ9h6Tfa$&17;J+iY%oYVXLqmnf6we5og9jqZSI-f{p~%o zJE#Xd;IM%EcJB}RY};yA16;Rz?up;Fl@2<^fDZo^2m+n)PqsC%9Pj{c=3-l`hFZY) zdu(%U^Q#2>us0~cA|byzz)#|#=Gt~!Kn1|%|MWj^F5UUv4Nv~FrjE_a$x2VbU7scZ z^qMor1qiUuBF^JG@FZ|+BkyFFo#mfdXJA8vz;{Ckurm=j&T4K65+NC2XRJ@9 z395I>f}}4>^1;tyliD-b#|TEOnv1Q1#))11AYy$Y?c5Y#g(FW5R`@4m$1Z#Z_@Pkv z8BSliKP}Cuf+uBErQ2yRlS2G78HxyS#lC0=m<(ZOom0|OSfijD#F!N0r^r~?MGxv- zRaFr@hC+iul4Pd^eF+FAT^Fx9g6DCHDM6KVWs(G~ z6Vj-Dv6f^nTtMN}5mm`|yt9-11XiVFP>{Bki<2(N+tmD$GfN-rX{N)!kYMtI7 zvjQL1$9`=m*l{u}F4osb(GUTUB$tv5Ry~xfz*wnoXh$QCW|1g6MrJQxtbtjQ{SrHh z`UgPKav1Iyz+c_&0QDy zS7_>Kcg@}SFY6+u9{*^2(fsP-SIqf^tESyWlF}h%eRWabAK3ru6qv6arct27G1j!2 z`!0%_i1XC#qUPR9pm_yz&=nl7k_L^YxoTfPUqkHg~;+N`lNm#_WX_LE41 zBY_EkFRd@A1t&w@OSI3m&^Hq8^JZ@&+UL#PMCfSqcMu3Pdk6Xa+IJ9$T;mS%c}wmf zbVtQ~#{X92e=Vl78=Z*DSfEV9#ntaNLO0iI-$>*w_Qt&=@UC;?UZQRgblLy^!@Wd1 zceQ1=5^?UEv-SZNZ@&0y=$lDq-q_g%kFNUdjhl&suJUo@ z#?7Pw4R1V{+;}jN#Q(qK!Q_A2&BT5Z@jaO^+9u8K*~D`i|2%~{&VT;#M4)PbDsSi~ z6m0%{^3?ytGYZ}e#apruE)0EV8J3khdi?Y`3xnNR#L4fRpu*RW&Uw!sNl#B>X)Ki` zvmu_rgRrQNR);0lVwE3OX2vJ1U@Lxz$3=^zzDZ3v}P56cO;GG@jnOEIhL+#QhQpVdGxHF>BVAMEvm-+CDz zNwVd?Q&)Bp9_LMWD)k9VU0u9Z9R? z+%3{9JL7pr3bP?>P~AWTk=Re=GA=&Rk!B@In4hVcO@;@{K0>@?87n5^S)4J*j)9ll zEDiHBp0}hd8>|dd9w2PR$MHCGs0vt=+++(^e_Eyt4<1OFNKEYC4{J=dI4ecAjF+(D zR*v0I&!i#-F_;a!nlwO~jVGh5ud%GGtdy1V5?&l-3$ss+4N~~RAlbP7{rX|~Y~Q%J zzJ2=G!lIZq-4wE1Vm%GJ)*viXy+lDE6$waN-@aHlXDySaMX^Q`ar(-ASKU>!hH7GC*Gl0 z_DSNfUuWA#IG)~pdiP4Q?XyC+PlJDA*a}G(C_7ke9gha|A^Bc$B_+ii0r5h$wKhK^ zsFXBF3=~PV$T`{@7l&A^-o1FQ+9AcoMffQyWQDrVzQE?0LlBR^3Cj9;U>zE)&t+JT zjqTMR8c-00s0qrPO8cj+5lAUdx13%8xscwy^#AUh|}id1CvA&?_V!HP@l10EVd3|#l*(;E98Y%0a}8hx-T&8wDo7W zsD_I~YC0tfKG2R>7F!z=8`HCYVIe7*1?SFkTTMgl^V3s@hUVC6@DoE?tfx1w z0Gh18-xoh+OqLfR)~|*-C9Y4OUa>JMyqKQ6r?*E;0_pfWLJ{hDx^8_XuL{Z!T*Suk zn6G>G=-IPJ_wLa>`!8E|_Uvc$&`H_WP((IPo*InH6Yp2+G%A+IiWsYB58i`y7tuzq zK~(h3Qqb z)?xCW;cdd&wmxsY)LL(CwP`I{>#$;x)i&p?)%c~RJVmr^d*1x}{Sc6@-7s?3dGkar zB*>`N#%SAywC*`?{;6MU4k^}J$oQl=z3qMH>;5tMp4M$zw{9bpi?Fu*v z54jI&2gH6J@OyEX!Hx^RXTINSQl1?OgJZED1y1b6dx8w<_5rs#un+k$@qv5YcTm8K zIA|U?cz`^yeb}vD9&_0d=u(mIa|Qjq*oXb@ZCmV!b@T|6VQW%J+o$263(0mJHIL9S zao9L?@X$ey==pwqAGSi2hr{e3HTiqjK5pBj-`groT6FER_G0rv-PWRH^Fv%7GWYG@ zr|mQLo;-O%vk&Vy%+NR;&gih%$M?EEzvGpK}O` zvvoOXscDYMdfe^sZV0Xcb-1$O&*BxF7)45&pJk@9)JqO+4IGHK25^l5M8S2xhakz9 zGbxEnMC#=fA{4lWZ!&1mJq4{`hK#}{uEn@=O;jcw zKzb^Lr(Co%MA$=sBz-4RgV=IWMi#|q#u7A#$gxhg90qODGvntkDjwhirIKnf97e)T#}?DYxqQmOHl@+tmL~g0(QnbmH>_W=%{~xn61Y( za{db9GolTLq`W^TQFJJXhwj!4vcjOD6xvq zIm~0MOCigA@Z~`RiFs^kM$q#!$uSylqiCcZ7bqzq}lm2u8 zz1G17^FiMb^-w;50exBD`aXSEmVsh;i33Rjb5F)NDXqqBB2j>sZs|(C&oj2X50eC@ z_RK7@Pa1gTB+*pZh-gF~^P$ob0bp|=NlJgBq&d!u2Kx$n`t*KKhT}jI$z$Rav9o~} z@S2PapQ6D%jP7EY5|Mb3Rd`Mz4=M0Z1jO-H4dm_C0(w|)-pgD~fW(WK4M-#{KB=c( zl202fvBm}%LMlRq-qUQNLW33bD4pul!_+B*(FhgdNVMP^Nie;8#XSSCVsK*?6`oVv zqtw`G??}hh7ZjUp3p^2(;Ep_8@t9FmScutuI!lxucxjf5@Cw{1e?&mQGNl(AJC8U{ zB9OlxuxU9xMzO@tBm*_T40*)8EoLzx5VyHWIfK%vwNT<1q4fhVG0ml1R+Z5QR7dQh-P?ZFfxY(g4M+elj6e{FM!in;v5J>c7J?gth z4|u3x8KzL3R1g4pULQzI$NF8C36xz0H#P!Y?H(Q7J$l418&MNBFP{zwqDv8rtCbxL z60{*mkG5h7fqrp!5Cj?BlajcpkNJ+@?WT5Pin^t0Ky@y#*N6ASa>LNn0HDT8k?kbYToLNZW^6!d4H%n%H;t_cIp2*p5Sf-z8b2nJf&l!2y(VxZqN zWuW098R)fO4D^f?56VD~24SGd*T+C3Lo?7LK^Q2rIR<(yCwlrps~$E&||?N zXj=0SG&ckUr8Eyg10N3pLHXB!pyXdSg`i*HvEmvKH0jSxAtvxfGI35zkD$`4g4NI+G7>JE-b zOX@AL2R1-3Zdo(Y?c$4eNIzJYKWtzx*taV=I!YO;GNYjaBMunDljBbbS)QUpst7~X z9~V`Bc#s2BifH(~D$Y=qM;tKsAK1@O(VQF;zh7PfPj*9bp zsy^}k1}YvX1Cfdw1sHA@W?Tn!SVI}e{{R)bbR1x^oZ~{0!hH(#doC+E`f>Bv@nclY zA!9;TR`mVCF5|fHdsUF3ii^HqlVzMRS^ZJPEcJVRAA@g~w58cPs!F4yBxLSY#VPkO zx6hgeYtY*3uSK;TDqIP9jPKP?C{Ofzij3p;C?xHr2`;gm9@M=hrLw9niXsZwaF)w* zcs9@CnPM2r5b0JLFhiu!^pHSVK@@9J%*f5j$!30XG)bnVSajc0ayrR1GDbpriomQ8 zuK!vwiTDhOOfDUgj4MS|5Ja&k@)n|0UJzcO!t$4Lrx?zSjh>I?<7h;Im6Of0nJ<1a z7nVZh2!Y39Da8xJ3#>vJy}!Be6d4wY;W@JikBpH8)Ixt56O(Q36lKd6iYlVdsq#+dE))f98G1mPqmJY-=T0#(3&>NcT%jbarAVzsh8Ua* z=~PSk8cwNZhyU60C(<=9;LF(3hyrd4bJ?99npjN1C}AmD9A|X(gGTl zlG-ZO3xrSe6Jv`pC^PU>L0(u&RH_G!hYUt0!VqW^U&0q#iweRpDs3^IatoHz3g1z4 z(PBCUU_wi^Qc`bD)zXxzSi%+?ix$&SIR|}bs-A{f8=uj|Y%vXXIJ+~|h47d0Wqhdy zC2J85!6~fbke+6yr{S22g)L%>*&;-pmU;&~NyE-DsmF2fP8^|t7z_&802maD$Xn{| z@|Z|7;+8I5;&;$mC>xo2D;&bAmUgA>z1^1;s6V$A)D;$>91sRtqN_{zMeY zi%6I)A?`9e#6kkYxS%kqP*BwFB3E12T_&vFR3Pa0k+8}N!|`h}s@-MWeQ&pdNV3Wc zB53@x!YJ5dcUf)ka^Gd%-vh%6slXrn*dc`#SycUT#ag{$MXb@QLoW#Na#q31d4*WT zp5d##&#Yd(2Hv$86ZI%pY;7+Te|p`0PnQB$0h5wi1&1VCZ9TJ^tv1)pDRLEwnDAH= zV!Ri>+q^frK$D`ZTu7t(YGcjnWf0>raL;12SkN_DWf1q?b9eg~B*rQ%*ARrcs$vy` zdDm*T)?MU@=}DC|9{UX{T@(oY+%4{A_jo(@DkvxyI9&MDH1E`PXo zN*^duHBGe=D(r6ap1bei_tbSQEH8h$yu5-#k3XX!{?%*QT5A~;#eVaJaqxxQa70K` zpLgF4E&Rpq@!U7E0%}@?3eH-ymaj#FaO?KI_gFGbltPWg@)+&zE2MMJJ?WXF%PWMP zD}%Di)_B&gS-W<2kygZT$Mx=gZ9zP8fSm9cC%{^0rlqG3A1@Svx=&7mdMT2DgDwNKm2_L#4ZLFVgvsutZN z?x{`B$QU*(Gi#KcZfz}l)|y)+iu8T@-r7BT_w3m)FSaLgt>5D%QC!<=vxbjdg@%xM zV-1?ZNM`|bH0YSnVS8#n-t)nVE|dVN2M@S%XL+(mOh8m@wRg?xHKfO%wVr~W*yrA> z?_nR;oqxCk8cscAkTYCzv+A>RvU5gFgObb}689{7)_iVm5ijDlJ5pum>(3UoQ=L>Z zjGC00m6e^9ot=|AM&_Ka)hI~ZANPgr6?-&jcrKhj`QW{9_KmH8`)YO$%Q15ECamFW z7->8O4Qtl`e3l*)!1`md$clE;g3r*duQO>9FSzBQ7-i_OiX!9{feBY&Tw{xKIs;)oaKR zT#>WkxzJ;IM*gVD2-EwkxkW{Lb*aF2GbmW+FYpWBR8=1@RH@6!wSBR?EBSdNM^AnB z*5G%w@T#6~c;^~4IOwj#2 z6>DA`n{*o>;0VWE1n`59#Y1WX%B)Ui!%*CDC_@JI+_8l0$z zSplq~B9Th7Ld14tCQ6c|N;BaGv9g{@kmxvyDliL)BOOR289`7JV8sOW5o;2x`9X&} z)ha1w(i_Di5iz`=0VOGDNhe`IKPM(aAOb{1b7V~bPryGu2?7a!Kx7#jx`3o2Q*G3v z#*vsm7P7QkQ*EfFgI?U;mn|g$D|48`_!48HQk~W-WC=qK3UCQgNOoJQm+sP7i=&Q$ z{Lm)*8R2$dmjA&9++%6C1K~_RMWQ@oScby1+Z4rd8@hT|8xp5(obS>Qj7qZvH68B;bsxu4I@ZdlviigzIKdjVr7lOBDqk9G7 z5Q`kb!*v9r(i4(~|3}R3^vh}KZDSs83GijC2?>1n&kP29F%Ja?J{W2OeD_TW4ScZ= zUkmusRtE>ZdnbejzOIX!0lv7$TL65+))4SL%__8Vt6~))5bnvriSPbNM0^kxz&Ij4 z2^K+#?}4R6d=O>jUZNxz7SD)lP+!6mpgyzk>2kf?sF2hrz+-GpbJXX_dbXh8>2h9f zRw#rMAXbpy8c-<6@2Pp2y@Hb;yQjY06p4P4c2{Z81Ns5U9Q0e59t!>Hy8V(GMGhI- zrL7igthI0_;qQs5i2?9;)rP+bzbh>2sHI4 zzpZlz1R=ky5+Xkx85dv|f9PA578LsO9)~=&gcBqNK;Oy{F@ezM&6==g)iYcghw%Ky zwD;tM_Kj)pO7^UmL3^v8L4rBp)qM6zf7W|tRJ)+8SMVpWo`#4dh&G|Tiro8xQC|Kd z&yW|1uYr{3y>R{)!$7)CAa7g+6og{XrjYkUG9d4K0OaL@pk}-TaOH?C1mv9|$XnT` z5#;6O0`nIA3B)TQvuW}Gi0wwJtKJJ%< zc;Mt9h{vify*S-LJmNw&{1WNpjhy=HXPFc>e>4S9TqU z7yo}+f_P&#ghad!D}o_j{O^Jz-q;OI5wBfgXv9nSKi5LMksE>|-u;V0BVP1>HG_Bq zUk!zLT8xNgF?LmN?55C=XZ1wks9vr#qqU*B?Z#6@D-jV5vRLBgEwPNhr9tf{P zVQ9ib?Tqa+hV`eC=4D!N_!67P5);Qy3_Z0_U_x8 zI|y*cVnySMUg6sz*iJ`%?(5ex;;>v0KUAOdmGrWoYyx&vonw10XZ54ig^i1OBY)kP z>!>iN?ePvD(6dKCDbJfV4r|S2Ev`O)@V!lmZsF#pM2A)DD5x19@7eP)N_Y$U zK&@#BFZbd10L1ICTpKm?c=*$vT&D} z9SrM6KJAZne6JfC-rXPX-i`0PiwmCt>Ha)H6)$Dc&PQ|;U-A(hvt8*Qi-y7-sBXci zpj0>O?+(?`L~R6S3-Q=Z58m!Ho^IV4p+#tsB0`V!+=;>|y)-7u+$oo6at)8>RKGA2rjmQvBg%H2p{wrZ5t@C4x&4cVz94K+mO)h?SZanWm>(Q8+H( zEi4k%-AtNuEfZy7R4$Viv~*z~HgBS$F)!t1W@#DClfu3$-S|O7L?r2lM_RXF60{cf zOR?Um3@gZJ;?CDJ9m3|FB&(6^ZICq~rj>D;y`#TS1HoT>58&4 zvqYBD)~GZOY(h%Us7ueF&W(t4N4lfTTSyA;9-xlP%A(S|kRlkrNGq%1&5@G3;g)4R2-rfQq--)RPgig)CjO zTR1GrXNR>iqkc>c%r=oY9U<9bD0L5`Xh@(H)l;)Q)X~%h;ZEb+8ElyK1KBXvibWaU zMNOV%d$O`sSB4{3?hG-^x&!Xe_Q+OIEXuqsD_hIvrKU6$mS#|%!bs}YNL~8Fc(^lL z&!!C6hus<4FzaRY*)cK@+fXe7(laxe(>GOg(5VoynNaY^U) ztbJ4mvtx&jtfSSZR7VczvZWQ>R9st9j6WUQweO&Hu-bPJ9lVf|atTrnhD4c(H#2!r zD>7D6oD5@i9olzjkDm^_11xsvC_0A09%NaWZp)SQZqM5rB&AEwqNCLn7G-<6Jl|+i z3a`W#w<21 z43o&Tj3S~~*7VJIvSp%`nlCG1_Br+qt{3tJS1i&fj*yAz-41OaX?F+N)<_tnWO(6? zn&+jQ!5a=z!{mhmCoEi2hB3B9sZ~~@mv{%n;aj#m-inJ4kH^bWgRy49gSxgnCsBHt zha{^DIet^(DzWGr#XO$Hg=1qKD;bMt>S+SIpr8~pPG!8vGe@>xFEz2+NGqwu+a!2X z1Am0GcaaCL52aDHUlcf38d2nPQbta^sd(|3cKV6am6k{lc(t{#01GAHg%x>KnYOA%7AQ2GbkF1?Dn30Ys5mJWts!P9WPn&O`A~+wp?c zP~=K4FqZkwX!Jeo&w@ro$rUH~xCA($SJmm|tyKAH3N7$K7nIQjsSIU0YcX;iUh+*b zc7&2@_}c{?1KStChiZeZLOSr{#gLv4c)*x0rA{1zPW-|@U3jMpKZ&+KzD%Atbk2H< zXJL(SSV?_x2_+1AcAIDiC@-`IU{!;T2#uxig}2O*23B0Z7)o*gcyXE}#)&v1Ubf6i zKr)~>n8pmPukkFE?ZSj5&KI+2K3wr)1L=b&6AhCilf_@9m(Jo7k`W*}6tf|`R9?!< z)M-7l#9eY3o{CjM;3^^>Z+xfPPB3{w=Pm+c=%d9L_9lc`v6YO-$crl;Z-(Iy5-%IW zmwG63bcMl602!BF;volv>8k+H5b8YxSLQ;D z)_kaG#a4hTCS7R>))1LC(r^YhmIM@AGvx9-E7zB76RFeDDtuK!b`KK0M99iF=la^bGRRDW;VjsaCjmS_uG=ut-1`ZZ9m-%Eh#wbJ|OOa|}YX z6Zlh)WD&R%(T%Wn3RVi>Y?0hWtJ&)1`ZF6=e1I087OZKE$b| zTajQA4Q5Hw6>0rQA|x-XFD(P`rPxz_;nX5pyk$%Pp=gm_KxY)F!0HHbAIYX_(rlC? zY-W(GB;G!dGZCv+MoaJ1$~Ry&BdfrzIHD&eqaca`qNd0=a2r6hfL*t`CnF6MMSVs` zQjoL<*-?e8^li>3)L5u9a!y)rZjhA2UG)gWL70K#N=hSlB?85Kym5tPofjED^D`;hSA?F=8@B9GyaAxw(M@I*>v z4FfKl-}MJu;@`*&&)5c{z1yE?BhkB&8CI%;vONK*RyHovc$}h+Ps@nRFnR}Y>=22m z1lYujI6SPK4`K5Go?Ieqn4@hDyVD1+yp=Hv$jP%Ux(0;V(TCgQilevUs2{kxFr*`i zS;tCd6|IcBq=5bCAs6`JK_HxHG(|G271@fnGJE(Vs|!&^kVG%Zs{-I_4YGMvvmYhG z30Uuwz$#i{T;=-#D`6p~kI4;S^ma+D-pHs{t)d_}vk|yrE?d#>;a_j@<-P&&^R&c&;Vxbjtnu(&CpoF12W72R%39!X;Jk!jbRCf zfUARms~n4nasq&Lus^UqBtbL~Si1!Q)@P+0I;|0~t_cFHoM_aI$RO^=tdBNf)+88} z7qO?tugYZhQk^9(ahBfM96{PCm)2;lSGxj00X` zWkMLYX%-)z!1`IGU1ryIE*k6Up+qKtl4rcc<9Pr-w8 za1~&s7PSCx*3W~3I%;kLe)I(1&l(S$qqwv}=T5FLl>kCQH?+n8Xms*KdtX}fYz@L& zAE#p2;=T?~`q2DlQ>Co~nQ_r;;fO-~1M@zxz@xwcd9EtdP8ZS~=e&=DFat0PxHy=V)V=>w# zN?j#JzGO5e>9!x@WBrVTxiaB^E@vi$_;;986Q-GQbQ!Z#{1Z#o3 z3Qz75#gS56{^d%ro{;U~%K~^64Wgbx79Nj7&M6CcUZL?|^^;j+%j$`~@kjBh7aUy* zBsQ1P>4Nb?Jw!2ik?Ld`Iv{T!usgKsok>Y^m6+2K@GMAY*9a*}xNQXjYIup23(KH# zvP_vpEK?zkj{-ruflAH!6o)ks1~uwv2rtGX6PNhv3}A_(gz(lcVYHTv(!RL~8d7g2 zti&m(NMA64Wq3HBL6umVR ziY^L7(RRU5bW8w>_78@l1Dm2~UQiUx^hePbf}m*6ASk*q1d9G6IEp?1L=%lr^yMZf znj9KM9}9+}Q=6jbOg|KTComBu_3RZzpr+@)3?@PNP- zKZ5u&p`YkyR*)!OG(&&bOzHyV)+f>(knX9VH`;65i`(Waw4O15MfK84C8d9+Af#2r zu8@b_B(jV3;jrt&P_kULnyN^)I6)izz{zkKMqLpFjq5eCMx{wYQCDd#prA}Tk&r_B zz9V?0Hxqieo6DQBtyBypyG34}OX~{4BvIu3_Plz^GI^_la7Cmwp={_G#z|@*a+=pg~5@Qk4;7g!IPXby$FL<6F)Tl{~Q5Bl5lF!FLOP(ci zfXE(4ybGOH`4g*0GCiIh%)yO4>HUm{eU3Ov(8O4H4H}hHVdETv4#h z1=7cI{iVy6(n|+MGKBRw7es6O4t?vbH{V)!qDq5s#4-~iZj^hyOP4I^AE(JF8=6q5 z>np!Fw&qR#rn%w0D(oOr2LCR~+p?vurLH9==2GOu1x7gjL-b{RjNW-~y(!+bHdJwl zhe_M6rD02~1k{abn!`ZUeMyq_HhcZ|o7$V+^(U*U=xkXQu{3;%cTiu%Nurh#CRPeF`rM6;EQYq5bHvJt)du3D}9 zC|HkvZ*F3nyc;)dB)=4yd$BcC3UM^CH%u8=-P42h@Xp%=DGqz&FbwbL_UnsJwDI0r zFBZdk(pOBa=QfIs)&>}IBN-8R3BwxPhxNH6Kl_G8(o!cf#k-pc>mZ6Ll%>WJyin_c zu)fGj=*?iQ9?QV6q6l)VJCC+TZe$zH4HTWeR9`}`kAy?kyKo@Bz$UP|2`_Sztkpf5 zN3(98l^Zt5rqFO$y2QOCe6hC3T)1cxwgPNtA4tzCfFA(PuPN zh^(9SKv&k)?DBw=qPB~L+5#8$Nxv8?Gep64d*FetUAsWe)1_;dE}h|=dLYa;sL$sQ ze%+t4*_}kYJpfVORdivUab`*x0fX9u-^}ad$VhKp1OzC5n)IkW$mZ22^@Ne=2V^d~ zbnUD|!tHY-9@OTUaowX?bglA&Xc(-pPQ1)zN3P8`ADoZ9+qHRYt{Fo~(7LiNumc(0 z_NC2tJt*dhxmWr{KhUikwX6$y>ST39%RGw~FTxK;R06qj!IC!DoYUt4_JCJPiq4`F z?}&`zZE_*ArKH4MKF6HhqpLv5JG0J4r_P-^YLMens=*eY!)Dheb(6L_cjBG2j%J6B zKrGMlvgP;*UtYgrIeqMDMZ^lv$`y&x-J)AXhm|pW(;{lQ2ZwOvrWIBkert6HYnjlA zTrO4^II<#gg|Tu)FB}Rl!>2;aS}iy6%cvFBN_>*ajOi8~2}@$R0i=Tt9cx8CR?h4h z9YNN@%5GgQU#L{SPVN~U7HxKqE{lYFt894~g(d@tB$FJ@2KI<{OOXgW5Ie$FE7(fU zij{O+kEW4Z=9UcvO-3#EQY%*6yh5xr<#BQmCiQQ!gQ{P-0?I2^vX$oGp3$yow`~6{ z%juJ1Xb)d$tyl@|S+TH=4CBh@UgTQH7I0th^SNvepT%dg8OHP(-8+d+77bg>2QJ1p z2NvmzbeyjOgHoG!b?&^mbLY&NJ!{rXHq)9hT}(G)s9$i&T!L5s!~8@|h%#xI!LXRl zrkQ=ZcB0{DEnXCc2#f{u7tH6s6&6A(#J(iwV%K}bNzyKuom)yoZ1!f70{#jJ^l%2>F- z84fP=5Sy*d5n%LtrjTtjly2v64atQiHmt#)zH^-&acP1eF0aP}r zF_lfZ29-Sqa&o9FDI}HUHl?z8p{cAW2$iJ-r?R2JsI0IlmCXr8WjVpAtY0H4TN;AO zCN!e5!9l6ae2j1~5X+`D!Lm_Jv8>N;nqt|{f@0b5##olq1k2_%!LpJNSk`-a5G+d% zhGj!TU|B(MEE^vh%QAvsS@eP+SXL4Q%VG+e#j>2BSk|{J2$p$Q_6DCSl=bJbq{dv9 zAC$|IaT+(}vWI)Mkjo~vh|3bMhszeXgv+w7$z>1qx)zsBxehKHa1Aai>Cs{?o76%s z8{9H3TM^qrF8g`+;9NF8G?$GI!DVS7x$GB7LAmVtq-%27uM?W*vghKP=dxcX;&`)M z_Tr$>T=t7$E#tDB>*TVj544!e3KFi5%Z9g{%NE4rEWg2JH@J*2@BcY2o7b4j(yqZ} zFZyv=LP#zf)0E4Gh32yV3c_XmgL7GGFfPk!%4NmDxNJahF6$r2WieSHxNLSKE{hA! zWiK}6vXmxVHn}O6#Xi!M%bpF&Wl4>>Y;+SYOKZYq%PN9kS#(CTST-gomi5RChGowN$Fg3Hv20RMETg?Onqt}WeOicR z^IC*u1Fr|m9&ZVjjk+e5J>TbAShn~&ux#ixuxwS!v1~yLu`Io1SoUn67Gl{SLtxp% zp|Na62rL^B63c!wBq)|`9&$}Adn>7VEZdmWJeIvR=vr8|EhRLTJwLK#ST_DTv20nl z7Gv4d1FjFtCUm&aIKdkbc-Me=meJrsR%pJn#!?`l`y{fvi z2lwvZFOOM!s&M$!PJ9lWV?SVa{En)tIC|iKJkIf<#j2aDJRf2sypt#B@NHG*k$ndk zz6Xw%)Wu$7&&MYrzz$NF?D#EJ#?gHTI+EMkRDix-4nC;>_*+#LUe*K2^ z>o=aP`auzAz^(0KN0KMI_tx#+pFY< zGbv9h3jPuQ(ENbxvvq8}SZ8gix~+=KM3N5%3;aX&fw^P!dcMAH!}@jW@v}}_XRbe8 z_1!9bHh@euNLnB4U^~n%*@!1>o%fA(>pnz|8GZI(w?M)^Vz924$Ga(b<(hxMcUbRZrmKFyYtl7eXRTky*6D9pr!i(JnbZ>> zsWABt_WsrPI%85S_E#{hL(B`q?^H!qk(|HD_t<+3b9zR{&c!e%ZPva4*>&`Xtur^B zuEN-oN4227AMVhQ7`^h%sXA-o+>!N5y&{e)#sw z9i>jkj=g>XCH4k#{f29u`NldLda|1+$$STYpS>rx^NyJ8>Bu^GNBkWQ5ZoKr)_QL{-_9ZbHsrMqyuH;9Yu}8{ zlU_nh2DP3;-umc6>QahbDzJC!-+6o6Hf*say3Ch=+3)iRRIjU<<1XS(lGSJsynN!>MB;nqQg{6Fqw^M@18Cxf)7O}zlt-`sD^Ky z+N9izo+8E|7aDem81^@uk!E!?%%h1~_b}VOz;|oR5j(1GrKC{sm`bM@^d25+y=*_0 z1Ymb9`WiK4i@(IVfnYnC7)d(K<#rGqH1r5ErN!VY%rW$Vg1q13(&;+xI%XXOT)BN> ztew>!TbknY&KdRiif_ieJ;!NdDSp%oYczk1cd>1Yb?w@>Ye(N?5iyssG=e^soG~mT z_m9WLaoTT``&pHu?IFrz>JVj2to(v;Z6;JojvhaLj2w85zS(&h7Me;(nbHi#(yh zx|GMqFtYM1k7!4%$&)ZQI8jXCF6+g zbXsJ}?GL?OYDcPD7&CVK6qGG%;Zv6Oh`Z(8EV@wy7gsT{k7{2&mb*7dH zv)M=leOK7b$+nHV#_};<>}p5DQFbJK)de4RmS6iu|I4osXRAP5W5pQrp}z7;0K<4k z7j~(?Syr90OfMncz`Prn_rC}8hF%Zm4QL7GC6rtj=JhGO9?XlL(^AaqH1bzKLr`Z2FdPQi6yUdQA)*Nb^W7CsjW^U~)&5d!mik9+(Yn3p(v z^))ar`;pL?H)vV2nAd;dH8C%7*|jilU~w~;m;6-AF>l=SEy28;l`X@(iNCr|%*%S{ z`Y>mt1w z*F$niBgpFOw-1-renUe~yuXHd0|>Pu9ix+Sof=S4A3?h_~vnvIHi z=22DZb1F;0YkBMdLzRvSTum!^9#ryVxsOCtA&>3$G^ylShYnIHuR#cPrADPZr_|R_ zX2W{@Mzy>~#lT&joiy=?8dzX4k1B?$9;eDzBA}LMP+^kEV6oW_%0PUl@e!UdUhuWs8Jn~ z3T|xsS9VRWXL>N$qj0F6clCoEAMDui{`>E}x1DXj^eze;C@-ckig2r+29DQ`!jgC<-dIF?N(_IOy~DTRtrTA=FD_$zD8@@j9~px2 zVh876gYo*Ljk^ZpCFO@^ytu4p8L!W}xSzTy8Ur*KbtI8E?p><{8h7k>B*p zoO0qgmGbye&9CO>tK{(vl)*Aa%mc8wj%m#o@~G;RAu_xuZA`_4hzq;TvLhiXc^*~C z!)1JkoOJly-p#IKBP*!Pa>?$oLR>NbWq8g7u_7jjK)eOnP+cpg_L+rlF3f3Sq{u5%Z5C zm39r!cyMS(KeqGABA&pvnW%_2Y*@~NU^{_=*<@9dLmh8+-ynF$p@C`+6(V!y9uY@S z0Q1%GjG|-*?T}Lx@z73u)=5>P%$zyEGH<|74Dg|rXRqw4(pthxM^Oh}}H~TCTXs{jM(Ct^rZriGFWtG;}N-pDJP+}AlMiwprILD>6tvCemPQIPc51X6Q8N{_ zdkfoKi!5!~Qn`~R;wWsQ1GZgef7@0U#)8k6CWvwz^NvWgwDHi@V z^0ZB$-5%JLr)4;X1($i1mkOC75;SO}(Wxc#8g91?5!>07$zod!7y*BB$|_lBIDL7g zS7u25KccYvKvdRKqwxzGyT(?WlB&IYtB`(#9I4d#3_}X-q0X0nFaqc-BwA!DGP+D4 za21{EEqQLzNh;mI6Aer9pvH&TrlNvNy6`> z9~~(`JMcTYx;jnYS{a3K)$ci(Bg1@~%O|RW_o!f$tiVBxpGwRu$5*qexN57aI=-6Y zKUmfB@2sGI_NBkd@b8jpe$;hDVDEW;kR8zW3#<;&@qFgS%|gTS59=t(N#d}Et?3z7 zr*L^#|5(Ff3$fGt5pE{|$7!z%fo&etaTCYcNBR-X)~6*hw6lfy*u?G(0ycC!o#;pS zVO`qi(midrs_)j|-m~e|=YRbhU=Kgc4q1l}aa)R(u+Xl!e2)vOGc??IynkIWc2qvg zxAH(e0n)T6hGJ5ZY^U+sto)H|q&FX%bAfdzG!0FoC+!BYt2=kB$j=`+GCw~Lo4bxc z>55W7a-RLPVrj4DvskzD@8k1Gl;yKLHrzULSVJ;(+hl`W{my6LlEio(AFfLoS~Nr@ z0w=nwJBzVrnC(^!CqpjVP=iqIj(K^A4WV)PGe!&_ewa%^WsUo+dACf3HJ&dZ<{g2} zWISo$O##j7u&>=9G7zSvaz(Z%gMC&wA^1XQ@M&w~LG?puJ$hWGTkZ%n=Cw3Wc&7>5Id^W;TaX|7v%}W0m~y~yqXkeIrZ7OkMBWg$+6F+f_K;M@=L{~Di_KY}l?w2051cyM$J`Ru7lE#b509&9n6 zJvF9fd{)!~KAY15K6`Fz3;Ar-_?Ge6Q=?nXXDeIEXY*UeXXO)v@>zKhKI6N*FDwoU zXt|}q0Bz-%5P&vyO)x-PJv|hl*1 z5vh6_6`8ib!)3Wn;7L|K=E`Sxx=_}mK(kq@VZ%H;-_SaI_CX!hfvAwhWt8-2F4b-( zPtpNRYhAJ1^PaB)C$_pOQ4FEVkJwCeiENj#Q&x+}Dy@~5B`bR*yK{>L^I+{~QQK-VDPoRX$S|QC@t%R)zp+8MG`# zhHY_gc9y%VW&Ma!mDsqfhRVVd^`m>U7o{?)eqE#)IypfH*Rs0CWq=I%m4z+jcZ+Jc zpat=AP$8{oxEfPbS)&>jnWZY64tZ;{U01W$@_XK)iXaqFTcN54J>1LNr#(uztni?K zM

    s)zGMow6foH@@&^QsH6dZ_+wWKX&|GMsKzCWYUXAd#!8)vV;+@Jh9QHp5uE{c zy~l;2tjm(AJY7`zO)lP-H4j;>As?hChZ>`%$-6#PpzK1LGv~+N_H3&}dBrKbP(4JB zW%m{@jeYdDCEq`gg)1!hhZ9PPjELO0sqP~C8fO?4Rb<^4?@v&nOIG+Kbg9xaMHNPd zp%5ldF3kDLs+FpAp@5^hreLnX;paH)bO4Q!p9kO%y@ zNn9GQM^6`IT1$Dxg7)3U#t%sLM=}kE`%tJJDq6 z3~y%0&czI^T|}mFAtm7CJ*Tez2 zQ!bUiRCx@gD4Gh;KGLLw(&qcvUito%l0q2+*J-g+`^fqbg)NtDsh-}c!w;1&$e0Uv z2%SV2Oi`(h0$~lNOuX_$We!c6qideIVD=1r;ma16vC+~RU6y4Wu`3_VnK*JJ>STFT z)S~*AYM|IlCAtQ4=G-w@X$ee zaZatq(PZ6*#EiM{$xybEwJj=5>Q46jtr^omMI`1$2`txF1EU^bc7W2_1Y68QV#8$( zj64e`!UkdQ&P8LXVCF$}DR0DZRJhP+^6l899J;XDXZ|Q@)0U&^mYH+-5XGrcFHs z=csv(;3F7HP}oW*I|oHll2;)!7^hO|l?O*tn*e8dBT#7@p38GlXUoaSo(ql>2VIVN zRopUm;SSDrT`Zgoaj8W`JQ)s?RWUPriquk0XgLqnb2;jH=8TbmI)nUhl*O#v9IDVU zn#>*bpbcr%KaP$pz0DsBvXkv#BRu3MH%B&w-Vn*j&dQ!J{{WTilpfynl(pl_yWW^0 z`-uXCGc-!%S~=K}iK=jNSKjKj7g-Ij{<`YI`SV|Xe(v1a&(3`M=_l3U)otYOvAgeu z^Iv}PIsN|3r=QS)*7kv~{WL!LKb)9beoxHCZD;uoJgNg@j;NaBtF3Ak`u{;BpVS*Rx~ne9Yzr0p{3cUmwW*q#fw~!4htsD&sv|IVQ1K<^s4zc zXrW97W)7g>4ynMU!X+moaBzqeT-Q)wr!V_F;OYhqJ-7z@OnG3ZFWE^a7Y9j03$B4y zC>1VMWH&)WIuX}Yp@!Qnr)8)S)f_4e^K$G0JI}wgzWAJdZk;>J&$7?h87_0hPhEAA zMJm>T>U*nMjkmg{y1M4OHSO@Z%vQ2CwUQ}Pt@hlG&_4U{O{y~*FSHsRAcSLt1DtX%xp zzy8Vo$zQ+x+TZ{BSLprsA6|X+73kSd%$SR&Cla3)IWzFu^S{`?*gvg*yv|;~Djojm zkAL{XE9@0y4c^4oI-v08&G;G=Q_ip&mC+06etPWhm;Oc$|M zK4Ov{&lqp9w*u7-6)fEH*Q=G=|Ni42p#5@UV#dl%)mpXlWI^+*@&VRqEyazOmX(33 zf4u(sYp?%ZHJJSW{^gewd7_b&{l{uvP4S~hfMf-<+CO^!I(zL3<@rzW|LQ9*vzJ|o zb=hxJSE~m@Sz^GGHhar_lTxjmH#DBqzqZq@y#FqdC0a@Nt3D}lMU8yARO>4IY;e3Q z@5>*5z2>#QQwsi~Liqj5zx!RHNEAs%V&317L8tlRO%Fb|E2GL1^vnArdNV08NhEo@ z#lEZ_EM*VU7?u6+gwOxMV8Mh1_SZ`?hX~>K2;q@LEs-Z(O-$<6E%tSEfK=y5AIBFC z-e7NdebHC_{cq&oZv4wH|L(UhEkh4pq6XjxU)vsHtFujpYCc<6_b;3y|NI9HTK3un z+X8i=a{tmxvycOkgfDAPvIDl}ZNWpSd;K*g6L8@#)cZ8{{y@X$w=cc;;tL(neKY`}Ejrge z;_uz3+t2{^r?XDxfBVu4&p-c@#Qw4YXhTw$&RS<{AePe8r!8doJ_F)!=h5%DZYbZc zDBsUN|HFuCaWSICp^PT%$S;P~7#C}5E;`uI6e8Kh$eITF@CQi=i`K=OaG!m;DKyX| zumqP(e{BY4Yyi7c1e+0l#{H4<^eL$w9&orRRE7l{XJ1}*knWRH?36{^=x!v@lq|z) z0#T@eEeTB}Tk4IB1fxr>k&GW-O5h;A)M}hWvkUw@`!YCTa@8k6Nva8G>NP>-nxZD| z+ZU~xiy@$^32`zNLn_TOaIp;I6I_n9@N^xt6C z)QA5w%sTbxzsIcUg<8A;kRPekqyk+z36(GH7k%=)Z40JF}zK4$F`$gI7tmsz_vVb=WXWY$hinKk-)nf0CkW*v8( z%=+WT%-ZLAnDx;c%zA@a<;_?^;tgg60N!9$`LyH%H-*Ghn7zTQRCbqae1loPb)9wW zw11OX2V{=>_nCFzsDFc52aWsBFl*)q{~ogr$^16Vn&2>N_w;YYtbP2MH9GBEF>9=3 zRugqn*3CQYdZD#@Ahh=U7SQ^D1Fe0p7g{?tg4Ute2d(V_p*8w?q4oYI(Aw`hq4ln& z(AxESq4lQ$&^q8cq4h_Np|$(S0O5_IkP!7+Y>Xz3~Tynewv-~o}49jlJm}(K6UC8Hib?8 zdeX#+_$(u-ju|_8bQ()D(npj-S=gFvx>EcQ-Z=KYvy>j6cvY&68#i{$Xf~Rsd4`vl zSCm(<3dbdc;gOxZ`mY(&r&FX9>IH;4L54aG{>F?RJti$Jx58CHn*vgte0uFPRTF&? zTQ$;VeAsGm;)MW>(P^3G6>xJetSfpUS6R zhQCS5BZ6h)NLP$9MvnWr9V_Xomcr*$`WE=b*QZT^Q&K|%sf|jFk76T@QFEUv*UCK= z=#vU;d`XEFv~3~uyvKesbt<+SWE1O@+E^JWAH_#{CO!2eG#J__DjKvd1@3NJ=fss~anIpMX=n!g0qZ<5g02r0OY|m~ry_9Ze%u#>w((^Oe%$ z{aoIxbZh7Rh z!&Amju=U_>6uG0-NqPCu;g7S&M7gU%HHyCT0sh-Jo{jg&_(qG-9>~i#Eo(-Med6)Q z;pVYN>FlSB@CwHbn{)WO;I3+~~&{a={;Ek5KmINntD1PDHVI!B|`}se9|~ z2-yghTR&og9U^pz0}htdJi7>Z@S>&V&bPJa?O#CJxUo74|^Vx9j;f%?HII4`b2i% z>T`6J4RpkEtZ}vqdq`b*$q|L8PxMSUu>UbSCp|I~Scg|TJU5#b;pL;3*(2J+br1dQ zXL4-eteLEnmkF$*Xb zrX=GJPcc)Ugy~i)+{g-wKwo9lJeNF_4b_u{3fPnVG{t*Md1QrWRRy_Vt7@OAS*gNg z$vlOjZJr#+JY89z$Htzh9>LDCSrre zD2U=h{&abSI#F&?!VJO`pBqUqQsMF@9QM!&UtSSWp|3KZd9kf%%i6Hk;-~B!c%olcMF_m=3md+9?$ITn&^PzILsIaM3xYUEMY(d zNn`~uAV7#D2?^zd5&|Sd4ido;BQkhwkF$+uC+yDMN#60;1|g}t&pFS1zpB%%melGX z|M$7i-basQVbJ&17pl(b@2&c(YH15_ixPnQ*-w?9Dp052)6cCZ}fFnW`*LZk&E8Un=^=?fo4 z5S5>BSjp}-er#eaW1V4Rp^M|aPEqGeO?h03{jVbG1mJh;_mWpE%raIL?YEG1MF|PZ z=xXeC$O1P+x!brG2v{>#A2T*g2@{`D_@NYOolvN(HVsqmcHZ^lapS@$2;%7kY;60R zxr2FZfgb#A(pch;iNR4Nb8eLx$b0-*xw0>@NF1 z|L8||0;Z0&h4FAJWoWnnTRK3p+WdR(y@w${{4Vy-#*gk~cN+JMRUoW{%Xd56?$|n; zFG8x_E!x+peSW8LH{MXTFcl#Ak>{xcmvzG)Y)$sOLdj}WhYxC~8 z=Wap?v(!7ad+>U-hFQbuIinlHZ-O3B)*U;4J~BPJUgz82FDG_`Z{jKRuY3-VF+_?x z)0iO`PBwk0wlkdT@x+Xf#S2M*1S%RI*!FPn1`MT6G{+<=*VlHiRf+kUl0caQ&WN6J$ScWVxMQgGw@U@Xp`aRb z!EfxdMGlEfRY!KgW@ynfY6J!Fq&Wsrl^egkYC`AEBV@BHu#}b{!-&!{@HBd1Iz}we z?6++-v0yCo=iz39F9i=khAeER{4+W#VH>c-%jofG=Q@Pc{=F~`(Z#WCxalC~?__a1 zGAe3zwO6+DpMth*mLv%Q2J;X(xnP1K!FJ?%B|NS3iSPVoHN{8=ki~o{f`o+BOqQdj zzr0OQ7VnIwS9Ya%PI-vB*w28v2)ud89*&0Qc64h4p4bhR8fO1mC?~VM>fqcdi zuo7j~U%(S&pGM&X81RIRM1GJ=dm}%D)8>Nx@L9Ux7sOw`C4K=e113W`xcHd#pg-5H z?S`UnW{SxUGX+Q5PARx!GhvWPw|Zqj?Andb%kT~nNQ@oIr|EPQKK14-Q&~oa+f2H0 zmhyc*_e(ID90`*-zc|_k8#)}5H^VjPV?<_{Hx|S{H#T4{;BW9w*eap4%_d5kD)MTX z-FecW|Ml4lw}bMy9qexbFG+!aM7c~p(~$@{hzKnZG*^lK+NBET>P)S0q1YDgg#@wB zv`=9n(I+zlxtcE^0e6k z_dw7+Xwaw5B7&gao3u&>gl%cv zyk$!l9_0M=lT@jy%~XZ0MYMURScH*nX(rSr@p(cHN-ESE^T{VG#K>2sT^F$sJZM%% zMmkGpTW)UNve_#Yn$?*KZSX>cB0Er_`rxS06i+I&!%c-&bVr2>I#3}ZF_H>x_Cke9 zyiuW-J5r(9Ua8Q6PE=@hS1L54D;3J^jtWiaLWODrphDxkQK3bhsL(?}P@$MkRA^|R zRA_1kDl{r^DiqOy3QhD+g@$*aLN5hDg`Vv|g{B8ig&yxfh3*ZI3Jvz8Lj41vLO*l! z8c?D8gQr46dPIdD{SH*<$snoFGr>`zUj{{mp6(eHda`F!=<#5v(4#$}LPLU}LJ#+d z3Ox}36yHYp_ezCc_D6-{eNmwVUsNdSS3aoF zLcdh#weG0UYksIuiEk>D>XQns^hJeId{Ln}M|@DBWM5Qhr!OkB)E5;>^G}81d{7}Q zI{BhP2YgVWYF|`ntq&@c?1u`i?4Al84TuUQc1MLWx~D>myQf04{ZgS=?^Gz?9~A;) z^FoDUx~D>GyQM;feyPw(?^Gzp9~DaWPKAmCph8Q%Q=u7ts8GCDDzw=z6`Jdf3LR^w zG(l0JdHIRN;*W&FIL3=6U5o zQ#$dWjIKOrLRTKNyE`5f)`bV1>5c~({}|2Xico|%8uUUZ8uWM&H0aq*G-!07H0bFL zG-z7jH0bdTG-#fG8uV}n8k7_S4SJvh4Vn`;4I0>i2K^*J8g!p04H_H(4U+3{=8Dk6 z!PB6h_lO2P^Bri=b3xLe;la_MQ9;q5;XR{4FZ7HC4Go3{{h}u{=&2xR(9=DlLC^W5 zK~(wXs(O*d5Ily@=Ce5N`DHULFR3$(XjG-}Xpb5fDw&W{xW5>cW|+@bU4lxqYi^ec zBuI*(Ejy$-h^f)8N*0$GpT$V5V{4XZ*R-uVS2bHxFz@bRnI&3}a#g9ggg7o%);j1T zsc5s7g-Rn_hEY>GjN>l*Ezyps=ozA(PR<;sN0w+4R z7#(evs7OIROO+O~cExrm#%!orU1FJ|nhiQB#G*a7YK=rOxhv{Pq@>$t{*prLOk|@i z+L#foM7wK9EM|+wOEcL_^(8Ll_zV@*aA**cQ7B%c_>d&ENU>2|f(o1#4YDYglp?xU z#KtYgXIP~ekK$%yin}opXevF@r9#rmQBwyZq6ocedyA&53j2gwESE%MnaU-{aVxg> z=6JO9!P4HAh%?0mp%I=+#TeI7bGcA#5jIk=U&4SlUYg;dm+Jo7rMRo>x{AR>voQtH zla28%jqxZwdhQ$*QMO=-#oe4YK^9G&VZpsf7L0pu5^&a(a5u!fXe3YPa8uHXwnEy& zN=0;>o{%}r6fmD3s<1;O6i-nFy?|#V8cVUNFwBO=Y@QO-7)eCAB-~?Nv_|7i^e46C zYAq_tY%K(>Sv@6q6y5?+Ms$o~hCz%r(=z6gB%Ml>N=rb|bia{B#LJ)}K?|xqp^tv2 zpim2`FCHC|H;PM?68zvLtkftey|t8=8Kq^mGQQm?-_EwPa$|dW-*T;@ghWg^R&sl( zrA*siR<=E4`|agM2}*~oCC<_keDy6g%1Radnr%1AwsYCQZRM<3D=8*brWSiyX=zzm zX&HkeR;F(!QN4V7`EBJoG+80WOZt{-BxNhJZFk~V+skhizckIzN=r&gZ!gtFBgXbJ zrOX0lZ2PU{ti)MN%2oOadf^*#H(gmuH`YK{vcsP;^RE>=uJ!<5L5sMa~T$jpM7?ppRa2SC1 zH7be4s+9*E*Rr8vyQLk^MxemBO9PmTAOl_!22AnPkBXvjG9ML8q@InqF?=F!8u_Y`h4f=|j5(!-jQ? z0uvuM-?m3V=*Pu%gb&9cFenC|_!rHp78ylpfLM{2{eTNS;DFlzvw;?O2!`=t4w__i z4I>@hNItNcUx}W;SQIT#2xu6X4ai<_QV@qJ!`g?Dw4crVs~m_px)5j)zj5K?Xbe)h zpy)xzh~X0KF^1cfvzKnlaUk#>=F=!LXaqp_@X%qFVXgt}iTzSO1uo?g%(-1UGCuX8a)7#;2+cr!-IUTUjOmUw^BPSBq*|{~FUTb7E z3x(OCvco!{q1jV)SIs8e3b;m>t3J{U&J_rhC9UYPSyKp(ueukuY@^3i|O$ zqmgPB^^Np<;)Dt21LKYv9(uBzu&u-8Y$=TtHcRoqy8MRQqOZ+>u@P*zgtFmwvp%1o z;#0}g%%)$LA&(^09no&he0Xn)-Z`P}P0@Q(^xhO*Zi4Ae(R)+$-V|Nr*u5#bAPK!G zdT)yEnIyB9dQ)^kO?p#wIrZH;i*AvV-o3Nvy|d_IHn?{domOIcXVH6S(L2my_s*h^ z@0~^OFbUo}i;fxi-dXhjfwSmT>_Y3{SpV%)acgC3MP(&@S5&e}X9fPZLaESJCMPHH zq?W{lrArns!r}mAji`z~6|B;zsO(ee5OM%06-H%+TJi15Bys$~vZYHFEfUf!>eh-6MAn7D9(SUtf43XCK%Uil+af|hQt7cWm-wuIJK=o=y` z^q>_uBw8UER(zwVuppnDg-mpX6$UXFM27v)l;fq>v94THRFI!9n_|%+XvZ+~dVJ=^z7Y5Q4NN6@kBn#3YL02Oxwzvq%V;BKyRQme~Hx1tvFVTefJPMTH=&(rzhC)dF-j<632w^)G`Dx=h8Pb}UE1J&&K#jW1)w)qpt{{d~ zv4Fw@5BX-ulj+%85gmoXZWY5yM91nLe;x>y$8uTD4eVOjiqR;CBgQNBXnTB&PHH6R zCh6HKL5xOUIjc}ny&+t24+Xa`MqVz<r@NI3REYs{AF|rV9wOr{GJL*VbA7NNF9h8KZ7IjhxJ>umS z^P!?gR}L&wp64*gJD?;ZQ^<=~j8Q2NX8#!U+{nS=*1?4iEdz0&A}e~}M3>U&ftr%Q~89SsAC(eSP?holFjO&&3oF0`QD2;rtt>;a*H#`CqjT#7N@ zre$Yk;b+oO%Y`BV&yh9jmfeR#jHvTdlHIvmHkD4rPaii&tu_HLU!O3R|UJ z{JOG=RoSYw9o5x4tUFkZv7^RP!^>|IuQ^ufz-Iu&ELD1SRkgJ`WQSfu4LIpBztzh15ze&4ntMC4xv^89QohHPH8cLhZ&*b-DTu#>nh7}U>A(q1YIZ!3AN!J2RX%T(08pbD56Duqh@^l^i0PqqlMqwVzPH|AKDs5yd~|ET`Dn$< z0p+7Rvl9c$M|W&nw=95sw7MX3z4*Mv#~`|?Hy`cIM_rjh8)b{V`DkxG+MAE|=A*s& zs7SSX^U>aXlrr9qS*Fa5|8L}@*+J%``2pvndshaOkM1u@3M?PpSF#}?fPD1uj>7cb ze6)9dl;+fX=SO?zM|CEUs+uyk^O69<;d z4Ucr~5G^jZMZYvVl_r9D8ml#S*Ronx$7>COvP*4%;#{}+K;Fa-QK^*n+~DA6EW5un zd+w%ZL6!rSKWn+99VV{H$g!$jshp6odS<@AE38wRt$ifHf>}Z3F};+ zCM-7U1n{>PFI`%I?QLSmATEM}S~!bSC4h>hV`^PU6|>B+SgF;amDRy!c2U1{@e;fA z_eJrzPzcvS5jg>z8T8+e2r!Shmh>ErYfEax={~(xKE+DHbZE zj~yb!Q~A2SwZ_Fu{1Us|cImQEhPnK<46#1o)k?OGt))>&q0wtEUQ#c$UA`oBaol;+ zog#u6>(HS_ofwDeCF3%B6IVE)AKXBO1(!}1641VGZF^89kX;58{;^Ca8SC9U!aCQj zT|>jbPEoC`g}wI6SFVs&tUS{Z$+V!>Nh?EKgw{1{JciIE1s!tb@)Z$Q52b9QCI=lJ z&-H2R8HNtQbtqWqmew%)}jWyENs~s!_at+=scwFi( zUAoLJD_7cR?4;w!X$laTYfoDb2iK>PgUVXIhNU>xq|lgE;G#hw^$O3V1HXMhoNH22 zWKj5J%N6066lWXTD2`YdTd%CAq3K+^M#PY%5N0(3Nu5}G`SKO@O6%3kOauh)3$k1a3tpNFxwiZLL-6VB1yu6`@4v=w6<$ z4ykq4)naI{E5=p)!1E&x-9|6jH+1sIrD!!2DXVQXHlV2W%4PBfZ!a!}h3X1`OPuUd zSF_z5&d_^Yz0z{^%B4#}&qigVK_3p?fV5R&5Q_)Ts6!lXUcPiuD%-e$#vtM7QPEtX z6H!oCJ65fvp=iM~i($kswOu5y&_&)suGZMs2Dy@^bbYb zv1;||RjXFAm15|!It`tSDAMPQe&KwLTGO_(re-Jocgs#~*Up{0_%7$}UHA&w&BO=9 zEp=**u@i!~?qs`+ox7A>I)2M`8}!2oYsiVd5Yl(n?EJyb)?GVy?b^9}*RI_*_iyQQ z##(0;61VL%cI{+4ExV|F(Oj+8Yt zuJ~$=9%30wR;O%t&>=3R81;OEnx@c4;rdiLM2vN7x#&4L9?5l?8`R-|l~T3Tfgy}1 zSn+|ftmZI@*Es>8Gi6ANl)t$?HFaI;x^-*Uu3O92Di|N6#j;vowY%1ajxH;;LYmSF z1t0Es4|%c4vYM@82n4-7OKqjbCZsUjWsQ6>cklt$tO|j2NU27KGa>q|haq^M;C13M zMOh_A1bz6S@e;8fP65&gL2rEx)~{(dU0G$UGzUkih3XMu4CNNx%d?d-fe@(=BFah} z#p0bvpDUeVN{V$gOj>EYjNWrl?m*cRfmm_#27EjqNa*hlrnxZeWiiSaUUldM)V3i@ z^r3>kZ03;k0a05k>I9Wyht$DSm38V`)iX>hm6ye+q7O2?mde`HVyYcbOi`B^Xm^E1 zPbkHdPX8&Ea;_#xj;(U8T(xrL%P@Hby^ZM6D6tefi{yuq)GY;-l`0zKwJj73*jZOn zY%P{AosMGsWo3oFoYc}YQ-`b6oJGavXB)ZVYL4XCa$zAiMU~=KRE-r;Y}Ya2x2G^) zPA_$(822X8tInH%k&O3}Lao)-p>`BkG8HA)Z`IONHlWRIt$Hx5y1E!F~{5TyZ92wO3!vAnu@GUmEtW1i~Gx#Vlabuy{*#@T4JTWnM-PNkdZRjvkSQxy#clf+r1g6E+s@ z36M0bNnY$C4Rhj`u1L!+-PubTdPzesX)q_|dlwse7aL>*%r%4F#fIL+hTg>nS}^Hd zY`{7QO^j2H-n-cFKY6i%3YFALAyySIMN9xSiytl3drSy5Kf_~$?U z>A(K#fBljD@tgnrkN^0?AAbM4-~CqHWlt45{4&;Z>A$Nt_SM(#-Meq!egS87U)S!c zsj056*j`pra?N`KU!Va8Rb5=B)#R(jzP)TO-^ccTDGk`Yt7b$_BPvV z)WdjQ`&;syTBs}+Hst5#`AUt|lS_YnY; zWo2*M_Bo9l_FMbE|K>Nc3CCxjeu@Axgpa@dUq|+c#YY)CsIRIhFDph2@^f>sS^WCe zM%TD&2Y+%2wF?Tszq@+K1jBora8Ol^Zl|MG;6D{UW#xC({K+TKtiyB)!Q1TZ8&|LF zr`1o2Ae|Awt60TfssCU>4i3%8%FMigfe+)qpaA01`A?V?c4(V~egyqa5jsTwigx)@Jys6?OxiI3aB2Y#J1Bz-Lj5*z z(m;FYTFoXtrs53@A?Uw!slJv<8~%V}6{>JF1i=Z9b7pb?$42$^^ta5&x47VhXIDR# z_=|fmZs9wW)1e>)F9BS55BQe!Ew$43n=bfAA7St}qwlX?hW?8e>!g0NzN%t78W7=w z0ojNE6*+Cr6v3mONATFk{38s(w>69*ybIXH<_mRh1Ik(XH>DIroV_DVfCX%ebMvN6 zZzKHf0DQzgYW+|={$?B3FPyKf!3ZEH-~%fYXZZZ3kcI-4cWp_hLYGY^KmS}B!9Qjn zu@B`_K;<)Vhnr+%Y}rJ`LMReQ zJ>TBKAK(A=ugQT67p47Y&b)PICzX%jC61xY3R(W&bLj{gbmr!bo8SQO>t1(TV7&ip z_Urek3(&whvf#{HZ=F6}N%NM%198X^8o+QO1KBVnC{Zu|_ zgC_sqsn8UUwJ<{3fLfA6AAj`Ghq49O@Gcton)*=sK={`x#nsX83mbCGkswy%5rj2s z)~4+1(7?MGhv&`_oV|4u2E6|IYp=bEHzF(i1AM?p+UDwrv<+wg7Nn%qNed7~_8xn; z`JMJ4zRBL?ud`Qw|H^hc`$@bN=#(0ivr!xY7x>jRAAZ0-VDGbEYwx}L?mO%qOPzI( zUcaYaspm_b%a-EHx=c;fa41-knq=&`e(QB!r{nWh-DA|_2di&Of)L56%UGhZEYXr^ zNiudqPN`#iv^pWm>e(Jg{YsMK%bZJ>ElXU+mMMuWi6!zRXJS%v8RS*S8+Cgud(?WP za;dshU1m!(k`h^>lB6eR3W1P4)_NWK*fNbY;tw49kVp-2NExdj6k^)X>Wvjk*-{;1 z%CZnsm7bgg5mx8Gr!Ne%>{05Sd+PVDHU-%-BN5V;L@PA@*Y#Uq5+{?aFo~?DSm=q% zU=mAmB+`LuID^gj1cIpNkha_EoqLmoPGOoQ(E%ZR!@4HOS*0A`!|OR>XRLw`Hz^+E z2U=FqvLU4Fg?iB{N9^|O5q+YiAcWRseGp?kIU6E2d9GGTv4YYQ%OcA{6q77muyA2K z?mk)&&*P1Sud~7vCr#?7+Of;*>-1@TI} z78if?HTD_tmLML`DE?TH8Y@yqtP`r+B9^V{C7aqm$z`%X= z6;gTQgkIX z+7|K!TKs~A@pL~HZhKVXv;?6`0f?2@O*55Zfw2~fllF}T3%RKeA&CRl8fP381}Z1D z6EIKQ5vI@?Vj+djf~D|CUD!-+QAs~p2SDj74DsM6*$JbxI0V59!C7WT0wO0};nE^o zoVM-ZE;5R zDJI%s$1TNrQE{QIP{&onNSh9B z2CtwT042_djq4LqwF}>J1c7iUY~n@^l!A(Xc>` zbH?JXEDQ-2Ys`;TV)cF0FmFJws)Y`5b26@2=J_hlM$5wiX-m+!1?Ca}msG|YX=t4{ zSPC_grLdWjdTt^#=oqOYay+hu?2jdzVtK4K|6pT-(qMy|Od>eWhjT1~@$vBS?=XtK zV&~77i23t3HK+|%5o|Tjk()>7&#_!%8FZ*|Iz(YkTpOgtH^U`xdhA|kAl|0Gy>GAL zmAKUhNZgKgPu$)JjJTcH+Z}P+5g2hh;e)uH^hexI`XX)>eu>)&U&QT%PvX|-i?~$; zMBEPhByJ}IAZ{ASWB0_ZG63TCu^-}g$~STQzz=cT>65s2(tqPv&;gFLSH+&DQsp+z$F< zZm$Hu+;;e8Zs1IQnOmVB=JvLK=9cM)xz+k%ZfSm)+pB(=+hKpqtXrk!F4S#L_tY%|@}AV~P-p74UI+;4mewtGdl^C=)NOkg z>ZTMXeQnmzaZl^ntCAq$4==2Yo$#kMXjJ=MMWix7efhKqzfaj6H7v>D}Jnj zm6B_MHu6&35>2itMPC9|SiV>~24fchgm1d#STfEfZhfFG*uo<2vF6fLdXBVYDB}w? z93+lE_yQvyU>@%vzF8nFRZiVJNmNtPTLx<#bnZ1B+V|fZD4sGpq*s~?)p4M#+D6bv z21ofx=Ly1#qBHW=N#24vwB)AQ1J6-}_YMeN(90w~c6r7xaK|(%1gFJ&8C7!me6NhH8&bX|T zBn%b{x+zsy5ex;#m}BB=`vRM|Ok21jLcwBjt?_b`%sN2N5k2Da3Qlwe0L(BEOx3Xv z%s(Fdx0#qV5xBT*lGHkjJ0U=U(`i7qfiH`WBD3rQv;s6(Y3%5@(4yoSm2k$K#^@vb zAT1!;xyKuoMjA#QMp^P&SJ9J3?e~f66Kkv_8Nr0zhFkNT1;jaBp%ga9+G34t&|qfL z$Nk;V$EpD7V`KO9u`V$B_-eQGu`Dq9_?i#;xYHkfe9aeqEb&VpU-d;Ft9{bPQ@-e9 zQ9$(Zs89M>{hjG!K>+meKm5?gD&O?+cYf$&kq`R#pI1NeNgr935fFd;l^_0C>We>K z^vxf0{qx5&{`uo;KKbM8e)(gOZ~l17AAijD!yixi<&T^F@W)pJ;EzTA_~V%X_+yT5 z{`ji^_+zFY{`k3n{f2{wG{PC<`{#fXbKi2!@k9ofN7XK3bEdJFj_O|%9(C6ac3h)`Pi+`)SU;NATy7-su zb@8vl%i`Z+uZw?&x-S03dtLlXY+w9a-tFSwW>5iQT$15=EdDL_y7*VwW$_PdkFl%0 zt^VD}tCC!f_`JvBUqZKwf2%t${>6J;{LA;Y__w0_#lQMai+_u{S^P`xZt?GBAB%rH z&(d+_Z*ey(e{H$@#l%K83x6+rTlibo{led3uM207E>59h8}+n^!F;gcf~oxsDtT*hmwkQ6KJ0t_28yAeYbzb2v;_ysv~EmG z8#{Q=V2RT1>vvy2rQbj9a~b(DK4(At=)(_4A=I(0EdofTRM=qX9N_}8`z-x#+}BSg zX&)1ceWanP2DmR}DIMuU85nIyOMTw$o7(U1_x0;1in;_!ejJjvtgmp`ReAEYRZ{a8Quq6~C7LZ&sW?n_ZyC!7;jqLSx9Pngo*`H4ia58Fh2(|hldof&+~H;5zY66HTB_q%l|{dj*< z(@mGAci#i3nX33ux&_dB9FXFmqM?E97P9_Ezy7ShE<)nA@m=m6R!KWA8bE`W0YbnSP0Aq^zNXtE71x=J9^4 ze=CNstT1EmIS53`S~gPzX`3bvHnOi-y$WAY0k8Uyfgd_t2)jU#B5@4*`qcG=&|#gj z%9L07qXNyes!fWMJdT4i+t=5mtm3O2t5^2J(`7oN_IImjH8F1kgyV?T8>!IHyas1+ ztrBLDO$vfW^ zR+s$E0VvF)jx(D_y(U>jVba!!1Ix5kaD%PVSFh=3aiQ1%9VnL?90W%ow;G-zgOx%Z zBF8cxz}{8fF{BF&74jJVP=JxhR<|Lpt5)F$OA#GNW1kOb>;EpSddG#}K}%>T8yu8$@790iMhODCcwAq+B*Gk?RyFp5lZ} z1j1=p^J!?gl;C6I9mlUw-%Cf|DVK3fCwWc=39DF23y#pjQC=~?@P0bFp7h{{GT?#h zZSSsGw`Lu_ZR?cO2d>+HwFZA*v(CECg1(;8ix-YTKOA@!1H}mS2b|z#Tc^>#kP^p#dkRw9YU+d6ZEJv}ld=^2#n`-tudxb6 z;;)5hk^VtVRZ#q-A3uSKRMub|BTrBL=EU)aV@Ho1K6GIJK2+H6-W5CS#TQ<9e(1Bm z{KYSxdFrX3KmPb*k74qip}IH=1&Y|QzSm(}!f7`AaLylPMZ`JA*IIShBOT?1Nh@LqK&v<&^_FP?c?XnFJzK+rHL z;m3@luo=DAL49ugH{ z1ksKjBSoy?H^+`1K6J zI_QZf9w(O`dXTa|wLyWdBLwv4FiZQdMb5K7mYC4?XnY{ev60%Q}7- zJtZ(Aau^N5qmtsnVL}o0D_L9%iJEf=(lxOqA+MiV70Mb0J_*H)v1;1CAZ#N8lJ>#vy3@MD~_Yh`lxCq_D6c zQ#=|HNvUo_!?9yWsk?-shuERM*MEnHS32mSF+cBF*~2~Ab}4)AXI*D zaDZ9-i#^QZpYK@~|H~d{@lW?Gi~o6#viQe)n8iQR!z})xo@Vj)_b`he+@mahP|vdX z0YPQ)H`}v#7mjj<|A&(J*dUX5zRH+H375>V1I*(m^(2p{%O5{bYBn8;5IHjy9KqeOm8PZIf&UK9BPlzg`* z^7|;qb|>=t#9urT`TZRe`NI%xPvjds^K;Kc{zRul{tZt-?}_||j){DxJCT>WGGy9| z6bzLrlw2P^>`Jb8P926s`8kmzKK;~_lpQ_l+9W|aIntDl5PXo=#CYW667q<-uYz)A zWQQjyPd<9&5VV-dbv%?j_w2LC5T7;^|A$Sopdc58W$ku>U5MN@@p;oOGeJb2;mZ0g zWS5zXwS5&KGUvBQ7IV$*yh}-S)o6158Or&|c_hd~kn|HFQ9(#3 z7yn#j@P|C~R8>R{6~46Vc}UK|T9CVf`AGh9aG%tIjkr}6Gt3Z^mPa3@tQFb2%*0J{ z@f%9sWytD?k03#=Sm074^Q<8cJpj`fs#_Y7PjX2x%v79o(UxbC5Duk4n;wY_S$HHN z1|`U!5WP46hDA)ym4A++1m5gW(2EBifQb!I#h{8G6}XQub|eF&Exxq78ryp(xxyzM zd*FTn1N4|oUC~*@FfbTM8+nE#xvXRsOqANtQIuSRV~}S=IgctwiD!tM+zcZK8fBg( zC5v2nya*%mN6b)56BVK+9-4NVnu-dCk|ttJGL0VuYC;LQg2Y@^mK>_CMPxLTnf4pZo`=dS1*&ps%&OW3^ zIs1b>%-J94Va`6dr#bt;9_H)=dz7;e=vmI*VNJpB%=`cQIs260bM~i#&e@;pNzVRM zusQp)!RGA4dy=z{3pQt;8f4BsyGJ>D{QvQseRhyJ`%}T@>_6{O&i;5$a`wl)=InVL zbM{IP-IT> zBLRp+8vdNfkf8{<29hpU8g5R$i)3G9U1Gi-iN<7LJd^!L-HEt4`HrQ8V@M>$q~f04 zRPR_t$^NsHwUQQOK|>zuJozq?cgnb2YO1S3NsR~rnMP@3$H{k7jVtq{e08L$2AQ3i z&UBu9zb3hhoUu1k>M##?9({BOCE_x9Z=ZZeu6r00tfY&kbm`2f^6@nHj<^YGA(GtA zlkX-?lD&#JP>yE0M6a7V({#wW0i2E z&hTfRb`2h(=Kd~|?WQc1*+*}$E zlkWl}B4;M5r6q-hzaR=DvUW^O-;d*Tu_4>+bvoYzCE5OmPa^H__ak!q?M=w*PBPz;=anx)HX-k0Covg{U$ah^MH_> zWt{v#`8$Akq=;=nBOB;-@?B`$EeIEmBf@k)H0I^}(yehYA-zw&n<^!DGF4{3AXFlx zLgn`cQ5lWB-+iM-j~+Fejb>x)qsNRHi*GizPnacK8K*~#i%=re@ybbls`=!pS56h& z*MHRLQ6$XAu(50m7lM{?JVF~65iy>RZ=G-wdvUP81-okO1^xQVmb(#V6LiSZ_8XLS zwY^f%Z-8vuK4$cov18lKP$Tql5#yEdd;&Y^q}ER2%o?VL zcR?7DC#4eQR9iljj2S(83`2B`F<~-_X6wp$Wde(2!XC>hJ48prPd3IW%=cyu$y-jU zr?foCve9iMh_HmIVJzI}Vuun*2V*dbCO@T7^VFqmtgu`S3+d>m5^0|(dJ3_$zmkVw zx~*1)msTO~pl+Rjj^z{3{zP_Cqv#;~fDDib9Tq8JeL9LO6L=(_sGPK(a+2{PASB4W z3nGT5>DaU;0Mb*JxSh;^9c(Ahll76#iNHXWda4ClD4xQmkZ=s&aS_%CZ9EWcymJCUl*l$HnK(%xET>v?`wbKw z0B^0~P5|5p3XckZ`6SnHgYY2ff`U;gg%uB*D4gmvEKu#DR zX@%SBBtDrY9PyMT4S*~}IfjEK&61+yr6`}IO@=3IG7gQABh_A*IA8#tEo$C~7{}d> z!z^l?!xe)N#uRki4H|xUJaYk(de}Ii$RwvQiA}IYYLgHyHpxMnCQo5gu#Zv1jh%9A zC1paF0tg%LfcI`Ml*xRGLS7VPCiWj7yijGs7<=x9`6OksiZyV>VZ>vnVBfDOijyZur=rq zRT>S-Z*Dn`EsEIHc!Dxn%Sods6Su8qLF`z=u?A~{+W7tB?1Xmw#PJjA3H79Lir$;s zG9biKof-Jx#K$hRW@~iP6zTCk)Ev(25zSG&b2BX@x|y28Bw3@K%!H)UcH1sNH*d=-V3sSZGZkdQnG06P1lRoMIHy zKEeR2%K%4y1~BAYn!bTtGa4zk67qM*@T(_iKkdl^7#RW!^!3#0EkfcJ1eG0cqfRot zFGO#m0uwjDBDO6^sUu&46=FWO@i*I+Eyk8%+>VS(hG)JsBYN7@DU%{6M1+Tr9X)bH z=&%=_8#>_bA7!YBMN3v@6y{Bzh^ENVc1hOw`8L`cP2f2(vu4hSnm%>PWCmTAB1ln|jBEjg@+zyYHU6e)LcOpBYB`G|VbL z9EBlA7W-66xI6#phcFmDD{wHw< z&gB5H13PH&S`lg9@JX^%jiEukJ82?34kM2T{Ol*D>K}gp4)ib$ay;Hs22;t&F)?0Q z+;7Z*A$r&4@dN#S_ESKm-aBpwj)td_X`ck>;A}CtJ{6BLb+8zfQ5cmIrRq_G|Ltf0 z0@Zg>uz&FV+iyd>(NzMw6>1T##@JZbc!axB?T`WY{i{$b1AWKsw?eNi)0i}f57N`k zhm19R(MV$%ebgT4@CW+eCsf|!R(T5^J54^-ZCR6G^!=MLxUMzU(qN`eqQN|I!uW`X z2Vx$xT`wYa`>k%Ul4(rDq`UT58iniQ#;q95^au)PBPTrifC>J|z4zSp&(hgjZ|O_j zoRO(!HcuEdc+g{b<>FyL$gVYJdiwmt5O4uZyteE9!T0aD?H0h53`?dFDfFhU2T*PN z0!ZkMCcRHSf1Q|2l0l_8Z+GvKMuAemHx~#(4@4ljP(R) zZTm%P8jL2BKWj{N>HRtJp234;u!O&Niq3_L!3IE&U%1nAfZvaDTA8=1d|m!Sb5=!~p|) z!fSE@;x#7%=QWO^tYCS~>w?!r2FPnl1+SSFFt2$9Sp)H!$-(d%%7ls6yc!s^^4HX4pU<)JD$|X5U}wo!g8b;*;C7O@#Kxws@sBQ=arnFu>=*VrJ0X;d`ncGD8 z=QiVA+-9%v*u`xoKjNwO|37XsC@608Kycg!Y=yW)fNM672FYz6?*X@YJXmh?c;MXT zi6FSm6Tx#Ef&|WOejYrxd9t0d_~teqf`M_Hr-J7;PX*6yo(`JZJRJ(EP30R0wVpA27GMXmXo*!El=rliU0%FmCgv$!*U2<~Cn!Gr7%a zAKa$a8t0E;%)vfbQfpMP$%y`9_a>Wr(U?t{exZ%fZK$2 z;x;Ivc_u(^^F%k?2K?kPzuYEjP&eFW-~)cS%}B4@rfsSyRr0xLGxu@t)W$v;RZfFG z@yBc;26$mM5_`3KW)u6QS7u{OLYb2`=yjjeCVY?&YSWfA8CDOj^UiE$JmQnt7!yhT zV_3!ZvT8FIC+Ub~mu^;Vz)l7}miDH1W)t_EFJ@yz3caaYyHJ}&p}wh2GpNnLfsdu8 z?d`&B#(Gi=@5}~T+lbk`+L_r*4}jSq%wpB%LSw>KS>eJO*W@2Rh|)#=rrH}hte=UfSQV5qqK3y_yZ=#+yB+UKwg z?$^OERRCDCBQN)5cu$Ve9b~vdEinUUAaLw!Vi*AS{Rj3_pK=6S$4zH_>spR9f0>&L z70F3->zac9t|ugxiBMCp+dXk3Y73SW<*jldSdxuKPPo7ZB6lkEM3Ts1Z zZ`N#H6dN}^cZJZw>FzcTNMd5rUJnT0$M^Djwa!+n6|ahm#U)L!iY0|48VR^ptu5(* z?0hbUv9izDThHr_J$1a!TIG$Ra-+J2%JA zn>UxwW%Jlv%RJ|NvPzXoSb}3&!m_0sJ=6&ASzTLs%KUkAv4qa%IOfioJ7>;ZHrF|C z?%a8aRyc$U=@R%dwzN4>JezoC(D}Hdsosu3R+pbNk91k*u(<}|9Mn)!q5@05NlZw< z>6S~EELmKRhnk`xdbF-BA2#B9&h0=c@ZLyFUY~sAly4Ho% zDh!LU#qc>gY-Dq_!~{Z-bs8brQez3O9ncr8#_NOaYZG8t$m{IMa0O^S=Z+YQ)Mb!7 zTf!E%(Fv7FH8h%8{SAoksoSwkD&uolOyAj#m^m>qi3w@~TV^-yqiYn}7A{zrR)tpw zM^ClZY(%w%RH4Ppo((IN*$ldH58+a6$>PO0KhvNa5N^gVS(}-czinf}yt(RJ1_gY! z5i^_5)?)}{EKA_+7`})tRB#soPF$xO#MnG#u8z(jls0=-%xuf-kQl{N94Z)2=BGpX zCBPz7IA+Jpnl*b?-&xMt_>)4`!794iOcAYo46Cw8T|n29 z;Q=w`%~jBFGX-WgH7Uf|EH=|R%gD@9vmCezGAk=v$yRf;?3`R&8q9Nz99%+X%jX5o zd|Vh=zzg)Ef+A~?HOt7(Vp-N~4d?&mC^@*OEGJjZ)o@QQPX5OQc=-jE0IpUcgrHC%LAU@fo}*-I*MR3WtqS-1*gc#e^s z!(l$G%FW5iRiMNmdu#>PB71Sg>C=!`vz!p7z+5M9vmu9XXdr1vF6=MJSMsd|YLT)1 zG(XKUrK>7jWr(E?Nj29AF>1IKZsNO$e9(%vzj<0Yjo@3dShgm0IHV44;)Ff;L02(| zxUzyaififdH&3h3rHdeGlI|)UTk*E?KkLu2G;V5B7Is0fn@{cG2 z8z#@EdT#0z6thi)6oew8rcIwdZ7Q3pO_@9yWvE}Gh!~|o_{F$!;o&Ge#}wA+(IffD zZ`}<%Hx+esD9rrIR1+>*phl^I>!JZPK@E(11?~D&@d_mA_K0w;bY+f{3p0WI=~}PIUKGLoQ=^(nI4Rw z240+wioB`Rzzuf;VPmIF;R26FJp;hPux|kIQ${qC_Te)`Ari2E^T3XU^ON8`f;xds zxakUCSQsY6j4_xcOY9y6kk#bibg(E^Jl}GIwx(-#qp4PWY=V3ep{?pJA zp`pV@Pyv@LICB|*eF0;~j3x`n0Q%Pm9??dVi01Svan_{VbsV;s1tU#aJ{_+a)Kj>zZ+%3-6mj|%MbuPV&Wup zADi$MjX(1jm;@&eBzm-Xp_h zQSt1lTSO0N7OD>$5yN8s1Ml;fJiPCqet2kS^}_g(QoS(}_}`g$IR>E1)BNGXL!m!{ zMSRolJXvPqM+5(R;8DgWham+3!Kd*f?H?W*NODzz=izPs49CAFWCC1Ro3dJ1+g=IWP^NXI#XO@GnyQ!i8B#^^v~&5gUEE?blJW+otm$D61tSY2;DmH7*9e+ zN_-Kz?Sl8T6S@^a5xUIIgl@ARLe~sJC)k;r&lLo~=L$RWx#fQO+@?-^F4Z5OyOf)| z!o|)^K9}K>&#j+Vlvm_JxcJ<*?)hBC$_2#dwshfh`Cj>)o|YJ^g3h_A8PU0d?&zGQ z)?Smc(9P${Jo#LK4?eeLd937fSsr{Yw_84!mSFO^)UJFkt2;iIvPkf`WXa6jd~TC> zK9})wtRFtN+6$lCm>3A3Tjq_=ty>%jpG)t^=Td$1xx}gte2&$%WX1(d=)PT)oG<1Z zXrcxL4Rp17u^&RWEYp+FZ86!SUqbhCx{J`IuMhzw&gh5GElOU!E_Kbzi+Ty&|6oE_ zeI__US9K;RLZ=kzWv7B;bS0o=J!Eu8&IZWn>fa8K(N&-IV01>*bUvL;)u&9I%&{>N zIVp?8rp*ZAGe~yW*e^v|Lv(4-yo~ynyn_*pf*bP{&7tBC?1!WMfcFR0<7%%!K}F*oz=? zVRNTJvj;kS+O+9t(U=0m9YjQ>b|qX#jwZD8k$;fdht0;0osQrzO6frD2rDcnr^#|V zcD|0rmLPzKgNDBN{J5Di{cE=y>7E2L*sdU4N(455h5_iZdBh*#^{{A}dVAW8L=kGC zl}&OA`a}V1!`5laAYJf34-W-=Y#hNw;^_()rODb@P&yej?12>lXW?9$jl7nP{L_fx z@H%uFW!{wcdfLsxu%{Ycli>*Z1liL!NxkW|z(f7Wd6G8?{bqkj^<%~e^*qv$+MQ%Q z0?tN@4u^Wc!xmvTnoGY2{5sO-QN$f5;U5W4Bh4xF^D(;1el#!%vr%%J7G>UYypVok z_#kfB`x?n6Q1Dnd_SBB~19cgQCv*>=DWGoUZr<2RP+%uvh`U_pVG0bt>B5eVN7~M2 zedCTijY+{yXfHZNx7D!P10yKs>RejZlT1xT&I*@;z4>z`N$E{aS5jh6F&Ms zP3@tRXbMg+CbQqgraCz71`iieYX^JkjwZ?h+h>}LPee`F-VO)ln}GQiGMzlXL5xL4 z4U@4RXxZ!FdmWUA4u>~{HsoASyXm9iP16NkqCqFf4$x-M(KBqgMs!V)=&$jRf$f>< z!}4R4WbFWe1prtY92 z6ERn6XEXmo+S`LK*q-P$SkHzTFTOx*t-do`Tj7JP<#c6h>wUAempiaET21q_0$13X ztu6P@)>1mNwROJP8rIUvL8Uxa;8p}i*wQ)?wzYl;TU{r@mK+3O!)2_U3ES!b2-|9q zmi7g>^#KsJYC^Oxz$N=7Y?+-1+e&|gZC@@H?V!bD0WQTSVN0A@lvnLSxCq<2?g`uS zC2>U9vV{)M1-SLz30vYqLD*7U+=~cXst>|ewKUF6*lJxMT7XOSLD-TO&6k9&z=N=@ zJ>1;_T*3mAux;o{*iyP9Y)j(=VO!pbu&wk?*pgw9?*+IdFN7^|0Wm0A-05}!jxUwV zgU*iYZ_DBW;cF{9^0j5Y`P$Ng&U`J|q(cELzz}FTmUbZY@>0s>ur zfh&IHQh*ox(8KmS0i^$P96WIF&>>U?{^caVmoAe! z!oF3Py?Il4SvkJda)ZDs^f?H$A9aOxf=1nlvQm$8&0{|4;$M?fa1(Df*Kslfs zG!CF*^6P7_U%GU-D1&aobm_7}7sLgI5yrY-Jz!7?9U!)5=cR(|%nT*N?grS(tuV>9 zUpb(n1kTdjcJtl3;?%{N*uZcDH*?B%%iuXLXBApG`iSq-VZ213E^i;At^MisvQnkg zn1eHLEL(1DhB$pypmPx{67LIJV1#nOaj3cZ!}?;SSSkI-9GITIC4KXjO`Av@-%7c% z?>2;oA8bWTkDoq$W_vL&cHo@I(&AE9>YPIsDO)s(k8qXm>kIJ~isiw>$IiTUnw?gQ zSt-MR1|f_&Ti6x{-Q2keU0{#~C!)G<|84tQ4<0<m%xvXm1u56|-Wav{;2v^f)hH-vPva(l7~1a1?3g+SUYg=$XRxl zHL)`~FzikCx;B4Y5gcNr-xQYuT8cZ=m#h$)Sed0cYR)S8?t0DJslV=K{e?b*Kp`bC#D???M=@5NBsRTGwBF1;-WYC+Ezy z&25b;ral9}0=ueDG+CM~o#ol99MUJ|P!*>>XB-r;GNZJNmpRIJG{Jc4DOG@OxLlz7 zwCP+=oRdbcc3GLo=NjWMg3)u(Sh@2IVOf&{f1W*y$di?w8?d8+<0zTz6Vp0QSXohn zm|2^2F>qaez2WL-(%D9k#+aBnedjnQtSzlRqn_bS#u+%q&RmB^@qnD}01;Xm8)8r~ zIY*m2V-HlcQGe1G4O`yy?U}dWngE%uwF)&24YOveDAL4ApnY!anl;P!z!4fgmL?4* z!aeCzS0v6_o*gnh!ct+uW<8=%QgdanK0CaXVJ9hJEG2RCl|JA24T#eIb`iOzf zC@>0{+H{tm)z6(hr=H{ITk&ah9v^Dw@zG?^TSP0ZI(_E$GptELCkgZT*&7hX*V%LQ z(RH4kH_n|0l0ZepB~^H9DWscc%2|HSID5`=&U#+Cpq{p)9s0UW_7ye4&S|7hm8LPM)6QSGaM~ht-U9y-EgOwJ zA&WtOPDi9*+XVzbzi=L2II#978WqA;8CvCRh>%pzJ1JS9ib_1bCXKG0{u zZycx3P$ReEErwY0rV!XIV#UroM890%7ygXQPE;3S!g~ZNr-luC5sO+l;QLII&{>A( z%w9r$UR1~ml>#NN1=Xb6wxM>F7U7(jD<3(6jnIK)!yGv398mVGc(IF7+jh38w3P6y zhy!lq=dnDhzTJlVw6j^(4XUj~6Qtau1^%p4Jk%Wh*H-MIo;D_+!q>#Npad1hcQOIz zAwH`-%h4O?)OOV!q2B_UDB2a;zvMaQ_^QEE+JTy9_Mn05=hP6q-as}z5%4bh~EM51+v7zi)KGb+_s4^6p0yNTqxK75> zIFMjc>Y$CC8R@vLd$`+HE8$e=!?R{-x_-6`NLs3-^H4j*1%a^;#3FrDnp*Knkcz0@ z+VFHwNpIOgMS6&)iLy#X^oDRY!8#056l;58Sb8(1P6Fl9WgE&74EtH>O(!KLV3VhD zAp)SEmF+vIqo}K-D=xq$4{vNk+r$_V!$hN)b$C;sPdeG#{h{F+~}f4 zBKRiuyoeWm*oLy_Ffi}{hdy^*jz5QIha$mq+N4Wa zTiI5F1`<)@D?a1pPW!h7=HF(NYlk1`}K~Sdp z(yhT!rdM}h-*XU@X>W!<%JlJx>fkBUh5aP~Q6})qhBup=U#;=SnUsTV4R2mJefm&Y zz?7-s&C5Yjrekkj78xNs9SCJQ^y-D+D3gBR#Q$dRJ;19vvUJg2wa<~j?M`ziy?O7x z8Ry)=fU~g;29!V|IUs?J13Bj$jKK-8O%686vD;JN@17e8{xhs=rpK+O^kTYwapTR`OzP7i0S1_kU;?V|w?W zzmPbm{fz0?Vo)0x)A=s`(yhU(^gJEWf)UC7*hk+P1%&mW{C;>UbTtvmZ{?Wg+LYTOMk#c=jc~UH*Z!=#K)wy7d6KXczKv>x#T{_1s zM2eQ;sRZKdR@hSLS*t+JEzg5MyG63Z%noEpm$tn&-J&b!YFkLX>b` zcrwzCYqS5YC7z_>-08X7)4dgfRJRn4j17S2Zg2P2m{Gk8z>Fx`{hsbd_qOq(2FSW! z(?5o0Ls)CHs6M70NDcuL#sue0kQRxNpNWyhjI@rP?xDN8^A=r;Dr}y4?r9I>+ zy7Cz$f3n-3ZhCq7()M$wm!9nacUrxCS^K!tyDvT0F7C8)!E>#on|`-#efzo7+pn~l zJAL@ahK3#M+rXWE{l}fZ|NSd#+RUAP{l|Un`=Pt z*Ps5eUF7M#f8EzX^7QeSZA>>Mk*9b6b$LaPtmt`VOeVTJ)4=zJ%8`rGc@cP?t^T*@#dI$%q;Syll zR);H+Uw!4(S6CU&_ z{>3kU_s@d=_(MqlCCt~x+sexnh*Mrmr?vlCy0a9N3KcfGCPx$i{ueIgfleVmw0;BT z8&~h~C{*e$q(+Bz;32?m<7~pYH(uwVP4XYB5Je9tz1m5oCq)Ip$DAO;hlv5Wf(OpK zJ%HIR3aGWm*1!p+Y=H%j$;SlN(it9e;HFI*X`^KT<5!pN+*#_vV-Eb12Z0}e7(Qr; zSDVc^d<2ypm7%4X6w#JVuopeTw~8KvrzN~_4q zdJxzNwgNF1sErMl_%&Qr!v!k(iH^y4`G6+?4?#$lkj=(sH++qTH@wV~Syy=BKG+JG zL%-nF>Z?hghJbRY%=7#mO9@Um>*Q~X=K-EcUaHpt`9?qZ#o`%{3b`My>Hd`YY zv%tZdFTsmk;>TCg();ww2K_9E4%?J%fZANU2_=>r*01Mh!0|ws>p^%JK9nnMaRCgz z0QJk0z=N>e-GR&@Xs{lYlePtot6p9u^)E6TpaWONp^Ni86C6k2LDoh%I>dTVtAe_K z23iCiJiXhA6Nsvq7kARmV5zMIy?a5c!K2A*A-_!2W?!5q zcyGq)!FVyck`2L)z+wgApwmiwG;I8)&6vxm`c)W7bL|?nMqwsJ*aoh3YTyTx(KwD5 zZ>w6z3){9?K8U)}w8n@D2YLm=U1%*_l-Ihqgg&)mC9f-5_Ag{b)$d8j7Q=0D1f`#A zEYUB+bM#_(r7jM`vbM8SbQe5N#Mdwjwr#~6+_V|1klXN}RJL&khE#b)m$UO4`2$k@ zKBc!B-+TkFIC!3)0oo)L>$F~KaG?NqfZ8}5HHnjUbqN(M53>tU^cX>v{Ab2z=I5W$ zXA#uQe{OspMfJS*i>xoBUw!$N_p9*Eukc6hY-9lcaH*uA=ri-v&(vr1x%t`W^m&+T z?!WMS5&iOuFTGzH_+|j$D4?`63U?W$S)WEf`!psc#O*)-q7wu~@PWWr9%*dsRHbSs z{d?e3)(h>e{ga^o97s(C*9r$}4_W zrGC_LLSs?e^O?sQ7z3>deHvfUmkNF(wD**%=T1M1B-XNJOP6t({o=)o7S5kPckUb{ zt7p%esbCR1|h_mUmMqY>bDYW6d#GrcFm6 zJ=GAiHKm8#0%;5@Y%Gn!xynMqzmS>Aw|oRHi&SIqir4nhQ?!^CH7%SE)Z96WHq z#8BpFs9Ncp zqNJ#g78{GI^gM-GGciM_P2~gr_|S2l-7z_y(O4f#OW{Ap)LR&lV$EtkCm6+? zmOiE3=UcdFVa%fG(`cH)Q=}%V1QdvzlCb;GuwBk1iociphs!CN81B05t@kg2yKaB;{ohE?tLdL@f4oa+lyhZZ~yxL>nMAD z@8f^#ID38j{onn2hP`IkE7PV7d(E&{FhAkY8TOiCuNn55VXqnXDug@3UNh`9!(LMm z-oGgJy6KG%-n|(1y7Be*f7fyLy5qgyT?~8O{?2bMhQ0p$<3C&kdwuJ}f4dm=`t#p> z-ck1Y{=a;65$yHXf7qE}uNn55VXv9oYbN*VBz`lwSA~NbGP&1G?lqHp<#cg|y=K^J zhQ0pxvsbPiHcD%EmFjE%hT-nl2B=2`Mm9~tv1bb|qanlV$ zBRQqJ@E#2ADiz7}P-<^m7PDlrI4W|ZIk|AT+C@Wf3lT$Wt$~u8ar8Lxbv_084$zA` zOT<+Wy9=f=Dx^^~ARspq$?$p$vLP#)o1drfx7@6gBYvV?kR`*f}?=6gMNK z?VbCzd-vu>^VkivtFja`4!5W1>rpLz_!brJS!v@vxqP+&{wa;Z2)N!sB$;5igivmT z$BXieQva^fQdP@ZJk-1_ z;D#x_Dz_i}04Z?@%EgtuA_rplsvmC85DQ@xP+!LtqMMh;*PG{O5MLW5o}gU`hFH$C z5T0C|B#u8ADNIB5ITb}%p}6kZPBg(^S!@swQHcGg|0Dd}#F~jAaX1l@1(#uXv?&^c zo45c9unUr82}Yg>o;@;EWn#dMl*e}|0|_llsh=mw16g@q_8R_3YreZUUmT4QN-)VS zM&)MZH3$YUXb1^vSG1G|#O33d6D;j;wG}kPB}!VJ#`4QT?TYh43ZOUdf`t-+&{77= z+{F)TY*D%|^(U%&;ZyRvpi_w3%&X^+|)+Ov1x-o5+0`;7hOzWua6dSL&7 ztON2AgBU!GS-T@>x?Alw_RwD1leIUxZ|^>1Uu6HjefzWaM-J@Ye}K@Q-K=(*yLZ8$ z-L!{xXYGmX-Lq$}vDe(Umjp!n%>DalpLahUF!vu&07ZCI)vnO)UAyt)*&W)m8>04j zpqI%|AolL_?2GQ-x8D%Wj05H_ahl1v$nIT?YGnN&3O}?rxChoiL(3o~FwcQ78-uYj zSlBKIQ@hPQyJ@#)PiQX?d-kfmmxvtiey=nx-Icv7igsS{lwxD{?ooS;y`A@Y_6Ol4 z{-X|fO0#!m@9w-OTP*bKqx}X9WG51Showb)D2fu?V(#AK-DB?EWBV~{U)KKY1E{KG zM`Z1y-6k7kwex7#Sx(5Z9N?7|U+sbcyLPjyL$H1Kp1qfd21@&wJ(jiKK+k{Vo_DQy zfzN0`)hEtmcxv&&MVv81#pVoDqfMSPal-gah0W5cxbD&2oQF zS+PDZ#o2|=K8wOnDK=fW0EERtPhs@fF=IwC`te6KynkWed_niPR|ad*cYY`MrCR!e z`SYdj6IF*(CQpL!v13M$9Qh=q3m%sov-m!}aX87n_sF>I+QqfGTqJ2#RnDF@YX)i- zr%ZIDV?#KBg-MjO{0v9~XXLPga3s72UDL-ZM#0gM-G=$@tAqeM7 zzWIvfej**han?tvr}Xn(TJ&NrV?=r3EYwR*6~m$Vs8KNdvEh$AG88cvu9+(m@cs7+ z_#QlLU+pSo$%|MryA36PxG2h!JZc2c*0l!@KR6ho`{u*#JyL^^X0vQD zTZT-_egbAgafC4t&W_Ik9CqJx&%O8FCvT`dG1;i}6xrjQA!Dnd`9nYtl3^1xWC!oP z@4g-)ey^@*W|u>Cb{a-(^k~>^$u8#8_u)2-T5cZ}4tVt5`*6stD)qtpyV&P*rDha2 zhN0|n{BgmLzy&=b{$W;LcaSF?bibGGHMs+mC!pH3o2M&WH^Y`cX0-M@yRHQC`DW~a zeDwjwy~lm9Uc^&R^M1kanKu_jp`yOb7--M)RZADwL3$Ami^_xd?z_i=hj9;JFRU3@ za;WqRp76H(@nhJ2T*LdQTzO&1$6a%-9`5bYqi4_id-duq8qmzISiJSH+1iWmfo9`b zJZ`U-!N=GE4e7mlGkhnUD6%I_nmAs|hVNiIVs(~{8!ZtT^yTAu0lyFG!+gl5UXk8? z`e+X%2_G(3BWl(8)(D34)N{kbz5C?k$RxtJP1-pD^9E1L2nZjJm4b!qfwP6S@{QHdjBF@I*WJVb8_&ezLk7Mxv}CONZCMIb7?&G;bBGQ_4j*FNIouws4`#(#d?M}n z-;^Cm76w>B!6EOVN``5O7KM{Q-&|5gW#*9t4~Q>}{1D^;nRQ4VuCcuE0c(ik3ZE`h z3?r8#j683CP!Mce^zfm>#^G8RhC?UCFi2w*9dU!$837Gq6^+9_?QJdRttDkfS>#9= z7rlv2O?C|z_*jz#D}YB>8vOqWeb@+LI9u=+Z!a&)DznPC?4d{14I?N+rjq-{zZ&~z68Ri1#jI4>_vQNlw|~JCed6bBOMO#DYNgb;MS2NG1INi zRe`5(Hl_nkF?s)&OAnWQuMD+_dHI&9sGuzH_U(kOLO3LK+2OM9Lt-HITT7a^Z?xYx z;)JF{hYx@7{<1ResBw9ILQ4a}qW$_}GAVvg=y3G?r!eiKXx_Oj^85z7TrgkDjr8l= z554-uQHP&9Tvi6iC1s6s*R6B(^Atq;7WDP>4Wn&8%(v{rVf1#mEW6B{gEN11`62rA z6h!(K6!bOvhPYuNy5$*WxhPV0_%Oz-aW>A!Tq8As4A311(Y~;-AC?0>V9=b^$S#Y{ z=EF3@tGOC53pr`sJfNGi07EYZoy+{6Jj(~au3m+fUYV z8G+EMFsd8vIqu*ZEir{fG9|)r`=P_$!``ycN6)Y%W0gk)d2KO8y_MuLP zRatm58m{uJGGEU3V3aNIaI>H^V+#V>^JRGMRaxX&=~ulReTgf1vu#MdqY8S*(8?^$ zI*iAB83248G|u@}b1gDaJd7b7dNxMiajv$3Er#u&rauh3IiQ&d>gpC3|QEAclEUbJlb%Le*a zFB&W9K-Sm6gI^y!`1RKZjf2_WL=W+TZ1P{(dZ;fg3m+*vaNukD+C1>J@iiTce2w<_ zpKlHx{6>9a9>QP7p%DA((BbUE-!F?C_?laX51>o@ulHc|n}gqYz6qgc{OEx;WY+(n zOdW`#vGH{XU5WFD+|20$qS%5fP2y{-MahZ|Iv#@Mwj^ zOkU3qV@WY!VAjD9nur!yLB4@~yp&{#4tS&wm|vq#lGqRI2>5}xw=ByUcsp@(k2JrO z*Uis&*4nvo0d*^Swc5jBQK=4S9d%6CO%lA-1M?IoW zB~}jQNJPM&Utq~N$J2su!$xT$mt~?vP-+BePDFPgMR2Nzd4DgXR}|GqT;hzWhO*y& z2At>@B%najLO+)ma%H2)=K4E>k*XKMCoqodz)VrGBBpqN4r-BubLA zL=&-*Y2x)pslAgDv^dcrfCmi3v#$;Z;C|K}&TACMOI;|`SmUC zqkc_zs{0QZIB*cUkm!jHM|2;jV|{R8?Gz~@gZ^9vN2ruw>#46SKdiza8sz1L4oaXv zlNLq*$7g^Mt}~<=0dz1$*YKU=B0R1DXAO7+*?uTMgUrF!LybAgT~s?7$Z?ja)#MsL z>fI=naB&Kt2XsJ#%?HF45oi(9p$UIf

    eejtL$Fr=0*x=|89{j+A586+m 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