From a8af99745d188b689de3d0c974901fcacb229f34 Mon Sep 17 00:00:00 2001
From: Xiaokang Fu <1072534112@qq.com>
Date: Fri, 20 Oct 2023 17:46:20 -0400
Subject: [PATCH 01/24] change the descriptions
---
routing_app.ipynb | 67 ++++++++++++++++++++---------------------------
1 file changed, 29 insertions(+), 38 deletions(-)
diff --git a/routing_app.ipynb b/routing_app.ipynb
index 0f450c8..913fabf 100644
--- a/routing_app.ipynb
+++ b/routing_app.ipynb
@@ -161,9 +161,9 @@
" orgin_lat = pn.widgets.Select(name=\"Origin Latitude\", value=\"ZIP_lat\", options=list(df.columns) )\n",
" dest_lon = pn.widgets.Select(name=\"Destination Longitude\", value=\"AHA_ID_lon\", options=list(df.columns))\n",
" dest_lat = pn.widgets.Select(name=\"Destination Latitude\", value=\"AHA_ID_lat\", options=list(df.columns))\n",
- " od_col_slect_view = pn.Column(\"## 2. Select the columns for origin and destination\", pn.Row(orgin_lon, orgin_lat, dest_lon, dest_lat))\n",
+ " od_col_slect_view = pn.Column(\"## 2. Select the columns for origin and destination points\", pn.Row(orgin_lon, orgin_lat, dest_lon, dest_lat))\n",
"\n",
- " return pn.Column(\"## Preview of your data (first 5 rows, there are %d rows in total)\"%df.shape[0],pn.pane.DataFrame(df.head(5)),\n",
+ " return pn.Column(\"Preview of the uploaded data (first 3 rows, there are %d rows in total)\"%df.shape[0],pn.pane.DataFrame(df.head(3)),\n",
" # deck_gl,\n",
" od_col_slect_view\n",
" )\n",
@@ -174,7 +174,7 @@
"\n",
"# pn.Column(file_input, active_load_csv)\n",
"\n",
- "data_upload_view = pn.Column(\"## 1. Select data need to be calculated\",file_input,active_load_csv)\n",
+ "data_upload_view = pn.Column(\"## 1. Select the data that need to be calculated\",file_input,active_load_csv)\n",
"data_upload_view"
]
},
@@ -220,7 +220,7 @@
" df.loc[k, 'distance (m)'] = route.get_distance()\n",
" df.loc[k, 'duration (s)'] = route.get_duration()\n",
" \n",
- " final_table = pn.pane.DataFrame(df.head(5), \n",
+ " final_table = pn.pane.DataFrame(df.head(3), \n",
" # sizing_mode='stretch_width'\n",
" )\n",
" \n",
@@ -269,16 +269,16 @@
" # sizing_mode='stretch_width'\n",
" )\n",
" results_desc = pn.pane.Markdown(\"\"\"\n",
- " ## 3. Downlaod result\n",
+ " ## 3. Downlaod the result\n",
" \n",
- " The map can only show 10000 rows at most\n",
+ " The arc map of the source and destination points. Source location in red, destination location in green. The map can only show 10000 rows at most.\n",
" \"\"\")\n",
- " table_download_view = pn.Column(results_desc,deck_gl,\"The table view only show the first 5 rows\",final_table,download_view)\n",
+ " table_download_view = pn.Column(results_desc,deck_gl,\"Preview of the result. It only show the first 3 rows at most.\",final_table,download_view)\n",
" \n",
" yield table_download_view\n",
"\n",
"\n",
- "run = pn.widgets.Button(name=\"Press to run calculation\")\n",
+ "run = pn.widgets.Button(name=\"Press to run the calculation\")\n",
"\n",
"run_and_download = pn.Column(run, tqdm, pn.bind(calculate_distance, run))\n",
"\n",
@@ -350,45 +350,35 @@
],
"source": [
"intro = pn.pane.Markdown(\"\"\"\n",
- "# Routing Calculator\n",
- "This app is used to calculate the distance and duration between two points. This app is developed by [Xiaokang Fu](https://gis.harvard.edu/people/xiaokang-fu) and [Devika Kakkar](https://gis.harvard.edu/people/devika-kakkar). Please contact [Devika Kakkar](mailto:kakkar@fas.harvard.edu) for any questions. \n",
+ " \n",
+ "This app calculates distance and duration between two points using a `CSV` input with longitude and latitude columns for both start and end points. See the sample data below or download the [sample CSV](https://raw.githubusercontent.com/spatial-data-lab/data/main/sample_3.csv) ( the [sample CSV](https://raw.githubusercontent.com/spatial-data-lab/data/main/sample_3.csv) includes comparison columns like the results from Google, which are not required). Ensure you select the right columns for origin and destination in the app. The output is a CSV with added `distance (m)` and `duration (s)` columns.\n",
"\n",
- "Your data should be a `CSV` file and have at least longitude and latitude columns for both origin and destination. Look at the sample data below,\n",
- " \n",
"| AHA_ID_lon | AHA_ID_lat | ZIP_lon | ZIP_lat |\n",
"|--------------------|-------------|--------------------|--------------|\n",
"| -73.91651806999998 | 42.81997773 | -72.605400453 | 42.376239033 |\n",
"| -72.68278784 | 41.75384063 | -72.967189321 | 42.293923206 |\n",
- " \n",
- "You can also download the sample csv file [here](https://raw.githubusercontent.com/spatial-data-lab/data/main/sample_3.csv) (notice that this example has some addtional columns like the results from Google for comparasion) by click on the link and then `Ctrl+S` on Windows or `Cmd+S` on Mac.\n",
- " \n",
- "The column names can be different, but you need to select the correct columns for origin and destination in the app.\n",
- " \n",
- "The output will be a `CSV` file with two additional columns, `distance (m)` and `duration (s)` ,for distance in meters and duration in seconds.\n",
"\n",
- "This app is using [OSRM](http://project-osrm.org/) as the routing engine. We use Multi-Level Dijkstra (MLD) algorithm to find the route.\n",
- "\n",
- "For comparison with other routing engines, like Google Maps, Bing Maps, ESRI Routing service etc., please check [our paper](https://isprs-archives.copernicus.org/articles/XLVIII-4-W7-2023/53/2023/) on FOSS4G 2023.\n",
- " \n",
- "Please cite our paper if you use this app for your research.\n",
+ "\"\"\", \n",
+ "sizing_mode='stretch_width'\n",
+ ")\n",
+ "intro"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "contribute = pn.pane.Markdown(\"\"\"\n",
+ "Please cite [our paper](https://isprs-archives.copernicus.org/articles/XLVIII-4-W7-2023/53/2023/) if you use this app for your research. This app is built with [OSRM](http://project-osrm.org/), [Panel](https://panel.holoviz.org/), [Georouting](https://github.com/wybert/georouting) and [Pydeck.gl](https://pydeck.gl/). It hosted in [New England Research Cloud (NERC)](https://nerc.mghpcc.org/). The road network data is from [OpenStreetMap](https://www.openstreetmap.org/). We use Multi-Level Dijkstra (MLD) algorithm to find the route. For comparison with other routing engines, like Google Maps, Bing Maps, ESRI Routing service etc., for more detail please check [our paper](https://isprs-archives.copernicus.org/articles/XLVIII-4-W7-2023/53/2023/) on FOSS4G 2023. \n",
"\n",
- "```bibtex\n",
- "@Article{isprs-archives-XLVIII-4-W7-2023-53-2023,\n",
- "AUTHOR = {Fu, X. and Kakkar, D. and Chen, J. and Moynihan, K. M. and Hegland, T. A. and Blossom, J.},\n",
- "TITLE = {A COMPARATIVE STUDY OF METHODS FOR DRIVE TIME ESTIMATION ON GEOSPATIAL BIG DATA: A CASE STUDY IN USA},\n",
- "JOURNAL = {The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences},\n",
- "VOLUME = {XLVIII-4/W7-2023},\n",
- "YEAR = {2023},\n",
- "PAGES = {53--60},\n",
- "URL = {https://isprs-archives.copernicus.org/articles/XLVIII-4-W7-2023/53/2023/},\n",
- "DOI = {10.5194/isprs-archives-XLVIII-4-W7-2023-53-2023}\n",
- "}\n",
- "``` \n",
+ "This app is developed by [Xiaokang Fu](https://gis.harvard.edu/people/xiaokang-fu) and [Devika Kakkar](https://gis.harvard.edu/people/devika-kakkar). Please contact [Devika Kakkar](mailto:kakkar@fas.harvard.edu) for any questions. \n",
"\n",
"\"\"\", \n",
"sizing_mode='stretch_width'\n",
")\n",
- "intro"
+ "contribute"
]
},
{
@@ -417,7 +407,8 @@
"app = pn.Column(\n",
" intro,\n",
" data_upload_view,\n",
- " run_and_download\n",
+ " run_and_download,\n",
+ " contribute\n",
" )\n",
"app"
]
@@ -669,7 +660,7 @@
"source": [
"# Instantiate the template with widgets displayed in the sidebar\n",
"template = pn.template.FastListTemplate(\n",
- " title='Routing Calculator',\n",
+ " title='Rapid Route',\n",
" logo='https://dssg.fas.harvard.edu/wp-content/uploads/2017/12/CGA_logo_globe_400x400.jpg',\n",
" favicon = 'https://dssg.fas.harvard.edu/wp-content/uploads/2017/12/CGA_logo_globe_400x400.jpg',\n",
" header_background = '#212121',\n",
From 01a2c1c149c7882aa96b26b3d6af9cb7decd30fe Mon Sep 17 00:00:00 2001
From: Xiaokang Fu <1072534112@qq.com>
Date: Sat, 21 Oct 2023 01:44:06 -0400
Subject: [PATCH 02/24] change theme
---
routing_app.ipynb | 44 ++++++------
routing_app.py | 180 ++++++++++++++++++++++++++++++++++++++++++++++
sample_3.csv | 8 +--
3 files changed, 204 insertions(+), 28 deletions(-)
create mode 100644 routing_app.py
diff --git a/routing_app.ipynb b/routing_app.ipynb
index 913fabf..3d6d1c8 100644
--- a/routing_app.ipynb
+++ b/routing_app.ipynb
@@ -156,17 +156,17 @@
" if data is not None:\n",
" global df\n",
" df = pd.read_csv(io.BytesIO(data))\n",
- " global orgin_lon, orgin_lat, dest_lon, dest_lat\n",
- " orgin_lon = pn.widgets.Select(name=\"Origin Lontitue\", value=\"ZIP_lon\", options=list(df.columns))\n",
- " orgin_lat = pn.widgets.Select(name=\"Origin Latitude\", value=\"ZIP_lat\", options=list(df.columns) )\n",
- " dest_lon = pn.widgets.Select(name=\"Destination Longitude\", value=\"AHA_ID_lon\", options=list(df.columns))\n",
- " dest_lat = pn.widgets.Select(name=\"Destination Latitude\", value=\"AHA_ID_lat\", options=list(df.columns))\n",
- " od_col_slect_view = pn.Column(\"## 2. Select the columns for origin and destination points\", pn.Row(orgin_lon, orgin_lat, dest_lon, dest_lat))\n",
+ " # global orgin_lon, orgin_lat, dest_lon, dest_lat\n",
+ " # orgin_lon = pn.widgets.Select(name=\"Origin Lontitue\", value=\"ZIP_lon\", options=list(df.columns))\n",
+ " # orgin_lat = pn.widgets.Select(name=\"Origin Latitude\", value=\"ZIP_lat\", options=list(df.columns) )\n",
+ " # dest_lon = pn.widgets.Select(name=\"Destination Longitude\", value=\"AHA_ID_lon\", options=list(df.columns))\n",
+ " # dest_lat = pn.widgets.Select(name=\"Destination Latitude\", value=\"AHA_ID_lat\", options=list(df.columns))\n",
+ " # od_col_slect_view = pn.Column(\"## 2. Select the columns for origin and destination points\", pn.Row(orgin_lon, orgin_lat, dest_lon, dest_lat))\n",
"\n",
- " return pn.Column(\"Preview of the uploaded data (first 3 rows, there are %d rows in total)\"%df.shape[0],pn.pane.DataFrame(df.head(3)),\n",
+ " return pn.Column(\"There are %d od pairs that need to be calculated\"%df.shape[0])\n",
" # deck_gl,\n",
- " od_col_slect_view\n",
- " )\n",
+ " # od_col_slect_view\n",
+ " # )\n",
"\n",
"\n",
"active_load_csv = pn.bind(load_csv, file_input.param.value)\n",
@@ -205,7 +205,7 @@
"tqdm = Tqdm()\n",
"# create a router object \n",
"router = OSRMRouter(mode=\"driving\",\n",
- " base_url=\"http://172.30.232.152:5000\"\n",
+ " # base_url=\"http://172.30.232.152:5000\"\n",
" )\n",
"\n",
"def calculate_distance(run):\n",
@@ -214,8 +214,8 @@
" return\n",
" # import gevent\n",
" for k,v in tqdm(df.iterrows(), total=df.shape[0]):\n",
- " origin = ( v[orgin_lat.value],v[orgin_lon.value])\n",
- " destination = ( v[dest_lat.value],v[dest_lon.value])\n",
+ " origin = ( v[\"origin_lat\"],v[\"origin_lon\"])\n",
+ " destination = ( v[\"dest_lat\"],v[\"dest_lon\"])\n",
" route = router.get_route(origin, destination)\n",
" df.loc[k, 'distance (m)'] = route.get_distance()\n",
" df.loc[k, 'duration (s)'] = route.get_duration()\n",
@@ -232,8 +232,8 @@
" get_width=\"2\",\n",
" # set arc width\n",
"\n",
- " get_source_position=[orgin_lon.value, orgin_lat.value],\n",
- " get_target_position=[dest_lon.value, dest_lat.value],\n",
+ " get_source_position=[\"origin_lon\", \"origin_lat\"],\n",
+ " get_target_position=[\"dest_lon\", \"dest_lat\"],\n",
" get_tilt=15,\n",
" get_source_color=RED_RGB,\n",
" get_target_color=GREEN_RGB,\n",
@@ -241,8 +241,8 @@
" auto_highlight=True,\n",
" )\n",
" import numpy as np\n",
- " v1 = df[[orgin_lon.value, orgin_lat.value]].values\n",
- " v2 = df[[dest_lon.value, dest_lat.value]].values\n",
+ " v1 = df[[\"origin_lon\", \"origin_lat\"]].values\n",
+ " v2 = df[[\"dest_lon\", \"dest_lat\"]].values\n",
" v = np.concatenate([v1, v2])\n",
" v_df = pd.DataFrame(v, columns=[\"lon\", \"lat\"])\n",
" data_view = pdk.data_utils.compute_view(v_df[[\"lon\", \"lat\"]])\n",
@@ -271,9 +271,8 @@
" results_desc = pn.pane.Markdown(\"\"\"\n",
" ## 3. Downlaod the result\n",
" \n",
- " The arc map of the source and destination points. Source location in red, destination location in green. The map can only show 10000 rows at most.\n",
" \"\"\")\n",
- " table_download_view = pn.Column(results_desc,deck_gl,\"Preview of the result. It only show the first 3 rows at most.\",final_table,download_view)\n",
+ " table_download_view = pn.Column(results_desc,\"Preview of the result. It only show the first 3 rows at most.\",final_table,download_view)\n",
" \n",
" yield table_download_view\n",
"\n",
@@ -353,10 +352,6 @@
" \n",
"This app calculates distance and duration between two points using a `CSV` input with longitude and latitude columns for both start and end points. See the sample data below or download the [sample CSV](https://raw.githubusercontent.com/spatial-data-lab/data/main/sample_3.csv) ( the [sample CSV](https://raw.githubusercontent.com/spatial-data-lab/data/main/sample_3.csv) includes comparison columns like the results from Google, which are not required). Ensure you select the right columns for origin and destination in the app. The output is a CSV with added `distance (m)` and `duration (s)` columns.\n",
"\n",
- "| AHA_ID_lon | AHA_ID_lat | ZIP_lon | ZIP_lat |\n",
- "|--------------------|-------------|--------------------|--------------|\n",
- "| -73.91651806999998 | 42.81997773 | -72.605400453 | 42.376239033 |\n",
- "| -72.68278784 | 41.75384063 | -72.967189321 | 42.293923206 |\n",
"\n",
"\"\"\", \n",
"sizing_mode='stretch_width'\n",
@@ -665,13 +660,14 @@
" favicon = 'https://dssg.fas.harvard.edu/wp-content/uploads/2017/12/CGA_logo_globe_400x400.jpg',\n",
" header_background = '#212121',\n",
" header_color = '#2F6DAA',\n",
+ " sidebar=[app],\n",
")\n",
"\n",
"# set relative sizing of the main area and sidebar\n",
"\n",
"# Append a layout to the main area, to demonstrate the list-like API\n",
- "template.main.append(app)\n",
- "template.main.append(app)\n",
+ "# template.main.append(app)\n",
+ "# template.main.append(app)\n",
"template.servable()"
]
}
diff --git a/routing_app.py b/routing_app.py
new file mode 100644
index 0000000..8429cdf
--- /dev/null
+++ b/routing_app.py
@@ -0,0 +1,180 @@
+import panel as pn
+import pandas as pd
+import numpy as np
+import json
+
+pn.extension('deckgl')
+
+
+# pn.extension()
+# pn.extension('deckgl')
+import pydeck as pdk
+file_input = pn.widgets.FileInput(accept='.csv', name='Upload CSV')
+GREEN_RGB = [0, 255, 0, 90]
+RED_RGB = [240, 100, 0, 90]
+MAPBOX_KEY = "pk.eyJ1IjoicGFuZWxvcmciLCJhIjoiY2s1enA3ejhyMWhmZjNobjM1NXhtbWRrMyJ9.B_frQsAVepGIe-HiOJeqvQ"
+# geoview
+arc_layer = pdk.Layer(
+ "ArcLayer",
+ # data=df,
+ # get_width="S000 * 60",
+ get_width="2",
+ # set arc width
+
+ # get_source_position=["origin_lon", "origin_lat"],
+ # get_target_position=["dest_lon", "dest_lat"],
+ get_tilt=15,
+ get_source_color=RED_RGB,
+ get_target_color=GREEN_RGB,
+ pickable=True,
+ auto_highlight=True,
+ )
+r = pdk.Deck(arc_layer)
+json_spec = json.loads(r.to_json())
+deck_gl = pn.pane.DeckGL(json_spec, mapbox_api_key=MAPBOX_KEY,
+ sizing_mode='stretch_width',
+ height=550
+ )
+
+def load_csv(data):
+ import io
+ if data is not None:
+ global df
+ df = pd.read_csv(io.BytesIO(data))
+ return pn.Column("There are %d od pairs that need to be calculated"%df.shape[0])
+
+active_load_csv = pn.bind(load_csv, file_input.param.value)
+sel_data_desc = pn.pane.Markdown("""## 1. Upload the CSV file
+The input CSV should have four columns named `origin_lon`, `origin_lat`, `dest_lon`, `dest_lat` for origin and destination longitude and latitude respectively, a sample can be found [here](https://raw.githubusercontent.com/spatial-data-lab/data/main/sample_3.csv).
+ """)
+data_upload_view = pn.Column(sel_data_desc,file_input,active_load_csv)
+
+
+
+from georouting.routers import OSRMRouter
+from panel.widgets import Tqdm
+tqdm = Tqdm(width=300)
+# create a router object
+router = OSRMRouter(mode="driving",
+ # base_url="http://172.30.232.152:5000"
+ )
+
+def calculate_distance(run):
+ if not run:
+ yield "Calculation did not finish yet :("
+ return
+ # import gevent
+ for k,v in tqdm(df.iterrows(), total=df.shape[0]):
+ origin = ( v["origin_lat"],v["origin_lon"])
+ destination = ( v["dest_lat"],v["dest_lon"])
+ route = router.get_route(origin, destination)
+ df.loc[k, 'distance (m)'] = route.get_distance()
+ df.loc[k, 'duration (s)'] = route.get_duration()
+
+ final_table = pn.pane.DataFrame(df.head(3),
+ # sizing_mode='stretch_width'
+ )
+
+ import numpy as np
+ v1 = df[["origin_lon", "origin_lat"]].values
+ v2 = df[["dest_lon", "dest_lat"]].values
+ v = np.concatenate([v1, v2])
+ v_df = pd.DataFrame(v, columns=["lon", "lat"])
+ data_view = pdk.data_utils.compute_view(v_df[["lon", "lat"]])
+ view_state = pdk.ViewState(
+ longitude=data_view.longitude, latitude=data_view.latitude, zoom= data_view.zoom, bearing=0, pitch=45
+ )
+ TOOLTIP_TEXT = {"html": "
Source location in red; Destination location in green"}
+ # r = pdk.Deck(arc_layer, initial_view_state=view_state, tooltip=TOOLTIP_TEXT)
+
+
+
+
+
+
+ from io import StringIO
+ sio = StringIO()
+ df.to_csv(sio)
+ sio.seek(0)
+ download_view = pn.widgets.FileDownload(sio, embed=True, filename='results.csv',
+ # sizing_mode='stretch_width'
+ )
+ results_desc = pn.pane.Markdown("""
+ ## 3. Downlaod the result
+
+ """)
+ table_download_view = pn.Column(results_desc,"The output is a CSV with added `distance (m)` and `duration (s)` columns. The table below only show the first 3 rows of the result",final_table,download_view)
+
+ yield table_download_view
+
+
+run = pn.widgets.Button(name="Press here to run the calculation",
+ # button_type='primary'
+ )
+
+run_and_download = pn.Column(run, tqdm, pn.bind(calculate_distance, run))
+
+
+# pn.Column(button,tqdm)
+# table_download_view = pn.bind(table_download, button.param.value)
+# run_and_download = pn.Column(button,tqdm,table_download_view)
+run_and_download
+
+intro = pn.pane.Markdown("""
Gty&O+yitRv zw?_Ay@1l%=C|O5xrCLh&h{Bq(NpQAIM;Y$!eYguq&pV8NzQr9|ySD8&Q?8yat^{5S zY&14-#nQ-(;6)Xi4wGL!ixy>g%WcY08YRlW2K(A77}c!#Rb_?G$Z+jiR6`3u5bviU z*=P(adn;saL%D=-X-B%GHLrq0Z4gjT{Lne-4){4Ui9!0^XYgbVgUOM6LRf8u(6VWL zlYG?benH|yX;M0JXj#f0eM(dAI} z--zgN_Yqp+ZvDSix351U+<~I17_gt|rMc>5;0Wc3WIHxXBQJ=cag_f%KcU_ssF_vJ zS5*I?ooQV-J>5e%<6G|kxwtbm&zREz&yv-6tjujS91U0yMxqSpaWJiBSyZ|f%)oR( z@I@LW_Aj@H;TUIh0_bmtZC3SADakC3Jbb2&TO{O9@P1UcMjhpCru_1;R`#*sNSjh5 z`R=g7 0{oZ%9E(4S&Q*|+-N+~BlKS7a{@E}0wAJxo7JgxIDhPtT z*_-vU9;b)cspqyOLQc;~S|iAPT!`uDo5BMgv{$o%wLwx8#c7;)LzyBaP9m_%igZj+ zEYrsVz&Z^#nH0u#tb*0?My`+kKMax21Zabx(t4(|&i~ncAC>HPReLg!?q$~UF#-%_ z+IOG?E;-3Dx*eo4xt@C 3c4;}U<*x|1VHSuQIaaGLmQ9kP*g5s7=R3hL6Xe3G;Ntvc^0;1zq61~qO z0W+i$iZNFbeROj?9+hZ+pDJL@NnQT#&&e;LTv+Bd&J3ArwXW&`SmV9G%e)3>{jH^y zqO39*{QW5*uJGIL2$#rGKh$zj)<+U0hI4@yCF N;+RLJYQocWBWG*+E+DCM1I5TnaKud@ zKvjM$xZt3C18b+SuAz8_tRRBftOcy_>5zJ1SH2F54HxLUgjSi5mV_2urYOM7h+wyo zj`db)`V=58q>v=+NoJ$onp$z%P|pi5G%p} iEz* z(v~WPo1IFE3;C4AqTu8c1OIJL#4%ugGb7{%t$_mOjSY8csDnY6^Px9zu5@Qz!~VG@ z-~7n7;b7>16uO>Ed>meo6#JO9AZxwt22wDkT` 8lSh;xb1{Es&X-wR<@c#g z@9LT?q8L BtLg-E6zk{4IEk6rul<@7zAKA?!V4s6zth-eqC7jQ#WQ32 z#3|y2K-)ytkN2#mBXxF3nDXG x1POa-&d*O79e1Ieto z!#DUmibfWvNmZwle-_%^BYu0;>|5 u)SBY`ri;_L%|8!g8~0i`j7uJLEq5gx ztft^&w!a5pqghdYB(qi=Uo`EM`@sz7)Z>oNk{H^A1mKqW9a2no;+O#%?}--=iww(2 zF0`f$jdA+54rRM#&?Ffo+2ruHR>YOqH& !Ud$ik22Xl?ID|k*JO`!yRB*c68fmXV)9|p@80g!$XDQw zPOMi3nn}moowT@krQ&nTE2DxqOX a zcU@4nN}P$X#jMedhf#Zn!sUSX-#5WZBEm1L>At#x142jVELz;}7?V_3)q}I#Ia*Fn z#t-%$=RM|a_GFXN &M+~VSGau)1a6Rhu$AlS1HTE&;jFyH^@ z)UFX%9N%0C_(!>LVfrRP;UNiCNe`a_SK;IVNGGn{?R)skp8bhh>LP$3y;;;AsH1d} z!rkhW+ sOSCc@O7+umNY0-M;Rhg z45VG09aSx7ZQzLJWe!f4yUwpvX_sFJ<-w8qv`N~Xy WMZ-vG{y}wq9i_ zwSW(=&xGg?Q!vHOm^{Z4lX+8Bs4I@HEN?o8eOFTDcsfam%kK~N2SK+X*Puo$fY14D z_|{z|Tk@OVALcVU-1_gRMF88aW~$C84MCh^iWl2R1W;VrK63lKl5)6a>Er~w#q=7s zYY~F;jdi$8?aP#VOml})>e}1BH4qk3poPqe5RfV04msxvdn+l-rF_9iOnH3})8oa1 zaP-IYI#MZMF*@fPjEO7t8+knw*QB403S{sK|61Jx93Q>^4lwCJjo$p2OkwD#rK9>F zG-M@p$ZpniWo%DbW!v=x$pm>45tja+-*&ddY{>Ckx@mIL-aQGk|5xmMh!XDSXUZVd zHipa70eRE^8FCVw%Qj3vb^nlUThO@9G_~N)xJT3aENY`ogbAery5b6eD*2w m`P$b$FP{wk~Pwn}0?&&W_rVeI2LF$rBJAb_WpVdg6sfWG(pH|Z#Pc{NxGE~Rl zn_kmes8Ch1Z2qt?_}{5JMpv>H*bj|Id$s$=drw!kg =xq%5*if=A=VQ-eADDrP zyCF8(A4)Xp&g!hePJpe7Qc4G3EACd-_dz0Cs_~%EyeSYXm|^`z4xb!qhQoHG-k~(7 zr>(1bTSe}MI;DuB-?(iSk@oAzNw;bH%R$Rc$zR_OigPS0P;*E;DbuA+^}~lt-??7u z(!ATQJyaJZ&J!2v=W+r`#n`=0D8(9ro5&4h{ySZ)@Bho`M$g3n{;>dlP@C|<6U=ZR zu33T6&?e9_ivJh)^F~=&ZT|C=+rp2++)XGmmZ|a}mptT66j9`Q%bgEPKxI#_RJMio z0RDl+CK EpLJmO@R>Gh%DRkwHfx%hlRi4+w91b)L0`+i#fA^~lKg Kv-{F;+ZeOiqxgNByQ8Op8*LmeXOMbL59NE3R8C!`7N@Ym2C!%ZG znF@s(!sY2nFqm14SYzblt1Sa!_{A0V2g4y)r{KdPA{n>mGr#&<5UpLwC3_=Yme=8c z;stL|P|*HzdDY7L;zBqAhfzmG5Ua#y{RCyVgV~LO+TlkZCP ~2* ^mb6Av=O}Z~{YkVd9G#&&QN<2a0%8lLc z_cAOalH>bZu9*{~3`iaICN#+5 hgYw8K_ls zM<0G&_bNDbI#?3{-V-?=TZ*Q|Y|9V2=R%PEc_kNI#r_XEuKa&1(%${!wzHq)5WZAX4@zg1JrD?x85 zq*gTjP12(EAqzBl5c^3=x-EWJ3A6fmdSy``mT-kT_5bb(@XbY_*7zruq=|Kpjc;WoE8K|uzz!yyh0w>UagL3iUIwIzal`X)1yinwg2XAN;0h-=nWCwe~ za|GUO2sS&*8=xTcH1fr<43ytTAmu!vwW@s8DDwhxLYYl`^W* *yHPo4G)Wpn^V1OGlec&0CNSc8e%T%?pcnsF_%w4)7-*KT=)B# znYQ~b)+k=uNk*TS#B8_rj+7D_YbXCeqjq+{i;Dq1Jwm}!M?j4Wi e zMG9enq;Lul8IKxAz(?kz6;FRN3UT>gr $`^e>Rd4j!<7iJ%hjPC&X{Ho`<0&1m O$ znWQvZKyT4jJ`zP>q!F1W7Y~oV8C=!oR>{CX#wBf`N|-iP+l t7aQ zlP5uu;w#h)&Yd!6M1tG=)imyz$w*`tCHx}esbs$gNeC@e=luKtgA!p8e$c{rF8&VS z% cUM dqodD_?UBh&9;P-tN&E!PoW~Cur6{uk-jD>kpZw<+ zw(cVoY1;N-1hz|eOnsbOfqJ-I**_-v6wa7!d%IBoxeJ74UsQ&`KWm|arY%#L8xt+= z8yfHO{3`h^<@T)uLYrp-r_WYO%yDeFe?2ngKJhWVb~rn>5ad#MPyw(tWl1E0s(Fav z;$Nhf6aaTgre9mF&p7krz~$4Y%dL{FQFnahI#&C}_y4$gL34f 8uK)VaVZ$Z-jXBOZi5ov?)57=!hypyGQnmO471E}C4O(vY-C_^LL0MFo_ zr-5j0WtE2!dgc+4!UQ?xjt~LV$t~uQ5@PvN4Ux6SI^t**#)_EZKAKl;V4G+`0y1Fv zQP@A7-5UKX<8O!nF&u?5y1bC^Y~Es>LGIDo8Lh7Be_PUZDPjtXtT`ajJ&a{<&sa2| zZBF9~^Z$DV(k+wL&iPi>)AQ$9bMM#H{beLVMJHHHI@&)J){so=wN5=A<&?cC$z tfmfE&$Ibe;|hFEPH0X zZ`Y>llqnG9x#is~RgDfxq{B~mV>6tr32tYgLxA_@V-W2@1eYs;VpJ3G{Rz$njUfPg za+>#a_}8`A6DGh{tPterdiRGarAH tDxLgDr$N2l+8?PLyaK!Cg4&(%DRly9ep60{W2e{xRbNDt52@mvC zj#o$Jy}xl4A9 5**&Og!O1o>G>(ob z5qlB(VHH%m+P62aycIHvc)l2k$iJrKJEY%NNF>MkMS5imhAhTzHx%qwaY*@bHWYkN zGrw@shf{#99lqg?6|quCLLD9)tg-3K4XM^4E+#9OJ56=9JzS-c?^2MRbEFacx<2wo zz)*3=#Jzjigwv@Q$HCQCu%hqB*u46L4z5AhrQl7JzX`Bn(XromV>m|Vb7Gw{rEXcy z6jIsYSl2ic@HsuOTcqcA5v^`bA*Jg%oFFcIq6R*Y(1F3H&*RI+Ldh@7$6C|`z#Bc6 zFuc}r>(u?|bN^Je$|_){;gH-D$}lF(!GLQbWTU%x+Fr-864W4-p9=Tk{>trvZAA1X zDGjzsR e?0G hx*D&_efbNvq2k}zuHdqRAli0U{fT2No7|nz7nz^7>fSj~$F=a; zrA0k06L>&3GieODIBPw;+}14mEcJ=07Y{@DS `Z0OlMt4?}VOuA?6V+*ogeO}p0HhYt{N45cANFr=I z1iPO6kJuK{mA2uR%DO)0`nS;u!|bVmKJ26C_>_*@9hL8+eghk{vrB2+-eB{8#n_L> zp~P)wX#y4M2EfZNC^C@6Hj($IIc@=>PiOT%K)TOE9JS2XayY_Y3?XW GE3hJfI z^ZdN!jQRO3ohP@ipu91b9P2h!p(;2XfqPG#0r8(#dBH?d+~tYUI)5Ayz@M7op5t^q z;Gm23X7H)F!Z|uJ;II#QlMy#G^niudwm #tL|F92dCGfe#(;f$1hK{OI`WNU~$pfC~FZ2xrV{-2IawX70j&sdInz>eBmaZ?Ee`$y<>0 z-0QYmOZO?>C>MMflymrTkTQdO<7{o(s*;~fK*M;a;i_j=HqUn)4^li3Y5#RIAEy#} zkf Ug1DA-T-xj(Lsca`^vZ!4%I(-Pug_4&Tt-1 zGXDjA4!S%Hv}hoo=E(taFY1g}VGNa77cH*#f3t4~U{9vAXz{+oN(rrs`+)Oc=4)oL zbce|@Q(MDJ&2l)*Z-9#!Gwzp5e8}-W8=421j!t$9uS~8FouN#BB1tAy|C#ac-@o$v zD5A^`+hN7Cm&+8JE^ZzU$1#(}+`7&;k{)D<7Xe+8!mCFvZf?pFIVuuvwo@-fGJm~s zw%7`%jm$bpQHi>Cp|RiH0v_GFH66}|XM0*(3MB>29UP4CC9eF+TYMRezchC-W3S_u z`bM=LCxwnQ*kafIORF^uH^oB;02-U22%CNyIBS>DrC%3n+VZb4n`ii(&`gaX5^Mxs z`2gyCaG`dfcJ*~kn9U; ^dZ9O<-0#c8L zVu}OhPYM~IF5%zxuc{{&%{s{LNWEHmg7WF~V{lMSmQI!Dn^ayMK^%*uK}W2QYy2*> zkD1*KyzdzS5Xb&KdENa7j|glCYL|z>nt!s1yzkZAHF$uCb9%SWcqG;!SN$ j~ zAR_48zgA(!DZ|>k4aD75_*yITo QJ{LQcuF||u|`VyD-5Og$#A7cSrIcA)p;uKO|!Tk z6f{OLRQKAXx->rzEf$ufmmzoz$O+w1#3{zAXU(Zzl?66?YI@QAk5Q@5-v39WP=>Ws z8@?}yGU+09CJ^(l%YLy_|DTv)OqGLotb12WSA877e?>fVFh954SdteLdiFaIy$);o z;QVy|4#Y^2KfSxPb67;BrG!XlYPF`UJoaLlH9_FJ#Kp)X-4Vg9hRwUZ)z{AoS}_iZ zN-@)jVCsQI%a|+tagWqlUO{_4%0Km2m3Tbt141Z#-a+o{<-%s|y*ON_zv8ANJ=_uy zcCkxsMx{auf$EA0xGkJv)gxHyy;2diqpGHMR4?o8+@ZExH~b##{?IsG HpKtp9arFBV)m!5i?WiafQQozG zPC-QRQgcnEcYL^P7p(N`NAh{kihf7`8v2%40#j2!1))UP>MQ P+7bfz&3w*}f ztb^c@F7IO*L+|E&up&k-Az$BKj{KK6BdQ1Tw4wbhB$50Vmk7MKzfERlQAeOQY-IM6 zq7%7rE6?NPlfIS$@vnJWptA^67S=cra(8_&`&Bf7dL`*!@36mS5bDU8WWNg%h#{BZ z)4i{GO8YMIwH15#qmH3_9)05cWbM5!_Rs`46-JW+72vn5OSyWtrtVvuWat|I@26+; z1a$Y# ?>Ir;7-4V*mx?yU= ORjb^vOql9La5cEFyTUi3%a^5@x*! z5B<0>Jwa*bSq+>N0Hrge ?(5+mEGQzhG?G2x`PoFR0s)4;)Wt0Jo8 zT^NaE^DzQa6eb8MdFZp#%^lw3`Li$fUD1kfN6vFqTCb6<95zEAgz&nEN^7?`MTcJ~ z( 73%| {Q$*O;NF_xi zS&=DB)2^^Un96}_oxs7Yo78h2cQS}=3iH0_b!H69gNY2kRF+fbrU+8^0h;N6Cwc`j zj3aH_^93rbNR53A*i~LF^H#T*)QSmn>^}S~Io{9zC8_iT#$zjF^i=^@ArtQ6QRyAS zpopB_zCdJCvoB$I=KEe)gS hR8-3GsBk8hckREV=Bwl<5G)jMnp1Iat8TfEZ%QTXy7A(AwW5`1}ZZPQb$P@$TK3 zC!hV7vc;;}Uhgf~!+WncInYG^-WM?jQC;aDPRfa(@@SceZ1plC*Tl@)1VJf-%Ua%N zA?w@va*L~b_&;t{O9Ytqij@2Eo>}F?=-p>-SyI^#EQMJv?VP3ewN_>Q0=lH$!)8HJ zDR?Nn|4Y)|t{v{U@OrP4kHz<^%FH`oi5gpwkKJo*L3i&8F6}n%btql!yyE;emwwR| z`; $E$UE9Zd*%Qx=b?A6J|y0yxZ3+B zsWY$9PIJ`|oUF5vX{we~izbm!Sd3 a?=))&66X}CS^PJhe+}2#K|A26b{*W z(%^#*McnI88b^PnbF$t2BSbw1<3dv8;dVwX>WevU CYa1y{@)?Ofzt6 z>G;I9{Dy4LWCkLB{`s%h^Ow@F6DI8R{uQS7Rn>Ke!|UFP7W|uFi&}|9rRg>fFG*^? zMGg|HX=T|Q)tiT(5KRF$J-;uJR6J~^NMLCuANI{m(k a>^z3=BET*2sbNv^~xE1LQ3hU$yr9Q$%&-=z1#*a=p-*O%PYCLym`FYwaS zQBq^Ddb-rdGPXFJxF_iT4lQv&&~kpz;45Xh1584d{lOc51JOGHhaXE020st4%x=6> z9j#ls!)2STo2AS`QrKquOlmt8kSKzF@v!)G=laR)@Y0BW2tit_pwIU)fGqj)G2{3B zP|}M9&o7Uqd)Y~p&RaZ^Z>zYW+SNd*zC3<<`GT9Aqk(&Q`1l*&ev#yO)X{U~FrjcN zpn7+f;nqWv)8F_H7ISm7in(^PAmK3ZsM}nsmfflb4iId|s~kOgA7&=w3Q|v3GHvlB z=vIAl977p`g>x3G_a0eWSbq5GRoi!AK-9zY-~@O~T9G86@m~wchoN7h?afaeRxkU@ zq8dYHegc36X{E!Q2880_UHw{WRPll9V5v{O3}FGI(egVE+@N0d-$%CB*k#tw5n3R) zUXqqV*B4S@^{`RC0_ir6gvIuT7TyY7S*o29j%p*32>37#~UZH4nN3hnQhSr6mm5lE 0?o17z_$-A~B~vMl z2Wh@+#dRa>ul|1Pp_%jOWFit5<_j&^wx}&8<^Ht?7Y}-T2mC(mlEalblh-+laOOAiVj;1qe*fhF!#t9}ot$uH|B_?U+r?VSYR99o zuAIy;S9cTQ7liqFRHDv>8hxon{e$=K=M!mnYNdxRhAd|e6!+AJD7;>g-oOkf_Vd~0 z&C6fuqFxo*JIm7Aj@CX4c)a#RUgqylCfiK$Q11J!LJ1LH-KNk}2t0ejLI`73%cZE! z=;KijSi)O`z0#qs+GF!o$5)lo(e0~!DK*=bdp-2Ap%kHt*7D2MiJfABo4rx>yB|Y` ziN&Rxtc42lqI|UB@EVf$Q9$n*>&V 9w+FgQZ`fPN3Izfw*lZsdDIY%7t?r3;)D)czGtAT6klrIs>=)dSI$s%bT)AJ4^ zCo>;m_i*Gy$_$kVY`JH50r@^Q1#$I9vK`-s B%|Fc`Uv 4Br-ocO{@`kq?g<0|D|*xg7k%YXXEx+g3Q-eR$q=>+jvw(eQ`z|FU*<;|KND~A z=8FT}WLBmLeH7lcYvsSPNGd8u58Ui8Ig)Y&nfhu;Q=f{!hWHqYe&`TNHf>_}uYK;n z{fFl>e 5V&FY^Vio*Ie#wC z@3
zyuV2%MNd`A4#p?hOT1|4e1pCE;ghdeQ%=0sFRQ!#K z>~w;omLkqWezTRLE)A?e u{@F61F1^PU%1*zpJMfBGl#Yq_}tuI`b;!95*xx;xuPrrIqk#>*`i oo+k%*}FC3vZIs}ZLHbDwtVr-~mM4mn%;@JS%ndhwfd-AstDd-GcQc}H@d z3ZhTr*I2Tkf@-cxDKoSQIA*c7!gO*kFKKY~3`n*T_fVss7@|~tNcI&3G2^PmcyH^s z{tLu2fjzkeZX}mS#D!zm(m$dmc%s(Eiga!UcQd))^%q?q&K?x!eGhrz^zEEo!9}+h zwt=Cn>EWWRSzO>2r#xjF)9~aV4clQ1*u7u{@eywd`sP7@m+r0UzbBPin4rtf`xiUY zfKFA-W^OH%AqyZH6O+y9piZdIUtVhvWl3d5I}VuFh*4Xbeps3QaV*CV(}TW`hCnQF zsW)IlD@zR{ oxUxj%Uk8f`8Y23}}5|eCw$x+$NLMZ8f^sfz&dM1hpaA!599NZ%x6<=<0_?&}R zd>#xN!tVOl*pBO2sNvp{&xBLzNN0V7IZZp%?}+%eap>$1`VOzqo-HK6uxpayliW_M z`Aq(^?&;*ch3?RHB?5F5xl`~FrX$3*_#}3PwLw~qw(%z|ftUK5#E1iN27-Xw-2`%U zgX1T 74Zl%_bz+scQO%z-~u_%mv+pz84r+3Y*S zl>Reswyt;lTIP J8Ntj)~l}^YG`Ux%^SGpT~-z zP6O14y6(qCu%#<^wH9l|cSWy%b6+9Me V5Afv6O5MRY>I@WKB z)*p7TN`w7l~?etsqeyOc7sWqXzvap@#2a_&jqrNVX3vsF=| z{+!nx|BiT{6UupUc*T@RW9#?kE67qr;b741{C7>yt-PS(8ff_2-=uNBg PuaX7KRDm{OtDyw zoO_ulJXS6gQpR?`Sa1|;LX>t?Jz(;w{{a9AxT4(%`KemEj>+@J2Vl(!FE@m%8v-V5 z(ND?1y>l^v_q?MIP5V?u%Ymf7++MFI8p60jn+{ge^e>ym! 7~?^~1 lSv&sBp2mQmrH4D1GgF^uF0I%}0YF3o_L5MGWA% z_7@0wmPN(COoF8}J4b4tX)69oRHynOVB6Of4);Iwela!)($13GEFa$FkW~=RM9ea( zg=1rcA?h~^(~Qs_rP+t4SxbuJ&H>QRB*wJpx%=0B_B9Tcnoob+j78pk=}PBx)0Tw= z;0j)beLwDjwIg %yQ3zrhqNx3Rp!=Rpoj|+ zpB)pthlgE%_WPjP(u|l9ltri3&LdU`r #HOoh?PBj1Q^fayU{ zNYtN EM)M zJq(^s`}EI!<8eb#mg>K E8wL^m_6nFU0QocIKC zE;xRrsw*B-(?oddv7J3%)8zpq>QwSsnCnoxd9(I)!X!o!6Y%zF5_7fFz|l-$%!#j- zF$KV-X0#VA`282WNGe_A?Z2l)ay JdZ6)` z{G!!0@t_NGzfhkLu;x ?@vR9{^*bd1O~ z^&qoRx3}(O`j{dJf$HNd9PdfE{rSF(7YY`nA*SvgATvYPL8;&VRf1wd*id`D$9G$4 zY;=LsKMS7_eKq|Ytw9d_1~Uq#(V{i#z(D=uyBx6tTpIRGa@Z?|@;9%=h~FZ8|Ew{; z4=%`~jtL;m&T)=b-nLpTap-o9@mV?PubS&irV=GlffS7NOW{3IW5&n!{(1*^ZW!~J zwvZbKVvs6dJ%3kKPHHsY8;HCon=uWR`sM%2ECbWArDGM)sFD-hKsiZcFaoS{1CO(X z9w`i+#o0+U0y|>LFCI^(YV{iIUr2jQ3Gh!oJAQ%2bdg*t8IrpkahMZn2;ecat?+`P z6P!s6lPt(yZQ@KE=^YSL-TMpw^Z2k|dyLj}Z7Tzco;lYj$GG`cf_`^c(c(5}owl;^ z*dBK|%DH`X5ZRCJ8Jh7h_Eij5#3)$GW;83jqT=Jq)n2L-tejQyssexJP?7hiW#mDF zoT511SEcU+bf%$}fbQ}!cfeLFZuMA>|LPZq3RxXOGXtip9>RN2)l5G@uhwG_IrSfN zBe@vZKn(}pFPpF_#Y@_AxpzTdwKL%Mf$E+FrN2|;WuqR+g4soYADhJ}e_0SJ;Y31+ zNr}q%Wy#J`*-)n2%lAcrCd@TQB($dbe|$E=kF{wy2>W`L*rlXjUa Cq*YEhrVO-Bjug&9$%ghS9a3hujv+6ogiwGUh>;}=2*8AP`=HD zNaqWt3-(7G%{t6vyB^WOt#&}l+E#YdwUnHo^u`VU@p;2AYiop0`KGxSi#2lrDWILR z^+P;d7M1-UibnZjOi}(@)D8v}hW{LCuVgJi6=1Z4=o3Y4C6o{hBke|y7Ns?Hxx8k@ z(dA)@ocX!`x?w!hGEtONrtJ=*N~D@R?bXclc4C291$wF@x#>`0KKNtWC-9oOPBkaN z`%8Jp)OVo_jSnpZ&hRzwtLbO(SNV;E8J=H@3WuyXrWqDRTU=>r{u|F2mSjb($#_3^ z?1!nL7SHpDA}Nf3huHqLl}P&6{p+0DBgn`Ykks>Mw(<-L=?pvIW+qaAr 1h-#( zBL%*Z=%KWplyqR_qr`%O*MUEY?0ElEl}Vu{vVS_1|1hWSS{7omOnPF2vOMXd3}(hM zg_P&iPydkx{s&fR<)E{?Pl&7xgNo^V>Z>=BDmh6uGW8L~`6<)-W_Kl!l!y?d8uRB6 zvj5s=Z)7 z{QXI-xskbwS2$)~{cjAiVzBSWIh8PB_vl5g8!r)Gll z^K =${^pld@01L|U `AKY_odHxdkC2ViKF+C_Ze=U^o7g zKOCXFEKUP&J@7i;jO7>7-~7S 3bV)#`D%-6YAeHe4Ic807q9c-P&)5_pvDDvT)$gC4Gwa7 zR=FPboV~7(j-)t&vvy04JhN8h?p8~t$7a^}3&_MrL^&>Br`DJ>?iI$}ZeQ-o8pBek zHD_LAUo|C==~7E_gCl(NMz}-pdCwY=!Sf_58oWa5^=z#^@d&cNkbJI`R>qYl<5+uq zm4v&2PEV9vgUg-z-|ykTP?`o$>GkZfP3IS@*cy5u{&zLTOyE5|=#y`zU;dN)ThHfi zqlgHP;yE%k<*d&i-#=Qe_(?TcpOA2k&70|EU4w+qQY$*S$xlX7;0Y<}lJr{h91{#u zRyZc@WXWlPJa-x_jT%?%Bxe++#v!dVX20X8hDif<>%Nyqpp*>6jZ5yhEnI5#4IO7j zR;suOPC_L?EwhQ?Ee9dMAt=|6PEiMf!-~Uv!cRb>f8@~LwAx%2yy;zk#K2VW6 zlp9?LAVy5xCtPvx3L3u9(zhOs`HbB)4 )oG~fafVgTVX;dx*I0shRl5g z3t8q#St6q0_t-RVGkg9OGpv3VA+PMznRg=0#VHa(vwS=JJP1{DMv*PyqU_HzaDzrZ zP&U^O6l{wF{VO#}q?6$-O(O@AmHx6~jHfQd%Pq^=1RG2UA_F#47-JdW7#9kx=+yt` zL&vfI_o4UnK}7!uBSWO-QuGa=qYXNeCy9yz_1!V=e&bU-$oFA;=N(_>9BL#b|RMPid*Ibm8)u1#PjsqArFp9_L@v^T;dydw!Bn7zE6i z24WaYQhQeR4BzHw`dk+EUUgx!Bff9t5Tf1hVB*r3=#zuTu-_7{qSh?GZC)tMAoCqS z?}`&TJ|36R1SbSi9QFyKCp}6RX&TkkKp3PEYd+VXMe=OB{QamYD&P0`QkX`C5=c`n zE-tEq%)XM7Ja7sD_i81RKIf10T>^^q5sqA~Z&{?eK8q}ePmbR3#(7d7)9%;Lt2Lb! z=Q5FKQj|F*h#qoZbq6BRY^X76(D_$oN!C`tjLpDbzx%R}x1Wx`ul^rI*awulFZVOp zY=6xZ19}}V@(cKVWF8niv3 %9 zvrG_X+rE{#h{YO3?Y=HJ1yJT6>*K$JQ)nnYKB;S#hRkpzz$k$#xIF9nUXl}Yc*v{A zvrUW8M2J3<6}QeyJ?gz(x;0tw-#Qr3Cv9Ge_>2=ed5?&3aO>0GdO1{>vEw8DS$^IOPW_9cMRBub=m2uZ$^>F$$`>gWtB~|bU&%cpYxJ-3zq{? z*}y< gAthi~USvlSQuQ-GY?4%F_(luJ6NId6iSW_EZE@i7Wxzpd3u#}Spk!7`orXy>?$ ze>iQ)ZTk5gkD Oyb%Ge9f Q z1lrLrWl^9HB> @f8P~!VpFbS<&2`OHrK=Zd8OFXtlnMYmwJY;D&ouZX+NRS+NC#x1!<(7DXze zo9wxlbVeQr_&h1V3Cxhkd@S&?Po(|it!k!lcC*{87xtVgCcQpd6%R-l&$v6LNW~TL zfLk4~V?bVbGE|b2AR}|k7+}C{L;*RvHD9 }|ctqy1tK9YOR{<^S;wr!f9ItQ=&3ybEb62DAn!#nn+yin7AU zL&r}1p#!d}0g^P$Sce{2lKhK^7pBXOuh*m#9eCkHn9XRE>jp<@&nnT(5s;T4zwzqw z#xOF6Ula3-xHVYgZ*iL&bnGHvM*+x|D|jS*h!z)9c8$jNkzz$rI7VuLt-B#X;={pM zx N(d?e`NHx+Ew*TtdD$F%?B}Oo|5F8*U+f4^=?t1gMIw^Jh&v zyyn{|L>4_g(&@+9rq$EM$C-8UYX0T<;28jodL5BVNP3-_G3Pd1+iY*pU#|=1>_GvM zl(j@@;Ze8IzZoHYuOG%4}LYB z9k#gcSf}Nuj|stpiNnyw6nHZg#I0Wv24r3QoOHWOj{LUnH$GgobjJJegtvL0%T9;D zc@Xr@TtgH`um2yRC4r!p*OzT)#20`0y@9+kT9?ntyMcimKo@O%A&?iA5MeG@6m7`$ z6oX>kr4~rM+u*f `O;@-DgWqyvqxE5kMi77%;{1w%tX zpTZ&fDYF&v_1q{^MK}XAUkln `!sIX7*he`e!ia3#$4{Z#JLr^nM7IKvlrK7l VbK2mLtXj!c^q>X(%cMBB4e}~IvaO7zrnZ>`GkwMn5=Dc z3_Evh)v-qgeRD~wx!>Ag+OqadrtwX24s0V%5M5_93K~?ft5r&6hrwGHXTyx-C)~{S z$lrjDZw$*cT*0jmD3yN0+~z>TdX@WyeJU-Dsl)~;kKftbPaGM!B8#swBN7~c%OZEl znobp$`vnw(sMm3FCIMo0!iS!clWmg62$W8eI=bMMJSBe4qDiDQb~5$TcUZ2qh=G;< zu^Q&c;MJlvA34odNOr~yVMQ~{63q)clHL<=zT5e%%8|%Gy%s2Q`Qh&DyRErI{)Vh@ zCQ4Iq56*NJW-vB($an$K2aO-`zsQ5M=!F?`SRA!^V_G}59#r_d^@&k@D{CR#@uWOI zDP>ORAd?Y=h*7^?hGF0;K+>CgTPDW(3_|yQg_7e5XkJ)7Vf1`ZdIyrt8>o zX1^)xY4Xb^6{HKh<=EpOMbzGLXtAKOzf%u3RY%d^gS;_ zzK~~JxrleZ*wK-;1dmBR@E5B)D@a^#_wU?ysa$SjKWe(8*%e2S852BQSK9KstX-!| zdvK{RiFjN(uH#}D`J5>DAdU$0-q&=~*cwBybBYOy9sd)!yY_LicQAv-p6hosNgO?p zJZ$x(AiAK6JCB%nJq4bw0#wPeG=?lJdtkOz3tgc@N-Y#=iHM{0X)hFN+%spJlc1$8 zPOs06)ACaD22`iEOc`W`@?;^%W71m&` O>Tn4P=1Y*+r7RR@>&ExIQUwvs2N7xmah1w}9^63sXGo{Yo4nNMm!=|W z5*sX8XYi7)<4#gxRKgJWD(2$BmReFrx^ICk@^C3K>$mq4F<-<_l(*IG<;ZpyNrlc+ zZqST}vdnR(N>b<=c{5ksU&mufCI(hwP%qVPfF-?_kEq73)u0{Y8so6JOy}4Dmt+j4 zx(vV4eN7x_wYrb?JJhvBq==fZYHta-$xf%q6A>X$cvTcUV^IJ9>#Koj!c> JHK-S4a|+ZYE^QclZV3@Rp&ggg}OP#|ZaL1MY|_Q{I$Ifd-J8 zS*NQjH-3i$Y#y)px@LplefW)~+4FYh9#1jgyqm)p`a$E(YeZvkE1@FYJ%$~ * zPF4ta#V_KP{VF=YUw=D48a45TpB9*xY(I$qE!U5}Y``OTY-2U?x%f!yf0tI}xFc9N zNo51dyX6gXJNSGxV1kSC*~Z}S>~+kH-qBaUSJ-@D35*IAjQ_!o# K!W*$Dm0wlr$P6b z%Lw)vBPpVWqycszXX2Ht9NxQ)3W=(I-Xj7Gsb?J$+`8tObY9^l`pNks3KxWQM3}iX zq+UGe9f%h9&fq%Hs6chi^F1+~Y(2i$H!)O A?F$T=b6rTDqf>Yq^$PZB9RF&R1rkuscrDz z(Ubo_M^Au%T6d3$vBUHY2-To`5>oshjF}n!zszSJy27+jcZ4B~6|@|Alb&p5qtE6z z|5{OnI=BVtHJmF%=d^>Tbe`C|D5^?JQlp&CtmR7Rv-b0|UYiXa+eg)x-Y$HbF6~sP zDrEI% K99hzdYo<9a zH5R_S7=KSFh6Qg~c|!?{jkBrnK2rOb0*0nyvixXkD~_63@}bGrD$bi-P7DZ^S*q_P z*PB@k6@uS8N!}$Yt|)XdEOI!&2%ov?*}!gtgV`JA?S;s@M<$`Tl{ZwQ; * zZ+da`-_&SZhCrgT;s!x?T0#!{j<|Rc#m>ZX0CW8@sf3$NU74UN{{`-ddVNshjBBYE zDOg)UcI4 iq@D-|vaK=8GN&;WJI*|Su% z9shIpM6OSWHIulspHO=(_}cOq*2gr109$D`=>NLyH5MbL)cvt=F+) z2DfY;+F0A2xYxX`DY{Msw!eHzTUsSV{xNf-nonr3BpvN5Ib)Pd*7xA *#XUi?@rE+F_cs~9M5tE`>aWkIqFxB#Yriad>{Qsg s z;fX|>MJ9D0Po?mIVK7g&@OhWpXKdbe-x^D3IE8uzrTH;X`1A{@V)X5OM@7Sameyt; zu>|Q&QO}PbehDk=DFH;qs*D&p^{(cdRaR*G~@ zyY+2z<3-5Z@MqWyg7G81cUP;}z0K5X8X~wF8JS@w`}q0C?UijpZ|>t21!GF6jRD%` z2F<>MWE+~S?QQgvo3vYc{d8t5+RftJns*$Z2g(=1liyTB!{mZtN8Rc>*poZ_Tar@m z`#TCi5l{ZgaUQ-4Bh~+@MT91EXGoOM(r;~nH~HZ;F7u~$Rt50KoD7tb@qMsS<3ZTL zgnYyCYg(!?+`asBUwRcn)Vl%y=Z$~_G^tFOdSLAU#d5fHI{&kj#RV;yfv!+~K~>y_ zty)pMhAmkkPvO!1=t~>wN{xiV$CzB7HG=W4L#ypAM?D0%o1NTZ `@$VDn)WB2Bw2Z`w`~ZXwe!XJgoUcS j+5R{%vP`iQI%l3fW=ph~lPK9(*Em8mkY}93qtCXMn!QK8;b(LTn`QzYK6xwI zS3#p&RopnYLLeX&hS;U{W@KMRi=8BxIEs8a7+#+eGpzp;S@iyB&x`21{n57n`} {subf5CbSX&WGm4qCME=M5`STwgY^vPIQBO707Ts{ z=Y_-yjINswj^^lp0CZOa69nj=e+wulSq{7qqh8Q~c)gj^Q6&Q{=ZaZC{s<<2UVD8r z=-CHU{d?AQ^ED>@qSt#ndy0Z+nBUN8Sd65NUXRD7M-Ri%@R5eAe~z*ds)tVJchOre zw)~Qm(>N>q11@Q>5`$ ;wyHtIh>hj$*=H{8mtJ1N?(QDr zzqB3RSLp3Xehaac$jZowu4aCn7gX@t=ej8ENiLD;05zDelnNin5_JO?C mZpIh8Q6HOJZ+etz-$;k0 zu&Y-Ia^iK{*LT@_Fplj-n$>rymz)IU;_#qXo|)x_Z)zdt3w7chPA2zvnpSqX@cQ%i z0d=WmJO>d+SXZX2_C;B>*%B?aPx^;|S5KrFMySJKFG-Qf*_rX~8^4*hRHYLN3%{u( zzADC+^}!nBBx;+xvfGyR3~Z!wpv$BHeoQ+ 5 zw~xA_ZRE;EDPU1z(x?quOnP(+%Sm5MZ>l=5Vey3D&%W;y9p9>_V3=X=viUg!9ea z7V*RD03c>khwn28fI~!ZK3y?;F-^5<1a`Je?M_kE=?e0?J7IHMu>Z*n7={o2BQax^>^d%!2{TufuJ4-Nm zMg3eZU9SB*t-y8oR}S kr{&ZRyYN zcrY}{pwCoh!eubZb9Mn)+B_K{1IeQIq)}-3OSYF-3kAPQe?kao`_>1w`1j8AUHui( z_XVncStMoVs)y$~xeC0NfdGsVq3nbs%YGOPiL?oNWmHq|-H%+_516t>M{VO0)l1Yn zE~YCZ79C;Bd$4b%OaLuAbP7-_&W(^*j&0d}(Xn%mC#ib&T8Hu)mQHMw5)yIY+#Q3l zEchA+1b8}lpK_vXn{DNbwAEbTki^|Gj~q}_daRt@QRUKwX_ O dfToS}CDc zg^h1jRIgl#Jc@Y&PPlm1t^8OR#V($! zf1Td`*T&7GLnAR# zH0k92Nlf8oGbKdlv4(UeH8E5hSO9MDuK`Q8x3IaxurU=Dm-gdm&t#ZY 06os zaNk|f`|o;BhA5uBp2pe8@Ng<1Isw!Ww!`3r?Ds;N{$ea@50XlN2V$@jd1GEp?4w!u zBp+pUdM*JiL7zGs3k5W$d;SsnZOJ7{vt;GxJ QSl7` z>Xi{zQHPF>cTRM>Q%&?XCK!x1L5-x@{%mqjd?XjHg3fpUVyLA+-KzykjX25uk*sCU zgIx!Zw@I0qi8K{IVa%M00{h*B)oy1x<34VZglea&eY?7A-ArgF>jg+56bp H0I~{Zg%Zl~^=u;2a_QhFUU6rXZE1SAtEL-dVYeIZ*~DcbO#B*3xaO@F}0) z*+iqRH_OKl5b>=s yt$;1pyhQCz;Czzn+Nw?`7# n zs?thee*B@`jjwINnaLRIIU9)JZ> x4q`tazCsW@>J;W zKrp>OmT7=6)hOT=4nP|X>U!0ObUKdGIt@R(#&`(~JbjJTah=M@H^(|**JKWRS1YS` zTXqttV}B`(!}SrD5|I6#ImL1Orv|!&VNlj+-4=ibj8k{2Tn6beaIhjPtN=y?&Tm1I z!L#f^*_2`z^HcV21XuB_#@3gB?r!$Q*#>_Gts@a^w$xY^=%8co*pRN-Y!qR~nVfse zZgGr>$bTZ+;T!>sc;~WidnVn-iL^|!g9tdnR`FEso8$yWjQ5N-CKO#LdPX^@b@|5l z{AiJ6;~A~Q4%=?PcnN`*VyZ&AvN1glOLFPPX42Wor?uW9piOeBSb;EI*{G^i&!Uu5 zUKzY{Cw1S)ccU-Cs&8ch>vY5uByoEGNP!M)!+l?*7XWuytmLJSKQUbfV4rHN5jzwn z{Vp^Q7F{rO<}h4 UTB^yag9Mv4CJck)#{q%l#DLpTJt zJrg?xPY(=yRs`8EO%Q!35$weM0=0Q1iwi9$dPW7UT3Y5f Umi9&~ ;>xOZQ|Vha#H znmS!;`$k}3Q2K7Gy6@_y_B+pI?(DS;j|nU-vmV{nqh{9iSI8W8ROKl8;;4Ue?OV4; zViUhhDpeYph-|zRqAX=89*Af@QA#$)NowR$S6Oi7CM!n{jVyBKsks~pA2jQ5Ja*w= zyo^ZpWy}rFbGdq5JN|G3KCxYUU%8Tp0Q4}#@{`_NR9W~&AS|EZM~Ljtd_1hFzh+^b z%>eYD1y`CqlCxuwhtPhyjZQi|ba)~ia;sek-?9qPFzlDbQtmlu{M!{Kz_6Ml{z89F zAF%)HfL_^E@VeeUUBZdjx%^#1yi`5+;#y}#AjIsWc=FNZs@)rE>ZN%shrjm`RJkL4 zM|+L@9I#CS&X=it46zDlTi*^Zw9W86 +x`H3(1eZhIv-e z{P(88tYWhUN0DDP=5RGyhclM&-<0{SJt$Pk7M|gyErh!QKv^%IiwV62oz8If8OH8R z8wR$T&{=*AeTPt5Owk+~>IIXP<7ghME&q)1%*h?-h=qK6f8?Y8iNgA?v$;XZ>?ol; zxn#tUL})5ni<@> P}F5 z7_`O{yC=+v(DLP(2clQ#-n=e)L-u6L9door9tM0I!#$Mpm1Yojyuu}12sSlqd>34H zO8Q<=AA 2tDIo(Qg>GGH|E>WPfguq$d z;42JqX1n)+H|MaCLY({Xzbb)+!3}q9B>MXLr5-BJQq`j( AoVP zSUD?vCGi^f?iUND?%wUlm2?YB#0ieGRTu~gJu_W+TI`L+IdJs;4;R@E*?Wgeqn(Si zkGHRW1sbsLvu^E7EoG^sn_>caFPg0Hg4SjD>uB#>@m@)P+a8sR8wrUIF7N)R&0Ujn z9ilDf8S@EYA{*c|mQOM;Z~+xDoa1a;K2mI-j~@wk>4vu7cS!6bw%3jFv>XVQT6rWr zk#u^elae~p*SC}HS&^67zhJd<<_&r)XV*CV0>r_VQ _8>?pZFKS68XX{S^@+Q4z;B`*X&^@2ac zE6uKH?H^`~U$sk h!X9G9Bt$&7V~Tx8pP z$iFgjb$IZ#N1J}(v8?~n@`LzO;=Yw1*18uYSp8Xkd)>hlS}mJ8S{6aaR%gEat!CRh zFv|p_cJTMU62Tq!TLbe!K5oXXjnMH_c;jRIzZVrY-vT;gYX}?{e$g5GpLb58NJxG0 z46@x44%O|poBo>BH*cYHpd1kaCoD2$> s&F zh2c6Bn%H%uJAO5KbLH5@(d5&y_OaW%o_XU+Ics###_e$@V@}lV^!e_L3-mw&`OP{r z;rNDSpoXEw6oazj2T`J>#AC?*S!gN!Iqk)={)qv!Mll`T6{DKU78c{W6#ni$e(6G@ zeCwi4ue) L5IhB*#XqHM$vax1Ok$-a%Ik*=lJak1fX_D z#6}4rQvt(dykH=yJ0qFh{BfmV0QrW9=T(aig5-W+;CB}yU%uLZ4At!llhZh_`hKxo z!ozNpXp3B06#p);O`A9|+5YMsT#jG=XWUl?No^Z65?9_>2tdjq%}2nnkjTaRnOw&E zf%yDz5?9LKQ*H>wUGdGT2A2|^SF#SxtX@C1 FNNB{tb z>}xM+=hg!H(RJS`Rm{VHsqe-l!R5vv?haWrFfcHuswNSixjPju#g-s;b(rONzCB0R zed8I RKbW8=&UtJVSZ7`$$_ey- z>iCQnuEA~(`}kx6hgP@6-ra2ZI!YwPypCrGAI{KY16-WxE6NP0S{f^?;oP!vK+|ts z#T-R+l<9806L#OCasT5KFTkh7!E`w1f{bKIXwH#H|5r#7Hqm=2p7cyxG`#JwoPUR7 zW1S9s?NB~jHLJ5OTmlmKEyyF-D5}Nzdu)DS3u8n<5SL@X==!F)_bHR;+G=vjQTIx> zqTBt22*S*r>uaO^*eqL&YDW@Y?@=%QbeY9vQ=;o~n|CMQ4UiHJW30fLk*y&D%q%j{ zriK9Ejmi4ACb)vvMSRdsve!7XanSiQy#_;~zK8N}vIdb+)-9Q@_kLGk-~qBEmeUeG z6JD+b#_%uqyvR!hH;{-h< Z8L^TU|} z2(TxfXi&Gkt+u{(?n&A<#R8I!P=k23w|XYN(Y>paRFV+l*s^y_pvSvra^70%D}_;~ zvoA;TQQW$SD~j>ooQ{nAzj{%3d;`Dq-vl&?#tv)*Qbu@Xr9a0i1BCEin`hWs+1ScK zg|v01UBV_n8aHGTJKAptY1Y+Wa1wM@ylyQx4C}q%?uZzfKSl)Sz&O(N{Cs~Ks;^*j zLXb?I#4L|x@kVt4_&LEFFVg9FIV8tukK6D43W6KGFbJfwlT!-*l^nUoWlEy4#iD(C zwetiPcFODcuZn<-&Xx)dT>+0$jJ#VhAp#K>+KZa>Pr0R562-1TyldT~yZBDP4To?0 zEY)Qoxk?Q>9V&tW&9+H3!4ee}l%~fyv@)N=o!f3!gW>nlYwYTBCz~sW{=1eJF|4X0 zD~(Q&@vG#1bMHRcPpnr;KF0y5f)0c(M2xPDw4PN3vn0|yOqNvHKGH9^I*|#Ra*V8{ z@V$V|Y{^F=4f5xN5>xch(AB1&&(;M(c+@CJJ456L70s*ln9>if0!EE^?ybe#J!+&(-1I$=29`9(Uns@v>1K?y|+aKKJ0>rGuC-5~_2{{^5w*UP#j$FAMN+L_x zDAJ_@p1Pl&j^DH)lQKRJ(n{!H_IF#5yE=?e>s7nbZ?uK>b6a%&*|1xzmatmt0iffP z!CwS5NPwjApJ%t*Gi^e&06C9QL|RTD_U0A()uJz@cmTiO#{&%n{GD%f8>abwm@;(a zH?1KFpXI-v6T8dbDylsRf>h%Q*XtBKCJ|{S{v^ds=$lO`X!f-RuFtOli?@X?r8cCD zt!9tOB&EK4PF1}<0yd#z*@+MLH;muU{KF}M_oG!$*7)tNI8Xv8xldT0Nl!8n9m|JoM1*$a$DU#~=diG+JzLWrvC@tEwQ;Xc2MQA }B^PHOSlD3wCSb2UN^%y$^ZABQvz_Qr!K!0}@_nf?&? z6%Hk)oAaiGbo qMAprNjt#|Y7M^c#ZHpVEC&xe-I%DE zZkcTel(_vl_iAV5mBt_MU=v~ChijVMMLjxS69!cs+?>E7st4r!4RrUenYqgXIVgvB zl0TbE_J@pLZg@;?hWE(Q^@yIIQ`Q1$LMh`WUJxdKZhm~+xjk8LEcZ^rowNl>PmH>2 zc!~pV3Qv5t>UF1hFyt@+5KioumFt _rOGofa_JHYtw3n8<=H|u#?Ap=5nOe zjBgm&{^QNT_V${T&6ZY`4fPTrZBIIE3QfXX # zF6Bs`g~Soh`T8oUDTmLIhdMS=L~8vZGHeH5(yR96$%Q5du8N9syJ=zhoP?ZhbY!}P z=zsnI3bB-pD*H2?q)L9wMl%G+oe8eyV)Z^_GjD}sq9MMO_e^|eiTiGA2fVVidsC#- zcI5s2c^Aj}n+7NdcopEC*bqu{a8qwmIn)-Y`N}mO|Fy&E=Yw0ne!jS^3osxlR$Y@j z(GzT14<=hPvUe9(&{^9G9hDKQ1Obd%sVB$^c?};SiJ&6d3mf;lS28(wV_HPk?;HqA z*KQS}qzQlM@I)HV3s=p$xK9PmUlG##-}rKPzN3lb<`ew70szM14V_8tZF-VHi9OO+ zKC91NS>9})nRO(=P`O9`1OU`y0+xtDPzn {CFwF0hpas zs4LvUK?6%+7e?p$)%VI8L-9|7WtVNOfbC(T(%66n>Q|Ub*J64N2noqkS@}(t6pzQr zZ>Fv+2P}Q+8PW2QT9g2zt02Aqm0ZB%0ncToW i%6Wy1DPI5z$ChR zNj{Pako^U`&3vKoZ-u#BJry%qP;K@taRS3XG`VEP0m0!Asun`}mj@Dioz%MYPd|@l z>Ql=1$UMOV@*FF>C+xFP(H%OaC|Tmaw3SCgtm5^4Hb7;||5wC+q9XoZ|AQ8H+p8yg z1bIn0wub>IF{+)en;*m!l^O_urnz*@PHx^;a22X`9-T9QwSKY3`1n=OI0!rTPR}fK zynmq5U_4fm^1`cxUt_AQuq9je;qrS(vQ*MM2Ch6FUxx{BO*7Dv^O(l!ng)`zc2g wbF>e)-W}#TlLGWg%DwCQ zrmMFYv2OdX#MhjT-HCv7)W5!|1OU o?7OAJX-)eJGK7X)P8TPA8%Ab9)J8R4LGQM1`~eZA^^iU0{~ z$sg~dA{|$!_(=eWRw5Jk7-ZD3|1$8FNUH+u$jfdLc%j|o;l6_OGk IUP?jOReGqf_h5*}+|F;bqfm?;8&X~7`(vo7iLW}$ z4#|58K)*nXbfOHE$^YDgKNQVz#jivcg1SDK*6q#MudxC^>MTY)X{w)=v3-VmnG>r! zdZ;O-fyXOd=D5gi>Vnmv!g^Wzc;msbJrF?2WPDzm@{cSwsLQx<2KKr2xq<}%r9Pxf zMPqr|va52SDiz+{Ke-a~7P@}XX;c4{U4-J%unmV eb=s|QMue8 zWy+}nLs&6rng$QV2tYsFU$> h2y>w?pN0e7Bs-v!t-kGmm)HJx2JOXBgRzMzT zSip^FSjXq|G%0 #QtGgHPsXCgq^M043?{=slNqj4IJiL&w)x(9K=rt{al+Huc&S z>oo}VP~*}xyyxtvD=6X jv3&9p&yT3*Oq zqoXas$Ywb;PkLixM*yps>sH9t7S?X5TndHP4kiE& }+j*UpE8qQWxLy{;}7+k(-zGu2vW*^%!w z8#~(o%?sar)Wn?V4N)Dq8b>KUSFJnnx_Nu*2kUEsosr*fsrhM{`vbrUHN-wr+e`18 zR$cxdEdciuhVuhW0MJnXbwM4c&h{3xRrMp`r)k%DG|BjC{nqS 36AIS5kz&lXJ1GI}1o}*^q(sw>w zHw4!}#jN{qrZpZg8o4Ne1u)_RWW-N8Q5h=(1azQ-fqk}c0brF!G9hQUr{W$`Z8dEW z@B#_R63r%1W7;x|SRd^S@ikpJQKUBmur-e}8xLdr83HJ~U&nVvlk{gOF;^ rvFQ}KM+e+5hl97&`ffF!y?Bfg)Pi#-6z_- z*I=Lr_YCUzA=#SxL=LdvGRB>AL{nT%oj{T5Fz+OnO}AP{CzfPX3{3GL#XZv^co3tb zpu+D@G^l|dvfJqL`rt^R$M_?mHjf3LhpuO+UWfJ2bj7iQ!Z~1V5SpT)qaAk<1f@cA z)XR&jMD^c53|t3+AT2j(C8~F6g?UZ_2>@UqF=+e@53st1TEibA>}O2IPXDw>IbY7# zS$?>>Y&oj(86@6BYBT}2!k=M}{^#a*S36fBTHC(3UsisS|LmB+eir-4_kf#9+cv%z z0CYsk`_ 4{5*K=uhF-lbpz8fMtgoqPZ~NY-t)o6{QLdGr^%+wWtT7&^d6-iw;6qhpxt z&oz^Mru`B!4!&_JY3~N(K`GN!(Sh~uz9FSWIGunn2?70^-rUT`zV?C->CXe%{)|}( zZD7hh#gru=AAKZ &RZAB%A8d}gv8*Rfl%M;i|O zQQeS%Ky?&pFf(_&r z#!U)nSeARU<;wp1uG(a=ipWoQti?XTKGCbUC-b{F9O0Oe1E5CEgKNErAm#1FOS(-R zKD|?JVVC7-CNzk=k`lD=|Dx$F z*&>@l{ zC Vjnu-?zvH(0xmz z!B4W(6@M)(Mn&Ht2|vnGqLJalUf`t>1WzN=dbWSRqUC!05kC`+^Ao#!GhF|8u`9Eg z%(BK}V&`hI!HJugSt@uvD=7G|PgskSj!QX0jvx2+-$7_$lc l8&;dEv5gwXUwV+A zTY0i4cuEOV(frEMyB%ynzCd$jx358{Dx0;jJ|dUB>e6wZLWueSTXXSeUq}o-4T~v# znvcyAjUZ?V7p6RFsxvPp@jc;hd^74hH_1W-P!4fMIVVR=S*dn4Z){9u|6|CYZu7t~ z?ie?A?)(i&29IX;qnh(lSyuKL87R!ZO@9Lm@clI7S4_4nLIndMY+w}H@Hbh_PbI-D z*Y%$2Rx}Khl?m$AIntdU?UMZb9D|c&&qI~5GSGPws2@|mIT|sBysWgM@;zoiUv+nz znPk5oa5)kLl>p6}Nk$LHKs7w@R#qnz0AZvEP_@>{iiKGZG1aC68hI4ABfUPdfczja z_3x}8A=24cYAJN?BLOYA1p_%-9dk^EPui{Twt+RMcuHt+Ak5GePD+knihpC6@F6oC zf8;BN@SRmYkdPkEvKsitHuHu0B#wsd-{pSl-9_jpXFeMy{w@iw?Hfx8P|KQAw1v+L z!W4sUx-$ZD*8MKYZ3fOMiw&Cz??gXFgmFc)C1iNf`^eJel^?hss8jbUu% Owd-%Pn>+OIoe8*3a+VhpIH?sOuI}WBI_jE~{mb2y_^Q^ZR6( z#;=|FZiJ))AGF?ULZF_cZ|0CHpW`5l{4J^1E6^smMyA{6|9BV(8|KJrEwcErHeZ_n zRKjJx&a$tgK_g{MmbC`qj{zKToM*E%`rc^eZ@qcd6rCZ)QPjM>q}gHt6D(lJQ=H|? z-mAJQOQP|Wv(;LA_R^Bh {H1*eyz^4NyiJy2|El=`O H!+?ZY%1yG5)%!F5M ziY<9$GGqk`;&N-+QUcKQ+wt;rI~D5SBkAfbPnvSqe%XQ#O)~^C$w_GlAV?stuXHuz z(*7ZZ@I8_2%}eGvhY9?5X?n(NfKNV~uf>`=A+sTU>h--}iF$P}shIsL1+k={3Vf?; zQT;oKil)tix3B2HO8rkmby6yPOO^Qcj` _OiCXl&V}FocEmP)k*CZ3=1MRLpq{*m$=UqTwCk{4P*UVyT%a?) zyBQ$Y>w6P>Y !;WhHE}8<2-I3<&M`kC)hR` z%p_7IoGh}ze;jU57x#>R8uG=;V|b<|Vd(u_L>W0P5U|Pk&~%TVX16MU#4>^; g$Aq621S5{a+=BB!eyLd!z^C@lbKu^c7H-U|8rgZ1IrWWD>H z!VXCSi>39N;<}^u)rw}ss_Rdi3dMbr|&0@f!!X5znzQw-M2AMvcVIct{`~cp&mR ze$^W1r89NY#a}|{n?ni#e9U;zac(D?&2H{*z@hp^Xl3P7)LV8u(51ej`Eu1_9n$a~ zUPmM-;e@ SK89Z|SaBPK%%CM?n@_Yl3FxI59~5 zq@R$^;&`dz)MKNw6vsrk$6{}J$#l>6^|%(cuz1Cn(kOE))6SMJkyWy5v(4 W;N1L$`rV~C z$v!nkThE1`lMo$))WXAjXs!;e`4N>`{Hs$U+drHjU#EhrPeX+bptLv-*G^@V$m>hR zowDGu@1+UV)UH5L_(x1p2-Z0rz!oP30xy0mr8#+>mRAg&Ux}W2w++Do+JE~y3;-Ac z(+;&mVYK%H>v}-cok7N>3V@l 7V>^MAw7_B=Gy2@x`R<9 z5ks}v&m>bb&HO03ie^k11^1^eA=O~hzJ5qBWV?_;lVwAF9nh+K$Z*Uy=QNQi2;!I? z-N6RmjDI9t-RlC`v52=g*+YAjJ?u}*yY301)-ZEfDbY7~4P!1Ces`Zg$nIuI7hN9k zebv&EY_+J50O5Fy8oj8V0%XQO4@`Yy*3)6aeB*7whKn^hg;w@y0Ig6d|8(O8F*#3C zm |n(r3W>W(CLr4x!rrS6xxGSO5Up6t&Ado~ zVT20Y;1pjBYkb74=K6k}40k(vc~SG~ev7);sgJ+Ck}O~*AR`0=^8unvgEGgY?n?*C z3s(b;dsiXhePwUE5=Zp1qOD1N@hNLccu28>zrY+v4j-%2-cL)J&$|(b{V0+Wz2`G% zm2I6qPAm7qn+;^U56Y(r`0y@N7A%BL#CKD4e)_XH7&?8Y`)T#VY3|N?>mo0{Dwc3C z)Lj=U2)tU_3y{D9NlH-ec_J@j=gQw#hA&{q)FtPRaEgWreCF;WkSBRd7kq$pJ+-^^ zIHVItmhDq5{8L--fm)m6t;vu=H;puS!KPB2VsD(x{+}8-%!;cZj(^@*NFRktndcSn zXx%>IvMG?_@AauLuZjCzn}KV1L1$c S@3-=VO7$sa)!Q; h`q0@W1ngqjf5@#rSh&}LTWf-4CsT67 zZg*G9U{K{e@G}hDy|AC^JVi$zB5TWgCpN)a#auW5hr`{3a4SvOjj uH{OF= zyE0}xvh-3g>O8_G;rDja2TbY=CuHuUx1M0Th< S z(?Z57uTe*jFL+kLKU8gOtGC?Sy6IIhFJ-xu(BQ&g@faJT#=8Y$&Lr5tj~{kN8anEX z!zYYn7)`FAxHeg=g{a49)-(v!IBl0k03)VdUWlt4`GnhazN0c} _=Sg{j+#ls7qAQbp9VipVrTVlf^I0l+~XR%T?0cc3x>W#T$EVMJ~yG ztkAhL>vq|O&y&MK+F1MN-G|9i8wsgTS!ZW8b`w7s)HP^0%U^xcxd{?8_4!(n5Ls08 zwB@=usBn>J< kDq}^nr z7x0LqhB@LjPghT^wR;b5a-3L-&vWg9ioepG5D~sT4KNZ?t`mtpagoD&&q0X|e*5GH zIXwPmP!}c94LL(Ne);e%VF-{YfjiFo(b7qrl} !28OIg;145~>53c!j$_i3yLoJl~u zAYqzpAf@}{`qO~XN&G^*h4< $%*P- zejtoMX?>0(V}|nU#dlZEr>LfM3^DOQ8ZG1Wg&5&`0UZ-GJ3!yUfUY|Tz)EwNe7j;u z#vWt{;xC8?M-!f3{y>8K2LPo?kFnXN*gyJx22n!h)YzgLd2!5bbz{xhi^i|a{?t8A zlL~?r8vnNsE|UoWZ#<|?5O6 UeTmlgE78VREC0ico8kr35LnkP(GlRsaS`R4zEAw4oYf$2z-k`(GIqGwe! z1ldp(-3W34@t1r!GJZ#9Xd*xDcX}@rO%h9;mVJNgeF^FDWwil=x!1XxOIeM$**tLZ zWXW=ZFF1SzHfu1@GM#m_V`@+x?{Ox%G2wgovN;Hb42}ZehC00Vcjv81xyIey6pOq& zRavQ+ONbYYQcUv|(}M)2HGxXQ*XQ)k(g9x#S-%k}WhFku0(y;(WUp_;XtaC>;b0{p zapWQK%DYCDgzaO&NM4?||6S8V#1LUheK(}rJaUcZnP*UNXR+99RCAy)wme*kc jfVTL1QLOlhvIq}f_v6B+4{Y&1bipW-o7p? zGDF~ctUqQ0Bbcc{5}-9WhQTIIw)KxY{zy&;1EP5pktbK7;=)spYyip*4;{_una;G6 zAzkS>OqndZWy*t%MyF^2Kw!U61Tf!&M00)5CKZs7IO|o*$vi*$t|&~mB0T)I731TM zm_Ks4PjVyl{&jNs%bei;)~ew88gP7DJN|3=Va$rvqxb7+lAdq_Q9q_YoKx>hk-iHz zwj>0x{3^4ItH@od^1;?9QZXY_BEuk4&v&q)FAUhWNJ4$Hk<*ZSka#Uzcg1Guu={Bn z!7VHZjaq)Mf4XW$59tM4+YH(C`ouHc$c^hfgO${g)a;)G64fO58G>A9!=@*6try@h zXk*^uaYwwxYUUN%Oc FZrte(eWPI8&u=?Ec5*#2e{dR0uZr9 HBCw!)&+4d~~>g^(Aek|F*=l>^Kn;c;b3;UQh(Fv2P2Rsfjh%lYSJC*5D#V z@e!)-wj`qvujUDL)TR5zmtX)+Et@H7NCb;g%MNwqg0CI@F@t!#RRBtAw$Lm=mvqOc z1f}}l7C2diei2))=diflT)o+wi6}ljnE6rrLxV~EgCv!`z5RkW4AOt3N&7Gw+z(2I z0j$W_mS0pw0%l#V9=jvB-73V2$3FV(5e_8 ~&8p{5qMjN$)U0YC!Q9+wmo zT;rlM-(E3l*SmxaCmdG6rJ|$(o|_OC>r?xWnhLPK@ZkZZl&c(djcxc{2dbyGgMmCD zUm!%gju#(PzZfH62)rQT%EMwD-ms?2;aM76&1#)Umb1v&ZX4d6_G9hP%z!^~l=kPG za273Sag+q;)GQxz)BZG!7YqUX5AoHBx!bn*8qU0gW9dY(Q d>0 z&MRHw528Lq!m`Z1#8_rau@Y-@w%}VFEsxS8JScKGUQ^sJe98kMtVbWcPVKu1CYj1? zVd&h*Qtx3B@1;cCQnyZd^)yK$v3Ua;iad><`<9*0ydpS--$d@S5G&T}x`amkGbYDf zI3Y?GaGk{Eqv8+*tT9mZ*Zu+bayk1L4KzLo5zhK@3x17I(m(MK0A2cG>5unpKX!b5 z6O^+ 1p z6uaM?6 `XC#8KW{#PWRFb{ zKz(la&)3jxb={T^a Ruc`yKzM3C~p2m0=rpJGQ;ZKmIaarIf@hC#gkr! z-QFOShJin24!ygvFs(uWIzze3+91^>tthSWOatT%^vBt~EChg5v4zmA|J|(W;LA{~ z!M|Aqz(c|7ydVe{q-`%0d;OQy`rhtUmNip5WDuHxx5okybFQW%#`uQWGBEWxqrs|& zaP#7B-Tyh*Zu0-{VDUSIg=137*Vc~z^RO#OhDVBJHrvzAnpBDD+O^fR7<)II<+Jrz zDms^27y}`gOUo2PWtJ+J)y{XtlcU3Nq5|b8vq+4kJlpb{j0vzn^4FG@gWgbl1odY- z!Vin45g-E#x`(0U1z7pBFs#DzGlOn~0|Brrz!3G}$&S@%eLb7E?YAE2wFBX37^W7t z4W%WFq_hUE4e)p|hBm+|Sg%EfxuG@(d*v+aoy3;Mecj&6V>D%}U1}a%b6A?vS3$HF z`{EhmfkuxlRbx&}NIHmF!j5+vTSXX6d@Ak}bLN?~t(DnLd?6%ek?aykQ-y<3YI3z;2(T ziaKHKE7^zx(_dCf6&PR2{%xEKnu+c^GVx{CKbx^14*5cW2Tt*kyy+Dr=O3uP+6`4n z%=}0)V0F8T6m>WL^=p;Yd&Z^Cvj%_FKlD+nCgHU&D>r|hqn)gJj0Xfrm+1g0uBpJi z1x5r)HPh!8IcK16SGxjIp&XEcy+4Qeu|F`hKpwEl(GW4rg|e*r2lwD>RJTSE4E;Dk zsb>g5(V<)~=t)~A%Nx{8jcKsjlM(WmB&5cIpz|*gkIgBPaasa>QhhmfE@9%`dFX8@ z-2V^G&Ikp7TY5^u?$?TE-=&q_CsIH@mM(tv8ij}AvwDvO112t_)lLTS>EFLU<-uNP z?w?s&ZSOUA@Azp`h6d F{C8j-}CV9T-4`Ed4X< z8wy_A3nWB<%hj`*1YaSh+>SsfvliIflQx>*WiUQLfN0Q?8ZUo!p8fn{Jho7?NHRQ{ z6qP+76ketTvDjuue<9}~76LrjC|x>0x6X@&N^FIWVG)zIh$49C-+uHRLi$w#HsifA z*T{RCf1k{kw*Vgds3Q%z{`FkTn>UA-c$*hbH!qAwK;o5rrRh!A@x8h)ky3K^DpR0= zPl=~R#xHaJ<@mfCw0ErJ_Qod+dl%e7&ssbjeaP@MDWK{={Y6!y$j;_=GX#H7ZZt2D z@DZU4MEV@wk|`6u4L^BQbaDPS$Q}+pt7sDI4fp1O^lBD#`qM+b7`ZX?+}=Miip|$o z`@ILIW@R&Jc&y<7v#FeAA|p_%Vt6p7y2Whlchrgf3q(EAf&uNQJlazQ=0H4vDZF!O z8{=YYkMv>A;U*cBJ;VF!FZ%xD^)WX<{{qt=_g>5XHd&?S%RFKF&bw;S|7ANzCrds} z+!Ntl|0sopR5|wAj7PG{`%QcE$RCPZY3guUT4CaV3!>m#T+Hl`1XbwP)x%+E6m6>n zJ)nE UdGWfU!(HDxns(bE)0|^7XfQ@nVq8Yq&0DOFzU6&8H4- zelEp^&)S4%M|Fw63vsi2klkP3U-oZ7&|`a;L9=;JIwC*-{(k*^pQvM)KQnS;j7X;L zm04dXfVDW|T%qu#%5^Krjz^Q6f!8ek`ot&nV zyh;GxWnD=_e2AI0L6uxJGdj!2D)U!Mf&JuK`OHUJ(Mv2ogUW<2SvoSBID6j1MbBR$ zcgC1wcofOJJ+|M6sZr!%C{r<5=AGjIrv=b};s~k>m5-~tf>q54WxoDa9g_L@AEpCV z&MQ!&W}V!M4Mzb?j?et37ZNlSdph34|7k^zZ)4X}koz1a#l}YvJy?BLQn2Kq^gNXk z4<0Gc@xXE~fefk>W;p@-TNsL1Mj~ZKK^bh{tHpUxz|UILHhr zq6*YMzSH+zT-;GNO&otc^4M|`H*~n_k>8et2fTR369Xmaki=ZsmiI^~n7grp?B}Uo zYw4pOug>BwSR(OYI$wigYUb^Omv7&WZTJ!;+tw-JYBfL43j`L057*>C#w_uREM|aa zu1>=_{Vid4J?@Yud5(n`R}CX5lb{L97-a=;pofR~J1hPeiDm_?JgVx@ckyDe8Uc*e zm&3O(ke$B<4UZ}L29NMGBc=2btJP_VGju5+*`31bE80IQqw;(yS7IUmIKCY#mj)L9 z9IIp5-XD80|0PfkvUW}K`QKD%j$FW>g;6|!WnsFN1)9Dv)H>iltlkw0G%2xvvzqG= z{JI>yxeZxcg&$~@XgvOASQaG_xFSj|BWS^r#u#}&{Y0Kx6$nhuL5OqZy71naZB~e| z&h6mIz<8QQe6ThZCkW;3wdo3eE{zPhyHN-)Tn_{A3XV+SfMnK>hPpq!RUlGcF~Smp zBo>^!x{{*mJYQHs_ju(S$Rf%=hmcaj1?;EQQ(!27{stv;tq`~Z oS_wM31uEj0wP!GNqah?oSX$-9 z!t9uBk3rpfAN4Z|h2u}p{?!PWPlBYQP<8H8#?B3XJQxq8<`X^jfixv~ni*C|p!{xt z5DZnaJIr4%a7_Mi=eGp306lk~H)(M50>oMMvYUAQXEX*VxA!XC`c1NVk&PT26!@#D z1Y>6U+RVvJ d*naT|D A0>mF1zv+@o>qBovBvI0CgxKrHP`|~te?P3+S7OewThpHQqxXeDZ6x $8~A{*`g`!?%kuh z7T1N!4G{qD64C**GmTngH2=B^f6qy7)6pOR9)r&RISPgJuRjho*(;`NPV?564JIS> zgDMkn8f)0ZjB>#4U^vvoP`f9w)J!zN98&p1s?ab}*PU)J#?GZm<+#>5Ex^iYh%z#Q z>q6J5J4er&l~1#tU#iz?9-JjY8o+@1CX)1Mi>6?hqFmeF6H8FUlrhyp3n5DYuli%# zsZtgL$!~XV>VfoDuV7ec#A2={S8#>ir_;uK&qq#tSvMTK+-)e 4|6$d?=euJoN(( zCfNruDE*J+QrwTdiz(GQ+8V|R%zE-nb1f})TL8+06? I($KiK^jIjn@ME0&@ zE0Mg6%Uk+{%V0j0l(jc;9O_-HCM<4Y>AEu4*FJ+lESAIa%1AFzr}z%caH2HmdsI z+L01U3xHAy3pEa(rGilgR>8%M%@pf{0BIsMMQAB77RFIX(E=XBPCx6(pgVA*VXcIn z#@wJSj?Ib(F6+#350oF0vthRXvCVvpoKp)(NXaY^0;>5>*vh(%E*pKYoa?K3EvdBd zU@%bg`vM#@OTzbb(~7;m7NDLFpD0h@Pu(hOS~JdKziMbASx~LHm-8nT0We&ig2l*O zf8&3qz2aXE0+n0?!^WEM#!IZ_iZ6zlO^c6>H%?kVu=q+9xCBC{1qRkKg3lRALt)t? zmmSNA6&PiG%#o<+{6!uvSg Q~U8Ch)k zTWq)=cyTPC&sT_&iUu*{=bT %)ECB)dUDtjK<5P4z4lY`H_5}{5K(rDi9T+O6aTIh*n8L3`y3EmCHrmU)Fn;C9 zhQOS`&?3^O3ynxHS-DI)XE)9m(jU_rsgr%GlrZx685!97trNdcG$l-X`ed=r(9E+v zczQ9F6EUu5Mcj00)Yd+oSQq3_fCW5y`1csG95%+A@ELUP+1QhfMFkPSc#vS|^jw0t z`ML`0EYJcUZ|^jqt7lNrVvxCOaDWH~AT9D`g(t@gQysbt=zSZ<=Is4vG9HoI!$M?h z@JQh|C0yCq1Be_%zHeJ9H?k+v_`Iv)=g%?QY?m7Jq>1IIIOu J5?B#d_oSX5TTDFBKMyba-}g`?(` zsb5n?#(&Q4p6O>DDv%wnQ&W?JHX0=RvK1IQ>; Fw{fdv0-HLaFnpsuttodR2(3lckOP8wl@d^T`H0BwAXz-56N+4`j6 z&pwa776ys@;pz3HB>>XiE&+Vk_V*ZCUyeDnGN)%l%C4?SxNdl)7(Z?q44~0(A=%D~ zs}N403_TF(zy_*;VjJUi_(8=+ND3 5`;6BGJooA;+JlOQPJ41KE;Q}i@F)hOJoi{B$IGX!^ zCiPa$H~GPMJy%LC$f=!|&`RYvs9!(4zF+vJo^=uqP^?(s$Y=rEDrsT1sHAMfi8nO! zslTlBP$`Uh;3F39evgFNb&j?7)%H7HfJukzV-e(?>Bt9H(3o-(ne7ov{O~CB-|U}Q zjHh}{=XBF}GP78;8;H%Pi#lBV3x{NfTqeP$TnLOAB&cX1T}TBLbXa~TsCnYM7&3rb z$FasSLc;{g0LWhP2qr~i`Dx7|(j?wnt7hL6uz`~h_jbs ?L3i%AbO~vLSxV(
QA=o$)x)%=rei&iCF&%GzLf=9qyh00 z*{;}$YbP;Lew*`gH~lyF02oqzNeZV2yd0=2DLGt-;Luj)VNBP-29+)oCheJUc67om zRyo{yFQ?9<6mr_oP-lusH-}bSNV5?BMaQb(w*J2Ih{lUAuu+4cp7ZmZR{=4H|ITI6 zRfc)@1L-$Q#`iY#oBlg5=eGZMUWiRTujXYQJJ<@0eaNgE)btc-c9brxlC`@Fe0@L7 z-wXj@*Lvq5m}+`1!GFNFj_ikR6=QAJ7-L|!L5UtGx7KNK>~DTZ)M#+`&d( m30qwd9Vl0||kL)l+1Owo|<8 z+<15HtUQ_-&L6(&+ox8y`Rka7m!)=Kd6Ct;_|@SK`_ZHt50~)wBF{VOakO6agJjP> zF6}+4i`g )`eR)37ty4iVvzJu_3&i9*+&U ^3(!h-VSJ&MC^W7{I@ 3}m8Z8VJ_xxwXtY6}vW9U+~ z6~BfqFTbJc#|*C6jNKy5O5<{;0phi<#J)dv6}X2#)!hkuCGsLx#*c(@?Qy;@iO71) zR;Tg^ochD-#cy({7uO|Ya{W{fmvIw4N-I0!^>{We@9f0Xh8okKhK`?^;B$};Q!JG- zIu@T%{5&Jmy dUZ=u$Zz=_;9L8Ni2g!vWRkgp0&^$xqH7>+##Y zoz~TI`pmRoccNKzt$NZN%a1YmE4X7?ivtY{j(9D?!0P;GZ{=X+1y{QhFHSuS;{xlM z+^N30Y;qT@NNgvpdr?~vO!lMBMfDXN{iW$;P6hmPkaJcce7$JSkW{5_#&x8x=G`dV z2i7R3pM2-V0!lgaBWf}_6Z|_ljYR_Je(g^D7nyz<2cI aZXcr$m64dh?HM2q6IN^?@iG012A6&1MFyMw>58Fm!}| z>d4=8>(GHw`7b6CvEJsxlm7aV26S0N1~M4an;&<%#$~A4M#TqWEgqkO3M#=eL9I*K zl}y!Etk1C0Q*Otpk0D?0&M9XOMp6{mBY~MY)u9{P#gh`}$KOnTq+NL`jHR1D;=z@} zVG;l+^JOJ~ZtYn<4R%5TTHP3cHe<)Zqtgy#zW%q8n OU%a0=E*Gv2vvP!vW+K411yb4(8O@>`6aS75E=}QNMyfA?!Cf7_4+36 z+}vsa4(|tQP0Mi}S_j8fCUVH!JaUHMHq^^ij(;m`Z8#c-uLB82xRX?1fircu8SP)c z!mMN&ILigdCh_N6Kqf_ZnSr& z2S*Tu{L_|MNQG(2HoX@n epX v9U6(bB4u5jgH {T8dD* Gq7<>ASSoVtPFqQ3SVca*fc2ZsZ+>zeJt>~6#whq z_2U;e8jI)7nkju(&{CiirI$5<_jbL7u6BL5Uu3e}2k1>arfO61(N$Y=CPOU1Ijr{V zB4xu96dq3{{qTJz7ev(rl6)FI>^?OmdD??89_ugJI5VvRKp9g%8_4jW=`d_NETu2% zme^e@`0H^;R9fwrhDewW;7hBEFf*VJG%dvoWe!RTzY=*<-gg&UTIk%XnL$(bcREL- zM=>r!E;4a9F7#Fr90+*m{du5wj0+ggxAP&%scrUfm4i+wsn@CFJ##!Ey|77=gH>9vOUC+`Hw1@v|bDRqD z;}5|mj$J1G06+_|?)vF>uxJpVvB1je;{0l6G)vPdcFd y*zRlkvW~$L< z!2q&_eCn^yq1}cMx@j|biC`nN8#>fGEq~GamWuXkcL9Bjy&E0snP{2QGCelc!rAIP z=21xl?AF~k&FQfS)DIM;@`@*x=P&rF(_dtzqizX=+rGNOAxm##O#MC}-(=2aVK9_K zAERI%o4$8D@HCJs{yEfDvey>2TBivGA}h5hVI{Z-&b|xFTlehdVK0g$jW%4H8*bWe zJxfHOv@bM|zTXti&GLRbSoZq&^kQ)P+_|&2wz(omkB?K$k?Vt}TUYX5!C;ND_ !hU7=SaA-q@gNBVph6x C>nA z0GYi$jw@2FN9nDUtYT)j38=r#MUmcaNr5)~b%*5SPu5+z{PybnsCD}>M)aFZc{qgu zb2LkyrXtr_FzE2Vl-Sw5!9zacs*;S0%7X(fs!-+To1UXZzvG?I0&L(ap^$ApD|vdA z$MOim^H~DOcVh!-kigZXHac^5_vcU^%NrON)hHj?-I~MA@|PyFuiDJ!dD@1DfPu}4 z?+T$JP;Z#zqQQ=4aHF>e*uO}-3d6PV0j3lN2*1D}+*(yN%tQ}u8hFmUn&oCR1pw#i zuaFDq)8|eKseX02(qLhQ!q9v`bN=PIa;r^eYjR==0JK`_P^AzOVK`nQ{{h!~=S*zx zB{V#;!hCy$Gh7im1Rfb~2hFwfsKNekc;_WN_+8g;u_5CU9V>g<@D9m^u|H`zolZZs z9JVl=!Po%1C%@e`@6rk%QsoagC?EpUD)7X9`-sJeV7=2oCKH5tLvbLLNGSZoMf<{( zV1j@6;FsmrXbImD6l2P!xJCHY@G6i1jRNP1GKKl9^7CK*k*_`?0$TgO)m~iA&JCvA zm+Pt3)ZQ*?xu}=%E$noFN*upHF2U>j07d@sX_aZg3*6clhFRxhMdxQE%S7Tw16MZ} z1Zs`hMfI->eXpNi`WHa1!5NZ=OVYL=Yb B3ie`t@-dsR>H6#Y#T!!0$%>2Q?IRXIuXz9N7~ zQEIsIKbu@}Ig*p3jnI;&D_GLtV9ZsOkZ`Hhz}6KEEx0R>k8PfS2 ^w0Bs@$WOH>TeEPF$-f`$Mw9_D(0oS6& z!fc+j?mkJpS^W!LSP0PHPmVE7ISN0aX?I0AzG1V4&z6Q}J0&A@{`US)9lGA0XXgv> zQAB+2go39~sZ;B;IM_RI(E24z`~k+Q! N`@H$P`V5 zo=(Vh)Ap{6UbB;wh`zEpPe|pVhgFGT{7+4p(3Twbv=6!=u)U66{)IUy=g1rfqsPIL z{I4#UGlI_UpZX1&2tK 4#8=&y@0WU_UmvEB88u3Q zg+9LX;Q~)Z4=arNwcK5z#YR8nIy~5eLq&JR6t=T~glK%lbsjIt__XKuk!XTE2kqru z(ZxHKfp6X8KTkgoKY8VM_%wb304T3a_VI4u)<{NCWf mmoU;mJV8 z)+%9wttD=m6lV5-T5^60he6CGILAAihy2hE@9qb&4hMee&|ZG&)ROc@b6gF{ru))W z8=#QjBRV9ex=Z^Rc$f!K`=}+KPa*!$UMdFDATb>PAT=5${tw|_VF=iO#|(xxVKH}h zmF<>s^dW(o!m6Rv;_O70ZKTOlkU)p`W4-y+Vv+qkd$E@>WjGHGDx`B$e&<7q-P^@G zklKY3{Vxr+FxaP5%bKMFnz9b?DTOoP3q(+#bcnllvu3G vwt_frD48lwaI04$qK_l z35~A{r77}W8a!dc1Cw=ucYigCVqp+~Proepkg6p2*S`da=*ZN 9zlky+kKvH?XvLJL6zz?=^K-t96@keh*T`a7j) {yxN} z#7BPZ!f*^WMLaJU%@uxM1nsX_%dwJ>;Qne<-Q(?e|2hlu>8g3&$@!#m{zoYX4}U+J zgpp6Aq7nl!JiJT!L9<+M+>DBJ?E<#;1w5GuY53a4CQL#RMD(oW(X5oj968GS&2%GW zuH6>sL-}8-;!k65-`pniQTa^NE_d(3|Ji3y`+kjzkv}+*akNNiZ2wigec?Y2y7|uH zK1K3f=bFy^!sUC9-T%pIv)mN=miE*+-yhJdQBi#n cJmgR z1ozVt9CfE-LWk?qvV<*OL@@Gj;|BXdlN@norN ZWX-dnt@|ySn>KNDT z1=*>;?B)K2k%)sHOSv`bs9^1C$Sjumg8A*C`cD8{H~YmFT0ij%r^&}$(;qd$J?e@H zzdpVoUa#8B8A1R%Aoktxb;tWaDIBy2;Jhq*p~DEex|E<`>olDa^