From b12b68c31a19affb6ce61cde6dc257dde3743757 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 19:31:52 +0800 Subject: [PATCH 01/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 815f2be..e303def 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -40,7 +40,8 @@ import net.micode.notes.tool.DataUtils; import java.io.IOException; -public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener { +public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener //AlarmAlertActivity类实现了OnClickListener, OnDismissListener两个接口,OnClickListener接口用于处理点击事件,当用户点击了界面上的某个视图时,会调用相应的点击事件处理方法。在AlarmAlertActivity中,通过实现OnClickListener接口,可以监听用户对界面上的按钮或其他可点击视图的点击事件,并根据需要进行相应的处理。OnDismissListener接口用于处理对话框消失事件。当一个对话框被关闭或隐藏时,会调用相应的消失事件处理方法。在AlarmAlertActivity中,通过实现OnDismissListener接口,可以监听闹钟提醒对话框的消失事件,并在对话框消失后执行相应的操作。通过实现这两个接口,AlarmAlertActivity可以监听界面上的点击事件和闹钟提醒对话框的消失事件,并在相应事件发生时执行相应的逻辑操作。 +{ private long mNoteId; //文本在数据库存储中的ID号 private String mSnippet; private static final int SNIPPET_PREW_MAX_LEN = 60; From 6d0f7319090e1140981e303bb2e3c21bd4a66ba7 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 19:33:09 +0800 Subject: [PATCH 02/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index e303def..cced5b5 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -43,7 +43,7 @@ import java.io.IOException; public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener //AlarmAlertActivity类实现了OnClickListener, OnDismissListener两个接口,OnClickListener接口用于处理点击事件,当用户点击了界面上的某个视图时,会调用相应的点击事件处理方法。在AlarmAlertActivity中,通过实现OnClickListener接口,可以监听用户对界面上的按钮或其他可点击视图的点击事件,并根据需要进行相应的处理。OnDismissListener接口用于处理对话框消失事件。当一个对话框被关闭或隐藏时,会调用相应的消失事件处理方法。在AlarmAlertActivity中,通过实现OnDismissListener接口,可以监听闹钟提醒对话框的消失事件,并在对话框消失后执行相应的操作。通过实现这两个接口,AlarmAlertActivity可以监听界面上的点击事件和闹钟提醒对话框的消失事件,并在相应事件发生时执行相应的逻辑操作。 { private long mNoteId; //文本在数据库存储中的ID号 - private String mSnippet; + private String mSnippet;//闹钟提示时出现的文本片段 private static final int SNIPPET_PREW_MAX_LEN = 60; MediaPlayer mPlayer; From 916fca29e7acd14349b90b509178e8c603fa38d7 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 19:34:40 +0800 Subject: [PATCH 03/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index cced5b5..07b7b5a 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -43,7 +43,7 @@ import java.io.IOException; public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener //AlarmAlertActivity类实现了OnClickListener, OnDismissListener两个接口,OnClickListener接口用于处理点击事件,当用户点击了界面上的某个视图时,会调用相应的点击事件处理方法。在AlarmAlertActivity中,通过实现OnClickListener接口,可以监听用户对界面上的按钮或其他可点击视图的点击事件,并根据需要进行相应的处理。OnDismissListener接口用于处理对话框消失事件。当一个对话框被关闭或隐藏时,会调用相应的消失事件处理方法。在AlarmAlertActivity中,通过实现OnDismissListener接口,可以监听闹钟提醒对话框的消失事件,并在对话框消失后执行相应的操作。通过实现这两个接口,AlarmAlertActivity可以监听界面上的点击事件和闹钟提醒对话框的消失事件,并在相应事件发生时执行相应的逻辑操作。 { private long mNoteId; //文本在数据库存储中的ID号 - private String mSnippet;//闹钟提示时出现的文本片段 + private String mSnippet;//闹钟提示时出现的文本片段。 private static final int SNIPPET_PREW_MAX_LEN = 60; MediaPlayer mPlayer; From 314a51eefdd82891877076ef8d4a42b0dab4b678 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 19:41:47 +0800 Subject: [PATCH 04/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 07b7b5a..3b7dc4c 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -44,8 +44,8 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD { private long mNoteId; //文本在数据库存储中的ID号 private String mSnippet;//闹钟提示时出现的文本片段。 - private static final int SNIPPET_PREW_MAX_LEN = 60; - MediaPlayer mPlayer; + private static final int SNIPPET_PREW_MAX_LEN = 60;// 文本片段预览的最大长度 + MediaPlayer mPlayer;// 媒体播放器 @Override protected void onCreate(Bundle savedInstanceState) { From f52b55c79cf4d784aa27b09c7feb2dc8b5cec79c Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 19:55:16 +0800 Subject: [PATCH 05/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 3b7dc4c..01db613 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -48,7 +48,8 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD MediaPlayer mPlayer;// 媒体播放器 @Override - protected void onCreate(Bundle savedInstanceState) { + protected void onCreate(Bundle savedInstanceState) //当一个Activity被创建时系统会调用该的onCreate()方法,在onCreate()方法的参数savedInstanceState是一个Bundle对象,用于保存Activity的状态。当Activity因为某种原因(例如屏幕旋转、内存不足等)被销毁时,系统会将Activity的状态保存在savedInstanceState中。当Activity重新创建时,系统会将savedInstanceState传递给onCreate()方法,以便恢复之前保存的状态。 + { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); From 56b74e3215183ebfe1258c4b102c2393021c199c Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 20:37:33 +0800 Subject: [PATCH 06/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 01db613..ae3b9e9 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -51,10 +51,10 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD protected void onCreate(Bundle savedInstanceState) //当一个Activity被创建时系统会调用该的onCreate()方法,在onCreate()方法的参数savedInstanceState是一个Bundle对象,用于保存Activity的状态。当Activity因为某种原因(例如屏幕旋转、内存不足等)被销毁时,系统会将Activity的状态保存在savedInstanceState中。当Activity重新创建时,系统会将savedInstanceState传递给onCreate()方法,以便恢复之前保存的状态。 { super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_NO_TITLE); + requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题栏 final Window win = getWindow(); - win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); + win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);// 在锁屏状态下显示窗口 if (!isScreenOn()) { win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON From 091862688760157affa3121ec718240c64df0199 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 20:58:29 +0800 Subject: [PATCH 07/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index ae3b9e9..8252643 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -56,11 +56,14 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);// 在锁屏状态下显示窗口 - if (!isScreenOn()) { - win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON - | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON - | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON - | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); + if (!isScreenOn()) // 如果屏处于关闭状态,设置一些窗口标志来保持屏幕亮起 + { + win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON//保持屏幕亮起的标志,表示在该窗口下,保持屏幕处于亮屏状态。 + | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON//点亮屏幕的标志,表示在该窗口下,当窗口显示时,点亮屏幕。 + + | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON//在屏幕亮起时允许锁定的标志,表示在该窗口下,允许用户在屏幕亮起时锁定屏幕。 + + | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);//布局插入装饰的标志,表示在该窗口下,窗口的布局可以延伸到系统装饰的边缘。 } Intent intent = getIntent(); From 6e4da68bd0e01363cf7b89a36e777239c73b3b7c Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 21:06:13 +0800 Subject: [PATCH 08/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 8252643..3f9c93a 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -64,13 +64,16 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON//在屏幕亮起时允许锁定的标志,表示在该窗口下,允许用户在屏幕亮起时锁定屏幕。 | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);//布局插入装饰的标志,表示在该窗口下,窗口的布局可以延伸到系统装饰的边缘。 - } + + }//用于在创建Activity时设置窗口标志,以确保在显示闹钟提醒界面时,屏幕保持亮起,并且在锁屏状态下仍然显示窗口。这样可以确保用户能够及时看到闹钟提醒的内容。 Intent intent = getIntent(); try { + // 从传递的Intent中获取文本的ID号,并获取对应的文本片段 mNoteId = Long.valueOf(intent.getData().getPathSegments().get(1)); mSnippet = DataUtils.getSnippetById(this.getContentResolver(), mNoteId); + // 如果文本片段长度超过预设的最大长度,截取一部分,并添加提示信息 mSnippet = mSnippet.length() > SNIPPET_PREW_MAX_LEN ? mSnippet.substring(0, SNIPPET_PREW_MAX_LEN) + getResources().getString(R.string.notelist_string_info) : mSnippet; From fc194994c94c8d708cbf2669c4099c91304328e3 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 21:10:34 +0800 Subject: [PATCH 09/48] Signed-off-by: rtc --- .../net/micode/notes/ui/AlarmAlertActivity.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 3f9c93a..0de3221 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -78,16 +78,17 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD SNIPPET_PREW_MAX_LEN) + getResources().getString(R.string.notelist_string_info) : mSnippet; } catch (IllegalArgumentException e) { - e.printStackTrace(); - return; + e.printStackTrace();// 打印异常信息 + return;// 结束方法的执行 } - mPlayer = new MediaPlayer(); - if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) { - showActionDialog(); - playAlarmSound(); + mPlayer = new MediaPlayer(); // 创建一个媒体播放器对象 + if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) // 如果文本在数据库中可见 + { + showActionDialog();// 显示操作对话框 + playAlarmSound(); // 播放闹钟声音 } else { - finish(); + finish();// 结束当前Activity } } From ccecddbfbb82f38eabe084a2dcf23adccc4aa64b Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 21:14:17 +0800 Subject: [PATCH 10/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 0de3221..87e3459 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -91,10 +91,13 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD finish();// 结束当前Activity } } - + /** + * 判断屏幕是否处于亮状态。 + * @return true表示屏幕处于亮屏状态,false表示屏幕处于关闭状态 + */ private boolean isScreenOn() { PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); - return pm.isScreenOn(); + return pm.isScreenOn(); // 返回屏幕是否处于亮屏状态 } private void playAlarmSound() { From c50348bbc28a2e655e8a58bd87b3761ce09ed6f6 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 21:15:31 +0800 Subject: [PATCH 11/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 87e3459..356504e 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -99,12 +99,14 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); return pm.isScreenOn(); // 返回屏幕是否处于亮屏状态 } - + /** + * 播放闹钟音。 + */ private void playAlarmSound() { - Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM); + Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM);// 获取闹钟铃声的URI int silentModeStreams = Settings.System.getInt(getContentResolver(), - Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); + Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);// 获取当前静音模式下影响铃声的流 if ((silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0) { mPlayer.setAudioStreamType(silentModeStreams); From 9550957927aaa40b581bcd35a3903a803e6bf079 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 13 Dec 2023 21:20:12 +0800 Subject: [PATCH 12/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 356504e..978a39c 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -104,13 +104,15 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD */ private void playAlarmSound() { Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM);// 获取闹钟铃声的URI - + //这里的流都是音频流 int silentModeStreams = Settings.System.getInt(getContentResolver(), Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);// 获取当前静音模式下影响铃声的流 - if ((silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0) { + if ((silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0) // 如果静音模式下影响铃声的流中包含闹钟铃声流,设置媒体播放器的音频流为静音模式下影响铃声的流 + { mPlayer.setAudioStreamType(silentModeStreams); - } else { + } else// 否则,设置媒体播放器的音频流为闹钟铃声流 + { mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); } try { From 5092d1458c3214b86284e0a658c0a57458b8b241 Mon Sep 17 00:00:00 2001 From: rtc Date: Thu, 14 Dec 2023 19:14:41 +0800 Subject: [PATCH 13/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 978a39c..2b18f9e 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -116,7 +116,7 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); } try { - mPlayer.setDataSource(this, url); + mPlayer.setDataSource(this, url);// 设置媒体放器的数据源为闹钟铃声的URI mPlayer.prepare(); mPlayer.setLooping(true); mPlayer.start(); From b7dfe3a9fbc6f8e6af00367f26075d6cffb7f84c Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:10:52 +0800 Subject: [PATCH 14/48] Signed-off-by: rtc --- .../micode/notes/ui/AlarmAlertActivity.java | 51 +++++++++---------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index 2b18f9e..c23280e 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -116,43 +116,39 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); } try { - mPlayer.setDataSource(this, url);// 设置媒体放器的数据源为闹钟铃声的URI - mPlayer.prepare(); - mPlayer.setLooping(true); - mPlayer.start(); - } catch (IllegalArgumentException e) { - // TODO Auto-generated catch block + mPlayer.setDataSource(this, url); // 设置媒体放器的数据源为闹钟铃声的URI + mPlayer.prepare(); // 准备异步播放 + mPlayer.setLooping(true); // 设置循环播放 + mPlayer.start(); // 开始播放 + } catch (IllegalArgumentException e) { // 处理参数异常 e.printStackTrace(); - } catch (SecurityException e) { - // TODO Auto-generated catch block + } catch (SecurityException e) { // 处理安全异常 e.printStackTrace(); - } catch (IllegalStateException e) { - // TODO Auto-generated catch block + } catch (IllegalStateException e) { // 处理状态异常 e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block + } catch (IOException e) { // 处理IO异常 e.printStackTrace(); } } private void showActionDialog() { AlertDialog.Builder dialog = new AlertDialog.Builder(this); - dialog.setTitle(R.string.app_name); - dialog.setMessage(mSnippet); - dialog.setPositiveButton(R.string.notealert_ok, this); - if (isScreenOn()) { - dialog.setNegativeButton(R.string.notealert_enter, this); + dialog.setTitle(R.string.app_name); // 设置对话框标题 + dialog.setMessage(mSnippet); // 设置对话框消息内容 + dialog.setPositiveButton(R.string.notealert_ok, this); // 设置对话框的确定按钮和点击事件 + if (isScreenOn()) { // 判断屏幕是否亮屏 + dialog.setNegativeButton(R.string.notealert_enter, this); // 设置对话框的取消按钮和点击事件 } - dialog.show().setOnDismissListener(this); + dialog.show().setOnDismissListener(this); // 显示对话框,并设置对话框消失时的监听器 } public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_NEGATIVE: - Intent intent = new Intent(this, NoteEditActivity.class); - intent.setAction(Intent.ACTION_VIEW); - intent.putExtra(Intent.EXTRA_UID, mNoteId); - startActivity(intent); + Intent intent = new Intent(this, NoteEditActivity.class); // 创建一个Intent对象,跳转到NoteEditActivity + intent.setAction(Intent.ACTION_VIEW); // 设置Intent的操作为查看操作 + intent.putExtra(Intent.EXTRA_UID, mNoteId); // 设置Intent的额外数据 + startActivity(intent); // 启动Activity break; default: break; @@ -160,15 +156,14 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD } public void onDismiss(DialogInterface dialog) { - stopAlarmSound(); - finish(); + stopAlarmSound(); // 停止播放铃声 + finish(); // 结束当前Activity } - private void stopAlarmSound() { if (mPlayer != null) { - mPlayer.stop(); - mPlayer.release(); - mPlayer = null; + mPlayer.stop(); // 停止播放 + mPlayer.release(); // 释放资源 + mPlayer = null; // 置空 } } } From d9a3172f160bd95bea6a103d1d3a3697e05e81e0 Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:11:13 +0800 Subject: [PATCH 15/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/AlarmAlertActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java index c23280e..fa4344a 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -163,7 +163,7 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD if (mPlayer != null) { mPlayer.stop(); // 停止播放 mPlayer.release(); // 释放资源 - mPlayer = null; // 置空 + mPlayer = null; // 置空。 } } } From 81c70a8822032a197172c2c9be9f859bd05e7e6e Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:18:43 +0800 Subject: [PATCH 16/48] Signed-off-by: rtc --- .../micode/notes/ui/AlarmInitReceiver.java | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmInitReceiver.java b/src/Notes-master/src/net/micode/notes/ui/AlarmInitReceiver.java index f221202..d587094 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmInitReceiver.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmInitReceiver.java @@ -30,36 +30,43 @@ import net.micode.notes.data.Notes.NoteColumns; public class AlarmInitReceiver extends BroadcastReceiver { - private static final String [] PROJECTION = new String [] { - NoteColumns.ID, - NoteColumns.ALERTED_DATE + // 查询备忘录的投影 + private static final String[] PROJECTION = new String[] { + NoteColumns.ID, + NoteColumns.ALERTED_DATE }; - private static final int COLUMN_ID = 0; - private static final int COLUMN_ALERTED_DATE = 1; - + // 列索引 + private static final int COLUMN_ID = 0; + private static final int COLUMN_ALERTED_DATE = 1; @Override public void onReceive(Context context, Intent intent) { + // 获取当前时间 long currentDate = System.currentTimeMillis(); + // 查询所有需要提醒的备忘录 Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI, PROJECTION, NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE, - new String[] { String.valueOf(currentDate) }, + new String[]{String.valueOf(currentDate)}, null); if (c != null) { if (c.moveToFirst()) { do { + // 获取提醒时间和备忘录的ID long alertDate = c.getLong(COLUMN_ALERTED_DATE); + long noteId = c.getLong(COLUMN_ID); + // 创建一个发送广播的Intent,并设置数据为备忘录的URI Intent sender = new Intent(context, AlarmReceiver.class); - sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID))); + sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId)); + // 创建一个PendingIntent,用于发送广播 PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0); - AlarmManager alermManager = (AlarmManager) context - .getSystemService(Context.ALARM_SERVICE); - alermManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent); + // 获取AlarmManager实例,并设置提醒时间和发送广播的PendingIntent + AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); + alarmManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent); } while (c.moveToNext()); } c.close(); } } -} +} \ No newline at end of file From 6efbc372d08b38e1a1a93c1fc1accb547e17bc1f Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:19:12 +0800 Subject: [PATCH 17/48] Signed-off-by: rtc --- src/Notes-master/src/net/micode/notes/ui/AlarmReceiver.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmReceiver.java b/src/Notes-master/src/net/micode/notes/ui/AlarmReceiver.java index 54e503b..fd8af6f 100644 --- a/src/Notes-master/src/net/micode/notes/ui/AlarmReceiver.java +++ b/src/Notes-master/src/net/micode/notes/ui/AlarmReceiver.java @@ -23,8 +23,11 @@ import android.content.Intent; public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + // 创建一个新的Intent对象,将目标Activity设置为AlarmAlertActivity intent.setClass(context, AlarmAlertActivity.class); + // 添加标志FLAG_ACTIVITY_NEW_TASK,以确保启动Activity时具有新的任务栈 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + // 启动目标Activity context.startActivity(intent); } -} +} \ No newline at end of file From 5acd89ef213c71b407f7405b88b87903418ecefb Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:22:40 +0800 Subject: [PATCH 18/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/DateTimePicker.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 496b0cd..e808632 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -30,22 +30,35 @@ import android.widget.NumberPicker; public class DateTimePicker extends FrameLayout { + // 默认启用状态 private static final boolean DEFAULT_ENABLE_STATE = true; + // 一半天的小时数 private static final int HOURS_IN_HALF_DAY = 12; + // 一天的小时数 private static final int HOURS_IN_ALL_DAY = 24; + // 一周的天数 private static final int DAYS_IN_ALL_WEEK = 7; + // 日期选择器的最小值 private static final int DATE_SPINNER_MIN_VAL = 0; + // 日期选择器的最大值 private static final int DATE_SPINNER_MAX_VAL = DAYS_IN_ALL_WEEK - 1; + // 24小时制时钟的小时选择器的最小值 private static final int HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW = 0; + // 24小时制时钟的小时选择器的最大值 private static final int HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW = 23; + // 12小时制时钟的小时选择器的最小值 private static final int HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW = 1; + // 12小时制时钟的小时选择器的最大值 private static final int HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW = 12; + // 分钟选择器的最小值 private static final int MINUT_SPINNER_MIN_VAL = 0; + // 分钟选择器的最大值 private static final int MINUT_SPINNER_MAX_VAL = 59; + // 上午/下午选择器的最小值 private static final int AMPM_SPINNER_MIN_VAL = 0; + // 上午/下午选择器的最大值 private static final int AMPM_SPINNER_MAX_VAL = 1; - private final NumberPicker mDateSpinner; private final NumberPicker mHourSpinner; private final NumberPicker mMinuteSpinner; From 565eb76b201bc71e44b735fb7c6323bfa648f889 Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:23:05 +0800 Subject: [PATCH 19/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index e808632..2ee515f 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -59,24 +59,23 @@ public class DateTimePicker extends FrameLayout { private static final int AMPM_SPINNER_MIN_VAL = 0; // 上午/下午选择器的最大值 private static final int AMPM_SPINNER_MAX_VAL = 1; - private final NumberPicker mDateSpinner; - private final NumberPicker mHourSpinner; - private final NumberPicker mMinuteSpinner; - private final NumberPicker mAmPmSpinner; - private Calendar mDate; + private final NumberPicker mDateSpinner; // 日期选择器控件 + private final NumberPicker mHourSpinner; // 小时选择器控件 + private final NumberPicker mMinuteSpinner; // 分钟选择器控件 + private final NumberPicker mAmPmSpinner; // 上午/下午选择器控件 + private Calendar mDate; // 当前日期时间 - private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK]; + private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK]; // 一周的日期显示值 - private boolean mIsAm; + private boolean mIsAm; // 当前是否为上午 - private boolean mIs24HourView; + private boolean mIs24HourView; // 是否为24小时制显示 - private boolean mIsEnabled = DEFAULT_ENABLE_STATE; + private boolean mIsEnabled = DEFAULT_ENABLE_STATE; // 是否启用选择器的状态,默认为启用 - private boolean mInitialising; - - private OnDateTimeChangedListener mOnDateTimeChangedListener; + private boolean mInitialising; // 是否正在初始化 + private OnDateTimeChangedListener mOnDateTimeChangedListener; // 日期时间变化监听器 private NumberPicker.OnValueChangeListener mOnDateChangedListener = new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { From 21d3a02be1524b3d9e23ae591914946297b7dc3b Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:24:17 +0800 Subject: [PATCH 20/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/DateTimePicker.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 2ee515f..141f670 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -79,8 +79,11 @@ public class DateTimePicker extends FrameLayout { private NumberPicker.OnValueChangeListener mOnDateChangedListener = new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + // 计算日期差值并更新日期 mDate.add(Calendar.DAY_OF_YEAR, newVal - oldVal); + // 更新日期选择器控件 updateDateControl(); + // 触发日期时间变化监听器 onDateTimeChanged(); } }; @@ -91,6 +94,7 @@ public class DateTimePicker extends FrameLayout { boolean isDateChanged = false; Calendar cal = Calendar.getInstance(); if (!mIs24HourView) { + // 处理上午/下午切换时的日期变化 if (!mIsAm && oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, 1); @@ -100,12 +104,14 @@ public class DateTimePicker extends FrameLayout { cal.add(Calendar.DAY_OF_YEAR, -1); isDateChanged = true; } + // 处理上午/下午切换时的上午/下午选择器更新 if (oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY || oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { mIsAm = !mIsAm; updateAmPmControl(); } } else { + // 处理24小时制下的日期变化 if (oldVal == HOURS_IN_ALL_DAY - 1 && newVal == 0) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, 1); @@ -116,9 +122,11 @@ public class DateTimePicker extends FrameLayout { isDateChanged = true; } } + // 更新小时,并触发日期时间变化监听器 int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY + (mIsAm ? 0 : HOURS_IN_HALF_DAY); mDate.set(Calendar.HOUR_OF_DAY, newHour); onDateTimeChanged(); + // 如果日期发生了变化,更新年、月、日 if (isDateChanged) { setCurrentYear(cal.get(Calendar.YEAR)); setCurrentMonth(cal.get(Calendar.MONTH)); @@ -126,7 +134,6 @@ public class DateTimePicker extends FrameLayout { } } }; - private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { From e1447d793ddc318048f3e6d5697bcfc4eb8abf6b Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:26:18 +0800 Subject: [PATCH 21/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 141f670..417b563 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -137,29 +137,29 @@ public class DateTimePicker extends FrameLayout { private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { - int minValue = mMinuteSpinner.getMinValue(); - int maxValue = mMinuteSpinner.getMaxValue(); - int offset = 0; - if (oldVal == maxValue && newVal == minValue) { - offset += 1; - } else if (oldVal == minValue && newVal == maxValue) { - offset -= 1; + int minValue = mMinuteSpinner.getMinValue(); // 获取分钟选择器的最小值 + int maxValue = mMinuteSpinner.getMaxValue(); // 获取分钟选择器的最大值 + int offset = 0; // 偏移量,用于处理分钟的循环 + if (oldVal == maxValue && newVal == minValue) { // 判断是否从最大值切换到最小值 + offset += 1; // 如果是,则偏移量加1 + } else if (oldVal == minValue && newVal == maxValue) { // 判断是否从最小值切换到最大值 + offset -= 1; // 如果是,则偏移量减1 } - if (offset != 0) { - mDate.add(Calendar.HOUR_OF_DAY, offset); - mHourSpinner.setValue(getCurrentHour()); - updateDateControl(); - int newHour = getCurrentHourOfDay(); - if (newHour >= HOURS_IN_HALF_DAY) { - mIsAm = false; - updateAmPmControl(); + if (offset != 0) { // 如果偏移量不为0,表示分钟发生了循环 + mDate.add(Calendar.HOUR_OF_DAY, offset); // 更新小时的值 + mHourSpinner.setValue(getCurrentHour()); // 更新小时选择器的值 + updateDateControl(); // 更新日期选择器控件 + int newHour = getCurrentHourOfDay(); // 获取当前小时 + if (newHour >= HOURS_IN_HALF_DAY) { // 如果当前小时大于等于一半天的小时数 + mIsAm = false; // 设置为下午 + updateAmPmControl(); // 更新上午/下午选择器控件 } else { - mIsAm = true; - updateAmPmControl(); + mIsAm = true; // 设置为上午 + updateAmPmControl(); // 更新上午/下午选择器控件 } } - mDate.set(Calendar.MINUTE, newVal); - onDateTimeChanged(); + mDate.set(Calendar.MINUTE, newVal); // 更新分钟的值 + onDateTimeChanged(); // 触发日期时间变化监听器 } }; From 0d0d2c7eb5b535a48e1bc63ffc59ae8a64214e44 Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:28:35 +0800 Subject: [PATCH 22/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/DateTimePicker.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 417b563..0245a19 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -166,17 +166,16 @@ public class DateTimePicker extends FrameLayout { private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { - mIsAm = !mIsAm; - if (mIsAm) { - mDate.add(Calendar.HOUR_OF_DAY, -HOURS_IN_HALF_DAY); - } else { - mDate.add(Calendar.HOUR_OF_DAY, HOURS_IN_HALF_DAY); + mIsAm = !mIsAm; // 切换上午/下午的状态 + if (mIsAm) { // 如果切换为上午 + mDate.add(Calendar.HOUR_OF_DAY, -HOURS_IN_HALF_DAY); // 将当前时间减去半天的小时数 + } else { // 如果切换为下午 + mDate.add(Calendar.HOUR_OF_DAY, HOURS_IN_HALF_DAY); // 将当前时间加上半天的小时数 } - updateAmPmControl(); - onDateTimeChanged(); + updateAmPmControl(); // 更新上午/下午选择器控件 + onDateTimeChanged(); // 触发日期时间变化监听器 } }; - public interface OnDateTimeChangedListener { void onDateTimeChanged(DateTimePicker view, int year, int month, int dayOfMonth, int hourOfDay, int minute); From 6bdfc908d782cee50e6080783cc7711cc03150ea Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:32:14 +0800 Subject: [PATCH 23/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 0245a19..573269c 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -177,14 +177,35 @@ public class DateTimePicker extends FrameLayout { } }; public interface OnDateTimeChangedListener { - void onDateTimeChanged(DateTimePicker view, int year, int month, - int dayOfMonth, int hourOfDay, int minute); + /** + * 当日期时间发生变化时调用 + * + * @param view 当前的 DateTimePicker 对象 + * @param year 年份 + * @param month 月份,范围为 0-11,0 表示一月 + * @param dayOfMonth 日期 + * @param hourOfDay 小时,根据是否为 24 小时制可能为 0-23 或 1-12 + * @param minute 分钟 + */ + void onDateTimeChanged(DateTimePicker view, int year, int month, int dayOfMonth, int hourOfDay, int minute); } + /** + * 构造方法,创建一个 DateTimePicker 对象,并将当前时间设置为系统当前时间 + * + * @param context 上下文环境 + */ public DateTimePicker(Context context) { this(context, System.currentTimeMillis()); } + /** + * 构造方法,创建一个 DateTimePicker 对象,并设置指定的日期时间和小时制 + * + * @param context 上下文环境 + * @param date 指定的日期时间,以毫秒为单位 + * @param is24HourView 是否为 24 小时制显示 + */ public DateTimePicker(Context context, long date) { this(context, date, DateFormat.is24HourFormat(context)); } From ac15266fce627d9ef2993cc8ac9ce9a779018792 Mon Sep 17 00:00:00 2001 From: rtc Date: Mon, 18 Dec 2023 19:37:33 +0800 Subject: [PATCH 24/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 77 +++++++++---------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 573269c..54a8778 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -211,46 +211,43 @@ public class DateTimePicker extends FrameLayout { } public DateTimePicker(Context context, long date, boolean is24HourView) { - super(context); - mDate = Calendar.getInstance(); - mInitialising = true; - mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY; - inflate(context, R.layout.datetime_picker, this); - - mDateSpinner = (NumberPicker) findViewById(R.id.date); - mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL); - mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); - mDateSpinner.setOnValueChangedListener(mOnDateChangedListener); - - mHourSpinner = (NumberPicker) findViewById(R.id.hour); - mHourSpinner.setOnValueChangedListener(mOnHourChangedListener); - mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); - mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL); - mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL); - mMinuteSpinner.setOnLongPressUpdateInterval(100); - mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener); - - String[] stringsForAmPm = new DateFormatSymbols().getAmPmStrings(); - mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm); - mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL); - mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL); - mAmPmSpinner.setDisplayedValues(stringsForAmPm); - mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener); - - // update controls to initial state - updateDateControl(); - updateHourControl(); - updateAmPmControl(); - - set24HourView(is24HourView); - - // set to current time - setCurrentDate(date); - - setEnabled(isEnabled()); - - // set the content descriptions - mInitialising = false; + super(context); // 调用父类的构造方法 + mDate = Calendar.getInstance(); // 获取当前时间的日历对象 + mInitialising = true; // 表示正在初始化 + mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY; // 根据当前小时判断是否为上午 + inflate(context, R.layout.datetime_picker, this); // 将布局文件实例化为视图并添加到当前视图 + + mDateSpinner = (NumberPicker) findViewById(R.id.date); // 获取日期选择器视图 + mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL); // 设置日期选择器的最小值 + mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); // 设置日期选择器的最大值 + mDateSpinner.setOnValueChangedListener(mOnDateChangedListener); // 设置日期选择器值变化的监听器 + + mHourSpinner = (NumberPicker) findViewById(R.id.hour); // 获取小时选择器视图 + mHourSpinner.setOnValueChangedListener(mOnHourChangedListener); // 设置小时选择器值变化的监听器 + mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); // 获取分钟选择器视图 + mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL); // 设置分钟选择器的最小值 + mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL); // 设置分钟选择器的最大值 + mMinuteSpinner.setOnLongPressUpdateInterval(100); // 设置长按更新间隔 + mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener); // 设置分钟选择器值变化的监听器 + + String[] stringsForAmPm = new DateFormatSymbols().getAmPmStrings(); // 获取上午/下午的字符串数组 + mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm); // 获取上午/下午选择器视图 + mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL); // 设置上午/下午选择器的最小值 + mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL); // 设置上午/下午选择器的最大值 + mAmPmSpinner.setDisplayedValues(stringsForAmPm); // 设置上午/下午选择器的显示值 + mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener); // 设置上午/下午选择器值变化的监听器 + + updateDateControl(); // 更新日期选择器控件 + updateHourControl(); // 更新小时选择器控件 + updateAmPmControl(); // 更新上午/下午选择器控件 + + set24HourView(is24HourView); // 设置小时制显示 + + setCurrentDate(date); // 设置当前日期时间 + + setEnabled(isEnabled()); // 设置是否可用 + + mInitialising = false; // 初始化完成 } @Override From 5af9bcde5d4c430b1d62a30882add86c7d27fdef Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:01:57 +0800 Subject: [PATCH 25/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 54a8778..bf948f3 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -250,43 +250,53 @@ public class DateTimePicker extends FrameLayout { mInitialising = false; // 初始化完成 } + /** + * 设置控件是否可用 + * + * @param enabled 是否可用 + */ @Override public void setEnabled(boolean enabled) { if (mIsEnabled == enabled) { return; } - super.setEnabled(enabled); - mDateSpinner.setEnabled(enabled); - mMinuteSpinner.setEnabled(enabled); - mHourSpinner.setEnabled(enabled); - mAmPmSpinner.setEnabled(enabled); - mIsEnabled = enabled; + super.setEnabled(enabled); // 调用父类方法设置控件可用状态 + mDateSpinner.setEnabled(enabled); // 设置日期选择器是否可用 + mMinuteSpinner.setEnabled(enabled); // 设置分钟选择器是否可用 + mHourSpinner.setEnabled(enabled); // 设置小时选择器是否可用 + mAmPmSpinner.setEnabled(enabled); // 设置上午/下午选择器是否可用 + mIsEnabled = enabled; // 更新控件是否可用状态 } + /** + * 判断控件是否可用 + * + * @return 控件是否可用 + */ @Override public boolean isEnabled() { return mIsEnabled; } /** - * Get the current date in millis + * 获取当前日期的毫秒值 * - * @return the current date in millis + * @return 当前日期的毫秒值 */ public long getCurrentDateInTimeMillis() { return mDate.getTimeInMillis(); } /** - * Set the current date + * 设置当前日期 * - * @param date The current date in millis + * @param date The current date in millis 当前日期的毫秒值 */ public void setCurrentDate(long date) { - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(date); - setCurrentDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), - cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)); + mDate.setTimeInMillis(date); // 将指定的日期毫秒值设置到日期对象中 + updateDateControl(); // 更新日期选择器控件 + updateHourControl(); // 更新小时选择器控件 + updateAmPmControl(); // 更新上午/下午选择器控件 } /** From c2f2f6e4b5f69141d26a08f6fa0d0f856cdcbac4 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:03:07 +0800 Subject: [PATCH 26/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index bf948f3..f42c600 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -308,13 +308,12 @@ public class DateTimePicker extends FrameLayout { * @param hourOfDay The current hourOfDay * @param minute The current minute */ - public void setCurrentDate(int year, int month, - int dayOfMonth, int hourOfDay, int minute) { - setCurrentYear(year); - setCurrentMonth(month); - setCurrentDay(dayOfMonth); - setCurrentHour(hourOfDay); - setCurrentMinute(minute); + public void setCurrentDate(int year, int month, int dayOfMonth, int hourOfDay, int minute) { + setCurrentYear(year); // 设置当前年份 + setCurrentMonth(month); // 设置当前月份 + setCurrentDay(dayOfMonth); // 设置当前日期 + setCurrentHour(hourOfDay); // 设置当前小时 + setCurrentMinute(minute); // 设置当前分钟 } /** @@ -335,9 +334,9 @@ public class DateTimePicker extends FrameLayout { if (!mInitialising && year == getCurrentYear()) { return; } - mDate.set(Calendar.YEAR, year); - updateDateControl(); - onDateTimeChanged(); + mDate.set(Calendar.YEAR, year); // 设置日期对象的年份 + updateDateControl(); // 更新日期选择器控件 + onDateTimeChanged(); // 通知日期时间改变 } /** From 1941c059c33e6c87f209bd54e6ea40050fb9c078 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:08:21 +0800 Subject: [PATCH 27/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index f42c600..957f14d 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -345,63 +345,70 @@ public class DateTimePicker extends FrameLayout { * @return The current month in the year */ public int getCurrentMonth() { - return mDate.get(Calendar.MONTH); + return mDate.get(Calendar.MONTH); // 获取日期对象的月份字段 } + /** - * Set current month in the year + * 设置当前月份 * - * @param month The month in the year + * @param month 月份(从0开始,0代表一月) */ public void setCurrentMonth(int month) { if (!mInitialising && month == getCurrentMonth()) { return; } - mDate.set(Calendar.MONTH, month); - updateDateControl(); - onDateTimeChanged(); + mDate.set(Calendar.MONTH, month); // 设置日期对象的月份 + updateDateControl(); // 更新日期选择器控件 + onDateTimeChanged(); // 通知日期时间改变 } /** - * Get current day of the month + * 获取当前日期的天数 * - * @return The day of the month + * @return 当前日期的天数 */ public int getCurrentDay() { - return mDate.get(Calendar.DAY_OF_MONTH); + return mDate.get(Calendar.DAY_OF_MONTH); // 获取日期对象的天数字段 } /** - * Set current day of the month + * 设置当前日期的天数 * - * @param dayOfMonth The day of the month + * @param dayOfMonth 日期的天数 */ public void setCurrentDay(int dayOfMonth) { if (!mInitialising && dayOfMonth == getCurrentDay()) { return; } - mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); - updateDateControl(); - onDateTimeChanged(); + mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); // 设置日期对象的天数字段 + updateDateControl(); // 更新日期选择器控件 + onDateTimeChanged(); // 通知日期时间改变 } /** - * Get current hour in 24 hour mode, in the range (0~23) - * @return The current hour in 24 hour mode + * 获取当前的小时(24小时制),范围为0~23 + * + * @return 当前的小时(24小时制) */ public int getCurrentHourOfDay() { - return mDate.get(Calendar.HOUR_OF_DAY); + return mDate.get(Calendar.HOUR_OF_DAY); // 获取日期对象的小时字段(24小时制) } + /** + * 获取当前的小时 + * + * @return 当前的小时 + */ private int getCurrentHour() { - if (mIs24HourView){ - return getCurrentHourOfDay(); - } else { - int hour = getCurrentHourOfDay(); - if (hour > HOURS_IN_HALF_DAY) { - return hour - HOURS_IN_HALF_DAY; - } else { - return hour == 0 ? HOURS_IN_HALF_DAY : hour; + if (mIs24HourView) { // 如果是24小时制 + return getCurrentHourOfDay(); // 直接获取当前的小时 + } else { // 如果是12小时制 + int hour = getCurrentHourOfDay(); // 获取当前的小时 + if (hour > HOURS_IN_HALF_DAY) { // 如果大于12小时 + return hour - HOURS_IN_HALF_DAY; // 返回减去12小时的小时数 + } else { // 如果小于等于12小时 + return hour == 0 ? HOURS_IN_HALF_DAY : hour; // 如果小时为0,则返回12小时,否则返回当前的小时 } } } From e0e4104e16753f904e7ec29e7dfb404da49a2ef8 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:09:08 +0800 Subject: [PATCH 28/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 957f14d..0e0908c 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -414,31 +414,31 @@ public class DateTimePicker extends FrameLayout { } /** - * Set current hour in 24 hour mode, in the range (0~23) + * 设置当前小时(24小时制),范围为0~23 * - * @param hourOfDay + * @param hourOfDay 小时(24小时制) */ public void setCurrentHour(int hourOfDay) { if (!mInitialising && hourOfDay == getCurrentHourOfDay()) { return; } - mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); - if (!mIs24HourView) { - if (hourOfDay >= HOURS_IN_HALF_DAY) { - mIsAm = false; + mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); // 设置日期对象的小时字段(24小时制) + if (!mIs24HourView) { // 如果是12小时制 + if (hourOfDay >= HOURS_IN_HALF_DAY) { // 如果小时大于等于12 + mIsAm = false; // 设置为下午 if (hourOfDay > HOURS_IN_HALF_DAY) { - hourOfDay -= HOURS_IN_HALF_DAY; + hourOfDay -= HOURS_IN_HALF_DAY; // 减去12小时 } - } else { - mIsAm = true; + } else { // 如果小时小于12 + mIsAm = true; // 设置为上午 if (hourOfDay == 0) { - hourOfDay = HOURS_IN_HALF_DAY; + hourOfDay = HOURS_IN_HALF_DAY; // 如果小时为0,则设置为12小时 } } - updateAmPmControl(); + updateAmPmControl(); // 更新上午/下午选择控件 } - mHourSpinner.setValue(hourOfDay); - onDateTimeChanged(); + mHourSpinner.setValue(hourOfDay); // 设置小时选择控件的值 + onDateTimeChanged(); // 通知日期时间改变 } /** From fe87f9331fefea863f9b271b6f6539a56bc94790 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:10:07 +0800 Subject: [PATCH 29/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/DateTimePicker.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 0e0908c..98e4a9f 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -442,24 +442,26 @@ public class DateTimePicker extends FrameLayout { } /** - * Get currentMinute + * 获取当前的分钟 * - * @return The Current Minute + * @return 当前的分钟 */ public int getCurrentMinute() { - return mDate.get(Calendar.MINUTE); + return mDate.get(Calendar.MINUTE); // 获取日期对象的分钟字段 } /** - * Set current minute + * 设置当前的分钟 + * + * @param minute 分钟 */ public void setCurrentMinute(int minute) { if (!mInitialising && minute == getCurrentMinute()) { return; } - mMinuteSpinner.setValue(minute); - mDate.set(Calendar.MINUTE, minute); - onDateTimeChanged(); + mMinuteSpinner.setValue(minute); // 设置分钟选择控件的值 + mDate.set(Calendar.MINUTE, minute); // 设置日期对象的分钟字段 + onDateTimeChanged(); // 通知日期时间改变 } /** From 3c8a8c187958c1df0fb3d71023c7691a5008a26c Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:11:02 +0800 Subject: [PATCH 30/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 98e4a9f..d534f81 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -465,29 +465,30 @@ public class DateTimePicker extends FrameLayout { } /** - * @return true if this is in 24 hour view else false. + * 判断是否为24小时制 + * + * @return 如果为24小时制返回true,否则返回false */ - public boolean is24HourView () { - return mIs24HourView; + public boolean is24HourView() { + return mIs24HourView; // 返回是否为24小时制的标志位 } /** - * Set whether in 24 hour or AM/PM mode. + * 设置是否为24小时制或上午/下午制 * - * @param is24HourView True for 24 hour mode. False for AM/PM mode. + * @param is24HourView true表示为24小时制,false表示为上午/下午制 */ public void set24HourView(boolean is24HourView) { if (mIs24HourView == is24HourView) { return; } - mIs24HourView = is24HourView; - mAmPmSpinner.setVisibility(is24HourView ? View.GONE : View.VISIBLE); - int hour = getCurrentHourOfDay(); - updateHourControl(); - setCurrentHour(hour); - updateAmPmControl(); + mIs24HourView = is24HourView; // 设置是否为24小时制的标志位 + mAmPmSpinner.setVisibility(is24HourView ? View.GONE : View.VISIBLE); // 根据是否为24小时制设置上午/下午选择控件的可见性 + int hour = getCurrentHourOfDay(); // 获取当前的小时(24小时制) + updateHourControl(); // 更新小时选择控件 + setCurrentHour(hour); // 设置当前的小时 + updateAmPmControl(); // 更新上午/下午选择控件 } - private void updateDateControl() { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(mDate.getTimeInMillis()); From 77431d135c6db7e6072d29f8d77fbc33fb913da0 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:12:49 +0800 Subject: [PATCH 31/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index d534f81..7bf9782 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -490,19 +490,20 @@ public class DateTimePicker extends FrameLayout { updateAmPmControl(); // 更新上午/下午选择控件 } private void updateDateControl() { - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(mDate.getTimeInMillis()); - cal.add(Calendar.DAY_OF_YEAR, -DAYS_IN_ALL_WEEK / 2 - 1); - mDateSpinner.setDisplayedValues(null); + Calendar cal = Calendar.getInstance(); // 创建一个新的Calendar对象 + cal.setTimeInMillis(mDate.getTimeInMillis()); // 将mDate的时间设置给新的Calendar对象 + cal.add(Calendar.DAY_OF_YEAR, -DAYS_IN_ALL_WEEK / 2 - 1); // 将日期向前移动DAYS_IN_ALL_WEEK / 2 + 1天 + + mDateSpinner.setDisplayedValues(null); // 清空日期选择控件的显示值 for (int i = 0; i < DAYS_IN_ALL_WEEK; ++i) { - cal.add(Calendar.DAY_OF_YEAR, 1); - mDateDisplayValues[i] = (String) DateFormat.format("MM.dd EEEE", cal); + cal.add(Calendar.DAY_OF_YEAR, 1); // 将日期加上1天 + mDateDisplayValues[i] = (String) DateFormat.format("MM.dd EEEE", cal); // 将日期格式化为"MM.dd EEEE"的字符串格式,并存储到mDateDisplayValues数组中 } - mDateSpinner.setDisplayedValues(mDateDisplayValues); - mDateSpinner.setValue(DAYS_IN_ALL_WEEK / 2); - mDateSpinner.invalidate(); - } + mDateSpinner.setDisplayedValues(mDateDisplayValues); // 设置日期选择控件的显示值为mDateDisplayValues数组 + mDateSpinner.setValue(DAYS_IN_ALL_WEEK / 2); // 设置日期选择控件的当前值为DAYS_IN_ALL_WEEK / 2 + mDateSpinner.invalidate(); // 使日期选择控件无效,以便重绘 + } private void updateAmPmControl() { if (mIs24HourView) { mAmPmSpinner.setVisibility(View.GONE); From 74e3f06745547bab8e20179473f7018c6600bccd Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:14:06 +0800 Subject: [PATCH 32/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePicker.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java index 7bf9782..f41a158 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java @@ -506,30 +506,31 @@ public class DateTimePicker extends FrameLayout { } private void updateAmPmControl() { if (mIs24HourView) { - mAmPmSpinner.setVisibility(View.GONE); + mAmPmSpinner.setVisibility(View.GONE); // 如果是24小时制,隐藏上午/下午选择控件 } else { - int index = mIsAm ? Calendar.AM : Calendar.PM; - mAmPmSpinner.setValue(index); - mAmPmSpinner.setVisibility(View.VISIBLE); + int index = mIsAm ? Calendar.AM : Calendar.PM; // 根据当前上午/下午的标志位确定要显示的上午/下午选项 + mAmPmSpinner.setValue(index); // 设置上午/下午选择控件的值为对应的索引 + mAmPmSpinner.setVisibility(View.VISIBLE); // 显示上午/下午选择控件 } } private void updateHourControl() { if (mIs24HourView) { - mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW); - mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW); + mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW); // 设置小时选择控件的最小值为24小时制的最小值 + mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW); // 设置小时选择控件的最大值为24小时制的最大值 } else { - mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW); - mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW); + mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW); // 设置小时选择控件的最小值为12小时制的最小值 + mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW); // 设置小时选择控件的最大值为12小时制的最大值 } } /** - * Set the callback that indicates the 'Set' button has been pressed. - * @param callback the callback, if null will do nothing + * 设置“设置”按钮按下时的回调 + * + * @param callback 回调接口,如果为null则不执行任何操作 */ public void setOnDateTimeChangedListener(OnDateTimeChangedListener callback) { - mOnDateTimeChangedListener = callback; + mOnDateTimeChangedListener = callback; // 设置回调接口 } private void onDateTimeChanged() { @@ -538,4 +539,3 @@ public class DateTimePicker extends FrameLayout { getCurrentMonth(), getCurrentDay(), getCurrentHourOfDay(), getCurrentMinute()); } } -} From 1e89d4294dd6b98b3547f787a8dac61ca2fc0985 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:15:37 +0800 Subject: [PATCH 33/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/DateTimePickerDialog.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java index 2c47ba4..1705583 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java @@ -31,10 +31,10 @@ import android.text.format.DateUtils; public class DateTimePickerDialog extends AlertDialog implements OnClickListener { - private Calendar mDate = Calendar.getInstance(); - private boolean mIs24HourView; - private OnDateTimeSetListener mOnDateTimeSetListener; - private DateTimePicker mDateTimePicker; + private Calendar mDate = Calendar.getInstance(); // 创建一个Calendar对象,并初始化为当前日期时间 + private boolean mIs24HourView; // 是否为24小时制 + private OnDateTimeSetListener mOnDateTimeSetListener; // 日期时间设置回调接口 + private DateTimePicker mDateTimePicker; // 日期时间选择器控件 public interface OnDateTimeSetListener { void OnDateTimeSet(AlertDialog dialog, long date); From 738ecfc65d5c73c4df00a37794d2c2ad721b87d0 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:17:16 +0800 Subject: [PATCH 34/48] Signed-off-by: rtc --- .../micode/notes/ui/DateTimePickerDialog.java | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java index 1705583..b99ed29 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java @@ -41,27 +41,28 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener } public DateTimePickerDialog(Context context, long date) { - super(context); - mDateTimePicker = new DateTimePicker(context); - setView(mDateTimePicker); + super(context); // 调用父类的构造方法 + mDateTimePicker = new DateTimePicker(context); // 创建一个DateTimePicker对象 + setView(mDateTimePicker); // 设置对话框的视图为DateTimePicker对象 mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() { public void onDateTimeChanged(DateTimePicker view, int year, int month, - int dayOfMonth, int hourOfDay, int minute) { - mDate.set(Calendar.YEAR, year); - mDate.set(Calendar.MONTH, month); - mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); - mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); - mDate.set(Calendar.MINUTE, minute); - updateTitle(mDate.getTimeInMillis()); + int dayOfMonth, int hourOfDay, int minute) { + mDate.set(Calendar.YEAR, year); // 设置日期对象的年份 + mDate.set(Calendar.MONTH, month); // 设置日期对象的月份 + mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); // 设置日期对象的日 + mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); // 设置日期对象的小时 + mDate.set(Calendar.MINUTE, minute); // 设置日期对象的分钟 + updateTitle(mDate.getTimeInMillis()); // 更新对话框的标题 } }); - mDate.setTimeInMillis(date); - mDate.set(Calendar.SECOND, 0); - mDateTimePicker.setCurrentDate(mDate.getTimeInMillis()); - setButton(context.getString(R.string.datetime_dialog_ok), this); - setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null); - set24HourView(DateFormat.is24HourFormat(this.getContext())); - updateTitle(mDate.getTimeInMillis()); + + mDate.setTimeInMillis(date); // 将传入的日期设置给日期对象mDate + mDate.set(Calendar.SECOND, 0); // 将日期对象的秒设置为0 + mDateTimePicker.setCurrentDate(mDate.getTimeInMillis()); // 将日期对象的时间设置给DateTimePicker控件 + setButton(context.getString(R.string.datetime_dialog_ok), this); // 设置对话框的“确定”按钮,并设置点击监听器为当前对象 + setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null); // 设置对话框的“取消”按钮,不设置点击监听器 + set24HourView(DateFormat.is24HourFormat(this.getContext())); // 根据系统设置判断是否为24小时制,并设置给日期时间选择器控件 + updateTitle(mDate.getTimeInMillis()); // 更新对话框的标题,将日期对象的时间设置为标题显示 } public void set24HourView(boolean is24HourView) { From 94cdec221b001ce50d6bfcea2ead52851b87371d Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:19:53 +0800 Subject: [PATCH 35/48] Signed-off-by: rtc --- .../net/micode/notes/ui/DateTimePickerDialog.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java b/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java index b99ed29..278678a 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java +++ b/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java @@ -75,16 +75,15 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener private void updateTitle(long date) { int flag = - DateUtils.FORMAT_SHOW_YEAR | - DateUtils.FORMAT_SHOW_DATE | - DateUtils.FORMAT_SHOW_TIME; - flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR; - setTitle(DateUtils.formatDateTime(this.getContext(), date, flag)); + DateUtils.FORMAT_SHOW_YEAR | // 显示年份 + DateUtils.FORMAT_SHOW_DATE | // 显示日期 + DateUtils.FORMAT_SHOW_TIME; // 显示时间 + flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR; // 根据是否为24小时制,设置时间格式化标志 + setTitle(DateUtils.formatDateTime(this.getContext(), date, flag)); // 使用DateUtils类将日期时间格式化为字符串,并设置为对话框的标题 } - public void onClick(DialogInterface arg0, int arg1) { - if (mOnDateTimeSetListener != null) { - mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis()); + if (mOnDateTimeSetListener != null) { // 判断是否设置了日期时间设置回调接口 + mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis()); // 调用回调接口的OnDateTimeSet方法,并传入当前对话框和日期时间的毫秒值 } } From af3b43ee09d897a6dba5d3da7d84defe99281537 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:22:22 +0800 Subject: [PATCH 36/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/DropdownMenu.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/DropdownMenu.java b/src/Notes-master/src/net/micode/notes/ui/DropdownMenu.java index 613dc74..1631f43 100644 --- a/src/Notes-master/src/net/micode/notes/ui/DropdownMenu.java +++ b/src/Notes-master/src/net/micode/notes/ui/DropdownMenu.java @@ -28,34 +28,34 @@ import android.widget.PopupMenu.OnMenuItemClickListener; import net.micode.notes.R; public class DropdownMenu { - private Button mButton; - private PopupMenu mPopupMenu; - private Menu mMenu; + private Button mButton; // 下拉菜单的按钮 + private PopupMenu mPopupMenu; // 弹出菜单 + private Menu mMenu; // 菜单 public DropdownMenu(Context context, Button button, int menuId) { - mButton = button; - mButton.setBackgroundResource(R.drawable.dropdown_icon); - mPopupMenu = new PopupMenu(context, mButton); - mMenu = mPopupMenu.getMenu(); - mPopupMenu.getMenuInflater().inflate(menuId, mMenu); + mButton = button; // 设置按钮 + mButton.setBackgroundResource(R.drawable.dropdown_icon); // 设置按钮的背景图为下拉图标 + mPopupMenu = new PopupMenu(context, mButton); // 创建弹出菜单,关联到按钮 + mMenu = mPopupMenu.getMenu(); // 获取菜单对象 + mPopupMenu.getMenuInflater().inflate(menuId, mMenu); // 通过菜单资源ID填充菜单条目 mButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { - mPopupMenu.show(); + mPopupMenu.show(); // 点击按钮时显示弹出菜单 } }); } public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) { if (mPopupMenu != null) { - mPopupMenu.setOnMenuItemClickListener(listener); + mPopupMenu.setOnMenuItemClickListener(listener); // 设置菜单条目点击监听器 } } public MenuItem findItem(int id) { - return mMenu.findItem(id); + return mMenu.findItem(id); // 根据菜单条目ID查找菜单条目对象 } public void setTitle(CharSequence title) { - mButton.setText(title); + mButton.setText(title); // 设置按钮的文本 } -} +} \ No newline at end of file From 3364c862ebe3f9feff3c093a8382996b1fe25df4 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:25:09 +0800 Subject: [PATCH 37/48] Signed-off-by: rtc --- .../micode/notes/ui/FoldersListAdapter.java | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/FoldersListAdapter.java b/src/Notes-master/src/net/micode/notes/ui/FoldersListAdapter.java index 96b77da..e661ca5 100644 --- a/src/Notes-master/src/net/micode/notes/ui/FoldersListAdapter.java +++ b/src/Notes-master/src/net/micode/notes/ui/FoldersListAdapter.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.content.Context; @@ -28,11 +12,10 @@ import net.micode.notes.R; import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; - public class FoldersListAdapter extends CursorAdapter { public static final String [] PROJECTION = { - NoteColumns.ID, - NoteColumns.SNIPPET + NoteColumns.ID, + NoteColumns.SNIPPET }; public static final int ID_COLUMN = 0; @@ -45,12 +28,14 @@ public class FoldersListAdapter extends CursorAdapter { @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { + // 创建新的列表项的视图 return new FolderListItem(context); } @Override public void bindView(View view, Context context, Cursor cursor) { if (view instanceof FolderListItem) { + // 判断视图类型是否为FolderListItem,如果是,则获取文件夹的名称并绑定到视图上 String folderName = (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); ((FolderListItem) view).bind(folderName); @@ -58,6 +43,7 @@ public class FoldersListAdapter extends CursorAdapter { } public String getFolderName(Context context, int position) { + // 获取指定位置的文件夹名称 Cursor cursor = (Cursor) getItem(position); return (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); @@ -68,13 +54,14 @@ public class FoldersListAdapter extends CursorAdapter { public FolderListItem(Context context) { super(context); + // 填充布局文件到当前视图中 inflate(context, R.layout.folder_list_item, this); mName = (TextView) findViewById(R.id.tv_folder_name); } public void bind(String name) { + // 将文件夹名称绑定到视图上 mName.setText(name); } } - -} +} \ No newline at end of file From 1519ad030c52ba3bf1ea65223df51ac06029fe28 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:30:16 +0800 Subject: [PATCH 38/48] Signed-off-by: rtc --- .../src/net/micode/notes/ui/NoteEditText.java | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java b/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java index 2afe2a8..e1f6e80 100644 --- a/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java +++ b/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java @@ -39,18 +39,18 @@ import java.util.Map; public class NoteEditText extends EditText { private static final String TAG = "NoteEditText"; - private int mIndex; - private int mSelectionStartBeforeDelete; + private int mIndex; // 当前索引 + private int mSelectionStartBeforeDelete; // 删除前的光标位置 - private static final String SCHEME_TEL = "tel:" ; - private static final String SCHEME_HTTP = "http:" ; - private static final String SCHEME_EMAIL = "mailto:" ; + private static final String SCHEME_TEL = "tel:"; // 电话号码链接的Scheme + private static final String SCHEME_HTTP = "http:"; // 网页链接的Scheme + private static final String SCHEME_EMAIL = "mailto:"; // 邮件链接的Scheme - private static final Map sSchemaActionResMap = new HashMap(); + private static final Map sSchemaActionResMap = new HashMap(); // 存储链接Scheme和对应操作资源的映射 static { - sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel); - sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web); - sSchemaActionResMap.put(SCHEME_EMAIL, R.string.note_link_email); + sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel); // 将电话号码链接的Scheme和对应的操作资源ID放入映射中 + sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web); // 将网页链接的Scheme和对应的操作资源ID放入映射中 + sSchemaActionResMap.put(SCHEME_EMAIL, R.string.note_link_email); // 将邮件链接的Scheme和对应的操作资源ID放入映射中 } /** @@ -58,44 +58,51 @@ public class NoteEditText extends EditText { */ public interface OnTextViewChangeListener { /** - * Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens - * and the text is null + * 当按下删除键{@link KeyEvent#KEYCODE_DEL}并且文本为空时,删除当前编辑文本 + * + * @param index 当前编辑文本的索引 + * @param text 当前编辑文本的内容 */ void onEditTextDelete(int index, String text); /** - * Add edit text after current edit text when {@link KeyEvent#KEYCODE_ENTER} - * happen + * 当按下回车键{@link KeyEvent#KEYCODE_ENTER}时,在当前编辑文本后添加一个新的编辑文本 + * + * @param index 当前编辑文本的索引 + * @param text 当前编辑文本的内容 */ void onEditTextEnter(int index, String text); /** - * Hide or show item option when text change + * 当文本发生变化时,隐藏或显示项目选项 + * + * @param index 当前编辑文本的索引 + * @param hasText 文本是否不为空 */ void onTextChange(int index, boolean hasText); } - private OnTextViewChangeListener mOnTextViewChangeListener; + private OnTextViewChangeListener mOnTextViewChangeListener; // 文本视图变化的监听器 public NoteEditText(Context context) { super(context, null); - mIndex = 0; + mIndex = 0; // 初始化当前索引为0 } public void setIndex(int index) { - mIndex = index; + mIndex = index; // 设置当前索引 } public void setOnTextViewChangeListener(OnTextViewChangeListener listener) { - mOnTextViewChangeListener = listener; + mOnTextViewChangeListener = listener; // 设置文本视图变化的监听器 } public NoteEditText(Context context, AttributeSet attrs) { - super(context, attrs, android.R.attr.editTextStyle); + super(context, attrs, android.R.attr.editTextStyle); // 调用父类构造方法 } public NoteEditText(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); + super(context, attrs, defStyle); // 调用父类构造方法 // TODO Auto-generated constructor stub } From 845b9ce830f5c645b206b17b31e76245cc635566 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:35:16 +0800 Subject: [PATCH 39/48] Signed-off-by: rtc --- .../net/micode/notes/ui/NoteEditActivity.java | 302 ++++++++++++++---- .../src/net/micode/notes/ui/NoteEditText.java | 84 ++++- 2 files changed, 322 insertions(+), 64 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java b/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java index 96a9ff8..0faa62e 100644 --- a/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.app.Activity; @@ -74,6 +58,8 @@ import java.util.regex.Pattern; public class NoteEditActivity extends Activity implements OnClickListener, NoteSettingChangedListener, OnTextViewChangeListener { + //该类主要是针对标签的编辑 + //继承了系统内部许多和监听有关的类 private class HeadViewHolder { public TextView tvModified; @@ -83,7 +69,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, public ImageView ibSetBgColor; } - + //使用Map实现数据存储 private static final Map sBgSelectorBtnsMap = new HashMap(); static { sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW); @@ -91,6 +77,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sBgSelectorBtnsMap.put(R.id.iv_bg_blue, ResourceParser.BLUE); sBgSelectorBtnsMap.put(R.id.iv_bg_green, ResourceParser.GREEN); sBgSelectorBtnsMap.put(R.id.iv_bg_white, ResourceParser.WHITE); + //put函数是将指定值和指定键相连 } private static final Map sBgSelectorSelectionMap = new HashMap(); @@ -100,6 +87,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sBgSelectorSelectionMap.put(ResourceParser.BLUE, R.id.iv_bg_blue_select); sBgSelectorSelectionMap.put(ResourceParser.GREEN, R.id.iv_bg_green_select); sBgSelectorSelectionMap.put(ResourceParser.WHITE, R.id.iv_bg_white_select); + //put函数是将指定值和指定键相连 } private static final Map sFontSizeBtnsMap = new HashMap(); @@ -108,6 +96,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sFontSizeBtnsMap.put(R.id.ll_font_small, ResourceParser.TEXT_SMALL); sFontSizeBtnsMap.put(R.id.ll_font_normal, ResourceParser.TEXT_MEDIUM); sFontSizeBtnsMap.put(R.id.ll_font_super, ResourceParser.TEXT_SUPER); + //put函数是将指定值和指定键相连 } private static final Map sFontSelectorSelectionMap = new HashMap(); @@ -116,6 +105,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, sFontSelectorSelectionMap.put(ResourceParser.TEXT_SMALL, R.id.iv_small_select); sFontSelectorSelectionMap.put(ResourceParser.TEXT_MEDIUM, R.id.iv_medium_select); sFontSelectorSelectionMap.put(ResourceParser.TEXT_SUPER, R.id.iv_super_select); + //put函数是将指定值和指定键相连 } private static final String TAG = "NoteEditActivity"; @@ -123,20 +113,23 @@ public class NoteEditActivity extends Activity implements OnClickListener, private HeadViewHolder mNoteHeaderHolder; private View mHeadViewPanel; - + //私有化一个界面操作mHeadViewPanel,对表头的操作 private View mNoteBgColorSelector; - + //私有化一个界面操作mNoteBgColorSelector,对背景颜色的操作 private View mFontSizeSelector; - + //私有化一个界面操作mFontSizeSelector,对标签字体的操作 private EditText mNoteEditor; - + //声明编辑控件,对文本操作 private View mNoteEditorPanel; - - private WorkingNote mWorkingNote; - + //私有化一个界面操作mNoteEditorPanel,文本编辑的控制板 + //private WorkingNote mWorkingNote; + public WorkingNote mWorkingNote; + //对模板WorkingNote的初始化 private SharedPreferences mSharedPrefs; + //私有化SharedPreferences的数据存储方式 + //它的本质是基于XML文件存储key-value键值对数据 private int mFontSizeId; - + //用于操作字体的大小 private static final String PREFERENCE_FONT_SIZE = "pref_font_size"; private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; @@ -145,7 +138,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); private LinearLayout mEditTextList; - + //线性布局 private String mUserQuery; private Pattern mPattern; @@ -153,7 +146,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.note_edit); - + //对数据库的访问操作 if (savedInstanceState == null && !initActivityState(getIntent())) { finish(); return; @@ -176,7 +169,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, return; } Log.d(TAG, "Restoring from killed activity"); - } + }//为防止内存不足时程序的终止,在这里有一个保存现场的函数 } private boolean initActivityState(Intent intent) { @@ -188,34 +181,42 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) { long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0); mUserQuery = ""; - + //如果用户实例化标签时,系统并未给出标签ID /** * Starting from the searched result */ + //根据键值查找ID if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) { noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY)); mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY); } - + //如果ID在数据库中未找到 if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) { Intent jump = new Intent(this, NotesListActivity.class); startActivity(jump); + //程序将跳转到上面声明的intent——jump showToast(R.string.error_note_not_exist); finish(); return false; - } else { + } + //ID在数据库中找到 + else { mWorkingNote = WorkingNote.load(this, noteId); if (mWorkingNote == null) { Log.e(TAG, "load note failed with note id" + noteId); + //打印出红色的错误信息 finish(); return false; } } + //setSoftInputMode——软键盘输入模式 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } else if(TextUtils.equals(Intent.ACTION_INSERT_OR_EDIT, intent.getAction())) { - // New note + // intent.getAction() + // 大多用于broadcast发送广播时给机制(intent)设置一个action,就是一个字符串 + // 用户可以通过receive(接受)intent,通过 getAction得到的字符串,来决定做什么 long folderId = intent.getLongExtra(Notes.INTENT_EXTRA_FOLDER_ID, 0); int widgetId = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); @@ -223,7 +224,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, Notes.TYPE_WIDGET_INVALIDE); int bgResId = intent.getIntExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, ResourceParser.getDefaultBgId(this)); - + // intent.getInt(Long、String)Extra是对各变量的语法分析 // Parse call-record note String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); long callDate = intent.getLongExtra(Notes.INTENT_EXTRA_CALL_DATE, 0); @@ -240,15 +241,17 @@ public class NoteEditActivity extends Activity implements OnClickListener, finish(); return false; } + //将电话号码与手机的号码簿相关 } else { mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType, bgResId); mWorkingNote.convertToCallNote(phoneNumber, callDate); + // } } else { mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType, bgResId); - } + }//创建一个新的WorkingNote getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE @@ -269,8 +272,10 @@ public class NoteEditActivity extends Activity implements OnClickListener, } private void initNoteScreen() { + //对界面的初始化操作 mNoteEditor.setTextAppearance(this, TextAppearanceResources .getTexAppearanceResource(mFontSizeId)); + //设置外观 if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { switchToListMode(mWorkingNote.getContent()); } else { @@ -294,18 +299,21 @@ public class NoteEditActivity extends Activity implements OnClickListener, */ showAlertHeader(); } - + //设置闹钟的显示 private void showAlertHeader() { if (mWorkingNote.hasClockAlert()) { long time = System.currentTimeMillis(); if (time > mWorkingNote.getAlertDate()) { mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired); - } else { + } + //如果系统时间大于了闹钟设置的时间,那么闹钟失效 + else { mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString( mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS)); } mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE); mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE); + //显示闹钟开启的图标 } else { mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE); mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE); @@ -329,26 +337,29 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (!mWorkingNote.existInDatabase()) { saveNote(); } + //在创建一个新的标签时,先在数据库中匹配 + //如果不存在,那么先在数据库中存储 outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId()); Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState"); } @Override + //MotionEvent是对屏幕触控的传递机制 public boolean dispatchTouchEvent(MotionEvent ev) { if (mNoteBgColorSelector.getVisibility() == View.VISIBLE && !inRangeOfView(mNoteBgColorSelector, ev)) { mNoteBgColorSelector.setVisibility(View.GONE); return true; - } + }//颜色选择器在屏幕上可见 if (mFontSizeSelector.getVisibility() == View.VISIBLE && !inRangeOfView(mFontSizeSelector, ev)) { mFontSizeSelector.setVisibility(View.GONE); return true; - } + }//字体大小选择器在屏幕上可见 return super.dispatchTouchEvent(ev); } - + //对屏幕触控的坐标进行操作 private boolean inRangeOfView(View view, MotionEvent ev) { int []location = new int[2]; view.getLocationOnScreen(location); @@ -357,9 +368,11 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (ev.getX() < x || ev.getX() > (x + view.getWidth()) || ev.getY() < y - || ev.getY() > (y + view.getHeight())) { - return false; - } + || ev.getY() > (y + view.getHeight())) + //如果触控的位置超出了给定的范围,返回false + { + return false; + } return true; } @@ -377,13 +390,13 @@ public class NoteEditActivity extends Activity implements OnClickListener, for (int id : sBgSelectorBtnsMap.keySet()) { ImageView iv = (ImageView) findViewById(id); iv.setOnClickListener(this); - } + }//对标签各项属性内容的初始化 mFontSizeSelector = findViewById(R.id.font_size_selector); for (int id : sFontSizeBtnsMap.keySet()) { View view = findViewById(id); view.setOnClickListener(this); - }; + };//对字体大小的选择 mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); mFontSizeId = mSharedPrefs.getInt(PREFERENCE_FONT_SIZE, ResourceParser.BG_DEFAULT_FONT_SIZE); /** @@ -405,7 +418,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } clearSettingState(); } - + //和桌面小工具的同步 private void updateWidget() { Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) { @@ -418,7 +431,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { - mWorkingNote.getWidgetId() + mWorkingNote.getWidgetId() }); sendBroadcast(intent); @@ -450,7 +463,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } mFontSizeSelector.setVisibility(View.GONE); } - } + }//************************存在问题 @Override public void onBackPressed() { @@ -481,6 +494,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } @Override + //对选择菜单的准备 public boolean onPrepareOptionsMenu(Menu menu) { if (isFinishing()) { return true; @@ -489,6 +503,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, menu.clear(); if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) { getMenuInflater().inflate(R.menu.call_note_edit, menu); + // MenuInflater是用来实例化Menu目录下的Menu布局文件的 } else { getMenuInflater().inflate(R.menu.note_edit, menu); } @@ -506,45 +521,71 @@ public class NoteEditActivity extends Activity implements OnClickListener, } @Override + /* + * 函数功能:动态改变菜单选项内容 + * 函数实现:如下注释 + */ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + //根据菜单的id来编剧相关项目 case R.id.menu_new_note: + //创建一个新的便签 createNewNote(); break; case R.id.menu_delete: + //删除便签 AlertDialog.Builder builder = new AlertDialog.Builder(this); + //创建关于删除操作的对话框 builder.setTitle(getString(R.string.alert_title_delete)); + // 设置标签的标题为alert_title_delete builder.setIcon(android.R.drawable.ic_dialog_alert); + //设置对话框图标 builder.setMessage(getString(R.string.alert_message_delete_note)); + //设置对话框内容 builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + //建立按键监听器 public void onClick(DialogInterface dialog, int which) { + //点击所触发事件 deleteCurrentNote(); + // 删除单签便签 finish(); } }); + //添加“YES”按钮 builder.setNegativeButton(android.R.string.cancel, null); + //添加“NO”的按钮 builder.show(); + //显示对话框 break; case R.id.menu_font_size: + //字体大小的编辑 mFontSizeSelector.setVisibility(View.VISIBLE); + // 将字体选择器置为可见 findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); + // 通过id找到相应的大小 break; case R.id.menu_list_mode: + //选择列表模式 mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ? TextNote.MODE_CHECK_LIST : 0); break; case R.id.menu_share: + //菜单共享 getWorkingText(); sendTo(this, mWorkingNote.getContent()); + // 用sendto函数将运行文本发送到遍历的本文内 break; case R.id.menu_send_to_desktop: + //发送到桌面 sendToDesktop(); break; case R.id.menu_alert: + //创建提醒器 setReminder(); break; case R.id.menu_delete_remind: + //删除日期提醒 mWorkingNote.setAlertDate(0, false); break; default: @@ -553,111 +594,170 @@ public class NoteEditActivity extends Activity implements OnClickListener, return true; } + /* + * 函数功能:建立事件提醒器 + * 函数实现:如下注释 + */ private void setReminder() { DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); + // 建立修改时间日期的对话框 d.setOnDateTimeSetListener(new OnDateTimeSetListener() { public void OnDateTimeSet(AlertDialog dialog, long date) { mWorkingNote.setAlertDate(date , true); + //选择提醒的日期 } }); + //建立时间日期的监听器 d.show(); + //显示对话框 } /** * Share note to apps that support {@link Intent#ACTION_SEND} action * and {@text/plain} type */ + /* + * 函数功能:共享便签 + * 函数实现:如下注释 + */ private void sendTo(Context context, String info) { Intent intent = new Intent(Intent.ACTION_SEND); + //建立intent链接选项 intent.putExtra(Intent.EXTRA_TEXT, info); + //将需要传递的便签信息放入text文件中 intent.setType("text/plain"); + //编辑连接器的类型 context.startActivity(intent); + //在acti中进行链接 } + /* + * 函数功能:创建一个新的便签 + * 函数实现:如下注释 + */ private void createNewNote() { // Firstly, save current editing notes + //保存当前便签 saveNote(); // For safety, start a new NoteEditActivity finish(); Intent intent = new Intent(this, NoteEditActivity.class); + //设置链接器 intent.setAction(Intent.ACTION_INSERT_OR_EDIT); + //该活动定义为创建或编辑 intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); + //将运行便签的id添加到INTENT_EXTRA_FOLDER_ID标记中 startActivity(intent); + //开始activity并链接 } + /* + * 函数功能:删除当前便签 + * 函数实现:如下注释 + */ private void deleteCurrentNote() { if (mWorkingNote.existInDatabase()) { + //假如当前运行的便签内存有数据 HashSet ids = new HashSet(); long id = mWorkingNote.getNoteId(); if (id != Notes.ID_ROOT_FOLDER) { ids.add(id); + //如果不是头文件夹建立一个hash表把便签id存起来 } else { Log.d(TAG, "Wrong note id, should not happen"); + //否则报错 } if (!isSyncMode()) { + //在非同步模式情况下 + //删除操作 if (!DataUtils.batchDeleteNotes(getContentResolver(), ids)) { Log.e(TAG, "Delete Note error"); } } else { + //同步模式 + //移动至垃圾文件夹的操作 if (!DataUtils.batchMoveToFolder(getContentResolver(), ids, Notes.ID_TRASH_FOLER)) { Log.e(TAG, "Move notes to trash folder error, should not happens"); } } } mWorkingNote.markDeleted(true); + //将这些标签的删除标记置为true } + /* + * 函数功能:判断是否为同步模式 + * 函数实现:直接看NotesPreferenceActivity中同步名称是否为空 + */ private boolean isSyncMode() { return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; } + /* + * 函数功能:设置提醒时间 + * 函数实现:如下注释 + */ public void onClockAlertChanged(long date, boolean set) { /** * User could set clock to an unsaved note, so before setting the * alert clock, we should save the note first */ if (!mWorkingNote.existInDatabase()) { + //首先保存已有的便签 saveNote(); } if (mWorkingNote.getNoteId() > 0) { Intent intent = new Intent(this, AlarmReceiver.class); intent.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mWorkingNote.getNoteId())); + //若有有运行的便签就是建立一个链接器将标签id都存在uri中 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); AlarmManager alarmManager = ((AlarmManager) getSystemService(ALARM_SERVICE)); + //设置提醒管理器 showAlertHeader(); if(!set) { alarmManager.cancel(pendingIntent); } else { alarmManager.set(AlarmManager.RTC_WAKEUP, date, pendingIntent); } + //如果用户设置了时间,就通过提醒管理器设置一个监听事项 } else { /** * There is the condition that user has input nothing (the note is * not worthy saving), we have no note id, remind the user that he * should input something */ + //没有运行的便签就报错 Log.e(TAG, "Clock alert setting error"); showToast(R.string.error_note_empty_for_clock); } } + /* + * 函数功能:Widget发生改变的所触发的事件 + */ public void onWidgetChanged() { - updateWidget(); + updateWidget();//更新Widget } + /* + * 函数功能: 删除编辑文本框所触发的事件 + * 函数实现:如下注释 + */ public void onEditTextDelete(int index, String text) { int childCount = mEditTextList.getChildCount(); if (childCount == 1) { return; } - + //没有编辑框的话直接返回 for (int i = index + 1; i < childCount; i++) { ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) .setIndex(i - 1); + //通过id把编辑框存在便签编辑框中 } mEditTextList.removeViewAt(index); + //删除特定位置的视图 NoteEditText edit = null; if(index == 0) { edit = (NoteEditText) mEditTextList.getChildAt(0).findViewById( @@ -666,69 +766,101 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit = (NoteEditText) mEditTextList.getChildAt(index - 1).findViewById( R.id.et_edit_text); } + //通过id把编辑框存在空的NoteEditText中 int length = edit.length(); edit.append(text); - edit.requestFocus(); - edit.setSelection(length); + edit.requestFocus();//请求优先完成该此 编辑 + edit.setSelection(length);//定位到length位置处的条目 } + /* + * 函数功能:进入编辑文本框所触发的事件 + * 函数实现:如下注释 + */ public void onEditTextEnter(int index, String text) { /** * Should not happen, check for debug */ if(index > mEditTextList.getChildCount()) { Log.e(TAG, "Index out of mEditTextList boundrary, should not happen"); + //越界把偶偶 } View view = getListItem(text, index); mEditTextList.addView(view, index); + //建立一个新的视图并添加到编辑文本框内 NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); - edit.requestFocus(); - edit.setSelection(0); + edit.requestFocus();//请求优先操作 + edit.setSelection(0);//定位到起始位置 for (int i = index + 1; i < mEditTextList.getChildCount(); i++) { ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) .setIndex(i); + //遍历子文本框并设置对应对下标 } } + /* + * 函数功能:切换至列表模式 + * 函数实现:如下注释 + */ private void switchToListMode(String text) { mEditTextList.removeAllViews(); String[] items = text.split("\n"); int index = 0; + //清空所有视图,初始化下标 for (String item : items) { if(!TextUtils.isEmpty(item)) { mEditTextList.addView(getListItem(item, index)); index++; + //遍历所有文本单元并添加到文本框中 } } mEditTextList.addView(getListItem("", index)); mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus(); + //优先请求此操作 mNoteEditor.setVisibility(View.GONE); + //便签编辑器不可见 mEditTextList.setVisibility(View.VISIBLE); + //将文本编辑框置为可见 } + /* + * 函数功能:获取高亮效果的反馈情况 + * 函数实现:如下注释 + */ private Spannable getHighlightQueryResult(String fullText, String userQuery) { SpannableString spannable = new SpannableString(fullText == null ? "" : fullText); + //新建一个效果选项 if (!TextUtils.isEmpty(userQuery)) { mPattern = Pattern.compile(userQuery); + //将用户的询问进行解析 Matcher m = mPattern.matcher(fullText); + //建立一个状态机检查Pattern并进行匹配 int start = 0; while (m.find(start)) { spannable.setSpan( new BackgroundColorSpan(this.getResources().getColor( R.color.user_query_highlight)), m.start(), m.end(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + //设置背景颜色 start = m.end(); + //跟新起始位置 } } return spannable; } + /* + * 函数功能:获取列表项 + * 函数实现:如下注释 + */ private View getListItem(String item, int index) { View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null); + //创建一个视图 final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); edit.setTextAppearance(this, TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); + //创建一个文本编辑框并设置可见性 CheckBox cb = ((CheckBox) view.findViewById(R.id.cb_edit_item)); cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { @@ -739,12 +871,15 @@ public class NoteEditActivity extends Activity implements OnClickListener, } } }); + //建立一个打钩框并设置监听器 if (item.startsWith(TAG_CHECKED)) { + //选择勾选 cb.setChecked(true); edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); item = item.substring(TAG_CHECKED.length(), item.length()).trim(); } else if (item.startsWith(TAG_UNCHECKED)) { + //选择不勾选 cb.setChecked(false); edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); item = item.substring(TAG_UNCHECKED.length(), item.length()).trim(); @@ -753,61 +888,94 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit.setOnTextViewChangeListener(this); edit.setIndex(index); edit.setText(getHighlightQueryResult(item, mUserQuery)); + //运行编辑框的监听器对该行为作出反应,并设置下标及文本内容 return view; } + /* + * 函数功能:便签内容发生改变所 触发的事件 + * 函数实现:如下注释 + */ public void onTextChange(int index, boolean hasText) { if (index >= mEditTextList.getChildCount()) { Log.e(TAG, "Wrong index, should not happen"); return; + //越界报错 } if(hasText) { mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.VISIBLE); } else { mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE); } + //如果内容不为空则将其子编辑框可见性置为可见,否则不可见 } + /* + * 函数功能:检查模式和列表模式的切换 + * 函数实现:如下注释 + */ public void onCheckListModeChanged(int oldMode, int newMode) { if (newMode == TextNote.MODE_CHECK_LIST) { switchToListMode(mNoteEditor.getText().toString()); + //检查模式切换到列表模式 } else { if (!getWorkingText()) { mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ", "")); } + //若是获取到文本就改变其检查标记 mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); mEditTextList.setVisibility(View.GONE); mNoteEditor.setVisibility(View.VISIBLE); + //修改文本编辑器的内容和可见性 } } + /* + * 函数功能:设置勾选选项表并返回是否勾选的标记 + * 函数实现:如下注释 + */ private boolean getWorkingText() { boolean hasChecked = false; + //初始化check标记 if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + // 若模式为CHECK_LIST StringBuilder sb = new StringBuilder(); + //创建可变字符串 for (int i = 0; i < mEditTextList.getChildCount(); i++) { View view = mEditTextList.getChildAt(i); + //遍历所有子编辑框的视图 NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); if (!TextUtils.isEmpty(edit.getText())) { + //若文本不为空 if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) { + //该选项框已打钩 sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("\n"); hasChecked = true; + //扩展字符串为已打钩并把标记置true } else { sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("\n"); + //扩展字符串添加未打钩 } } } mWorkingNote.setWorkingText(sb.toString()); + //利用编辑好的字符串设置运行便签的内容 } else { mWorkingNote.setWorkingText(mNoteEditor.getText().toString()); + // 若不是该模式直接用编辑器中的内容设置运行中标签的内容 } return hasChecked; } + /* + * 函数功能:保存便签 + * 函数实现:如下注释 + */ private boolean saveNote() { getWorkingText(); boolean saved = mWorkingNote.saveNote(); + //运行 getWorkingText()之后保存 if (saved) { /** * There are two modes from List view to edit view, open one note, @@ -816,11 +984,16 @@ public class NoteEditActivity extends Activity implements OnClickListener, * new node requires to the top of the list. This code * {@link #RESULT_OK} is used to identify the create/edit state */ + //如英文注释所说链接RESULT_OK是为了识别保存的2种情况,一是创建后保存,二是修改后保存 setResult(RESULT_OK); } return saved; } + /* + * 函数功能:将便签发送至桌面 + * 函数实现:如下注释 + */ private void sendToDesktop() { /** * Before send message to home, we should make sure that current @@ -829,12 +1002,16 @@ public class NoteEditActivity extends Activity implements OnClickListener, */ if (!mWorkingNote.existInDatabase()) { saveNote(); + //若不存在数据也就是新的标签就保存起来先 } if (mWorkingNote.getNoteId() > 0) { + //若是有内容 Intent sender = new Intent(); Intent shortcutIntent = new Intent(this, NoteEditActivity.class); + //建立发送到桌面的连接器 shortcutIntent.setAction(Intent.ACTION_VIEW); + //链接为一个视图 shortcutIntent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId()); sender.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); sender.putExtra(Intent.EXTRA_SHORTCUT_NAME, @@ -842,9 +1019,12 @@ public class NoteEditActivity extends Activity implements OnClickListener, sender.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon_app)); sender.putExtra("duplicate", true); + //将便签的相关信息都添加到要发送的文件里 sender.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); + //设置sneder的行为是发送 showToast(R.string.info_note_enter_desktop); sendBroadcast(sender); + //显示到桌面 } else { /** * There is the condition that user has input nothing (the note is @@ -853,21 +1033,35 @@ public class NoteEditActivity extends Activity implements OnClickListener, */ Log.e(TAG, "Send to desktop error"); showToast(R.string.error_note_empty_for_send_to_desktop); + //空便签直接报错 } } + /* + * 函数功能:编辑小图标的标题 + * 函数实现:如下注释 + */ private String makeShortcutIconTitle(String content) { content = content.replace(TAG_CHECKED, ""); content = content.replace(TAG_UNCHECKED, ""); return content.length() > SHORTCUT_ICON_TITLE_MAX_LEN ? content.substring(0, SHORTCUT_ICON_TITLE_MAX_LEN) : content; + //直接设置为content中的内容并返回,有勾选和未勾选2种 } + /* + * 函数功能:显示提示的视图 + * 函数实现:根据下标显示对应的提示 + */ private void showToast(int resId) { showToast(resId, Toast.LENGTH_SHORT); } + /* + * 函数功能:持续显示提示的视图 + * 函数实现:根据下标和持续的时间(duration)编辑提示视图并显示 + */ private void showToast(int resId, int duration) { Toast.makeText(this, resId, duration).show(); } -} +} \ No newline at end of file diff --git a/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java b/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java index e1f6e80..66c9483 100644 --- a/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java +++ b/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java @@ -82,35 +82,45 @@ public class NoteEditText extends EditText { void onTextChange(int index, boolean hasText); } - private OnTextViewChangeListener mOnTextViewChangeListener; // 文本视图变化的监听器 + private OnTextViewChangeListener mOnTextViewChangeListener; + //根据context设置文本 public NoteEditText(Context context) { - super(context, null); - mIndex = 0; // 初始化当前索引为0 + super(context, null);//用super引用父类变量 + mIndex = 0; } + //设置当前光标 public void setIndex(int index) { - mIndex = index; // 设置当前索引 + mIndex = index; } + //初始化文本修改标记 public void setOnTextViewChangeListener(OnTextViewChangeListener listener) { - mOnTextViewChangeListener = listener; // 设置文本视图变化的监听器 + mOnTextViewChangeListener = listener; } - public NoteEditText(Context context, AttributeSet attrs) { - super(context, attrs, android.R.attr.editTextStyle); // 调用父类构造方法 + //AttributeSet 百度了一下是自定义空控件属性,用于维护便签动态变化的属性 + //初始化便签 + public NoteEditText(Context context, AttributeSet attrs) { + super(context, attrs, android.R.attr.editTextStyle); } + // 根据defstyle自动初始化 public NoteEditText(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); // 调用父类构造方法 - // TODO Auto-generated constructor stub + super(context, attrs, defStyle); + // TODO Auto-generated construct or stub } @Override + //view里的函数,处理手机屏幕的所有事件 + /*参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息, + 例如触摸的位置、触摸的类型以及触摸的时间等。该对象会在用户触摸手机屏幕时被创建。*/ public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { + //重写了需要处理屏幕被按下的事件 case MotionEvent.ACTION_DOWN: - + //跟新当前坐标值 int x = (int) event.getX(); int y = (int) event.getY(); x -= getTotalPaddingLeft(); @@ -118,9 +128,12 @@ public class NoteEditText extends EditText { x += getScrollX(); y += getScrollY(); + //用布局控件layout根据x,y的新值设置新的位置 Layout layout = getLayout(); int line = layout.getLineForVertical(y); int off = layout.getOffsetForHorizontal(line, x); + + //更新光标新的位置 Selection.setSelection(getText(), off); break; } @@ -129,96 +142,147 @@ public class NoteEditText extends EditText { } @Override + /* + * 函数功能:处理用户按下一个键盘按键时会触发 的事件 + * 实现过程:如下注释 + */ public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { + //根据按键的 Unicode 编码值来处理 case KeyEvent.KEYCODE_ENTER: + //“进入”按键 if (mOnTextViewChangeListener != null) { return false; } break; case KeyEvent.KEYCODE_DEL: + //“删除”按键 mSelectionStartBeforeDelete = getSelectionStart(); break; default: break; } + //继续执行父类的其他点击事件 return super.onKeyDown(keyCode, event); } @Override + /* + * 函数功能:处理用户松开一个键盘按键时会触发 的事件 + * 实现方式:如下注释 + */ public boolean onKeyUp(int keyCode, KeyEvent event) { switch(keyCode) { + //根据按键的 Unicode 编码值来处理,有删除和进入2种操作 case KeyEvent.KEYCODE_DEL: if (mOnTextViewChangeListener != null) { + //若是被修改过 if (0 == mSelectionStartBeforeDelete && mIndex != 0) { + //若之前有被修改并且文档不为空 mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString()); + //利用上文OnTextViewChangeListener对KEYCODE_DEL按键情况的删除函数进行删除 return true; } } else { Log.d(TAG, "OnTextViewChangeListener was not seted"); + //其他情况报错,文档的改动监听器并没有建立 } break; case KeyEvent.KEYCODE_ENTER: + //同上也是分为监听器是否建立2种情况 if (mOnTextViewChangeListener != null) { int selectionStart = getSelectionStart(); + //获取当前位置 String text = getText().subSequence(selectionStart, length()).toString(); + //获取当前文本 setText(getText().subSequence(0, selectionStart)); + //根据获取的文本设置当前文本 mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text); + //当{@link KeyEvent#KEYCODE_ENTER}添加新文本 } else { Log.d(TAG, "OnTextViewChangeListener was not seted"); + //其他情况报错,文档的改动监听器并没有建立 } break; default: break; } + //继续执行父类的其他按键弹起的事件 return super.onKeyUp(keyCode, event); } @Override + /* + * 函数功能:当焦点发生变化时,会自动调用该方法来处理焦点改变的事件 + * 实现方式:如下注释 + * 参数:focused表示触发该事件的View是否获得了焦点,当该控件获得焦点时,Focused等于true,否则等于false。 + direction表示焦点移动的方向,用数值表示 + Rect:表示在触发事件的View的坐标系中,前一个获得焦点的矩形区域,即表示焦点是从哪里来的。如果不可用则为null + */ protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if (mOnTextViewChangeListener != null) { + //若监听器已经建立 if (!focused && TextUtils.isEmpty(getText())) { + //获取到焦点并且文本不为空 mOnTextViewChangeListener.onTextChange(mIndex, false); + //mOnTextViewChangeListener子函数,置false隐藏事件选项 } else { mOnTextViewChangeListener.onTextChange(mIndex, true); + //mOnTextViewChangeListener子函数,置true显示事件选项 } } + //继续执行父类的其他焦点变化的事件 super.onFocusChanged(focused, direction, previouslyFocusedRect); } @Override + /* + * 函数功能:生成上下文菜单 + * 函数实现:如下注释 + */ protected void onCreateContextMenu(ContextMenu menu) { if (getText() instanceof Spanned) { + //有文本存在 int selStart = getSelectionStart(); int selEnd = getSelectionEnd(); + //获取文本开始和结尾位置 int min = Math.min(selStart, selEnd); int max = Math.max(selStart, selEnd); + //获取开始到结尾的最大值和最小值 final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class); + //设置url的信息的范围值 if (urls.length == 1) { int defaultResId = 0; for(String schema: sSchemaActionResMap.keySet()) { + //获取计划表中所有的key值 if(urls[0].getURL().indexOf(schema) >= 0) { + //若url可以添加则在添加后将defaultResId置为key所映射的值 defaultResId = sSchemaActionResMap.get(schema); break; } } if (defaultResId == 0) { + //defaultResId == 0则说明url并没有添加任何东西,所以置为连接其他SchemaActionResMap的值 defaultResId = R.string.note_link_other; } + //建立菜单 menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener( new OnMenuItemClickListener() { + //新建按键监听器 public boolean onMenuItemClick(MenuItem item) { // goto a new intent urls[0].onClick(NoteEditText.this); + //根据相应的文本设置菜单的按键 return true; } }); } } + //继续执行父类的其他菜单创建的事件 super.onCreateContextMenu(menu); } } From 5bc4de765781ba1ba479aff3f39e5eaf0f6721e3 Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:36:53 +0800 Subject: [PATCH 40/48] Signed-off-by: rtc --- .../net/micode/notes/ui/NoteEditActivity.java | 302 ++++-------------- .../src/net/micode/notes/ui/NoteItemData.java | 72 ++--- 2 files changed, 85 insertions(+), 289 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java b/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java index 0faa62e..96a9ff8 100644 --- a/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package net.micode.notes.ui; import android.app.Activity; @@ -58,8 +74,6 @@ import java.util.regex.Pattern; public class NoteEditActivity extends Activity implements OnClickListener, NoteSettingChangedListener, OnTextViewChangeListener { - //该类主要是针对标签的编辑 - //继承了系统内部许多和监听有关的类 private class HeadViewHolder { public TextView tvModified; @@ -69,7 +83,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, public ImageView ibSetBgColor; } - //使用Map实现数据存储 + private static final Map sBgSelectorBtnsMap = new HashMap(); static { sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW); @@ -77,7 +91,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, sBgSelectorBtnsMap.put(R.id.iv_bg_blue, ResourceParser.BLUE); sBgSelectorBtnsMap.put(R.id.iv_bg_green, ResourceParser.GREEN); sBgSelectorBtnsMap.put(R.id.iv_bg_white, ResourceParser.WHITE); - //put函数是将指定值和指定键相连 } private static final Map sBgSelectorSelectionMap = new HashMap(); @@ -87,7 +100,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, sBgSelectorSelectionMap.put(ResourceParser.BLUE, R.id.iv_bg_blue_select); sBgSelectorSelectionMap.put(ResourceParser.GREEN, R.id.iv_bg_green_select); sBgSelectorSelectionMap.put(ResourceParser.WHITE, R.id.iv_bg_white_select); - //put函数是将指定值和指定键相连 } private static final Map sFontSizeBtnsMap = new HashMap(); @@ -96,7 +108,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, sFontSizeBtnsMap.put(R.id.ll_font_small, ResourceParser.TEXT_SMALL); sFontSizeBtnsMap.put(R.id.ll_font_normal, ResourceParser.TEXT_MEDIUM); sFontSizeBtnsMap.put(R.id.ll_font_super, ResourceParser.TEXT_SUPER); - //put函数是将指定值和指定键相连 } private static final Map sFontSelectorSelectionMap = new HashMap(); @@ -105,7 +116,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, sFontSelectorSelectionMap.put(ResourceParser.TEXT_SMALL, R.id.iv_small_select); sFontSelectorSelectionMap.put(ResourceParser.TEXT_MEDIUM, R.id.iv_medium_select); sFontSelectorSelectionMap.put(ResourceParser.TEXT_SUPER, R.id.iv_super_select); - //put函数是将指定值和指定键相连 } private static final String TAG = "NoteEditActivity"; @@ -113,23 +123,20 @@ public class NoteEditActivity extends Activity implements OnClickListener, private HeadViewHolder mNoteHeaderHolder; private View mHeadViewPanel; - //私有化一个界面操作mHeadViewPanel,对表头的操作 + private View mNoteBgColorSelector; - //私有化一个界面操作mNoteBgColorSelector,对背景颜色的操作 + private View mFontSizeSelector; - //私有化一个界面操作mFontSizeSelector,对标签字体的操作 + private EditText mNoteEditor; - //声明编辑控件,对文本操作 + private View mNoteEditorPanel; - //私有化一个界面操作mNoteEditorPanel,文本编辑的控制板 - //private WorkingNote mWorkingNote; - public WorkingNote mWorkingNote; - //对模板WorkingNote的初始化 + + private WorkingNote mWorkingNote; + private SharedPreferences mSharedPrefs; - //私有化SharedPreferences的数据存储方式 - //它的本质是基于XML文件存储key-value键值对数据 private int mFontSizeId; - //用于操作字体的大小 + private static final String PREFERENCE_FONT_SIZE = "pref_font_size"; private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; @@ -138,7 +145,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); private LinearLayout mEditTextList; - //线性布局 + private String mUserQuery; private Pattern mPattern; @@ -146,7 +153,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.note_edit); - //对数据库的访问操作 + if (savedInstanceState == null && !initActivityState(getIntent())) { finish(); return; @@ -169,7 +176,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, return; } Log.d(TAG, "Restoring from killed activity"); - }//为防止内存不足时程序的终止,在这里有一个保存现场的函数 + } } private boolean initActivityState(Intent intent) { @@ -181,42 +188,34 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) { long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0); mUserQuery = ""; - //如果用户实例化标签时,系统并未给出标签ID + /** * Starting from the searched result */ - //根据键值查找ID if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) { noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY)); mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY); } - //如果ID在数据库中未找到 + if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) { Intent jump = new Intent(this, NotesListActivity.class); startActivity(jump); - //程序将跳转到上面声明的intent——jump showToast(R.string.error_note_not_exist); finish(); return false; - } - //ID在数据库中找到 - else { + } else { mWorkingNote = WorkingNote.load(this, noteId); if (mWorkingNote == null) { Log.e(TAG, "load note failed with note id" + noteId); - //打印出红色的错误信息 finish(); return false; } } - //setSoftInputMode——软键盘输入模式 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } else if(TextUtils.equals(Intent.ACTION_INSERT_OR_EDIT, intent.getAction())) { - // intent.getAction() - // 大多用于broadcast发送广播时给机制(intent)设置一个action,就是一个字符串 - // 用户可以通过receive(接受)intent,通过 getAction得到的字符串,来决定做什么 + // New note long folderId = intent.getLongExtra(Notes.INTENT_EXTRA_FOLDER_ID, 0); int widgetId = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); @@ -224,7 +223,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, Notes.TYPE_WIDGET_INVALIDE); int bgResId = intent.getIntExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, ResourceParser.getDefaultBgId(this)); - // intent.getInt(Long、String)Extra是对各变量的语法分析 + // Parse call-record note String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); long callDate = intent.getLongExtra(Notes.INTENT_EXTRA_CALL_DATE, 0); @@ -241,17 +240,15 @@ public class NoteEditActivity extends Activity implements OnClickListener, finish(); return false; } - //将电话号码与手机的号码簿相关 } else { mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType, bgResId); mWorkingNote.convertToCallNote(phoneNumber, callDate); - // } } else { mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType, bgResId); - }//创建一个新的WorkingNote + } getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE @@ -272,10 +269,8 @@ public class NoteEditActivity extends Activity implements OnClickListener, } private void initNoteScreen() { - //对界面的初始化操作 mNoteEditor.setTextAppearance(this, TextAppearanceResources .getTexAppearanceResource(mFontSizeId)); - //设置外观 if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { switchToListMode(mWorkingNote.getContent()); } else { @@ -299,21 +294,18 @@ public class NoteEditActivity extends Activity implements OnClickListener, */ showAlertHeader(); } - //设置闹钟的显示 + private void showAlertHeader() { if (mWorkingNote.hasClockAlert()) { long time = System.currentTimeMillis(); if (time > mWorkingNote.getAlertDate()) { mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired); - } - //如果系统时间大于了闹钟设置的时间,那么闹钟失效 - else { + } else { mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString( mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS)); } mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE); mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE); - //显示闹钟开启的图标 } else { mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE); mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE); @@ -337,29 +329,26 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (!mWorkingNote.existInDatabase()) { saveNote(); } - //在创建一个新的标签时,先在数据库中匹配 - //如果不存在,那么先在数据库中存储 outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId()); Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState"); } @Override - //MotionEvent是对屏幕触控的传递机制 public boolean dispatchTouchEvent(MotionEvent ev) { if (mNoteBgColorSelector.getVisibility() == View.VISIBLE && !inRangeOfView(mNoteBgColorSelector, ev)) { mNoteBgColorSelector.setVisibility(View.GONE); return true; - }//颜色选择器在屏幕上可见 + } if (mFontSizeSelector.getVisibility() == View.VISIBLE && !inRangeOfView(mFontSizeSelector, ev)) { mFontSizeSelector.setVisibility(View.GONE); return true; - }//字体大小选择器在屏幕上可见 + } return super.dispatchTouchEvent(ev); } - //对屏幕触控的坐标进行操作 + private boolean inRangeOfView(View view, MotionEvent ev) { int []location = new int[2]; view.getLocationOnScreen(location); @@ -368,11 +357,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, if (ev.getX() < x || ev.getX() > (x + view.getWidth()) || ev.getY() < y - || ev.getY() > (y + view.getHeight())) - //如果触控的位置超出了给定的范围,返回false - { - return false; - } + || ev.getY() > (y + view.getHeight())) { + return false; + } return true; } @@ -390,13 +377,13 @@ public class NoteEditActivity extends Activity implements OnClickListener, for (int id : sBgSelectorBtnsMap.keySet()) { ImageView iv = (ImageView) findViewById(id); iv.setOnClickListener(this); - }//对标签各项属性内容的初始化 + } mFontSizeSelector = findViewById(R.id.font_size_selector); for (int id : sFontSizeBtnsMap.keySet()) { View view = findViewById(id); view.setOnClickListener(this); - };//对字体大小的选择 + }; mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); mFontSizeId = mSharedPrefs.getInt(PREFERENCE_FONT_SIZE, ResourceParser.BG_DEFAULT_FONT_SIZE); /** @@ -418,7 +405,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } clearSettingState(); } - //和桌面小工具的同步 + private void updateWidget() { Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) { @@ -431,7 +418,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { - mWorkingNote.getWidgetId() + mWorkingNote.getWidgetId() }); sendBroadcast(intent); @@ -463,7 +450,7 @@ public class NoteEditActivity extends Activity implements OnClickListener, } mFontSizeSelector.setVisibility(View.GONE); } - }//************************存在问题 + } @Override public void onBackPressed() { @@ -494,7 +481,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, } @Override - //对选择菜单的准备 public boolean onPrepareOptionsMenu(Menu menu) { if (isFinishing()) { return true; @@ -503,7 +489,6 @@ public class NoteEditActivity extends Activity implements OnClickListener, menu.clear(); if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) { getMenuInflater().inflate(R.menu.call_note_edit, menu); - // MenuInflater是用来实例化Menu目录下的Menu布局文件的 } else { getMenuInflater().inflate(R.menu.note_edit, menu); } @@ -521,71 +506,45 @@ public class NoteEditActivity extends Activity implements OnClickListener, } @Override - /* - * 函数功能:动态改变菜单选项内容 - * 函数实现:如下注释 - */ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - //根据菜单的id来编剧相关项目 case R.id.menu_new_note: - //创建一个新的便签 createNewNote(); break; case R.id.menu_delete: - //删除便签 AlertDialog.Builder builder = new AlertDialog.Builder(this); - //创建关于删除操作的对话框 builder.setTitle(getString(R.string.alert_title_delete)); - // 设置标签的标题为alert_title_delete builder.setIcon(android.R.drawable.ic_dialog_alert); - //设置对话框图标 builder.setMessage(getString(R.string.alert_message_delete_note)); - //设置对话框内容 builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - //建立按键监听器 public void onClick(DialogInterface dialog, int which) { - //点击所触发事件 deleteCurrentNote(); - // 删除单签便签 finish(); } }); - //添加“YES”按钮 builder.setNegativeButton(android.R.string.cancel, null); - //添加“NO”的按钮 builder.show(); - //显示对话框 break; case R.id.menu_font_size: - //字体大小的编辑 mFontSizeSelector.setVisibility(View.VISIBLE); - // 将字体选择器置为可见 findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); - // 通过id找到相应的大小 break; case R.id.menu_list_mode: - //选择列表模式 mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ? TextNote.MODE_CHECK_LIST : 0); break; case R.id.menu_share: - //菜单共享 getWorkingText(); sendTo(this, mWorkingNote.getContent()); - // 用sendto函数将运行文本发送到遍历的本文内 break; case R.id.menu_send_to_desktop: - //发送到桌面 sendToDesktop(); break; case R.id.menu_alert: - //创建提醒器 setReminder(); break; case R.id.menu_delete_remind: - //删除日期提醒 mWorkingNote.setAlertDate(0, false); break; default: @@ -594,170 +553,111 @@ public class NoteEditActivity extends Activity implements OnClickListener, return true; } - /* - * 函数功能:建立事件提醒器 - * 函数实现:如下注释 - */ private void setReminder() { DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); - // 建立修改时间日期的对话框 d.setOnDateTimeSetListener(new OnDateTimeSetListener() { public void OnDateTimeSet(AlertDialog dialog, long date) { mWorkingNote.setAlertDate(date , true); - //选择提醒的日期 } }); - //建立时间日期的监听器 d.show(); - //显示对话框 } /** * Share note to apps that support {@link Intent#ACTION_SEND} action * and {@text/plain} type */ - /* - * 函数功能:共享便签 - * 函数实现:如下注释 - */ private void sendTo(Context context, String info) { Intent intent = new Intent(Intent.ACTION_SEND); - //建立intent链接选项 intent.putExtra(Intent.EXTRA_TEXT, info); - //将需要传递的便签信息放入text文件中 intent.setType("text/plain"); - //编辑连接器的类型 context.startActivity(intent); - //在acti中进行链接 } - /* - * 函数功能:创建一个新的便签 - * 函数实现:如下注释 - */ private void createNewNote() { // Firstly, save current editing notes - //保存当前便签 saveNote(); // For safety, start a new NoteEditActivity finish(); Intent intent = new Intent(this, NoteEditActivity.class); - //设置链接器 intent.setAction(Intent.ACTION_INSERT_OR_EDIT); - //该活动定义为创建或编辑 intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); - //将运行便签的id添加到INTENT_EXTRA_FOLDER_ID标记中 startActivity(intent); - //开始activity并链接 } - /* - * 函数功能:删除当前便签 - * 函数实现:如下注释 - */ private void deleteCurrentNote() { if (mWorkingNote.existInDatabase()) { - //假如当前运行的便签内存有数据 HashSet ids = new HashSet(); long id = mWorkingNote.getNoteId(); if (id != Notes.ID_ROOT_FOLDER) { ids.add(id); - //如果不是头文件夹建立一个hash表把便签id存起来 } else { Log.d(TAG, "Wrong note id, should not happen"); - //否则报错 } if (!isSyncMode()) { - //在非同步模式情况下 - //删除操作 if (!DataUtils.batchDeleteNotes(getContentResolver(), ids)) { Log.e(TAG, "Delete Note error"); } } else { - //同步模式 - //移动至垃圾文件夹的操作 if (!DataUtils.batchMoveToFolder(getContentResolver(), ids, Notes.ID_TRASH_FOLER)) { Log.e(TAG, "Move notes to trash folder error, should not happens"); } } } mWorkingNote.markDeleted(true); - //将这些标签的删除标记置为true } - /* - * 函数功能:判断是否为同步模式 - * 函数实现:直接看NotesPreferenceActivity中同步名称是否为空 - */ private boolean isSyncMode() { return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; } - /* - * 函数功能:设置提醒时间 - * 函数实现:如下注释 - */ public void onClockAlertChanged(long date, boolean set) { /** * User could set clock to an unsaved note, so before setting the * alert clock, we should save the note first */ if (!mWorkingNote.existInDatabase()) { - //首先保存已有的便签 saveNote(); } if (mWorkingNote.getNoteId() > 0) { Intent intent = new Intent(this, AlarmReceiver.class); intent.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mWorkingNote.getNoteId())); - //若有有运行的便签就是建立一个链接器将标签id都存在uri中 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); AlarmManager alarmManager = ((AlarmManager) getSystemService(ALARM_SERVICE)); - //设置提醒管理器 showAlertHeader(); if(!set) { alarmManager.cancel(pendingIntent); } else { alarmManager.set(AlarmManager.RTC_WAKEUP, date, pendingIntent); } - //如果用户设置了时间,就通过提醒管理器设置一个监听事项 } else { /** * There is the condition that user has input nothing (the note is * not worthy saving), we have no note id, remind the user that he * should input something */ - //没有运行的便签就报错 Log.e(TAG, "Clock alert setting error"); showToast(R.string.error_note_empty_for_clock); } } - /* - * 函数功能:Widget发生改变的所触发的事件 - */ public void onWidgetChanged() { - updateWidget();//更新Widget + updateWidget(); } - /* - * 函数功能: 删除编辑文本框所触发的事件 - * 函数实现:如下注释 - */ public void onEditTextDelete(int index, String text) { int childCount = mEditTextList.getChildCount(); if (childCount == 1) { return; } - //没有编辑框的话直接返回 + for (int i = index + 1; i < childCount; i++) { ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) .setIndex(i - 1); - //通过id把编辑框存在便签编辑框中 } mEditTextList.removeViewAt(index); - //删除特定位置的视图 NoteEditText edit = null; if(index == 0) { edit = (NoteEditText) mEditTextList.getChildAt(0).findViewById( @@ -766,101 +666,69 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit = (NoteEditText) mEditTextList.getChildAt(index - 1).findViewById( R.id.et_edit_text); } - //通过id把编辑框存在空的NoteEditText中 int length = edit.length(); edit.append(text); - edit.requestFocus();//请求优先完成该此 编辑 - edit.setSelection(length);//定位到length位置处的条目 + edit.requestFocus(); + edit.setSelection(length); } - /* - * 函数功能:进入编辑文本框所触发的事件 - * 函数实现:如下注释 - */ public void onEditTextEnter(int index, String text) { /** * Should not happen, check for debug */ if(index > mEditTextList.getChildCount()) { Log.e(TAG, "Index out of mEditTextList boundrary, should not happen"); - //越界把偶偶 } View view = getListItem(text, index); mEditTextList.addView(view, index); - //建立一个新的视图并添加到编辑文本框内 NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); - edit.requestFocus();//请求优先操作 - edit.setSelection(0);//定位到起始位置 + edit.requestFocus(); + edit.setSelection(0); for (int i = index + 1; i < mEditTextList.getChildCount(); i++) { ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) .setIndex(i); - //遍历子文本框并设置对应对下标 } } - /* - * 函数功能:切换至列表模式 - * 函数实现:如下注释 - */ private void switchToListMode(String text) { mEditTextList.removeAllViews(); String[] items = text.split("\n"); int index = 0; - //清空所有视图,初始化下标 for (String item : items) { if(!TextUtils.isEmpty(item)) { mEditTextList.addView(getListItem(item, index)); index++; - //遍历所有文本单元并添加到文本框中 } } mEditTextList.addView(getListItem("", index)); mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus(); - //优先请求此操作 mNoteEditor.setVisibility(View.GONE); - //便签编辑器不可见 mEditTextList.setVisibility(View.VISIBLE); - //将文本编辑框置为可见 } - /* - * 函数功能:获取高亮效果的反馈情况 - * 函数实现:如下注释 - */ private Spannable getHighlightQueryResult(String fullText, String userQuery) { SpannableString spannable = new SpannableString(fullText == null ? "" : fullText); - //新建一个效果选项 if (!TextUtils.isEmpty(userQuery)) { mPattern = Pattern.compile(userQuery); - //将用户的询问进行解析 Matcher m = mPattern.matcher(fullText); - //建立一个状态机检查Pattern并进行匹配 int start = 0; while (m.find(start)) { spannable.setSpan( new BackgroundColorSpan(this.getResources().getColor( R.color.user_query_highlight)), m.start(), m.end(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - //设置背景颜色 start = m.end(); - //跟新起始位置 } } return spannable; } - /* - * 函数功能:获取列表项 - * 函数实现:如下注释 - */ private View getListItem(String item, int index) { View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null); - //创建一个视图 final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); edit.setTextAppearance(this, TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); - //创建一个文本编辑框并设置可见性 CheckBox cb = ((CheckBox) view.findViewById(R.id.cb_edit_item)); cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { @@ -871,15 +739,12 @@ public class NoteEditActivity extends Activity implements OnClickListener, } } }); - //建立一个打钩框并设置监听器 if (item.startsWith(TAG_CHECKED)) { - //选择勾选 cb.setChecked(true); edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); item = item.substring(TAG_CHECKED.length(), item.length()).trim(); } else if (item.startsWith(TAG_UNCHECKED)) { - //选择不勾选 cb.setChecked(false); edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); item = item.substring(TAG_UNCHECKED.length(), item.length()).trim(); @@ -888,94 +753,61 @@ public class NoteEditActivity extends Activity implements OnClickListener, edit.setOnTextViewChangeListener(this); edit.setIndex(index); edit.setText(getHighlightQueryResult(item, mUserQuery)); - //运行编辑框的监听器对该行为作出反应,并设置下标及文本内容 return view; } - /* - * 函数功能:便签内容发生改变所 触发的事件 - * 函数实现:如下注释 - */ public void onTextChange(int index, boolean hasText) { if (index >= mEditTextList.getChildCount()) { Log.e(TAG, "Wrong index, should not happen"); return; - //越界报错 } if(hasText) { mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.VISIBLE); } else { mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE); } - //如果内容不为空则将其子编辑框可见性置为可见,否则不可见 } - /* - * 函数功能:检查模式和列表模式的切换 - * 函数实现:如下注释 - */ public void onCheckListModeChanged(int oldMode, int newMode) { if (newMode == TextNote.MODE_CHECK_LIST) { switchToListMode(mNoteEditor.getText().toString()); - //检查模式切换到列表模式 } else { if (!getWorkingText()) { mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ", "")); } - //若是获取到文本就改变其检查标记 mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); mEditTextList.setVisibility(View.GONE); mNoteEditor.setVisibility(View.VISIBLE); - //修改文本编辑器的内容和可见性 } } - /* - * 函数功能:设置勾选选项表并返回是否勾选的标记 - * 函数实现:如下注释 - */ private boolean getWorkingText() { boolean hasChecked = false; - //初始化check标记 if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { - // 若模式为CHECK_LIST StringBuilder sb = new StringBuilder(); - //创建可变字符串 for (int i = 0; i < mEditTextList.getChildCount(); i++) { View view = mEditTextList.getChildAt(i); - //遍历所有子编辑框的视图 NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); if (!TextUtils.isEmpty(edit.getText())) { - //若文本不为空 if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) { - //该选项框已打钩 sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("\n"); hasChecked = true; - //扩展字符串为已打钩并把标记置true } else { sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("\n"); - //扩展字符串添加未打钩 } } } mWorkingNote.setWorkingText(sb.toString()); - //利用编辑好的字符串设置运行便签的内容 } else { mWorkingNote.setWorkingText(mNoteEditor.getText().toString()); - // 若不是该模式直接用编辑器中的内容设置运行中标签的内容 } return hasChecked; } - /* - * 函数功能:保存便签 - * 函数实现:如下注释 - */ private boolean saveNote() { getWorkingText(); boolean saved = mWorkingNote.saveNote(); - //运行 getWorkingText()之后保存 if (saved) { /** * There are two modes from List view to edit view, open one note, @@ -984,16 +816,11 @@ public class NoteEditActivity extends Activity implements OnClickListener, * new node requires to the top of the list. This code * {@link #RESULT_OK} is used to identify the create/edit state */ - //如英文注释所说链接RESULT_OK是为了识别保存的2种情况,一是创建后保存,二是修改后保存 setResult(RESULT_OK); } return saved; } - /* - * 函数功能:将便签发送至桌面 - * 函数实现:如下注释 - */ private void sendToDesktop() { /** * Before send message to home, we should make sure that current @@ -1002,16 +829,12 @@ public class NoteEditActivity extends Activity implements OnClickListener, */ if (!mWorkingNote.existInDatabase()) { saveNote(); - //若不存在数据也就是新的标签就保存起来先 } if (mWorkingNote.getNoteId() > 0) { - //若是有内容 Intent sender = new Intent(); Intent shortcutIntent = new Intent(this, NoteEditActivity.class); - //建立发送到桌面的连接器 shortcutIntent.setAction(Intent.ACTION_VIEW); - //链接为一个视图 shortcutIntent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId()); sender.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); sender.putExtra(Intent.EXTRA_SHORTCUT_NAME, @@ -1019,12 +842,9 @@ public class NoteEditActivity extends Activity implements OnClickListener, sender.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon_app)); sender.putExtra("duplicate", true); - //将便签的相关信息都添加到要发送的文件里 sender.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); - //设置sneder的行为是发送 showToast(R.string.info_note_enter_desktop); sendBroadcast(sender); - //显示到桌面 } else { /** * There is the condition that user has input nothing (the note is @@ -1033,35 +853,21 @@ public class NoteEditActivity extends Activity implements OnClickListener, */ Log.e(TAG, "Send to desktop error"); showToast(R.string.error_note_empty_for_send_to_desktop); - //空便签直接报错 } } - /* - * 函数功能:编辑小图标的标题 - * 函数实现:如下注释 - */ private String makeShortcutIconTitle(String content) { content = content.replace(TAG_CHECKED, ""); content = content.replace(TAG_UNCHECKED, ""); return content.length() > SHORTCUT_ICON_TITLE_MAX_LEN ? content.substring(0, SHORTCUT_ICON_TITLE_MAX_LEN) : content; - //直接设置为content中的内容并返回,有勾选和未勾选2种 } - /* - * 函数功能:显示提示的视图 - * 函数实现:根据下标显示对应的提示 - */ private void showToast(int resId) { showToast(resId, Toast.LENGTH_SHORT); } - /* - * 函数功能:持续显示提示的视图 - * 函数实现:根据下标和持续的时间(duration)编辑提示视图并显示 - */ private void showToast(int resId, int duration) { Toast.makeText(this, resId, duration).show(); } -} \ No newline at end of file +} diff --git a/src/Notes-master/src/net/micode/notes/ui/NoteItemData.java b/src/Notes-master/src/net/micode/notes/ui/NoteItemData.java index 0f5a878..9dde13c 100644 --- a/src/Notes-master/src/net/micode/notes/ui/NoteItemData.java +++ b/src/Notes-master/src/net/micode/notes/ui/NoteItemData.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.content.Context; @@ -28,20 +12,20 @@ import net.micode.notes.tool.DataUtils; public class NoteItemData { static final String [] PROJECTION = new String [] { - NoteColumns.ID, - NoteColumns.ALERTED_DATE, - NoteColumns.BG_COLOR_ID, - NoteColumns.CREATED_DATE, - NoteColumns.HAS_ATTACHMENT, - NoteColumns.MODIFIED_DATE, - NoteColumns.NOTES_COUNT, - NoteColumns.PARENT_ID, - NoteColumns.SNIPPET, - NoteColumns.TYPE, - NoteColumns.WIDGET_ID, - NoteColumns.WIDGET_TYPE, + NoteColumns.ID, + NoteColumns.ALERTED_DATE, + NoteColumns.BG_COLOR_ID, + NoteColumns.CREATED_DATE, + NoteColumns.HAS_ATTACHMENT, + NoteColumns.MODIFIED_DATE, + NoteColumns.NOTES_COUNT, + NoteColumns.PARENT_ID, + NoteColumns.SNIPPET, + NoteColumns.TYPE, + NoteColumns.WIDGET_ID, + NoteColumns.WIDGET_TYPE, }; - + //常量标记和数据就不一一标记了,意义翻译基本就知道 private static final int ID_COLUMN = 0; private static final int ALERTED_DATE_COLUMN = 1; private static final int BG_COLOR_ID_COLUMN = 2; @@ -75,8 +59,9 @@ public class NoteItemData { private boolean mIsOnlyOneItem; private boolean mIsOneNoteFollowingFolder; private boolean mIsMultiNotesFollowingFolder; - - public NoteItemData(Context context, Cursor cursor) { + //初始化NoteItemData,主要利用光标cursor获取的东西 + public NoteItemData(Context context, Cursor cursor) { + //getxxx为转换格式 mId = cursor.getLong(ID_COLUMN); mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN); mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN); @@ -92,10 +77,11 @@ public class NoteItemData { mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); + //初始化电话号码的信息 mPhoneNumber = ""; if (mParentId == Notes.ID_CALL_RECORD_FOLDER) { mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId); - if (!TextUtils.isEmpty(mPhoneNumber)) { + if (!TextUtils.isEmpty(mPhoneNumber)) {//mphonenumber里有符合字符串,则用contart功能连接 mName = Contact.getContact(context, mPhoneNumber); if (mName == null) { mName = mPhoneNumber; @@ -108,32 +94,35 @@ public class NoteItemData { } checkPostion(cursor); } - + ///根据鼠标的位置设置标记,和位置 private void checkPostion(Cursor cursor) { + //初始化几个标记,cursor具体功能笔记中已提到,不一一叙述 mIsLastItem = cursor.isLast() ? true : false; mIsFirstItem = cursor.isFirst() ? true : false; mIsOnlyOneItem = (cursor.getCount() == 1); + //初始化“多重子文件”“单一子文件”2个标记 mIsMultiNotesFollowingFolder = false; mIsOneNoteFollowingFolder = false; - if (mType == Notes.TYPE_NOTE && !mIsFirstItem) { + //主要是设置上诉2标记 + if (mType == Notes.TYPE_NOTE && !mIsFirstItem) {//若是note格式并且不是第一个元素 int position = cursor.getPosition(); - if (cursor.moveToPrevious()) { + if (cursor.moveToPrevious()) {//获取光标位置后看上一行 if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER - || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) { + || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) {//若光标满足系统或note格式 if (cursor.getCount() > (position + 1)) { - mIsMultiNotesFollowingFolder = true; + mIsMultiNotesFollowingFolder = true;//若是数据行数大于但前位置+1则设置成正确 } else { - mIsOneNoteFollowingFolder = true; + mIsOneNoteFollowingFolder = true;//否则单一文件夹标记为true } } - if (!cursor.moveToNext()) { + if (!cursor.moveToNext()) {//若不能再往下走则报错 throw new IllegalStateException("cursor move to previous but can't move back"); } } } } - + ///以下都是获取标记没什么好说的,不过倒数第二个需要说明下,很具体看下面 public boolean isOneFollowingFolder() { return mIsOneNoteFollowingFolder; } @@ -214,6 +203,7 @@ public class NoteItemData { return (mAlertDate > 0); } + //若数据父id为保存至文件夹模式的id且满足电话号码单元不为空,则isCallRecord为true public boolean isCallRecord() { return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber)); } @@ -221,4 +211,4 @@ public class NoteItemData { public static int getNoteType(Cursor cursor) { return cursor.getInt(TYPE_COLUMN); } -} +} \ No newline at end of file From 608a8db03ffeff6e30e9a80c848ae94e6e33152e Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:40:44 +0800 Subject: [PATCH 41/48] Signed-off-by: rtc --- .../notes/ui/NotesPreferenceActivity.java | 202 ++++++++++++++---- 1 file changed, 164 insertions(+), 38 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/NotesPreferenceActivity.java b/src/Notes-master/src/net/micode/notes/ui/NotesPreferenceActivity.java index 07c5f7e..6f8a89f 100644 --- a/src/Notes-master/src/net/micode/notes/ui/NotesPreferenceActivity.java +++ b/src/Notes-master/src/net/micode/notes/ui/NotesPreferenceActivity.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.accounts.Account; @@ -47,66 +31,92 @@ import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.gtask.remote.GTaskSyncService; - +/* + *该类功能:NotesPreferenceActivity,在小米便签中主要实现的是对背景颜色和字体大小的数据储存。 + * 继承了PreferenceActivity主要功能为对系统信息和配置进行自动保存的Activity + */ public class NotesPreferenceActivity extends PreferenceActivity { public static final String PREFERENCE_NAME = "notes_preferences"; - + //优先名 public static final String PREFERENCE_SYNC_ACCOUNT_NAME = "pref_key_account_name"; - + //同步账号 public static final String PREFERENCE_LAST_SYNC_TIME = "pref_last_sync_time"; - + //同步时间 public static final String PREFERENCE_SET_BG_COLOR_KEY = "pref_key_bg_random_appear"; private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key"; - + //同步密码 private static final String AUTHORITIES_FILTER_KEY = "authorities"; - + //本地密码 private PreferenceCategory mAccountCategory; - + //账户分组 private GTaskReceiver mReceiver; - + //同步任务接收器 private Account[] mOriAccounts; - + //账户 private boolean mHasAddedAccount; + //账户的hash标记 @Override + /* + *函数功能:创建一个activity,在函数里要完成所有的正常静态设置 + *参数:Bundle icicle:存放了 activity 当前的状态 + *函数实现:如下注释 + */ protected void onCreate(Bundle icicle) { + //先执行父类的创建函数 super.onCreate(icicle); /* using the app icon for navigation */ getActionBar().setDisplayHomeAsUpEnabled(true); + //给左上角图标的左边加上一个返回的图标 addPreferencesFromResource(R.xml.preferences); + //添加xml来源并显示 xml mAccountCategory = (PreferenceCategory) findPreference(PREFERENCE_SYNC_ACCOUNT_KEY); + //根据同步账户关键码来初始化分组 mReceiver = new GTaskReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(GTaskSyncService.GTASK_SERVICE_BROADCAST_NAME); registerReceiver(mReceiver, filter); + //初始化同步组件 mOriAccounts = null; View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null); + //获取listvivew,ListView的作用:用于列出所有选择 getListView().addHeaderView(header, null, true); + //在listview组件上方添加其他组件 } @Override + /* + * 函数功能:activity交互功能的实现,用于接受用户的输入 + * 函数实现:如下注释 + */ protected void onResume() { + //先执行父类 的交互实现 super.onResume(); // need to set sync account automatically if user has added a new // account if (mHasAddedAccount) { + //若用户新加了账户则自动设置同步账户 Account[] accounts = getGoogleAccounts(); + //获取google同步账户 if (mOriAccounts != null && accounts.length > mOriAccounts.length) { + //若原账户不为空且当前账户有增加 for (Account accountNew : accounts) { boolean found = false; for (Account accountOld : mOriAccounts) { if (TextUtils.equals(accountOld.name, accountNew.name)) { + //更新账户 found = true; break; } } if (!found) { setSyncAccount(accountNew.name); + //若是没有找到旧的账户,那么同步账号中就只添加新账户 break; } } @@ -114,58 +124,83 @@ public class NotesPreferenceActivity extends PreferenceActivity { } refreshUI(); + //刷新标签界面 } @Override + /* + * 函数功能:销毁一个activity + * 函数实现:如下注释 + */ protected void onDestroy() { if (mReceiver != null) { unregisterReceiver(mReceiver); + //注销接收器 } super.onDestroy(); + //执行父类的销毁动作 } + /* + * 函数功能:重新设置账户信息 + * 函数实现:如下注释 + */ private void loadAccountPreference() { mAccountCategory.removeAll(); - + //销毁所有的分组 Preference accountPref = new Preference(this); + //建立首选项 final String defaultAccount = getSyncAccountName(this); accountPref.setTitle(getString(R.string.preferences_account_title)); accountPref.setSummary(getString(R.string.preferences_account_summary)); + //设置首选项的大标题和小标题 accountPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { + //建立监听器 if (!GTaskSyncService.isSyncing()) { if (TextUtils.isEmpty(defaultAccount)) { // the first time to set account + //若是第一次建立账户显示选择账户提示对话框 showSelectAccountAlertDialog(); } else { // if the account has already been set, we need to promp // user about the risk + //若是已经建立则显示修改对话框并进行修改操作 showChangeAccountConfirmAlertDialog(); } } else { + //若在没有同步的情况下,则在toast中显示不能修改 Toast.makeText(NotesPreferenceActivity.this, - R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT) + R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT) .show(); } return true; } }); + //根据新建首选项编辑新的账户分组 mAccountCategory.addPreference(accountPref); } + /* + *函数功能:设置按键的状态和最后同步的时间 + *函数实现:如下注释 + */ private void loadSyncButton() { Button syncButton = (Button) findViewById(R.id.preference_sync_button); TextView lastSyncTimeView = (TextView) findViewById(R.id.prefenerece_sync_status_textview); - + //获取同步按钮控件和最终同步时间的的窗口 // set button state + //设置按钮的状态 if (GTaskSyncService.isSyncing()) { + //若是在同步状态下 syncButton.setText(getString(R.string.preferences_button_sync_cancel)); syncButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { GTaskSyncService.cancelSync(NotesPreferenceActivity.this); } }); + //设置按钮显示的文本为“取消同步”以及监听器 } else { syncButton.setText(getString(R.string.preferences_button_sync_immediately)); syncButton.setOnClickListener(new View.OnClickListener() { @@ -173,50 +208,67 @@ public class NotesPreferenceActivity extends PreferenceActivity { GTaskSyncService.startSync(NotesPreferenceActivity.this); } }); + //若是不同步则设置按钮显示的文本为“立即同步”以及对应监听器 } syncButton.setEnabled(!TextUtils.isEmpty(getSyncAccountName(this))); + //设置按键可用还是不可用 // set last sync time + // 设置最终同步时间 if (GTaskSyncService.isSyncing()) { + //若是在同步的情况下 lastSyncTimeView.setText(GTaskSyncService.getProgressString()); lastSyncTimeView.setVisibility(View.VISIBLE); + // 根据当前同步服务器设置时间显示框的文本以及可见性 } else { + //若是非同步情况 long lastSyncTime = getLastSyncTime(this); if (lastSyncTime != 0) { lastSyncTimeView.setText(getString(R.string.preferences_last_sync_time, DateFormat.format(getString(R.string.preferences_last_sync_time_format), lastSyncTime))); lastSyncTimeView.setVisibility(View.VISIBLE); + //则根据最后同步时间的信息来编辑时间显示框的文本内容和可见性 } else { + //若时间为空直接设置为不可见状态 lastSyncTimeView.setVisibility(View.GONE); } } } - + /* + *函数功能:刷新标签界面 + *函数实现:调用上文设置账号和设置按键两个函数来实现 + */ private void refreshUI() { loadAccountPreference(); loadSyncButton(); } + /* + * 函数功能:显示账户选择的对话框并进行账户的设置 + * 函数实现:如下注释 + */ private void showSelectAccountAlertDialog() { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + //创建一个新的对话框 View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); titleTextView.setText(getString(R.string.preferences_dialog_select_account_title)); TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); subtitleTextView.setText(getString(R.string.preferences_dialog_select_account_tips)); - + //设置标题以及子标题的内容 dialogBuilder.setCustomTitle(titleView); dialogBuilder.setPositiveButton(null, null); - + //设置对话框的自定义标题,建立一个YES的按钮 Account[] accounts = getGoogleAccounts(); String defAccount = getSyncAccountName(this); - + //获取同步账户信息 mOriAccounts = accounts; mHasAddedAccount = false; if (accounts.length > 0) { + //若账户不为空 CharSequence[] items = new CharSequence[accounts.length]; final CharSequence[] itemMapping = items; int checkedItem = -1; @@ -224,83 +276,119 @@ public class NotesPreferenceActivity extends PreferenceActivity { for (Account account : accounts) { if (TextUtils.equals(account.name, defAccount)) { checkedItem = index; + //在账户列表中查询到所需账户 } items[index++] = account.name; } dialogBuilder.setSingleChoiceItems(items, checkedItem, + //在对话框建立一个单选的复选框 new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { setSyncAccount(itemMapping[which].toString()); dialog.dismiss(); + //取消对话框 refreshUI(); } + //设置点击后执行的事件,包括检录新同步账户和刷新标签界面 }); + //建立对话框网络版的监听器 } View addAccountView = LayoutInflater.from(this).inflate(R.layout.add_account_text, null); dialogBuilder.setView(addAccountView); + //给新加账户对话框设置自定义样式 final AlertDialog dialog = dialogBuilder.show(); + //显示对话框 addAccountView.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mHasAddedAccount = true; + //将新加账户的hash置true Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS"); + //建立网络建立组件 intent.putExtra(AUTHORITIES_FILTER_KEY, new String[] { - "gmail-ls" + "gmail-ls" }); startActivityForResult(intent, -1); + //跳回上一个选项 dialog.dismiss(); } }); + //建立新加账户对话框的监听器 } + /* + * 函数功能:显示账户选择对话框和相关账户操作 + * 函数实现:如下注释 + */ private void showChangeAccountConfirmAlertDialog() { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); - + //创建一个新的对话框 View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); titleTextView.setText(getString(R.string.preferences_dialog_change_account_title, getSyncAccountName(this))); TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); subtitleTextView.setText(getString(R.string.preferences_dialog_change_account_warn_msg)); + //根据同步修改的账户信息设置标题以及子标题的内容 dialogBuilder.setCustomTitle(titleView); - + //设置对话框的自定义标题 CharSequence[] menuItemArray = new CharSequence[] { getString(R.string.preferences_menu_change_account), getString(R.string.preferences_menu_remove_account), getString(R.string.preferences_menu_cancel) }; + //定义一些标记字符串 dialogBuilder.setItems(menuItemArray, new DialogInterface.OnClickListener() { + //设置对话框要显示的一个list,用于显示几个命令时,即change,remove,cancel public void onClick(DialogInterface dialog, int which) { + //按键功能,由which来决定 if (which == 0) { + //进入账户选择对话框 showSelectAccountAlertDialog(); } else if (which == 1) { + //删除账户并且跟新便签界面 removeSyncAccount(); refreshUI(); } } }); dialogBuilder.show(); + //显示对话框 } + /* + *函数功能:获取谷歌账户 + *函数实现:通过账户管理器直接获取 + */ private Account[] getGoogleAccounts() { AccountManager accountManager = AccountManager.get(this); return accountManager.getAccountsByType("com.google"); } + /* + * 函数功能:设置同步账户 + * 函数实现:如下注释: + */ private void setSyncAccount(String account) { if (!getSyncAccountName(this).equals(account)) { + //假如该账号不在同步账号列表中 SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); + //编辑共享的首选项 if (account != null) { editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, account); } else { editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); } + //将该账号加入到首选项中 + editor.commit(); + //提交修改的数据 + - // clean up last sync time setLastSyncTime(this, 0); + //将最后同步时间清零 // clean up local gtask related info new Thread(new Runnable() { @@ -311,23 +399,33 @@ public class NotesPreferenceActivity extends PreferenceActivity { getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); } }).start(); + //重置当地同步任务的信息 Toast.makeText(NotesPreferenceActivity.this, getString(R.string.preferences_toast_success_set_accout, account), Toast.LENGTH_SHORT).show(); + //将toast的文本信息置为“设置账户成功”并显示出来 } } - + /* + * 函数功能:删除同步账户 + * 函数实现:如下注释: + */ private void removeSyncAccount() { SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); + //设置共享首选项 + if (settings.contains(PREFERENCE_SYNC_ACCOUNT_NAME)) { editor.remove(PREFERENCE_SYNC_ACCOUNT_NAME); + //假如当前首选项中有账户就删除 } if (settings.contains(PREFERENCE_LAST_SYNC_TIME)) { editor.remove(PREFERENCE_LAST_SYNC_TIME); + //删除当前首选项中有账户时间 } editor.commit(); + //提交更新后的数据 // clean up local gtask related info new Thread(new Runnable() { @@ -338,51 +436,79 @@ public class NotesPreferenceActivity extends PreferenceActivity { getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); } }).start(); + //重置当地同步任务的信息 } + /* + * 函数功能:获取同步账户名称 + * 函数实现:通过共享的首选项里的信息直接获取 + */ public static String getSyncAccountName(Context context) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return settings.getString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); } + /* + * 函数功能:设置最终同步的时间 + * 函数实现:如下注释 + */ public static void setLastSyncTime(Context context, long time) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); + // 从共享首选项中找到相关账户并获取其编辑器 editor.putLong(PREFERENCE_LAST_SYNC_TIME, time); editor.commit(); + //编辑最终同步时间并提交更新 } - + /* + * 函数功能:获取最终同步时间 + * 函数实现:通过共享的首选项里的信息直接获取 + */ public static long getLastSyncTime(Context context) { SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return settings.getLong(PREFERENCE_LAST_SYNC_TIME, 0); } + /* + * 函数功能:接受同步信息 + * 函数实现:继承BroadcastReceiver + */ private class GTaskReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { refreshUI(); if (intent.getBooleanExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_IS_SYNCING, false)) { + //获取随广播而来的Intent中的同步服务的数据 TextView syncStatus = (TextView) findViewById(R.id.prefenerece_sync_status_textview); syncStatus.setText(intent .getStringExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_PROGRESS_MSG)); + //通过获取的数据在设置系统的状态 } } } + /* + * 函数功能:处理菜单的选项 + * 函数实现:如下注释 + * 参数:MenuItem菜单选项 + */ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + //根据选项的id选择,这里只有一个主页 case android.R.id.home: Intent intent = new Intent(this, NotesListActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return true; + //在主页情况下在创建连接组件intent,发出清空的信号并开始一个相应的activity default: return false; } } } + \ No newline at end of file From 263038296aea626aac874b2bfc1c228ec2c82e5e Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:43:20 +0800 Subject: [PATCH 42/48] Signed-off-by: rtc --- .../net/micode/notes/ui/NotesListItem.java | 68 +++++++++---------- 1 file changed, 31 insertions(+), 37 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/NotesListItem.java b/src/Notes-master/src/net/micode/notes/ui/NotesListItem.java index 1221e80..fa8b3d2 100644 --- a/src/Notes-master/src/net/micode/notes/ui/NotesListItem.java +++ b/src/Notes-master/src/net/micode/notes/ui/NotesListItem.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.content.Context; @@ -30,37 +14,43 @@ import net.micode.notes.tool.DataUtils; import net.micode.notes.tool.ResourceParser.NoteItemBgResources; +//创建便签列表项目选项 public class NotesListItem extends LinearLayout { - private ImageView mAlert; - private TextView mTitle; - private TextView mTime; - private TextView mCallName; - private NoteItemData mItemData; - private CheckBox mCheckBox; + private ImageView mAlert;//闹钟图片 + private TextView mTitle; //标题 + private TextView mTime; //时间 + private TextView mCallName; // + private NoteItemData mItemData; //标签数据 + private CheckBox mCheckBox; //打钩框 + /*初始化基本信息*/ public NotesListItem(Context context) { - super(context); - inflate(context, R.layout.note_item, this); + super(context); //super()它的主要作用是调整调用父类构造函数的顺序 + inflate(context, R.layout.note_item, this);//Inflate可用于将一个xml中定义的布局控件找出来,这里的xml是r。layout + //findViewById用于从contentView中查找指定ID的View,转换出来的形式根据需要而定; mAlert = (ImageView) findViewById(R.id.iv_alert_icon); mTitle = (TextView) findViewById(R.id.tv_title); mTime = (TextView) findViewById(R.id.tv_time); mCallName = (TextView) findViewById(R.id.tv_name); mCheckBox = (CheckBox) findViewById(android.R.id.checkbox); } - + ///根据data的属性对各个控件的属性的控制,主要是可见性Visibility,内容setText,格式setTextAppearance public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) { if (choiceMode && data.getType() == Notes.TYPE_NOTE) { - mCheckBox.setVisibility(View.VISIBLE); - mCheckBox.setChecked(checked); + mCheckBox.setVisibility(View.VISIBLE); ///设置可见行为可见 + mCheckBox.setChecked(checked); ///格子打钩 } else { mCheckBox.setVisibility(View.GONE); } mItemData = data; + ///设置控件属性,一共三种情况,由data的id和父id是否与保存到文件夹的id一致来决定 if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { mCallName.setVisibility(View.GONE); mAlert.setVisibility(View.VISIBLE); + //设置该textview的style mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + //settext为设置内容 mTitle.setText(context.getString(R.string.call_record_folder_name) + context.getString(R.string.format_folder_files_count, data.getNotesCount())); mAlert.setImageResource(R.drawable.call_record); @@ -69,8 +59,9 @@ public class NotesListItem extends LinearLayout { mCallName.setText(data.getCallName()); mTitle.setTextAppearance(context,R.style.TextAppearanceSecondaryItem); mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + ///关于闹钟的设置 if (data.hasAlert()) { - mAlert.setImageResource(R.drawable.clock); + mAlert.setImageResource(R.drawable.clock);//图片来源的设置 mAlert.setVisibility(View.VISIBLE); } else { mAlert.setVisibility(View.GONE); @@ -78,45 +69,48 @@ public class NotesListItem extends LinearLayout { } else { mCallName.setVisibility(View.GONE); mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); - + ///设置title格式 if (data.getType() == Notes.TYPE_FOLDER) { mTitle.setText(data.getSnippet() + context.getString(R.string.format_folder_files_count, - data.getNotesCount())); + data.getNotesCount())); mAlert.setVisibility(View.GONE); } else { mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); if (data.hasAlert()) { - mAlert.setImageResource(R.drawable.clock); + mAlert.setImageResource(R.drawable.clock);///设置图片来源 mAlert.setVisibility(View.VISIBLE); } else { mAlert.setVisibility(View.GONE); } } } - mTime.setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); + ///设置内容,获取相关时间,从data里编辑的日期中获取 + mTime. setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); setBackground(data); } - + //根据data的文件属性来设置背景 private void setBackground(NoteItemData data) { int id = data.getBgColorId(); + //,若是note型文件,则4种情况,对于4种不同情况的背景来源 if (data.getType() == Notes.TYPE_NOTE) { + //单个数据并且只有一个子文件夹 if (data.isSingle() || data.isOneFollowingFolder()) { setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id)); - } else if (data.isLast()) { + } else if (data.isLast()) {//是最后一个数据 setBackgroundResource(NoteItemBgResources.getNoteBgLastRes(id)); - } else if (data.isFirst() || data.isMultiFollowingFolder()) { + } else if (data.isFirst() || data.isMultiFollowingFolder()) {//是一个数据并有多个子文件夹 setBackgroundResource(NoteItemBgResources.getNoteBgFirstRes(id)); } else { setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id)); } } else { + //若不是note直接调用文件夹的背景来源 setBackgroundResource(NoteItemBgResources.getFolderBgRes()); } } - public NoteItemData getItemData() { return mItemData; } -} +} \ No newline at end of file From 4cf8bfa173225a22615a34e5cc260e165da782ab Mon Sep 17 00:00:00 2001 From: rtc Date: Wed, 20 Dec 2023 23:45:55 +0800 Subject: [PATCH 43/48] Signed-off-by: rtc --- .../net/micode/notes/ui/NotesListAdapter.java | 115 ++++++++++++++---- 1 file changed, 94 insertions(+), 21 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/ui/NotesListAdapter.java b/src/Notes-master/src/net/micode/notes/ui/NotesListAdapter.java index 51c9cb9..b165769 100644 --- a/src/Notes-master/src/net/micode/notes/ui/NotesListAdapter.java +++ b/src/Notes-master/src/net/micode/notes/ui/NotesListAdapter.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import android.content.Context; @@ -23,6 +7,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.CursorAdapter; + import net.micode.notes.data.Notes; import java.util.Collection; @@ -31,55 +16,94 @@ import java.util.HashSet; import java.util.Iterator; +/* + * 功能:直译为便签表连接器,继承了CursorAdapter,它为cursor和ListView提供了连接的桥梁。 + * 所以NotesListAdapter实现的是鼠标和编辑便签链接的桥梁 + */ public class NotesListAdapter extends CursorAdapter { private static final String TAG = "NotesListAdapter"; private Context mContext; private HashMap mSelectedIndex; - private int mNotesCount; - private boolean mChoiceMode; + private int mNotesCount; //便签数 + private boolean mChoiceMode; //选择模式标记 + /* + * 桌面widget的属性,包括编号和类型 + */ public static class AppWidgetAttribute { public int widgetId; public int widgetType; }; + /* + * 函数功能:初始化便签链接器 + * 函数实现:根据传进来的内容设置相关变量 + */ public NotesListAdapter(Context context) { - super(context, null); - mSelectedIndex = new HashMap(); + super(context, null); //父类对象置空 + mSelectedIndex = new HashMap(); //新建选项下标的hash表 mContext = context; mNotesCount = 0; } @Override + /* + * 函数功能:新建一个视图来存储光标所指向的数据 + * 函数实现:使用兄弟类NotesListItem新建一个项目选项 + */ public View newView(Context context, Cursor cursor, ViewGroup parent) { return new NotesListItem(context); } + /* + * 函数功能:将已经存在的视图和鼠标指向的数据进行捆绑 + * 函数实现:如下注释 + */ @Override public void bindView(View view, Context context, Cursor cursor) { if (view instanceof NotesListItem) { + //若view是NotesListItem的一个实例 NoteItemData itemData = new NoteItemData(context, cursor); ((NotesListItem) view).bind(context, itemData, mChoiceMode, isSelectedItem(cursor.getPosition())); + //则新建一个项目选项并且用bind跟将view和鼠标,内容,便签数据捆绑在一起 } } + /* + * 函数功能:设置勾选框 + * 函数实现:如下注释 + */ public void setCheckedItem(final int position, final boolean checked) { mSelectedIndex.put(position, checked); + //根据定位和是否勾选设置下标 notifyDataSetChanged(); + //在修改后刷新activity } + /* + * 函数功能:判断单选按钮是否勾选 + */ public boolean isInChoiceMode() { return mChoiceMode; } + /* + * 函数功能:设置单项选项框 + * 函数实现:重置下标并且根据参数mode设置选项 + */ public void setChoiceMode(boolean mode) { mSelectedIndex.clear(); mChoiceMode = mode; } + /* + * 函数功能:选择全部选项 + * 函数实现:如下注释 + */ public void selectAll(boolean checked) { Cursor cursor = getCursor(); + //获取光标位置 for (int i = 0; i < getCount(); i++) { if (cursor.moveToPosition(i)) { if (NoteItemData.getNoteType(cursor) == Notes.TYPE_NOTE) { @@ -87,30 +111,47 @@ public class NotesListAdapter extends CursorAdapter { } } } + //遍历所有光标可用的位置在判断为便签类型之后勾选单项框 } + /* + * 函数功能:建立选择项的下标列表 + * 函数实现:如下注释 + */ public HashSet getSelectedItemIds() { HashSet itemSet = new HashSet(); + //建立hash表 for (Integer position : mSelectedIndex.keySet()) { + //遍历所有的关键 if (mSelectedIndex.get(position) == true) { + //若光标位置可用 Long id = getItemId(position); if (id == Notes.ID_ROOT_FOLDER) { + //原文件不需要添加 Log.d(TAG, "Wrong item id, should not happen"); } else { itemSet.add(id); } + //则将id该下标假如选项集合中 + } } return itemSet; } + /* + * 函数功能:建立桌面Widget的选项表 + * 函数实现:如下注释 + */ public HashSet getSelectedWidget() { HashSet itemSet = new HashSet(); for (Integer position : mSelectedIndex.keySet()) { if (mSelectedIndex.get(position) == true) { Cursor c = (Cursor) getItem(position); + //以上4句和getSelectedItemIds一样,不再重复 if (c != null) { + //光标位置可用的话就建立新的Widget属性并编辑下标和类型,最后添加到选项集中 AppWidgetAttribute widget = new AppWidgetAttribute(); NoteItemData item = new NoteItemData(mContext, c); widget.widgetId = item.getWidgetId(); @@ -128,26 +169,42 @@ public class NotesListAdapter extends CursorAdapter { return itemSet; } + /* + * 函数功能:获取选项个数 + * 函数实现:如下注释 + */ public int getSelectedCount() { Collection values = mSelectedIndex.values(); + //首先获取选项下标的值 if (null == values) { return 0; } Iterator iter = values.iterator(); + //初始化叠加器 int count = 0; while (iter.hasNext()) { if (true == iter.next()) { + //若value值为真计数+1 count++; } } return count; } + /* + * 函数功能:判断是否全部选中 + * 函数实现:如下注释 + */ public boolean isAllSelected() { int checkedCount = getSelectedCount(); return (checkedCount != 0 && checkedCount == mNotesCount); + //获取选项数看是否等于便签的个数 } + /* + * 函数功能:判断是否为选项表 + * 函数实现:通过传递的下标来确定 + */ public boolean isSelectedItem(final int position) { if (null == mSelectedIndex.get(position)) { return false; @@ -156,29 +213,45 @@ public class NotesListAdapter extends CursorAdapter { } @Override + /* + * 函数功能:在activity内容发生局部变动的时候回调该函数计算便签的数量 + * 函数实现:如下注释 + */ protected void onContentChanged() { super.onContentChanged(); + //执行基类函数 calcNotesCount(); } @Override + /* + * 函数功能:在activity光标发生局部变动的时候回调该函数计算便签的数量 + */ public void changeCursor(Cursor cursor) { super.changeCursor(cursor); + //执行基类函数 calcNotesCount(); } + /* + * 函数功能:计算便签数量 + * + */ private void calcNotesCount() { mNotesCount = 0; for (int i = 0; i < getCount(); i++) { + //获取总数同时遍历 Cursor c = (Cursor) getItem(i); if (c != null) { if (NoteItemData.getNoteType(c) == Notes.TYPE_NOTE) { mNotesCount++; + //若该位置不为空并且文本类型为便签就+1 } } else { Log.e(TAG, "Invalid cursor"); return; } + //否则报错 } } -} +} \ No newline at end of file From 00cbc30449b895377941833cafaec3367c3ae6be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxx=E2=80=9D?= <651952673@qq.com> Date: Thu, 21 Dec 2023 00:35:55 +0800 Subject: [PATCH 44/48] =?UTF-8?q?Signed-off-by:=20=E2=80=9Czsy=E2=80=9D=20?= =?UTF-8?q?<651952673@qq.com>=2012-21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/net/micode/notes/model/Note.java | 84 ++++++------ .../net/micode/notes/model/WorkingNote.java | 123 ++++++++++++----- .../net/micode/notes/tool/BackupUtils.java | 72 +++++----- .../src/net/micode/notes/tool/DataUtils.java | 97 ++++++++------ .../micode/notes/tool/GTaskStringUtils.java | 11 +- .../net/micode/notes/tool/ResourceParser.java | 125 +++++++++++------- 6 files changed, 312 insertions(+), 200 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/model/Note.java b/src/Notes-master/src/net/micode/notes/model/Note.java index 6706cf6..63fcbbf 100644 --- a/src/Notes-master/src/net/micode/notes/model/Note.java +++ b/src/Notes-master/src/net/micode/notes/model/Note.java @@ -13,19 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +//单个便签项,提供了一个笔记模块的功能。包括管理和操作笔记的数据、插入、更新和查询笔记数据,并将数据存储到ContentResolver中 package net.micode.notes.model; -import android.content.ContentProviderOperation; -import android.content.ContentProviderResult; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.content.OperationApplicationException; -import android.net.Uri; -import android.os.RemoteException; -import android.util.Log; - -import net.micode.notes.data.Notes; +import android.content.ContentProviderOperation;//用于描述对内容提供者的单个操作,例如插入、更新或删除数据。 +import android.content.ContentProviderResult;// 用于存储一组内容提供者操作的结果。 +import android.content.ContentUris;//包含用于处理内容URI的实用方法,例如从URI中提取ID等。 +import android.content.ContentValues;// 用于存储键值对形式的数据,通常用于向内容提供者插入新数据或更新现有数据。 +import android.content.Context;//用于访问应用程序全局的上下文信息,例如应用程序资源和类加载器等。 +import android.content.OperationApplicationException;//当应用多个操作到内容提供者时,可能会抛出此异常,表示其中一个操作失败。 +import android.net.Uri;//代表一个统一资源标识符,用于定位数据的位置,常用于访问内容提供者中的数据。 +import android.os.RemoteException;//可能会在跨进程通信时抛出,表示远程过程调用发生错误。 +import android.util.Log;//用于在Android系统中记录日志信息,帮助开发者调试应用程序。 +//上面为标准库,下面为在notes.data包里的用法 +import net.micode.notes.data.Notes;//设置安卓应用程序中笔记和文件夹的一些基本参数和属性 import net.micode.notes.data.Notes.CallNote; import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.NoteColumns; @@ -35,8 +35,8 @@ import java.util.ArrayList; public class Note { - private ContentValues mNoteDiffValues; - private NoteData mNoteData; + private ContentValues mNoteDiffValues;// + private NoteData mNoteData;//note数据 private static final String TAG = "Note"; /** * Create a new note id for adding a new note to databases @@ -49,8 +49,10 @@ public class Note { values.put(NoteColumns.MODIFIED_DATE, createdTime); values.put(NoteColumns.TYPE, Notes.TYPE_NOTE); values.put(NoteColumns.LOCAL_MODIFIED, 1); - values.put(NoteColumns.PARENT_ID, folderId); + values.put(NoteColumns.PARENT_ID, folderId);//将数据写入数据库表格 Uri uri = context.getContentResolver().insert(Notes.CONTENT_NOTE_URI, values); + //ContentResolver()主要是实现外部应用对ContentProvider中的数据 + //进行添加、删除、修改和查询操作 long noteId = 0; try { @@ -58,7 +60,7 @@ public class Note { } catch (NumberFormatException e) { Log.e(TAG, "Get note id error :" + e.toString()); noteId = 0; - } + }//try-catch异常处理 if (noteId == -1) { throw new IllegalStateException("Wrong note id:" + noteId); } @@ -68,40 +70,41 @@ public class Note { public Note() { mNoteDiffValues = new ContentValues(); mNoteData = new NoteData(); - } + }//定义两个变量用来存储便签的数据,一个是存储便签属性、一个是存储便签内容 public void setNoteValue(String key, String value) { mNoteDiffValues.put(key, value); mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); - } + }//设置数据库表格的标签属性数据 public void setTextData(String key, String value) { mNoteData.setTextData(key, value); } - + //设置数据库表格的标签文本内容的数据 public void setTextDataId(long id) { mNoteData.setTextDataId(id); } - + //设置文本数据的ID public long getTextDataId() { return mNoteData.mTextDataId; } + //得到文本数据的ID public void setCallDataId(long id) { mNoteData.setCallDataId(id); } - + //设置电话号码数据的ID public void setCallData(String key, String value) { mNoteData.setCallData(key, value); } - + //得到电话号码数据的ID public boolean isLocalModified() { return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified(); - } + }//判断是否是本地修改 public boolean syncNote(Context context, long noteId) { - if (noteId <= 0) { + if (noteId <= 0) {//id<=0报错 throw new IllegalArgumentException("Wrong note id:" + noteId); } @@ -128,32 +131,32 @@ public class Note { } return true; - } + }//判断是否同步 - private class NoteData { + private class NoteData {//定义一个基本的便签内容的数据类,主要包含文本数据和电话号码数据 private long mTextDataId; - private ContentValues mTextDataValues; + private ContentValues mTextDataValues;//文本数据 private long mCallDataId; - private ContentValues mCallDataValues; + private ContentValues mCallDataValues;//电话号码数据 private static final String TAG = "NoteData"; - public NoteData() { + public NoteData() {//初始化NoteData mTextDataValues = new ContentValues(); mCallDataValues = new ContentValues(); mTextDataId = 0; mCallDataId = 0; } - +// 函数实现部分 boolean isLocalModified() { return mTextDataValues.size() > 0 || mCallDataValues.size() > 0; - } + }//判断是否本地修改,即是否有新电话号码数据或文本数据 void setTextDataId(long id) { - if(id <= 0) { + if(id <= 0) {//id<=0报错 throw new IllegalArgumentException("Text data id should larger than 0"); } mTextDataId = id; @@ -178,18 +181,19 @@ public class Note { mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } + //下面函数的作用是将新的数据通过Uri的操作存储到数据库 Uri pushIntoContentResolver(Context context, long noteId) { /** * Check for safety */ if (noteId <= 0) { throw new IllegalArgumentException("Wrong note id:" + noteId); - } + }//判断是否合法 ArrayList operationList = new ArrayList(); - ContentProviderOperation.Builder builder = null; + ContentProviderOperation.Builder builder = null;//数据库的操作列表 - if(mTextDataValues.size() > 0) { + if(mTextDataValues.size() > 0) {//有文本数据 mTextDataValues.put(DataColumns.NOTE_ID, noteId); if (mTextDataId == 0) { mTextDataValues.put(DataColumns.MIME_TYPE, TextNote.CONTENT_ITEM_TYPE); @@ -209,9 +213,9 @@ public class Note { operationList.add(builder.build()); } mTextDataValues.clear(); - } + }//把文本数据存入DataColumns - if(mCallDataValues.size() > 0) { + if(mCallDataValues.size() > 0) {//有电话号码 mCallDataValues.put(DataColumns.NOTE_ID, noteId); if (mCallDataId == 0) { mCallDataValues.put(DataColumns.MIME_TYPE, CallNote.CONTENT_ITEM_TYPE); @@ -231,9 +235,9 @@ public class Note { operationList.add(builder.build()); } mCallDataValues.clear(); - } + }//把电话号码数据存入DataColumns - if (operationList.size() > 0) { + if (operationList.size() > 0) {//总长大于0 try { ContentProviderResult[] results = context.getContentResolver().applyBatch( Notes.AUTHORITY, operationList); @@ -248,6 +252,6 @@ public class Note { } } return null; - } + }//存储过程中的异常处理 } } diff --git a/src/Notes-master/src/net/micode/notes/model/WorkingNote.java b/src/Notes-master/src/net/micode/notes/model/WorkingNote.java index be081e4..c2c1b9e 100644 --- a/src/Notes-master/src/net/micode/notes/model/WorkingNote.java +++ b/src/Notes-master/src/net/micode/notes/model/WorkingNote.java @@ -16,12 +16,12 @@ package net.micode.notes.model; -import android.appwidget.AppWidgetManager; -import android.content.ContentUris; -import android.content.Context; -import android.database.Cursor; -import android.text.TextUtils; -import android.util.Log; +import android.appwidget.AppWidgetManager;//用于管理Android应用中的小部件。 +import android.content.ContentUris;//提供了用于处理内容URI的实用方法,用于获取数据的URI。 +import android.content.Context;//用于访问应用程序的全局信息和资源。 +import android.database.Cursor;//用于在数据库查询结果集中进行遍历和操作。 +import android.text.TextUtils;//提供了一些处理文本的实用方法,如判断字符串是否为空或空白。 +import android.util.Log;//用于在调试时输出日志信息。 import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.CallNote; @@ -31,7 +31,7 @@ import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.data.Notes.TextNote; import net.micode.notes.tool.ResourceParser.NoteBgResources; - +//定义WorkingNote public class WorkingNote { // Note for the working note private Note mNote; @@ -41,27 +41,30 @@ public class WorkingNote { private String mContent; // Note mode private int mMode; - +//模式值,初始化为0 private long mAlertDate; - +//警戒值 private long mModifiedDate; - +//修改值 private int mBgColorId; - +//颜色 private int mWidgetId; - +//宽 ID private int mWidgetType; - +//宽大小 private long mFolderId; - +//文件夹ID private Context mContext; - +//内容 private static final String TAG = "WorkingNote"; - +//标签 private boolean mIsDeleted; - +//删除时改变 private NoteSettingChangedListener mNoteSettingStatusListener; +//判断设置是否改变,默认为0 + + // 声明 DATA_PROJECTION字符串数组 public static final String[] DATA_PROJECTION = new String[] { DataColumns.ID, DataColumns.CONTENT, @@ -72,6 +75,9 @@ public class WorkingNote { DataColumns.DATA4, }; + + + // 声明 NOTE_PROJECTION字符串数组 public static final String[] NOTE_PROJECTION = new String[] { NoteColumns.PARENT_ID, NoteColumns.ALERTED_DATE, @@ -101,6 +107,8 @@ public class WorkingNote { private static final int NOTE_MODIFIED_DATE_COLUMN = 5; + +// WorkingNote的构造函数 // New note construct private WorkingNote(Context context, long folderId) { mContext = context; @@ -124,11 +132,15 @@ public class WorkingNote { loadNote(); } + // 加载Note + // 通过数据库调用query函数找到第一个条目 + private void loadNote() { Cursor cursor = mContext.getContentResolver().query( ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null, null, null); + // 若存在,储存相应信息 if (cursor != null) { if (cursor.moveToFirst()) { mFolderId = cursor.getLong(NOTE_PARENT_ID_COLUMN); @@ -139,6 +151,7 @@ public class WorkingNote { mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN); } cursor.close(); + // 若不存在,报错 } else { Log.e(TAG, "No note with id:" + mNoteId); throw new IllegalArgumentException("Unable to find note with id " + mNoteId); @@ -146,14 +159,18 @@ public class WorkingNote { loadNoteData(); } + + // 加载NoteData private void loadNoteData() { Cursor cursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] { String.valueOf(mNoteId) }, null); - +//根据ID加载note if (cursor != null) { + // 查到信息不为空 if (cursor.moveToFirst()) { + // 查看第一项是否存在 do { String type = cursor.getString(DATA_MIME_TYPE_COLUMN); if (DataConstants.NOTE.equals(type)) { @@ -166,37 +183,45 @@ public class WorkingNote { Log.d(TAG, "Wrong note type with type:" + type); } } while (cursor.moveToNext()); + //查阅所有项,直到为空 } cursor.close(); } else { + //没有便签则报错 Log.e(TAG, "No data with id:" + mNoteId); throw new IllegalArgumentException("Unable to find note's data with id " + mNoteId); } } + // 创建空的Note + // 传参:context,文件夹id,widget,背景颜色 public static WorkingNote createEmptyNote(Context context, long folderId, int widgetId, int widgetType, int defaultBgColorId) { WorkingNote note = new WorkingNote(context, folderId); + // 设定颜色,widget note.setBgColorId(defaultBgColorId); note.setWidgetId(widgetId); note.setWidgetType(widgetType); return note; } - +//根据id加载note public static WorkingNote load(Context context, long id) { return new WorkingNote(context, id, 0); } - +//保存Note public synchronized boolean saveNote() { if (isWorthSaving()) { + //是否值得保存 if (!existInDatabase()) { + //是否存在数据库中 if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) { + //ID为0,报错 Log.e(TAG, "Create new note fail with id:" + mNoteId); return false; } } - mNote.syncNote(mContext, mNoteId); + mNote.syncNote(mContext, mNoteId);//保存 /** * Update widget content if there exist any widget of this note @@ -204,7 +229,7 @@ public class WorkingNote { if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID && mWidgetType != Notes.TYPE_WIDGET_INVALIDE && mNoteSettingStatusListener != null) { - mNoteSettingStatusListener.onWidgetChanged(); + mNoteSettingStatusListener.onWidgetChanged();// 状态变为已保存 } return true; } else { @@ -212,11 +237,14 @@ public class WorkingNote { } } + //判断数据库是否存在该便签 public boolean existInDatabase() { return mNoteId > 0; } + //是否值得保存 private boolean isWorthSaving() { + // 被删除,或(不在数据库中 内容为空),或 本地已保存过 if (mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent)) || (existInDatabase() && !mNote.isLocalModified())) { return false; @@ -225,9 +253,12 @@ public class WorkingNote { } } + // 设置mNoteSettingStatusListener public void setOnSettingStatusChangedListener(NoteSettingChangedListener l) { mNoteSettingStatusListener = l; } + // 设置AlertDate + // 若 mAlertDate与data不同,则更改mAlertDate并设定NoteValue public void setAlertDate(long date, boolean set) { if (date != mAlertDate) { @@ -239,16 +270,20 @@ public class WorkingNote { } } + // 设定删除标记 public void markDeleted(boolean mark) { + //设定标记 mIsDeleted = mark; if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID && mWidgetType != Notes.TYPE_WIDGET_INVALIDE && mNoteSettingStatusListener != null) { mNoteSettingStatusListener.onWidgetChanged(); + // 调用mNoteSettingStatusListener的 onWidgetChanged方法 } } + // 设定背景颜色 public void setBgColorId(int id) { - if (id != mBgColorId) { + if (id != mBgColorId) {//设定条件 id != mBgColorId mBgColorId = id; if (mNoteSettingStatusListener != null) { mNoteSettingStatusListener.onBackgroundColorChanged(); @@ -257,7 +292,10 @@ public class WorkingNote { } } + // 设定检查列表模式 + // 参数:mode public void setCheckListMode(int mode) { + //设定条件 mMode != mode,才改变 if (mMode != mode) { if (mNoteSettingStatusListener != null) { mNoteSettingStatusListener.onCheckListModeChanged(mMode, mode); @@ -266,82 +304,107 @@ public class WorkingNote { mNote.setTextData(TextNote.MODE, String.valueOf(mMode)); } } - + // 设定WidgetType + // 参数:type public void setWidgetType(int type) { - if (type != mWidgetType) { + if (type != mWidgetType) {//设定条件 type != mWidgetType mWidgetType = type; mNote.setNoteValue(NoteColumns.WIDGET_TYPE, String.valueOf(mWidgetType)); + // 调用Note的setNoteValue方法更改WidgetType } } - + // 设定WidgetId + // 参数:id public void setWidgetId(int id) { if (id != mWidgetId) { mWidgetId = id; mNote.setNoteValue(NoteColumns.WIDGET_ID, String.valueOf(mWidgetId)); + // 调用Note的setNoteValue方法更改WidgetId + } } - + // 设定WorkingText + // 参数:更改的text public void setWorkingText(String text) { - if (!TextUtils.equals(mContent, text)) { + if (!TextUtils.equals(mContent, text)) {//设定条件 mContent, text内容不同 mContent = text; mNote.setTextData(DataColumns.CONTENT, mContent); + + // 调用Note的setTextData方法更改WorkingText + } } - + // 转变mNote的CallData及CallNote信息 + // 参数:String phoneNumber, long callDate public void convertToCallNote(String phoneNumber, long callDate) { mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate)); mNote.setCallData(CallNote.PHONE_NUMBER, phoneNumber); mNote.setNoteValue(NoteColumns.PARENT_ID, String.valueOf(Notes.ID_CALL_RECORD_FOLDER)); } + // 判断是否有时钟题型 public boolean hasClockAlert() { return (mAlertDate > 0 ? true : false); } + // 获取Content public String getContent() { return mContent; } + // 获取AlertDate public long getAlertDate() { return mAlertDate; } + // 获取ModifiedDate public long getModifiedDate() { return mModifiedDate; } + // 获取背景颜色来源id public int getBgColorResId() { return NoteBgResources.getNoteBgResource(mBgColorId); } + // 获取背景颜色id public int getBgColorId() { return mBgColorId; } + // 获取标题背景颜色id public int getTitleBgResId() { return NoteBgResources.getNoteTitleBgResource(mBgColorId); } + // 获取CheckListMode public int getCheckListMode() { return mMode; } + // 获取便签id public long getNoteId() { return mNoteId; } + + // 获取文件夹id public long getFolderId() { return mFolderId; } + // 获取WidgetId public int getWidgetId() { return mWidgetId; } + // 获取WidgetType public int getWidgetType() { return mWidgetType; } - + // 创建接口 NoteSettingChangedListener,便签更新监视 + // 为NoteEditActivity提供接口 + // 提供函数有 public interface NoteSettingChangedListener { /** * Called when the background color of current note has just changed diff --git a/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java b/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java index 39f6ec4..5a7c0f4 100644 --- a/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java +++ b/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java @@ -16,12 +16,12 @@ package net.micode.notes.tool; -import android.content.Context; -import android.database.Cursor; -import android.os.Environment; -import android.text.TextUtils; -import android.text.format.DateFormat; -import android.util.Log; +import android.content.Context;//导入 Android 应用程序上下文(Context)类。 +import android.database.Cursor;//导入 Android 数据库查询结果集(Cursor)类。 +import android.os.Environment;//导入 Android 系统环境(Environment)类。 +import android.text.TextUtils;//导入 Android 文本工具(TextUtils)类。 +import android.text.format.DateFormat;//导入 Android 日期时间格式化(DateFormat)类。 +import android.util.Log;//导入 Android 日志(Log)类。 import net.micode.notes.R; import net.micode.notes.data.Notes; @@ -29,13 +29,13 @@ import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.DataConstants; import net.micode.notes.data.Notes.NoteColumns; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintStream; - +import java.io.File;//导入 Java 的文件(File)类,用于表示文件和目录的抽象路径名。 +import java.io.FileNotFoundException;//导入 Java 的文件找不到异常(FileNotFoundException)类,用于处理文件未找到的异常情况。 +import java.io.FileOutputStream;//导入 Java 的文件输出流(FileOutputStream)类,用于将数据写入文件。 +import java.io.IOException;//导入 Java 的输入输出异常(IOException)类,用于处理输入输出操作中可能发生的异常情况。 +import java.io.PrintStream;//导入 Java 的打印流(PrintStream)类,用于向标准输出流打印输出。 +//备份的处理 public class BackupUtils { private static final String TAG = "BackupUtils"; // Singleton stuff @@ -43,6 +43,7 @@ public class BackupUtils { public static synchronized BackupUtils getInstance(Context context) { if (sInstance == null) { + //如果当前备份不存在,则新声明一个 sInstance = new BackupUtils(context); } return sInstance; @@ -52,27 +53,30 @@ public class BackupUtils { * Following states are signs to represents backup or restore * status */ - // Currently, the sdcard is not mounted + // Currently, the sdcard is not mounted SD卡没有被装入手机 public static final int STATE_SD_CARD_UNMOUONTED = 0; - // The backup file not exist + // The backup file not exist 备份文件夹不存在 public static final int STATE_BACKUP_FILE_NOT_EXIST = 1; - // The data is not well formated, may be changed by other programs + // The data is not well formated, may be changed by other programs数据已被破坏,可能被修改 public static final int STATE_DATA_DESTROIED = 2; - // Some run-time exception which causes restore or backup fails + // Some run-time exception which causes restore or backup fails超时异常 public static final int STATE_SYSTEM_ERROR = 3; - // Backup or restore success + // Backup or restore success成功存储 public static final int STATE_SUCCESS = 4; private TextExport mTextExport; + //初始化函数 private BackupUtils(Context context) { mTextExport = new TextExport(context); } - private static boolean externalStorageAvailable() { + //外部存储功能是否可用 + private static boolean externalStorageAvailable() {//外部存储功能是否可用 return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); } + // public int exportToText() { return mTextExport.exportToText(); } @@ -125,6 +129,7 @@ public class BackupUtils { private String mFileName; private String mFileDirectory; + //导出文本功能,将其作为字符串形式导出 public TextExport(Context context) { TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note); mContext = context; @@ -140,22 +145,22 @@ public class BackupUtils { * Export the folder identified by folder id to text */ private void exportFolderToText(String folderId, PrintStream ps) { - // Query notes belong to this folder + // Query notes belong to this folder通过查询parent id是文件夹id的note来选出制定ID文件夹下的Note Cursor notesCursor = mContext.getContentResolver().query(Notes.CONTENT_NOTE_URI, NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[] { folderId }, null); - if (notesCursor != null) { + if (notesCursor != null) {//有内容 if (notesCursor.moveToFirst()) { do { - // Print note's last modified date + // Print note's last modified date ps里面保存有这份note的日期 ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( mContext.getString(R.string.format_datetime_mdhm), notesCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); // Query data belong to this note String noteId = notesCursor.getString(NOTE_COLUMN_ID); - exportNoteToText(noteId, ps); + exportNoteToText(noteId, ps); //将文件导出到text } while (notesCursor.moveToNext()); } notesCursor.close(); @@ -171,17 +176,17 @@ public class BackupUtils { noteId }, null); - if (dataCursor != null) { + if (dataCursor != null) { //利用光标来扫描内容,区别为callnote和note两种,靠ps.printline输出 if (dataCursor.moveToFirst()) { do { String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE); - if (DataConstants.CALL_NOTE.equals(mimeType)) { + if (DataConstants.CALL_NOTE.equals(mimeType)) {//是否类型相同 // Print phone number String phoneNumber = dataCursor.getString(DATA_COLUMN_PHONE_NUMBER); long callDate = dataCursor.getLong(DATA_COLUMN_CALL_DATE); String location = dataCursor.getString(DATA_COLUMN_CONTENT); - if (!TextUtils.isEmpty(phoneNumber)) { + if (!TextUtils.isEmpty(phoneNumber)) {//判断是否为空字符 ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), phoneNumber)); } @@ -218,7 +223,7 @@ public class BackupUtils { /** * Note will be exported as text which is user readable */ - public int exportToText() { + public int exportToText() {//总函数,调用上面的exportFolder和exportNote if (!externalStorageAvailable()) { Log.d(TAG, "Media was not mounted"); return STATE_SD_CARD_UNMOUONTED; @@ -229,7 +234,7 @@ public class BackupUtils { Log.e(TAG, "get print stream error"); return STATE_SYSTEM_ERROR; } - // First export folder and its notes + // First export folder and its notes 导出文件夹,就是导出里面包含的便签 Cursor folderCursor = mContext.getContentResolver().query( Notes.CONTENT_NOTE_URI, NOTE_PROJECTION, @@ -257,7 +262,7 @@ public class BackupUtils { folderCursor.close(); } - // Export notes in root's folder + // Export notes in root's folder 将根目录里的便签导出(由于不属于任何文件夹,因此无法通过文件夹导出来实现这一部分便签的导出) Cursor noteCursor = mContext.getContentResolver().query( Notes.CONTENT_NOTE_URI, NOTE_PROJECTION, @@ -287,7 +292,7 @@ public class BackupUtils { */ private PrintStream getExportToTextPrintStream() { File file = generateFileMountedOnSDcard(mContext, R.string.file_path, - R.string.file_name_txt_format); + R.string.file_name_txt_format);//导出后的文件路径 if (file == null) { Log.e(TAG, "create file to exported failed"); return null; @@ -314,16 +319,16 @@ public class BackupUtils { */ private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { StringBuilder sb = new StringBuilder(); - sb.append(Environment.getExternalStorageDirectory()); - sb.append(context.getString(filePathResId)); - File filedir = new File(sb.toString()); + sb.append(Environment.getExternalStorageDirectory()); //外部(SD卡)的存储路径 + sb.append(context.getString(filePathResId));//文件的存储路径 + File filedir = new File(sb.toString());//filedir应该就是用来存储路径信息 sb.append(context.getString( fileNameFormatResId, DateFormat.format(context.getString(R.string.format_date_ymd), System.currentTimeMillis()))); File file = new File(sb.toString()); - try { + try { //如果这些文件不存在,则新建 if (!filedir.exists()) { filedir.mkdir(); } @@ -337,6 +342,7 @@ public class BackupUtils { e.printStackTrace(); } +// try catch 异常处理 return null; } } diff --git a/src/Notes-master/src/net/micode/notes/tool/DataUtils.java b/src/Notes-master/src/net/micode/notes/tool/DataUtils.java index 2a14982..33e5f26 100644 --- a/src/Notes-master/src/net/micode/notes/tool/DataUtils.java +++ b/src/Notes-master/src/net/micode/notes/tool/DataUtils.java @@ -16,15 +16,15 @@ package net.micode.notes.tool; -import android.content.ContentProviderOperation; -import android.content.ContentProviderResult; -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.OperationApplicationException; -import android.database.Cursor; -import android.os.RemoteException; -import android.util.Log; +import android.content.ContentProviderOperation;//导入 Android 内容提供者操作(ContentProviderOperation)类,用于操作内容提供者中的数据。 +import android.content.ContentProviderResult;//导入 Android 内容提供者结果(ContentProviderResult)类,用于存储内容提供者操作的结果。 +import android.content.ContentResolver;//导入 Android 内容解析器(ContentResolver)类,用于访问应用程序中的各种内容提供者。 +import android.content.ContentUris;//导入 Android 内容 URI(ContentUris)类,用于处理内容提供者的 URI。 +import android.content.ContentValues;//导入 Android 内容值(ContentValues)类,用于封装要插入或更新到内容提供者中的数据。 +import android.content.OperationApplicationException;//导入 Android 操作应用程序异常(OperationApplicationException)类,用于处理内容提供者操作时可能出现的异常情况。 +import android.database.Cursor;//导入 Android 数据库查询结果集(Cursor)类,用于表示数据库查询结果集。 +import android.os.RemoteException;//导入 Android 远程操作异常(RemoteException)类,用于处理远程操作时可能出现的异常情况。 +import android.util.Log;//导入 Android 日志(Log)类,用于记录调试信息。 import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.CallNote; @@ -37,6 +37,8 @@ import java.util.HashSet; public class DataUtils { public static final String TAG = "DataUtils"; + + //删除多个note public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) { if (ids == null) { Log.d(TAG, "the ids is null"); @@ -47,19 +49,20 @@ public class DataUtils { return true; } - ArrayList operationList = new ArrayList(); + ArrayList operationList = new ArrayList();//提供一个任务列表 for (long id : ids) { if(id == Notes.ID_ROOT_FOLDER) { Log.e(TAG, "Don't delete system folder root"); continue; - } + } //如果发现是根文件夹,则不删除 ContentProviderOperation.Builder builder = ContentProviderOperation - .newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); + .newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); //用newDelete实现删除功能 operationList.add(builder.build()); } try { - ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); - if (results == null || results.length == 0 || results[0] == null) { + ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);//主机名(或叫Authority)用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。 + //数据库事务,数据库事务是由一组数据库操作序列组成,事务作为一个整体被执行 + if (results == null || results.length == 0 || results[0] == null) {//若为空则没必要删 Log.d(TAG, "delete notes failed, ids:" + ids.toString()); return false; } @@ -72,14 +75,16 @@ public class DataUtils { return false; } + //将便签移动至文件夹内 public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) { ContentValues values = new ContentValues(); values.put(NoteColumns.PARENT_ID, desFolderId); values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId); values.put(NoteColumns.LOCAL_MODIFIED, 1); - resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null); + resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null);//对需要移动的便签进行数据更新,然后用update实现 } + //批量移动 public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, long folderId) { if (ids == null) { @@ -90,14 +95,14 @@ public class DataUtils { ArrayList operationList = new ArrayList(); for (long id : ids) { ContentProviderOperation.Builder builder = ContentProviderOperation - .newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); + .newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id));//通过withAppendedId方法,为该Uri加上ID builder.withValue(NoteColumns.PARENT_ID, folderId); builder.withValue(NoteColumns.LOCAL_MODIFIED, 1); operationList.add(builder.build()); - } + }//将ids里包含的每一列的数据逐次加入到operationList中,等待最后的批量处理 try { - ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); + ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); //applyBatch一次性处理一个操作列表 if (results == null || results.length == 0 || results[0] == null) { Log.d(TAG, "delete notes failed, ids:" + ids.toString()); return false; @@ -114,12 +119,14 @@ public class DataUtils { /** * Get the all folder count except system folders {@link Notes#TYPE_SYSTEM}} */ + //获取文件夹的编号 public static int getUserFolderCount(ContentResolver resolver) { Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI, new String[] { "COUNT(*)" }, NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>?", new String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)}, - null); + null);//筛选条件:源文件不为trash folder + int count = 0; if(cursor != null) { @@ -136,23 +143,24 @@ public class DataUtils { return count; } + //查看是否有指定ID的note可见 public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null, NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER, new String [] {String.valueOf(type)}, - null); + null);//查询条件:type符合,且不属于垃圾文件夹 boolean exist = false; if (cursor != null) { - if (cursor.getCount() > 0) { + if (cursor.getCount() > 0) {//用getcount函数判断cursor是否为空 exist = true; } cursor.close(); } return exist; } - +///判定是否有指定note,即不需条件条件:type符合,且不属于垃圾文件夹 public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null, null, null, null); @@ -166,7 +174,7 @@ public class DataUtils { } return exist; } - +//判定是否有指定的data public static boolean existInDataDatabase(ContentResolver resolver, long dataId) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null, null, null, null); @@ -180,13 +188,14 @@ public class DataUtils { } return exist; } - +//判定是否有指定的可见folder public static boolean checkVisibleFolderName(ContentResolver resolver, String name) { Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null, NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + " AND " + NoteColumns.SNIPPET + "=?", new String[] { name }, null); + //通过名字查询文件是否存在 boolean exist = false; if(cursor != null) { if(cursor.getCount() > 0) { @@ -197,12 +206,13 @@ public class DataUtils { return exist; } + //文件夹工具 public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) { Cursor c = resolver.query(Notes.CONTENT_NOTE_URI, new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE }, NoteColumns.PARENT_ID + "=?", new String[] { String.valueOf(folderId) }, - null); + null);//查询条件:父ID是传入的folderId; HashSet set = null; if (c != null) { @@ -211,8 +221,8 @@ public class DataUtils { do { try { AppWidgetAttribute widget = new AppWidgetAttribute(); - widget.widgetId = c.getInt(0); - widget.widgetType = c.getInt(1); + widget.widgetId = c.getInt(0);//0对应的NoteColumns.WIDGET_ID + widget.widgetType = c.getInt(1);//1对应的NoteColumns.WIDGET_TYPE set.add(widget); } catch (IndexOutOfBoundsException e) { Log.e(TAG, e.toString()); @@ -224,20 +234,21 @@ public class DataUtils { return set; } + //根据给定的便签ID(noteId)获取该便签中的电话号码(CallNote.PHONE_NUMBER) public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, new String [] { CallNote.PHONE_NUMBER }, CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?", new String [] { String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE }, - null); + null);//在查询条件中限定了便签ID(NoteId)和便签类型(CallNote.MIME_TYPE),使用了占位符(?)和参数数组,避免了SQL注入攻击 - if (cursor != null && cursor.moveToFirst()) { + if (cursor != null && cursor.moveToFirst()) {//如果查询结果非空且有记录,则尝试获取第一条记录的电话号码,并将其返回。 try { return cursor.getString(0); } catch (IndexOutOfBoundsException e) { - Log.e(TAG, "Get call number fails " + e.toString()); + Log.e(TAG, "Get call number fails " + e.toString());//如果获取电话号码失败,则在日志中打印错误信息,并返回空字符串 } finally { - cursor.close(); + cursor.close();//关闭游标(Cursor)对象 } } return ""; @@ -249,19 +260,19 @@ public class DataUtils { CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL(" + CallNote.PHONE_NUMBER + ",?)", new String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber }, - null); - + null);//在查询条件中限定了通话日期(CallNote.CALL_DATE)、便签类型(CallNote.MIME_TYPE)以及电话号码(CallNote.PHONE_NUMBER)。//使用了占位符(?)和参数数组来避免SQL注入攻击,并使用PHONE_NUMBERS_EQUAL函数来比较电话号码。 +//通过数据库操作,查询条件是(callDate和phoneNumber匹配传入参数的值) if (cursor != null) { if (cursor.moveToFirst()) { try { - return cursor.getLong(0); + return cursor.getLong(0);//0对应的CallNote.NOTE_ID } catch (IndexOutOfBoundsException e) { Log.e(TAG, "Get call note id fails " + e.toString()); } } cursor.close(); } - return 0; + return 0;//如果查询结果为空,则返回0作为默认值。 } public static String getSnippetById(ContentResolver resolver, long noteId) { @@ -269,8 +280,8 @@ public class DataUtils { new String [] { NoteColumns.SNIPPET }, NoteColumns.ID + "=?", new String [] { String.valueOf(noteId)}, - null); - + null);//查询条件:noteId + //如果查询结果非空,则尝试获取第一条记录的便签片段,并将其赋值给变量snippet。 if (cursor != null) { String snippet = ""; if (cursor.moveToFirst()) { @@ -279,17 +290,17 @@ public class DataUtils { cursor.close(); return snippet; } - throw new IllegalArgumentException("Note is not found with id: " + noteId); + throw new IllegalArgumentException("Note is not found with id: " + noteId);//如果查询结果为空,则抛出IllegalArgumentException异常,提示便签ID不存在。 } - public static String getFormattedSnippet(String snippet) { - if (snippet != null) { - snippet = snippet.trim(); - int index = snippet.indexOf('\n'); + public static String getFormattedSnippet(String snippet) { //对字符串进行格式处理,将字符串两头的空格去掉,同时将换行符去掉 + if (snippet != null) {//首先判断传入的便签片段(snippet)是否为空。如果不为空,则执行下一步;否则直接返回空字符串 + snippet = snippet.trim();//对便签片段进行trim操作,去除字符串前后的空格。 + int index = snippet.indexOf('\n');//查找便签片段中第一个换行符(\n)的索引位置,如果找到了,则截取从开头到该索引位置的子字符串;否则保留原始字符串。 if (index != -1) { snippet = snippet.substring(0, index); } } - return snippet; + return snippet;//返回格式化后的便签片段。 } } diff --git a/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java b/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java index 666b729..3dae2b5 100644 --- a/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java +++ b/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java @@ -13,16 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +//定义了很多的静态字符串,目的就是为了提供jsonObject中相应字符串的"key"。把这些静态的定义单独写到了一个类里面,这是非常好的编程规范 package net.micode.notes.tool; - +//这个类就是定义了一堆static string,实际就是为jsonObject提供Key,把这些定义全部写到一个类里,方便查看管理 public class GTaskStringUtils { +// 前面一部分常量名称都以"GTASK_JSON_"开头,表示它们是Google Tasks API中JSON格式的字段名称。 + public final static String GTASK_JSON_ACTION_ID = "action_id";//操作的ID - public final static String GTASK_JSON_ACTION_ID = "action_id"; - - public final static String GTASK_JSON_ACTION_LIST = "action_list"; + public final static String GTASK_JSON_ACTION_LIST = "action_list";//操作列表 - public final static String GTASK_JSON_ACTION_TYPE = "action_type"; + public final static String GTASK_JSON_ACTION_TYPE = "action_type";//操作类型 public final static String GTASK_JSON_ACTION_TYPE_CREATE = "create"; diff --git a/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java b/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java index 1ad3ad6..7e656a5 100644 --- a/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java +++ b/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java @@ -16,14 +16,30 @@ package net.micode.notes.tool; -import android.content.Context; -import android.preference.PreferenceManager; +import android.content.Context;//Context是一个Android系统级别的类,它提供了访问应用程序资源和执行应用程序操作的方法。通过使用Context,开发者可以获取应用程序的上下文环境,例如访问应用程序的资源文件、启动活动、发送广播等。 +import android.preference.PreferenceManager;//PreferenceManager是Android提供的一个管理应用程序偏好设置的类。偏好设置是一种存储和检索简单数据的机制,例如用户首选项、应用程序设置等。PreferenceManager提供了一些方便的方法来读取和写入偏好设置,并且可以自动处理数据类型转换和持久化存储。 import net.micode.notes.R; import net.micode.notes.ui.NotesPreferenceActivity; -public class ResourceParser { +////*简介:字面意义是资源分析器,实际上就是获取资源并且在程序中使用,比如颜色图片等 +// * 实现方法:主要利用R.java这个类,其中包括 +// * R.id 组件资源引用 +// * R.drawable 图片资源 (被使用) +// * R.layout 布局资源 +// * R.menu 菜单资源 +// * R.String 文字资源 +// * R.style 主题资源 (被使用) +// * 在按顺序设置好相应的id后,就可以编写简单的getXXX函数获取需要的资源 +// * +// * 特殊的变量 : +// * @BG_DEFAULT_COLOR 默认背景颜色(黄) +// * BG_DEFAULT_FONT_SIZE 默认文本大小(中) + + +public class ResourceParser { +//定义颜色编号 public static final int YELLOW = 0; public static final int BLUE = 1; public static final int WHITE = 2; @@ -31,7 +47,7 @@ public class ResourceParser { public static final int RED = 4; public static final int BG_DEFAULT_COLOR = YELLOW; - +//定义大小编号 public static final int TEXT_SMALL = 0; public static final int TEXT_MEDIUM = 1; public static final int TEXT_LARGE = 2; @@ -40,20 +56,21 @@ public class ResourceParser { public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM; public static class NoteBgResources { +// 表示笔记编辑界面的不同背景颜色 private final static int [] BG_EDIT_RESOURCES = new int [] { - R.drawable.edit_yellow, - R.drawable.edit_blue, - R.drawable.edit_white, - R.drawable.edit_green, - R.drawable.edit_red + R.drawable.edit_yellow, + R.drawable.edit_blue, + R.drawable.edit_white, + R.drawable.edit_green, + R.drawable.edit_red }; - +//标题栏背景颜色 private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] { - R.drawable.edit_title_yellow, - R.drawable.edit_title_blue, - R.drawable.edit_title_white, - R.drawable.edit_title_green, - R.drawable.edit_title_red + R.drawable.edit_title_yellow, + R.drawable.edit_title_blue, + R.drawable.edit_title_white, + R.drawable.edit_title_green, + R.drawable.edit_title_red }; public static int getNoteBgResource(int id) { @@ -64,7 +81,9 @@ public class ResourceParser { return BG_EDIT_TITLE_RESOURCES[id]; } } + //直接获取默认的背景颜色。这个PREFERENCE_SET_BG_COLOR_KEY是个final string,也就是说getBoolean肯定执行else,为什么要这么写 +// getDefaultBgId方法是一个公共静态方法,它接收一个Context对象作为参数,并根据应用程序的偏好设置确定默认的背景颜色ID。如果偏好设置中设置了背景颜色,则随机选择一个背景颜色ID;否则,返回一个默认的背景颜色ID。 public static int getDefaultBgId(Context context) { if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean( NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) { @@ -74,37 +93,38 @@ public class ResourceParser { } } +// NoteItemBgResources类类似于NoteBgResources类,它也包含一个私有的静态整型数组BG_FIRST_RESOURCES,用于表示笔记列表项的不同背景颜色。这些资源文件ID代表了笔记列表项在不同状态下的背景样式。 public static class NoteItemBgResources { private final static int [] BG_FIRST_RESOURCES = new int [] { - R.drawable.list_yellow_up, - R.drawable.list_blue_up, - R.drawable.list_white_up, - R.drawable.list_green_up, - R.drawable.list_red_up + R.drawable.list_yellow_up, + R.drawable.list_blue_up, + R.drawable.list_white_up, + R.drawable.list_green_up, + R.drawable.list_red_up }; private final static int [] BG_NORMAL_RESOURCES = new int [] { - R.drawable.list_yellow_middle, - R.drawable.list_blue_middle, - R.drawable.list_white_middle, - R.drawable.list_green_middle, - R.drawable.list_red_middle + R.drawable.list_yellow_middle, + R.drawable.list_blue_middle, + R.drawable.list_white_middle, + R.drawable.list_green_middle, + R.drawable.list_red_middle }; private final static int [] BG_LAST_RESOURCES = new int [] { - R.drawable.list_yellow_down, - R.drawable.list_blue_down, - R.drawable.list_white_down, - R.drawable.list_green_down, - R.drawable.list_red_down, + R.drawable.list_yellow_down, + R.drawable.list_blue_down, + R.drawable.list_white_down, + R.drawable.list_green_down, + R.drawable.list_red_down, }; private final static int [] BG_SINGLE_RESOURCES = new int [] { - R.drawable.list_yellow_single, - R.drawable.list_blue_single, - R.drawable.list_white_single, - R.drawable.list_green_single, - R.drawable.list_red_single + R.drawable.list_yellow_single, + R.drawable.list_blue_single, + R.drawable.list_white_single, + R.drawable.list_green_single, + R.drawable.list_red_single }; public static int getNoteBgFirstRes(int id) { @@ -128,13 +148,14 @@ public class ResourceParser { } } +// 这些数组存储了一组资源文件的ID,用于表示小部件(widget)的不同背景颜色。其中,BG_2X_RESOURCES数组存储了用于2x尺寸的小部件背景颜色的资源文件ID,而BG_4X_RESOURCES数组存储了用于4x尺寸的小部件背景颜色的资源文件ID。 public static class WidgetBgResources { private final static int [] BG_2X_RESOURCES = new int [] { - R.drawable.widget_2x_yellow, - R.drawable.widget_2x_blue, - R.drawable.widget_2x_white, - R.drawable.widget_2x_green, - R.drawable.widget_2x_red, + R.drawable.widget_2x_yellow, + R.drawable.widget_2x_blue, + R.drawable.widget_2x_white, + R.drawable.widget_2x_green, + R.drawable.widget_2x_red, }; public static int getWidget2xBgResource(int id) { @@ -142,11 +163,11 @@ public class ResourceParser { } private final static int [] BG_4X_RESOURCES = new int [] { - R.drawable.widget_4x_yellow, - R.drawable.widget_4x_blue, - R.drawable.widget_4x_white, - R.drawable.widget_4x_green, - R.drawable.widget_4x_red + R.drawable.widget_4x_yellow, + R.drawable.widget_4x_blue, + R.drawable.widget_4x_white, + R.drawable.widget_4x_green, + R.drawable.widget_4x_red }; public static int getWidget4xBgResource(int id) { @@ -154,14 +175,18 @@ public class ResourceParser { } } +// 用于存储一组文本外观(TextAppearance)的资源文件ID。这些资源文件ID代表了不同文本样式的设置,如正常字体、中等字体、大号字体、超大号字体等 public static class TextAppearanceResources { +// 可以根据给定的索引获取对应的文本样式的资源文件ID。注意这里有一个容错的函数,当传入的索引大于等于资源数量时,会返回默认的字体大小设置。 private final static int [] TEXTAPPEARANCE_RESOURCES = new int [] { - R.style.TextAppearanceNormal, - R.style.TextAppearanceMedium, - R.style.TextAppearanceLarge, - R.style.TextAppearanceSuper + R.style.TextAppearanceNormal, + R.style.TextAppearanceMedium, + R.style.TextAppearanceLarge, + R.style.TextAppearanceSuper }; + //这里有一个容错的函数,防止输入的id大于资源总量,若如此,则自动返回默认的设置结果 +// getResourcesSize方法返回文本外观资源文件ID数组的长度,也就是资源文件的总数。 public static int getTexAppearanceResource(int id) { /** * HACKME: Fix bug of store the resource id in shared preference. @@ -179,3 +204,5 @@ public class ResourceParser { } } } + + From f741cdf794cdf7356b1c597b2c3c95ddf70fbef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxx=E2=80=9D?= <651952673@qq.com> Date: Thu, 21 Dec 2023 00:39:44 +0800 Subject: [PATCH 45/48] =?UTF-8?q?Signed-off-by:=20=E2=80=9Czsy=E2=80=9D=20?= =?UTF-8?q?<651952673@qq.com>12-21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Notes-master/res/color/primary_text_dark.xml | 15 ++++++++++++--- .../res/color/secondary_text_dark.xml | 5 +++-- src/Notes-master/res/drawable/new_note.xml | 11 +++++++++++ src/Notes-master/res/values-zh-rTW/strings.xml | 2 +- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/Notes-master/res/color/primary_text_dark.xml b/src/Notes-master/res/color/primary_text_dark.xml index 7c85459..5ad1b63 100644 --- a/src/Notes-master/res/color/primary_text_dark.xml +++ b/src/Notes-master/res/color/primary_text_dark.xml @@ -1,5 +1,5 @@ - - + + + + - \ No newline at end of file + + \ No newline at end of file diff --git a/src/Notes-master/res/color/secondary_text_dark.xml b/src/Notes-master/res/color/secondary_text_dark.xml index c1c2384..81fad1e 100644 --- a/src/Notes-master/res/color/secondary_text_dark.xml +++ b/src/Notes-master/res/color/secondary_text_dark.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/src/Notes-master/res/drawable/new_note.xml b/src/Notes-master/res/drawable/new_note.xml index 2154ebc..f385747 100644 --- a/src/Notes-master/res/drawable/new_note.xml +++ b/src/Notes-master/res/drawable/new_note.xml @@ -13,6 +13,17 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + 这段代码是一个 Android XML 文件,它定义了一个状态选择器(selector),用于根据控件的状态来显示不同的背景图片。 + +在这个 XML 文件中, 元素的命名空间被声明为 xmlns:android="http://schemas.android.com/apk/res/android"。 + +在 元素内部,包含了两个 元素。每个 元素定义了一个状态和对应的背景图片。 + +第一个 元素使用了 android:state_pressed="true" 属性,表示当控件被按下时的状态,并指定了对应的背景图片为 @drawable/new_note_pressed。 +第二个 元素没有指定任何状态,表示默认状态,并指定了对应的背景图片为 @drawable/new_note_normal。 +根据 Android 系统的状态选择器机制,当将这个选择器应用到一个控件上时,如果控件处于对应的状态,那么它将使用相应的背景图片来呈现。 + +此外,该文件还包含了版权声明和 Apache 许可证信息,表明该代码是受 Apache License, Version 2.0 许可的开源代码,使用时需要遵循许可证中的规定。 --> diff --git a/src/Notes-master/res/values-zh-rTW/strings.xml b/src/Notes-master/res/values-zh-rTW/strings.xml index 3c41894..e29b79b 100644 --- a/src/Notes-master/res/values-zh-rTW/strings.xml +++ b/src/Notes-master/res/values-zh-rTW/strings.xml @@ -1,4 +1,4 @@ - + g06<7ex ztxhJ*O58Y5g1Olq(@h^TsA~j0S-E?E>O)Z&xd%wg51m62*uu&DK@>(?L}9Sg4(^4! zD2#9yg^?91Wb0ib>0=v^DB$qP)?@u6Oc859yj7uDTh+Jp^P@s{AR4G_#i6be*`6eFWyV4As42w_@V?bS64SWtB)SOYSc&NXRaiB{im@7VSCr($uIg=u(2*zA z{YKO5RWHQjaFFx1-p1tC`wIOgm{ z+gs3w|1I=NMQy5$p>2q-lqGR&s>0xl%f zjWMiAwkX;Qjno5|BXq2WXco>ca=xyT+fb@5^ctGyTiHz^ohZlh(z~+UCruXHB`|x` ztubnLkhGU3wru|(>TvFe(r`33$C>B?x)<#kCXXt?SL@G$(wzkEN(zI|!;2?m{V`btuN_*!3F9F^noV5rv(ZW9_ZX;rn~(Uc=wn;Ca}2HcaZMkTaD zwVX#?*B)$;r>LZg>f-DV=iBlP)R9fP>M4%eEh!e%de6`1NUHcwatb!^MMc>*@gyi? z8Co@ia2+<6iWVG>;F?Ildzt=`G@W^jBQ4jtZ%%in%X|w>=U3Z*-^)+)5rLSc+5FZt zou8}GUoL|HPTrae%|3NXmaF`U{B$V{!r^b~r%Q?if(VbS$uD5?ZIHuQn!VrKw}i>W zt(AQjKV2AwsGpcafP$cV8h}US`kflSy`?Wnb&K8+&VwaG_}lY7#*%TIhAKGe~E z1X=&lQSx7+b6Tx`-;$_LCcS;FI-Yq1o_PeGoc337XGLHPp*j9V9s&4!^j{x!b|6LY=+yD0w5M9O3Th=&r1;H$K7~QmK9zKqpaoO9rjz$*|u%1dfd{IZ>ejde{JyY#O3F}A4ocm)Vj zg-^4`h{%-WtRi#0dV+mKg(zaPY0h@QaZ!9eC}*}C1&LiBbw^psPy!7_yed;9_E5Zm z*Ex3)!Ykx|p4XF3`IfzF@$1^s^R{zLn;J^IRIIs>#%<_cMHz!n@yLV1&MXa1S*TKl z#D1=s{zfhKM5Y{Wg{oBehG4E5lBd>*V4J$%9{pSY!>pr{oMI`eHx$E$6sN0JNPn@OvY|JN8-d*<|&&ASg zD;sjOAX$X#?0hgYu0S3JgK2%35&br5lm+9Bm488C+f4VDE!H+Q5(_nHTZfAq8q?f# zc%PN)|Igl;EV+$jYx-5n?p>lRF;Ca578ps)^Tb{O1VI2C0AeD5SGbFQiQaabwOKFv zfx69q`Y{?Lq)aJFQc6`)R#hgsh)hO=PPoGz?(mQ2KRl!9w26@ zn%CtE=9G3^7J#-cm!(L-4=Up#xmaOQbR)Hr-Rax1Jn{0y))5blB#NJH28=9HDYH=a z`}lOlLD@W7=z0xLPzG%LX@BL1k`XDcm0cfyF!f_Lv30d9HJv11K#b8MyQncESRO6Z zLt!%+t4o^aWmZ^~Xu3J7*&bdA@vz+n%z$Hri|#z6ch8NnjGubJvTjous+L_{k2ZiC zL~GC}o-otxvs1*HdfZ<(O|~2oM54Y)I=%_kBujbdDjq)Q&=x7_MAQacRt(_`!tl6% zF_|*lr$@h&xKmIN^TtAY5!@PPSmPH4+fEQ9B%y?E>C-NV&2_bz4_*dCbIg0-vab2d zUe;%iTkmJ!czwJ0I`-jK(EjcVn8n-`@Pk7@*SCO z7RUN%v-4s)rw11Rj!bEv_#l;O`#xHHgAG`(<5yUuo8!Umn!6)-+Ra!8rAW4B&5Zt$ zB81xkuz_uIKhB0d5}P0`nUKF8QdhQ>+SNKL$~LrF2GKU$U+Zae#V9cucIP^OOtQJt z-F1{X5}7F4A+Ssa)QS_rji%2gg}E9bYNH3_=1$@(eF{x3bR_j0$wv!UjbLZRcr#hH zLxTF01CQ(Z4EQy6;9m=R*IVx^?7+Vk^sfB%E9}6R_NKHV*N?aUQ>y=I(7Oiw3On#M zD0eEGdCkbSJ`H-G0q=L~SM9)me*wL`@deQPTNe}f7iDQAgdpU1Woa0Opd|dP?D`=~ zg9Vl(3I6+Q-l?SzKO!-cLCP}(CQ5T@VJ8=NNSuV-oR680V}4T6bZV`&KVutTC? z=%so8OkU;(!?4W9AIZ>Gnzc+#txDJL(I2Kre#ET)(3zUcu#lKYGC%%*^O~>t6zr8g z`7e#-e%WK*q)#GWuQLA$ev?0mKPz?ql0NwhaKoN&K0s~juK7Z3FVyxzZOjX`{RUo5 zB9qJg6Se8pmvblet`}y(%Dk-DP7?@G$cC1c>N3?gKeE>Zu2}H`>M&wtd_SWkmnNDT z?txK1jW%ZW6Q5Gid~Jt+apQwoB0-nUxLF?P;+#$|l5pAJG47{&<|Y$}tkoP9s4k*r zcSg=v8Gn4MGm5s!k6r{+aaNjo35 zl3?vJ+1PM+g!)@fh;Wr{+5H#|X|L%rUO11Moo9P0jt*qOViGTZ>rp(bgP6?myi3?a zM2=Z{Znr>nFW=SdJY|+eRM^?>b}VRb6@|t3DX*maV1JW|u&4%yN&3c4XoyOwNrjFB zQ)C$9fg>1Y*KkgBkgK?yMum4RJVbq0DiJ88^iCWYBu5#c>jZ;O8lX3z>rr<3ZopGs z+U;hp!4M&fhU#>G<-}dQDVflAB*cjFy4}LhfUpx@ixbh%XS@z~HU$E5z>;#_tJiaU zo(!T1ajdKJWM1}ch~5#hnmTuJkS=HSkXz(XSu?%BIp}M;N9`udOHzFssCnHi!ZUth0YjB@zb{^9QYYVj_LK`L0 zB}uGUT}4~%o}7F&R-06)4hFS0oM-%~@?f%~ z#ye#pSsK;I-k1Enjk-(`kH=@gBU6!dYaC?I_EebM%E%Sq?w?0(fIH{}@T3x7huS7+ z-NBa4i#pD}l&~BuK(&**N1wk7jo8>?BBRm4w#lu3=Jy+rI7C*cLJ71YUmBY5YYm_6 z*%0rsA?&yfvk4|@+i-5Hw?McwCy#SW0S4PKj|h_{KHy)L-3B&+4Pjj9<9NI<)mgGu zTsbz|qscq;-l0se zx9jWCXyn+D8IkZoliI=-^^QCJvRM8#Yf@w0kk#i9U=P;BK2XsoUSh{Dd&AnoU4TO& zY~%ZlKZnly;+2106x1-G9Hbu{it`?$`sN7Qp5?Ac zpnYedH%lzkj=+_j}A6 zo``>ObTv>;=D3d#?eu<60!2nOvAL29BVqs<|TTacAL7 zEBDmkmz(HR<-LNO<(&mz!b6N+d}Knnc0`LFR3nqN@?fj10sB)9bFf+}6Au)BhUd8x zMrbjOWtb7G}(A} zAOeX=jhW8v899mN{bmm6eOjAVaM`NKOa#_6U)W%zG+;FCogo+#q;pI^9j$f`)2?K$ zQtTTv7~&2N$Q|nRMTvuLpz{}hm)~zq6;6(OI2dL)33>GD2nh~M5Eqc=yLzy7C7`(+ z$r$l^&rg+H`fHs#L0YE5xGc`Oa`6GCcZu!ku+<2%S8`6}`ZR-P;Fbz4o*x;mJRc^s z?4)qNTtXG~*{;|%DWXjktJP}@cXmx2!a7EfyPqdEnM*i&x&=@e5VF;Og|HnFUWdm$ z>Ovc#8yV6l@vEmE4!Da>j1rYfG+vkMT+r5<3h1Z>Z41}yy#+urNI`)a1Ls<6?3pLp zV8>QQJBXc=z_l)KZ$aT|*f5@X?iToX+=$H{(C@h$9+*9_cKKo=ZkGG!y%CZ5wXj=C z6;vVXF_%Q96BNsNVlwQ1LAApz4{VEo>=75A&sg3P#OPM|&AQ=bUoZlEeJ6oseT0L+ViuGjFbPMhkChYgUOr4lGm2e_q7zXS&_VIdu+#Nmc7P`7s1MG4* zo-p>X;p1|0U51cmw4h-Go~PaE%e5rF~AZDDjc)!Ho~O_~8L?X5ok z@3#S3H>odp!+&cn%XhHu^WN|u*usBuRsT33#=Q^tS#S7{gYw7*ot!V#vRngdPuBYN zHbD2!)w2A}P~t!T@$rZ1r%8^&MD~&U_tH;48u@qYr+;vN1Ajrl-`3cF+KQkQOcLJ{ z6yv$^F!;NK(T^9c&xpCZsb1E%e}DJQjv)VDefJw* zBjl&YH&#CURCK>rcf)Jt&W}oUKK9BNAAa%S7awL`eE7%nVZNCGvU(Z{i_f&5FY;kz zxz>XPM%lg-gKIVvdPR>jljbq9Wo}h7EX!M1km=A| zE7YGnDB9e_QsCMvc<8YcBqcR|4$Jr^fS7hwl@ly+DaW~maqHGmrX_cIa-1~^Om{qd zBw6KuLe+GZSo>4R`E(=i4IVyY;;yKTKJuZctiy*zypJe=-EU&Q!s}uSN>y&GrRnOJ zabX3Lju+$(TF5P)0*)O~L*81uScjE!a686TL!FV^VFQTXtqLV7Ac`rYz`#7?0B}E? zg0i~q=vB<#x6v)lZzQ0E6v7d9w*w`w85o&=hXULS4gwK4z7{SQayBLWx`Wb7&X1Iz za^pcc<9vc2B#1j4Ml)F@x;eE4B6iOoO18_=eSE^)h&7sxq_+xiMVizVH;0XQCiSJG z0Os3J1syKQw(Yczln~{hMS!wLP&gJH&SdM>I+oJ6m77#A{w&%_j?M=%aQxPI8b#th*0BMAWmXfd@7mN{)K{A{*{-VnXA`o3FEor=IJgWgCD9R%T>>T?l>4 z?F9_33^{fo|5EOGoI95X)C=;nnsyUN0*QxS<0uMu>$KVX`Cdh$y#=K5J&4nzz)a{h z@f5STp*1!OoOo-S2F;lo&@?X3w)ZOCkaX$dquHjLJ#!I5uB)PPT(6|zAT!-_EV$iV#&vSB37i!3aD zXUK-)D29ExpyA(IDUm?%ZRxniu zIG}S z4U1uhXL(Ms!EW$>7|uktA)R194uOio^EOaQB)Dfp$!QyJO(P?`zB-K24hgTYT-!D( zXw1f;unVJ{d~rT)8!mCObEsofx}Q|^*fRosmt9~>=RlUx72J`zBBGUrtw!s0ff-Oe zKm{1s);(zeMhOhT<)~10+)Ebvo+sP%aE;3wIS6$n-m-9it}@JznA{19YDC0Sspo)r zP*?3S&`-|k7+SY8bZZiQ;hW(AYe4&!J{<)sP>g6Q%PDsPS3#y{ocx_mL>mgoZg5b4WJ%&Og?RMNT)^WhZa8DJ~2_!D5eJB}lA9$gE;`H&w2-bV~fS22wK8uk{k3@2g zR8>mUsw&bl$h~Z} z82d=GX$i@(PPyi=e3@U%;BwPF(yv8y2O+w# zSEVk00~@+e??aRC=km6l>kUUcCuW^CdWu6ZS7YWpr)Z=}-p;fKC-o=^V(Bh~{rIF} z6bR*4Ee$9k7nxgk*CI?5mCbll-RR(LWgVx1bh`qz$uJ|QG;bPqAj8{EKArlj0Z6KU z1hH5ZaCoP?6f5-*Jw=q-M5Buj=1jN_1YPTY03XiPJ}snN1toJW=IG;~Uj@pw!a<4E zg=SJEY6siw^jaRg{K;8rsnB) z;5zjyyIm_Z+!ZK(BX@a~0KkkzOdKk= z{tPBECJ$ zB@SG+J3y-9K20k7=x|cGGYy!u^~nQn${+_Dc1O;~R;^H%Z5a!0l=jjx&853%D|RVa=qF23+aoRANmkR1FN55dt)iAQqlc zGBv?cVDgsSI+3$Zo1QM^$dm?uqA*CNO8{0*B6%;5MpAP6h}-wemNeCg*jCVd=|a4- zs4=rc+P|v4(@$7pq5U%+RQr?oQwDWV?gUn`0nMc+(ei zrlozeqi+s>^K=`9w9Bkn&gB+JY?Hyf8|#k04oX9b-u0x^cp5eUm(&`6d7~ZuKA>nX z?G2I>+Ov1mBRsGr%6*W4vEKtxUl2s7!#kDxpZ!<9z@B(1aFMn$oBGxX{;EJ-VFTl z#E0lKNol3wIOWw-7le?1%__a>v}yq((HI%h*d2)(8lqum0;j;c?=D%OpYi!vx$QXN zJgBXJN2xjp5vX=qW9CD+<=gAWf_1=&9)fju?hEGVU)esl`t5m7l7Mjzm#4N2;%4(* zKH`d?K7~P5WCJ?GS7Oj#wCc}*Pr$`LH&&c{i9P*_$<6K17uy4@U5oaps}EwqcRi}xd(Z44m^&wyW- z`@DF_)N4mV3n98-P%pbgsMV1HS{L=Cn4@|av~A%U452>*c9MouO*!DAQg@kiku&n> zN`T4t9j}L#u7U!8oTOFFZEZ*Z`!jce+cQFNF$jvOL^dFqLN zrjScM3DmvToTyK(tehL7tB^uN;F(!I176UB2WYG|x>n?+ic6U`01k~G2HiC}S}-A0 z*sl3u280Wls7T$ucJxI}O2z1T?m&(- zA&t;~b>Pk-f2W+oS(Mb<=^}Pg4GmYlCU>Aj>S;ypfYa2hCH6jl)VMxs$>p3YdTnmciOU&H5bYf(o@XpU znEd4A^>QPv6Fb;Ucj~sChp-hoh>k^%R&IzZU{sC((X5fKEp%>obz7*;gz%i8-zx^d;-ePdfO=1Yvo3Gl zz^)y5nQ&goH#eKABTyOUgP7_0Y|n-uUPbDBZ@|Fi^XVXn)3}*HgZj)x` zK!&WH=@dj~=B&`nfp=Z18+#2Kg)8fS=6#OUc+$00x9g~u3H!^Pf!8h{Y^BU-_UgHH zHS}8|(CiS}TiQsb>Qrf@LJbya)q6|4w_C2CA4=`Khi>I{&737`E! znPWkyn~i1r&UwQ8vn2NJb=0L^o;P_bfg~9g5wVswr9rm`KoutVdYK6u=vum3eXInp z_dACSHsB#kuzM{OQrr^ml;=ge3D^ux$*bI`pe42d88Gdk+A+IlK;A>N%-Nl9Yz@h$ zkuE8B*Nwow2=7LhIDDUR7y;OS`&;ZobrAxPd_3rPI2dVEjgWIQsT}zj-kTR1HnY#y^&7EXcI_K8MGg9Qam+Vap3McF66j(3rkHs0J zmgCRw&MBz|4t2I^A2ir|h{V5(Q<8GorDFQj!%JUsN)o@HQ_@Si{{tZuqND^Is^u3LQP!yqvA7UhgQeRfY{}oO{mNOXn4yVC53Zb7Z4+)VE7`6-m zNjwkV@5bv1)DYyCx{{ww4W*YCL_EfAC2Ifgzy8n1@f7_d5Vc?9Xv;7l=)1(wWf+im z`1|vfA&dA@UDFp!d$F{C7fbsNEbUnr@=?|Ct(iDN;y4C>Z2r?>kJc|eZi{(Y#}Jr+ zpg%vquB2_b49jmUoy(WG0YlXC)AOI#|E^y@_!sMU#>Y~!wBos~|Ea8s>pM30Ooe{T zq2WIs@&2^*H7%A&`D|}>T5ib4pWIj1>oPajs+3R0{-<}JV?N%0{N>*sWqkkq`~oj) z_q(spnfXD_e<_do=<3gl^Ve0t{F0jfD`+A@Aa6aAo}&AAiKWDvc>2BwCh`;XR}%Zj z1Hp?VzDVMWBr-3O_#2SK!VX2{Sp-wSeuX4<{gWixz&#szXc!uYz$C&>x#EtoYYX`_ z(huQ5n7QaK)+IGsNA< zq%T7i%+{0hvNp-5^b*AXpS?5Ll^a{L^Q#m*4dAlxJTSnX!C(`?E=bPU1$zdAJvsIR zcx(^+1T`=`F;IY?#)bPDjz-Fql#)`qCFQNWbqlS%bwR z&63LTOdqNJ2Ct4=#w{ML8(C>Zc9e?p^>Bc>6cb^WndTtvgX==p46qmLRPIDDZ32K& zEl%ZsH->aa;R57L7G|Y%izIBGkyEqrC%C(cb5|7p{uPo0>;V^PRZ1(I+aakIG3$e= z-gyFMU5h0Q0T+VeHWamaXfP~-*a^q{$%(w}QVSi^9EO=H#<=URz{{B-lI>*U;z-)} zw&1vGblqZ`A*fTBYcm$oP;?Z$R?;Hz6z4O40IwIGZ>k*XwTv&>79lY)E-gEPr|o5R zy3A*5=;cj!`WV`Ar2I~F`dPgxgB_zpdSFJHdDtS-zh{D3Ldp!%wsA>V02a`+=n2&_ z+l9Z+R;P3v>r%sydx#`w{yveEZH?dr0*|p&V-=zup9LqM7!E25E)h>K-cI3Y6Whjr ziJ?wiKv9V#FZ6PaRWvE1LzfvD5^o74WbFkJ2tA`rWhrv+Y9Flo)%OB_g$!r;CT1s~ z9FNmlk}e-5x2l;qHsYqkQ5_C}E6jjM&!Fa?C$X~HDAF1{}f^3gD^9{1SLAE!@ zM!!L}pAXsSI<(g^czo}BlgJ5wd(al@47H+j5YDeb8TPg9a8OZAc23(WlkAY)uE4wn z34`X=ji~{9o<$^+F5!ONYcQUkw6G2ek`f!XY;LhIIu~tHfan#-p%k@Z-VaQa4mYgm zon3^GK=^=cfSqyIwK!c>t6C!}Bx=`gcTVLPaeq4`yr1Z17P6IBhN^yl3$Dt`B@&I{ zASm`h<3v;zc~Y6TVxys&S)daz4CnP?c|*lletpvs;nyT`2tL4UFC*uXu=wNdlo{@; z@pzvU4CF)m^agW4uRD+>pIR=6&2aAw0erp1NM`?fJITDhXEbR?SyMJCRo= z684>dhJuQde$aoy7}-9lk^pImNL6Drh6^`WS^9LG~;68^+m z^U`Wd$0ut!_nx{|bRP$=K4C_a@OBK1&Ppvmb;mU`4h5GW=!zzPWy*Ep*j{XoYK;EG zGdA5Ka38d*Tf!s86MMhUskoPG|13k?OLr9r)3#E_aH-G3;bz5q#Oh5yG~=$S#Hu=) z1A+y7qY-&MpJ;u#Vi!bg_)Dqb7Aw+g-uqx%Mtx`UujcKOJIXyuup6<9eWX8eLZ>I? zEZWE0B9vl=_oNPgDScq!F;=Npv9Kdpk(XO_i-Lg&kcy!O&P+jP>?3XVXMtft87s-WfOW5nvb69<7>=B#s!B`uxH*yDSmhhB{~d;c_7GQl1OBsLpl-xokBussz>b$_UcpwJ@vD z6E=YoM$hk_hwo!&enjHTYf#?B&ishPnPQ%T%U zCj3LSh%n6X9Q`m|{8)>~vmD4$KU#}O!4!`E43G#zIEH-H0P}M`l?X+>Ls%Gv|3U=6 z#isIq36#PI2ZQk6BZ(LVlj!{q;teEz)}`{pQ9#k>S$PAAe`k;gG7!t~g75|s-$3HO z6(s&T#e4!1iSO`&{DdPCFIC-{sBgi9qx;} z;9)2BEiCZ^Bgk+G;Fd10CVDd4;Pz^{)LPMhyor}$a4H43wZr{nOa!63v{(_hzGF72 z5J^C)HwTMD6s*NXynmt#GL%paIg(dsy%E7!C?o|-uj>$ObFcF&xM~bghWC`z?SKJt z2sp{(7O}ch%Ad{;mWXFBmUuQ|@-QcQK;94dAk2$mKUiXVe97VX7`fguTsu~0ip9Zy zV{z@h$n6PHugOJ@P4ak3eZ!RTeUJ~8rQ0f29d8pR_~SrNdW=r}3Uie0`T6U@Hl^!6 zj(T&y8&e?7DuE_Py>0Z7)14BMpI(sK?r4M*_zcAX(}~V6C~X4^;9Y8D^EH6mvl)f( z=XY?@8;9cH0eb*nm4F_sk(R?ij)YZzmofbauH}q{Y;3KGrC&8)G5~_tv<5wG@~Kog zzv5G`orsza-Dg1uOQOSe8{lHBVneD-E!d44kLQ<)QcYp%D8WM*28YvdrA~d~`)oB-(3snj zO>M2TLh%6_$(T;FaW7dgV3Qe90Q=;8VlB`zVRb{&QoFud(Ah9?4|)~t?swa6Hy_hp zIG7%w(fk#F@_8R05g~0_%i{2V$*%YsTOz2EnA_RM0z&H|eZS0wzN0bFeKmLkWew!T z9wiq@nbho&t8?B1(OeMFTB3oroD(`H&-o|{)RCVMs&6)lTR5MB^2T56%vq#ZW#vv} z-|b;B!S_20p@h@q_VE#%X7_RH{erXRM~29+qNyfNPAT=|H}Wr{sdvbK=Jh=MklXO< zaRpy9*nRRM)6Ln30@r0q%4AmRaG>BSV#b6r;w6SbNUAf60G@a!SGjHVJB=cYV@(TH z#-d>74)bFvdK1w&*;I5|i z>Vtjc28kDa%MSibItQ{?ANBDeWVCXs&-OZ+puK>kz%Mi?e&frP-H ze**qt4H!RvVsV&c5L);H(wP3H6Z;v*(tr2fmOpO?AOGz$=BwYc%MT;ffBhf-_j&ui zzvcd@-Tzy5_CaiapO?;qYjjDUbW`%5{tNn-fBL%|!4DdM2Lt%mfBtWO{onuc*MIq+ z|L_0&^I!k_fBozK`j@W{%b#dfg+w9zN3N>i3{J8LO}+bv_p2%}2NTf!ef4o{KT@9! zBjnEr|AKLf{CcX`Zx&VVC-N7E2LvIY@5ugwK?-|0rrv*l?eF?KfEYp{7)ktM@bI>% z^6R3?=SSg3EvmdFe|^ge3QlqaPm+JYV)_qqOaI(YKA!FA5cK6=9uvSv&-%ATnLoFA z>n}6ZCyO%VztLRb6~pzxS`7@n3>98$HTcK&3NZeg*sj-X{I**2wp#PHT0_6B*8Bm= z@3VOAS|@#fgug`JwOXUhJ#SubtHGv*6P#aq*4#F~DYgsIwy|LSkPqZ_xCNZslBO3{ zT_qqcrCv64P+uHhw)h3!xS=}~ty>zn4ooN-gqytyU>EBeOB+lmFYt8p2eZKf#}|>g z*FS$@8H4hW_0`K4M8n-fGFBf!Bxr8w<>^nA&d1R-azs$~UtQ{0gb2Szb8 z+Zk^DBe-iIolXt43Y4&F5(@Y{U+{ue#q;a3p&0AdC8kOvpCL5w0PB%F&bZ>u85+ST8qc7Iy2@*vtJjs*^#h9XCM&4tPhdm6_Sz~Kd4KqW|hRWX9o%hHH>tB zZ|T#6i%gH~w_WMlC%?JWa)E7SXQ_|eF5LE(KXa4tcf_&WNH!uw-! zH^IEb-PTL_{ZM!hb`jk)jkUAedNXK$lP{J0bYLUI&E+c@b_Xdm!2=*2BVo}FD$-Gf zK4hxJg&0&QOeC}HKEUJfb*E(X?ucO%QA+6b{?Tm0g0Bg?p9Q~H-TgIT_q(-_?^AbwP1yZ$LBp^{Wa>1QaDOrDDqKc8T>OM z%ih@rf7r9|fypq6BYz=3Fc}7^&tUM!eE5dJ-!S+a2B+UJ_#fahEa3DFej1?g;MZM- zRbhO%3{NM(JI*<-5W&`pBdhc7e`(+AuYw+n1f11(eRfhx-qGw)F5Qhf#O(qfHa~@V z`)pkf#)Um#BUgTqS2h^dwVWlkt>WCJcD4J`B@^w{l(4+5X|FJwtJw@_j}VwYNZzod7-+r)Spx$5(LW6ZQ3yptvkeSceC*k|Cw#zQuMe{H+janH1I zNlSY_?94t1C#ovH+szn0@+^c-+(j1k4kL4em?L~iGNirZcS_SafEybf8T8T^V0 z#^me3DRd4xL8tRva3v_(4;Gw4p5;q`-9y$EEc?NvF(gI7-G!9ajl4AD%AJ-rz<1Hh z4WuK)!xb?!K$LfwTwY5IMY%Ftvn*CIW!)I81!_Y*OWR$iEOvO7Fd>2 zJveE&;p^w}M1}?~$cK(S^ilg_!m+7W@X5o-1AncKPRGb`(c9n#e`(VGvZduIlT$|U zy~gI^6qxTXw_9As$8e!yBkAhdY5*HP#N>{B-Fo}0DyN8Ea7y9QoN&cqL}%&xt};5i9b^ww75Jl%PhwmSb*_L?t=|3~G`XIanzt ztS~PKa&&c;pAgwoe=f(oFH5T?O?gm{-eN@&iNIqN_BAxoOsW6LW`FIO$imYw?BS=QEiq&NTQWb&UL`RCGm1oQPQxX+Bo8=!mxly89Y?*S-55+PX- zVLk$sf6&hWl=n&D6F&La{xt*bLqC-#%6vRh{`2x7qI^w^Z;0{@QNAHc`VCS3d_>8a zqIJNZ9r(iO>xfbikKiK+t-Rz%(7=2ck(OQriNYE*o_^=WU`F~P>1VkfOO3|lp(eY=(0EZxhndY4Mm|}Fb0kgs>PDw^W)ma^$ z1+PVfi@OU}RN{Y)3 zP!(+$3#LJ;mLx88q@-rfHR7r-QPL``?T!1EgqpoqzXrv-mMt2a4)zXH78!Nv!4}kw z&^q!vExRzB!R|}i_RBoBHJC$a5|ocH15%SqszOk=*^VPEw0h~WXItZwtWw4Oe?Igh zCZ;LIb1u}1A!L3F)Vl9X2A_&+zSqW9*{T3_F9}JJiFnfeISuJ4W)qd+f;xN21=$Yb z%@Z;%giGN2-B39G;oNR=Idzl1^LY7kE9Srl9B|1S^jum85Ah%?YR}FVSR&!4uBXn< zxL3y)Q526bcf2;{>7r^78LiXxe_H!RzH^;@g7B4}oiP`smE7wpH7s(px;g|2TUcOS zRYi)Jmha+=7&QJ2y$pji1Og^F%)_p*ODe`h6Wcx5(U*KxR=tx&?J39nHeVIh2JSN$ zE5xg{OA%)uYR1TCe1KM`eeT)9;GVAaqFqX~Kqc{jSQnCl=DHp!?G@FQe@qD#6)`l&3Zo$1x|pzfofdX4biZYp#W%p7G+-VZXjq zrb-_yCASA9>uL!N#(N`@%5ao7klGPvOP6$1tjz*C$Vi)86zKPs%eB))#6r81nqw5| zlXxG{s3l(hK8e~OH4E4_y~^raWoBLa6}++{1cjnV+aRhB>jVF8bTtEaO%LXi|oVxKnK{|94f&%Zg}M%6wuE^k!rjjFv-wZ98hV<3=5$#+p^Ka;8< z;HOT-;9sZ@oQmRKTKfagnzna0KYX-H3h39- znnq3h#y`>81ufQXf5d`w%{g7ALK@G$`dnevLP>wC%L*@DW{n2zvO>FK*$t5OVAvn*FJD*?G{N%bL<16&)K2 z1~0WxmwRrg!ab{+f{{cW(py&nv>(``?{BnU4EaM{c0C< zS6Up8d%@nv#}U>5xmt!eSlzsf9oB%o)(Q*pQmYiCU#BW_vfe%x;>z+Gd7}J5-J`Gf z`^Myxe9S$e2PaU3jC{|7M?pPRBMp_o&80O*T`S<01Uud#s`GsoL-{0_ryW-r6hZ;0 zo_nF5f%Yr9e@k`F3q+-B=s|#m0EZqpL1t8mdZ6`|vsCY*Kox;6oKbVahJ zfwWL|(@w|=#F`DW$m>;?#rp{4^I;TTu~QUSwf@-Je_n~A)Glg8Q>>y+YUIt#od(uR zr1G)MD|Q^8^Vpu@i9?N-VNWN_aL)wD_(netefT7rK))VI2PCE09sO> zWX^~7mM9H!#1z}cH1Aw$)X3{1NK-C(R08mLNpgmp7;O*Q_VIN8gz$QN#bTQ}M>y;Pb?NY%(wXlW0RTR%86(L%SQS$+rGqlSCi(YL_0+c ze-?D+DrCleVxtJ7!2G-8(*fU-323I^R&2jOyk7*o9rXTQJKvlMe<+E6 zrA)wo)~&SQ?VoquN{gd3%90!63&aL(?~ZXa_Rfe60SN>{{}99m0Y3=*wM`fa;`j^7 zA<tkGcLais%dO|Jg z3AO$NAFf>6AV=e#FD6`m(ud1d4{C8>66Q98t(IrVOgSGE4q>&9-p?f@e<+4UlDVq# zwO4oeX6BMrL6XDm>49+$m|6h(v+WlYfteQ^*WApSD?i$* zk$qttwN>tPD(;RIOEZ~QC{B!K;K4ptN7Hf-Ns;CeydT;MYjk!~9S!pmsRVI&D#1c5-iC=gm3ulP=k7asnu>9j`HQ zf54CQ;w~ilCrRHQTHPguvuj>B7;@)YhqDvu3dhr#^2PhiS|Z3TUy5ZzZG+trO_Mdy zTtjFGh7{PuDb6^yzEqovOrWzO_N!cRsn+dSeF6=0PP`&Q3ud5df7_^tVg#(~wn?wM zjosIIzdN35x~PulFxLd6m-mI_n$wHiW=UBiI1E88yOrVO2cbhmQH7{{#qkiKPUW<} zi#uAV-S;D@_ta%h`(x?Ox2eC3FuG(q7oBzhNhKZuyZBfP^-LYByd;%{icm)a0{9+WUT1gVqb zu2hISEW3EoUPJ*@l#@ZMC6K6ruBG#Y8u-g5Y_*!BZPcBp>Y?U{rytZD zUpK)=z*qfUu-$<8lG5`DRK1B&-FK=w-ZDs)iObY#sTT}g(+EF#E2(ATU0;$hKakz5 zoGrsi^%Od-ebu%aB@XLTBbv3)fU8cB;5|IF_H{{8PZ!&e;ivgP4=6#+Z%BzuFDIp7(;km zQsnwwWR4WUyF=C#TY^I_=CpxX)#JP{@`ib3k(+hoQE#!=dI2(T^VoWez1B+y`!J9c$tY_n3xV`lN zV|~X|sJ6|WZp2;i1yfO2j94$2Dtut7&CBK!rn*|B@7IK+?ubla6RC5H ze>11(J=U4C;QL3=OwReP#C_99u7x*aSI9Zp!X;;{rX_c)eb`+$TY1!$>@dSJ(@RcW z@5v%39p*K1l`*TVMcr1`!DBwqdb+B~iYrR($X{4QG=^=a5Fu1#>H0`_+mI6XDw1mS zqJ_lro$M+o8$zQoNcAeJO(-!lFYS6Bf2Af>ucFRqf@0(KHM42TDqkN?sKdsU6p(o) zqx)cc0n>0S^<@|0mW#)kI;9d``OZ#0G$m}sZR{X2JfK@}n`_L7xI&z)g^UE`g9LHA zMrBQoUmtJZv@wh0j^9U6OF>KCklW;Ek?Dq`Zr8m#@oBd@D7lc71P`tZq%Noce`Q=Q z^pDeo_i^T{0-w6Jq|7T>N-(8XD~W_D&q~;37vhZLJ{*f_zmi&-JH%$7p7zopP#H7s z&vp+7T$zfY9VX-m7CpB1S(1$WwJjeTN?|sWvpVkgrq<8R@Cb-Odms-q>EK;2Q}EPVjvM?CQyq!wfvKX8 zm`b3-JEj^Rm}-6#rt0-pslK$~{x+r}HwGe6%--tx9^>Y7j5J8QWY}$WUa+A_OsvD0 zD>`;Iz36-jH25eGB!U!*2?l-T!T5M`M-@%RrhwDf@UF>T)%U=xxaL9Wf38J7Op6f? zjn*O;PjQs5fo6N@g`xI$aFF}x2$!1asVQ!4ucbO>;{k@XvOTU)#xBkk+BI}C700UL zi@EUV^suz$GSi&9q9CT|dt(Hkk%alfC0SebnE~_l5d$HxaQeJEtYGMfRT$Q1gvv6* z)*|xYR!CXEUDC#f_xa)qf5Rg37Ugj1G#u!3OSoXcIMEypx_(g4w=qPR;`RMmzGb)K zf>_?cc;rK#))Md?j7L5X$PFj1I!gC*ovKp5#dzdH&<~g@rnck(SQX*@kH5ENv3kR9 z#ie3@G9H<~*s}P7sZfl3Vyd6QR4{rcd+&#-AP^*>TetL;Jpq9+e_Qh1bE;qhfZ#s@ zQ$Y}c{bWiN2t&jN(J2@}h-J$EYnD_tByQ1Xj?i`bJ; zJxT!vF!0M#c{}XN${WK=O+9-;Bi&);5m%fW9KTDZI zkY65H@3j-e-TPr-kp%f#Y7IiZM3MKmjwgzIqR1zTq@F19Pe74vVbhuSP*@{=$^_zy zJ4P!nCJ^OE6Nu;w6NsEIKA1pkUrZphhY5s(cJjqBLU$Xef2X_>kL(8%i1uy*(OHWU zJ#3hnl5Px91$UXEMv4HQ`vRIB8T5<;wX@WWV?+Z9POWe%{Rjn%JkS9LP1e-5ln%G= zi7E30&-!&ywmMz3-ltujz`AC0^v@e`L{f}|`}4kIaLkNKpF6m~UgJH}8~VzZ3vZ+) zS7>7bLz9-(f7ZIKtW?dDm%V6%L#5yb5K?*aRuNR2{Ilh788hyX)m1VOxniVk3^8<3_jP$ zUQe&p?KP*D8MHr7euHr{a&VZ0$Rs14fyiq@h^EJAf2r7pP2}P^;%*%~URkDYNAmu( zg7-zY>mg_oR)=0i(9=;W$eEUavxew=(dHG(slsLgk|I4TYRn()^KOwF%Q(6oGjU2e zDOTItj4E?@r3n);CaN6`>T`4%_Lr`48#SO<#0natOGdaUv35Tj1BSxn;mUb|a^#oP zCvnFDe{Q92`~jtG@JOQ)zS3D41oy!ZLLt|OoiocK$>%Jz zDlj^-@)8o}V-AwTl0MePEOdYz>+TAH$uEWwfBO0SnIXjfZU~WDn+{1{3?XKh%@9#s zowW64-|o4iP;QoLQ+up}QzL`KdXdHvWMqROtd1Ao|It>^ZHYKl1V1QG^gx#%n9}$7 zrC<;*X?DuMIp_{C9e3Qw^`VBtX;ymh${v?nHnpv; z#(uh!EB_Q>eypCtT;t&~2szQbRG{l7p;N&WfX(wE<-(KBrlqrT+!QTj(pS??cW|yn zf(1odJ0$24>54aGzk)*s!4wpWc@w3Je^neXmV&W#aqD!#q=9OR+prstSM-Co%V=Hz zCM_b%sMrD$CR`WEw)LVcSXSuLEdW{=+F2jKj*;jI|qIzL*{>4eheZ6@t*t`f80VW zM1k8c`7wd9xBCC?CK5OR6MqOl22le4In}#AjUS^p4#PNk&rW*s<0n6U^5eJi<6Bn; zY|zbp40(>7zcO}8Wg9&C@!y9Ze;SiNr^WXn=S{Tu_D=gXErveru>KJ)zQ1HVaq$xu zKXEbj#KnI+E~X5`mAv1Aiv`?We{k{TH7@?rGx!rO20q8dXVfDbFz-Hk2J;_qv9#dg zB~$A&T+FGxB7lC+fipnXXwK}VEv083zIKF7t=7r0pZ92c(_ zTzvf&F3!AhmRwk%(J^J+!;D>q5Q!7SUUC{EfaPkgIqjqiMry5D;t@^Hf4ulLE;jpb z;o<;i6*|AYWSq&x2%#74TJCaZC0c~ehkK|bFNuz*X-Tr4wbQKeWO|b3qk?i(gx#5Q zp_W+f(rE88I&ksV<;*aC*M{PD*+c1Y<&by`;jkuoI6wxoX({;jH2r8?!&YUC?CN$4 ztJ}Lr?%JzVmbbh}ij&Mcf454$Yc#^uP_{ah+p_Z>0jp9oq!Bah^B^!t6&zjZK+=~} zw$AoLkZ9foqnP9EWnEVwO4(unB|+9|j5rWvozB(dkTmQoJYzhwRP1QTQx6lxjuWX} z-8lO`gf=LTISDV6#}=L_P#2LdCr%d$3~`=OL(=C8fg6n#p;v;-0ENvOl z7^QZY_Mi^1o>zlH+{y;-o7>y84s<+{wb~k<_r*clg|y84J1D z9pm#6Y0}kJb0|e{f7R_$ZOl>(AuZpJ+f3#Rwkd=tH@Z76o`mFAaWQ4|8wB`$xcJ#ps{x2^uYeURGD~@u9!RZ_tZB?E zNNB5940Gvd7H|43CKP2-rCzvWl=Sa1#V03C#f3 zIX1QGB?u7~Ifv`LD*GqFSyixIQVw%I+XcB#RMgq(78+-pycRBe)+P_@5etIE`CmV-*?LUFOG`=a+y`X8!m>o41jGO<@6dC0|bt4 zHUM(Jw|B(FAOK@9^he-g82qc!ViF=D6o3f$NsFJf_(_Z3PK$x<7Gv1Wz0dkP4xLx_ zcH_L;pxqH5}is{aI3?Gz(Y{8m(5Jy7*Y-G4;Y$@epx4_~0_&=C$5YZM`cEeRZnV-Sx+b9F;J-wBn)ZJ0dB-Qv=UEhn7zfm9OPOJ>IA zQC=`Baj160nioZk-I}Mq&Mw(1o`k?ab&;zt#YT!W{%pf`L{h@gkbA>t=ib)9K+B5^ zf0+A~d6EetsEy?cZBZ!UZA9a#Nu@_qx>!BV02fj^?=oNq;3(x(xfvQOL1(c(jgq~z z>aKIPLyqh99!Ck0^3qt8xf)vndixazO4}2=w_V;iAsn{)2C5dng{q0Qrm`eB&7p&g zE684`=x3;!`Gl(3&rvmxk=vg3N7g!wf2T7<4@s6!Gdc~agoqwK%K~uRC8fNFne=R^B z#$sf4Ps^B+P@b0>>L{hfsSN79?Z-&bCYXT}2)#LQyQ1&UmMK9 zVyuvGk8(YcTthBEET-sPYPccgTZ)eN5bUQyvfkxTt6n@8k&ts39(SBs&Ct4`pqfD^ z>C$FSPHpt=dJg$|1I3+v9i3RT+LH$nXgGGpY7lI6bKB|7sxBpi2 z?RO&OOY|@63PgbfO>FK3{Rh{TrgFU7Z1(m`SyJ5Qo-p=!Quhy9cb|+pf48agQiz|b z)qN89S*7||_)g;`iE)3-F9eJEP!H}kgDRTu{?Kb4rSs)a9^cZ;AHEq{WKM5qw)d}F z&JjORJO7vq{ItUHa~JzpT?c_M0(sZ8c?c&Fm;vs!@%1_gPJ>$vC+-CIUDrWS9D;sb z9_2T#gP<4+{@g+c0buvte=K(Ze;Z(ckLwv54dx!nScKGs1%0K|T@5CTF3 zhQc6%eC1^I|NifP`#0$2um7c&LkIvypigD-BZGLq9EzV*2Y#-I{54lZo;>_7D_V>* z6beHS^tov9(r3L*v>3yGr)V(*KeRz!A$8;z4$Aj1}e|L@J*Hry6Tt2D# zld3G7J$prghME3{*ie%QvhDBl?o;yCN< zN`$=S5U#PMVyoasms>$SE|IoPCOu zq3-q^8WteZpRP5De@jR8BIRru???K28~LumM&9O7aLy38j%k9frlFEfR6&(FGM&l= zf-4RS^GQFickqcKZCTZ?Jr*7zQ{ma+ZW|wNqxKkV^1E$(vh#Bh1rQ_!nlcSTcQ_r{M zovI%T+)>=}$V3oHz|w+8K`>>lT(o*r4WTKR=vX>C@yf2mP*`*0$xF_>Ii9nyK(x*q zN>b}flR((z|8Pt8rUk^HIUG-Dv}jW1h9_>f1r#~m5_Ed#1PDuliH2NiS|M> z&jTE#Xc&|;2ui05ia{6eu)@~vVAgXpa{3xx^;Ie%{gB(1J6;oYQ$W{~F&`m_1SrxR zH`A@&`g<691RS)f-_;zhRc*R+WL?iQVcBRjwrv|Cr)mGc8k36r=;5t5d9JG z*X`m{ua-n0=K0*57?rsOwXzbLv28B;bLmn$@!KOp+fS*p$C2L|S8`v_{9Juw!H znkGP3?+%DTuX`}wdOSKFD=>?SSdZ}27=Y3>f8|>NpE57-u8euL&uSf$SA4116{lr} z>7aQ4@ev$M5y-5j!%h#ft!3^IY-jq~p#*DrJDYVKT6t4J{%r4+_yQNOLF(;Q!dx1* z!hR`~69*D|5)TcXxH3GFug73#ttX1U93#0cXJ_)Tn2u5XBARx15%+yO?h=sVHn%UO ze|FO(TWg9iAJ6g;@I7ey2avuL$~(~X`*8>93$uO`O^?IFsx9vyjc?HON5E+R67a1w zo#wkR#}|3y$5nnUZ@jdWNc|a_E`L+r7)Jr(X&wKYcpHSH?`j>7pqmYYQp^{;4Mi{< zq=EOAsrUnBjxn6X|Drm_FpNMXg24DQfAjd6dHm#TkEirDoeGS>0218%O;2r!A&y}7TrXvW949@7d!%9@!jFpn)5Ja)wGeX7 zk)NHp!F^CE1{2^n$iXS-0%Z`pfAnx}rj}}xSEy*Glyb^U_k*T!Yq^&}p)J?)*)?mG zgvTFpoIv9aIlgEbqjybX?V)Mxyl5J8uQZK|H)|T7f<}0orZG9z)L7TMNr1`3(Sy8+ zbxg2*uT;$WAXTAMZGCGTMuu5iK0c-1ejPSG5$q^=94;IU`inJKC;GILf5*bMk)=y~ z^-}V|Dz=*7t7SlRUbTAg?9Xl3%y&C_2!^OtIl+0eibbhOy9EwJfh zyM2pDMYE3$?F}LoQm>`Cv#O8Iyd(9XA~(2d#Nm#mn$!)*mP&eI?H3y-QgwZhtT>I6 zL2j^4PLs>^O0NZR1%S;Xf8bHAHFLvn*_C8FG32B%#KszV2D&wEAZT*Qk^1V;GB2#| zACS8j+2+pLzCK=%VoTo!3gCP~0SnYnZ+Dz6{ex1&*9sW20>o?b4)V6)eJN&(|z zDc_F%{=?TpqRUC&3`l8kRm03(gCe}sK>BeLUkB{&clUL-|Lv<3*s~`{5Aey~FNA)% z%GUvJ2QA!d=eO$Qf9<)lo8?NFyHEvj41txvynChtBT}orcp~gxf&!M8A$mLD&tE9I0|B7>^H$0RQ5bqMo`m6yM>bL5x6?^ZY?r;tcGt4>bkAd-77(QDpsL~(+)nWLwKdllJJNLjU-K_g1!mFqA>-8K;x5ZK62 z7(ucSw>zU)1^3fABEE z5U)SD{@U*OBF29mV*K-t{Dv5#|8#QU?*hh;CyW;`egWebFs5I?`1c3KEQtar`&$d) zeWWplzgP(Gt;YCWAw1!&#<*WK#?aFsQGcQ_Hp?EpAuW!1AryS9F%I8pjIl3ijO(`= zWBZfr!o(@d-e(t1f013d&U(L(e@Xm{*@d}hcH!Xb*@bK9ml|VWfB=6dnQ%{?^!IrX zVqph?)_`3je7`%#7~g^Bi6wo$QW9cre%2UY9vb89a~k8J6Mxni$C&m`W8A*i80#BE zDsS5XhG%6X4WKPfAN@lmu#y? zY%K3ikT>3!DMC1ZF}ra3{n>@3pR)_&kLU(0Aqbap&<2$DECDaN2l8tfbsAi7^|NGJHc!G=HO8DD4n4aT zBKtOAtUQ4+e?kt%%xTB8YYgomvw}Vyb$YH)$Kf}Yz)D(6hoQnU#1Y==U4a782p|>c)uKfzclzb{%nQtUheJ> zba(&mpcuy=i9CKBC?*6LrfH0N1B!8h=RpjkANTfSvr)jr*ONy4vsLg&=r>?ujJn_K zKS7Bhkf7eb?@O2%LCAaW!qi)F@hk1?7klCNqQon&y$?*af4Z#KsOJLpIV$^xB>yx% zM1RC%mIjZR6x~PV{l}ud_i$HU9~13bu8``N-(&7Re2IGxU8>Q#-~VH>cK!W@59{PF zNc4JdoY%$co1ZVO4OrZ_uJ)%qDITeFKYI7dyw@@Ou7y73*xyEIIS8aE@(=j?=4UpM zx7*DNeEzAyf9KCT%p35DeRFmN?3qj9?h>&v1Pu<=Zk#4$S3_G zpT9r(Chy@JYtJJOsClTpX2pP7y*)JBDDCZB z0h+qMH^x8^`ib7=MANm*BBoms5R1jeET?`Sa0my*@u< zlX6t`#=9D8!dCu*R85R)M($874jO6IxxuL;wt7KMyUT$z%2?O~rsJumwT-d& zDUiGbvjScRI*CyF2uy$*707bd08V0K3gOrCQ&Q;O`c!rS3BYH?qkHQ{?|g3;2(vy- zKszJabuPBP#fR3x^cFoOV9E21F)j|V>uwi$e@9Q8kEkZRrlD+S6tj`N*Prf72d-or zxAVmy*}5l1v28fS+Y^TOZS1G*10~HM>k#>jAAU4w{=k@}tbH%9j zf7&VMeT|1v?ZNP9$Nrv(C3Kl>#Z%e~UxhVZBu3ugc6&iL48sMcj?|kP;}G$7q`E6z zRB+y%k(QSH;l4LG$ z2Pbf9uN2x2)>H{M0V;A7h=vJQO zE#`_Oa2QU=Y|xPb3I*b@L1`bv6TgQ>De2e6p;BcX@RgFY5IdowDO)Vyp=JD#gmiq6 zpr3&oTxV&dJt^DvgFNwFqRn+Z{5abtKkEk&xbI*rPk<@Oz_dBx3oSqfV>>zh%dt~N_VBl?&s^#$@u7L5QSoCd#=LLL=|J+P0-Np@F0fq z=5VH@QY_C-yW@)-9F57uDKXOLe`#}fO-o7f(Sv`6fE(;VKz12Q@M+K$F9UvY+G8D@ zNC3PfQoI1{z$pu!nxw7v*2ZK5sW}*0HrYo<;!+)~CZRoWhG}~_AW;!;Z_5YhT&dk} zq@5o>Q9KR)R@(VI-hs}i!C$AHpI^~GHMoM#)!?_$POms<hZi73O~r z?OYzsOn;7c{#y_Qm*Dc#|Aa{jeakyPc1wRF?fetCj(>NEh+!o9BOxM0VITt2;2VgD zpbRWP_`@gtkq{9kKpgp9AR>%HUr&DUb&9w;`rl6xza>QhM#2OR;yCuAh`&M+AN388 z7e)LRpoj#>2{a2ma+ka)f8vWG{MRX<4Ol3Y1%qFYX=yQH9>M%Wr1#!w+s@cX7 zfg5GF%M`C{;zdoj0V%>jNa)CADUw+@@XZw|l&D_p*e03CTJPDa!UkiTc~OZ1yrYnggR)MiLn|? zHozrvoFej+m%zmsZsomKa1jsIap>N#WQQ6%08b2puHDV7xo#au)5ab{uJBTcuVWY@ zwS69(Q?>=c8pprG=0Hu|wxM~L7 z`u)bKk@`Bcw{r0B<59FF=T=zAv19#%)*QIb(c7D#>a-!$TX(m%;UH+1r(KSu0&e>y zm(OP4LxdPvCm&Vj2tCKs{JVYq73ssiQUTXb1q`@XnA(NQ|23DT-) ze<@UlOVj{OhikasuDOCEN*=1~qDN|QSP;!Ac4JXgp=1(MdqVMJV#=M4SuWKwtSVXi{>_||PwOth z$Yku$e{qUyb-JgS;jM&!Nf7E6MsTS2^{5d`zZ^5{;PmI9M$*HP2 zdV7@?+MjP5gJdXk-HV>U01r&X@%8Mla7n4L(;3$fKUV6kAN&M~Ao<3|bZ%88X z9f8;nk>SUBMDpj7^lt@;Z!6M2_skbbe|(X|7fGaFB=HX*iAs7tUcKwLki>r2&b&F~ zQ4@h&fCKi8U=Q#hq1_(O)?|A15zcmcb?!EdKvynH^({s1A$On@*cOilL66I#8|fB4 zBRX#E>>;_1ng@#XSo7yIS8ZmzE;a*)QLC0tHj6#%p6gDQi*OPvBwErKD$BZ&e_5e4 zQ$yviS~e0krNa9(=#!4|UHj@@8P!SmGU@IGdzevgSsHa6HsyZLxzTBFhMQoIqbw~T z1k$Bt7@@~&6_&WEO7ZS;#K#`%Pvzx&a@-V4LBcNE{6rpUpNQv5Jx<C z)O3Iumx5s)%pl+xfn{?vQIM+!e;-F`gNIIW=85dYup!EWOAMf=93k9+=(CjDfeMH+ zYcJ!4R1U`+XeFRi^OWGBI1$EDTzr{qI{zer6$*Er1$wdUGJZLdxVRAtS~?b06NJRf zuoL0v(hv^s26lLqE8(Eye+v)a8JA#G zdI_#2J;9+HxXZ^lK3GL|T#-=f^v(7*dwk=cW&sSNfS8EVa$`u{&q}quor;s2C~K)SW9v$Ieu(@JCO#zS&Ege=?JA5J}ui(`3k8v=6Csx_L% z+KC6~+IWDkmSR~a3>id%e}1MWLk^2$P`H$emJz=b@QisH%v_e+^O*wNqKK+hfWOXt zE}H1pO%LgaEOa|;-1`3Ohy)%Q{g_`ww9XXa1l3MHd4zf#Xn9^H@kEnPg9(`dc%xRv zIURKMpyZ6LEux|#7eF-aavK%Ov<;c${#bs~Ib5HP5rLLhxop^_f74<fL)eeiQ_(@}E`&?|QirFOQR-D}t}muN4V>s{c|`us7~& zqZ#Xz1kjf@^RHLDIvlUO93)kE-Hqsx7lIN=XL)e3q#qHWy!W-A>TBRM7|sah)UbV< z?hmqR$%I)#yW%nAe>Ah+a48U#vydI6qMG3{=NN80yS5jU^#NB6>OM`yMb>GC$6G+0jMZ9F$~L(3JkIW4(u`* zrhI>Z_b0q~8ni|L#uo>0*dB^fKSI#0q^lvI#>=$bgUz{Vf2lMZ&Af!evpwa3sk0~9a>%Da1lPtx>J zwEDxNS+Biof4^3^-&J>i+3SKNu^t@cU0yo=?m*LB;ysMUblH9J#h`n}oWFhL`6=D< z{*z(!{T24{aqBhm$u8b>+n*HCk}v{2l8*hrh;fj@NCJDLGx$X8i4ZsgVn4bf6+$8y z3jQ8qPv}8GzfbK6-*5dvT34ANNPb7i_=@WM|MA}_e+>S$h;ay~2$Vwa|KA|mXV!$j zI->n4%9C1rkB+_uYd_l^zZa{0Wf=X}$T0c>tN*fr-uI_ImZgLhtbSOseyZ+c{8Q8l ze@(Rc#GBxMUkPBIT+4qvu6!C14n7F$NBot1N;_Bn3gQ3$fUzHxoY>>+v8McE`k2G6 z8{><^f4(^Ei^I|{4*Lhhg(u{kjL#@S!TfqgOhFj}ys(TpR)3~jnC4<=GhCOUBdV1c@wY+!J@8ev_Pu_JNk1dSKO zT7z1F14M03Jq-pVc1~2q9;=-tSet5;H%<#tf0s*%$92!r?fy8^r4WNrA#00>?`@uk zz1WF4W1MSYPZMsERgGU|{@Tm@scsWEKMx6rk6M);m?Mi^2yovL>PD#AZMcEBq?#Q> zl$Fr6NFvwI#FiAKPGfu0)jcx?lC5IL@fx|FqL``8lH6yfWee@w9WMZ7K$^eNVnAj+ zZCAc$$$y$nLm42SycqRS+quQTbr&^e4RDmZaY_VdHm0Y?q(hsl8u2*UM0!9hXt)}b z9AZk>90^P7V~mG;mr}u-0}i{?NbG4>_XTO}$kML5aOVjaXKbl!?dDaulS)ilOV>;x zdYd!?!goqQL$QTS_XkW&@=P1@&s@)(h%~fle}6nfgaaJFk;qA@W+v+_@{MsECRaGI z-3DL4Zdo~O6C8p-C*9EQCb8`mV;dh)hXK$F;%rqDJk@*8Jng09>q)U(aT*4hknmbCC@^d=H^!zGJ| zfskRIGAir1li-{O4LL%}*f=K&(q)*iY;yspibjg_yEZf#WZ`V>5t8g60cz_4v4IurhiR7c3Qm!*)u|-#pP-pSIUV*3pHZ(?zY+1 zWee#u!eNha<1fX9gIChisW)Y7z7iL1jOz~ehzq9}xN8GXgL!OECxRO9SS+|N2nH7V z{9%&zEoHd=MF-AH$pp@2jSKH!KwiRe8w74m?NG240+|t%)IVW1C{3=X?F!_(KYsep|Ma=x0$Ow11{Rd5E~DtvBCFPinDSudJJzi8GUP!QY^w8FF= z*OctnRfUiExNf2_VKwzf`oYN$E4Wm?32pk$iv?^+ZMF#wn+BFs&59QYB=pc7OMoxoPJuRhA2I zxoo#h+_S8|H|N7mNqf43d`Oi+ypg-y)+Yw#v7o5vGbGizjC(l)<{GjZ^!jv&a1b9^ z_j+KCDRM!hRGb{Lxb0}CRH0~5)FIyL`a5>&huleENog_-ksZx>q#aCH(Nb*s+ zH^H9JZs0WTZUAr*=&p`%Vy zvjXo3T#2*A!4fh;%*$siShkbC+9xHO=m?rz(Jkw{_@~rv|@se!>Dp< zvQlFmQzf5>3V&qImCwa;sW|koZ1DT)%8SHqhGKDI&%0=gZsq;3+!DK3rJm!(wvqaf zoCMg28|zw!ryRUV2yrE<$n-!g;~h2X%FSFij1gLw@(?!IZWrPRuZu~%o0m>yF7|gz#p3bLwF=GOw5EcpzeUR7G0J}yb z_IP^Tj(>VL5Bg%>qHP)-)OrCCsXm*t;;?yHO0_vb3FL{z{$^G~bQ`o|P&=E9JT)rj zdnfO_TX`FJYjiY|TZWoJM+9yu<==9g@?9r~@0;$$c z`9@OpEs$z8_>H9MTOieHka3UjnNc6tZl+0piBx?HqNxB^v9NxhC%Fo zG=J##)d;~!>|IRmuh$5H5R@cvhKJxSRFBb}V?wl`#_Cjbcghsy*+8=<>@YwUPZwt)*G{v7n z^j*d0W`0eWhHck2WRmwO{_HG-7Jo%(+kdrCNLz^nI+X?k7(TF!A;)@zbTrsv(qdFU z@CA=)YJKy7wm(PZ>N2LaWEKwWGD+Wr@qsZiA{vmPLiqg=ly1BG4{wLZu1y)0O;Ge&sIs@vl#x5BORc+KqXB_}98s461a(kZR# z^_8xLeTXresc;O!Sx$yhstF}=DN{PU49sK)5H)ZqZiXtFH;a~6FwnR+j$(bPv#@#I z(w7Bhcjjyc8X9p0UNsZ8AA1QIW`BT3uXY}AX&0eMz{JTRu47`5GJ~g@&J3x`>1i;> z%=Rky+Oa4u`N;y@2Blz2CvO1^&shX5<;>LmhEM>WsDlYSggAEP!hO#kFG4-% zHY+r@TS4izkB*vl?RUp%$o!7n)JwXA`N-)(l8Hy{!UC=_J6`Nww+w3oEq`nWJ;vY; z!I@NlDjK!WEO(Xep7b2F@>wPA^3Czte`!MCAz>Q1!aPtb?ac{)N$QIcE0xMBT zPVjgBB@o9TnFoRp*T7s=>xDHiS9%ke>#c#gtrHIOBQW=&0sB&5F0F0nv+-Hf_B8lQ z-j+XkoB8BzDs&Jg(<1_HSDC1A@5$YWgOZHtYF^0s9K$fc-RDezrhhko{f5iACk?yg z(lps3X(uE^M#l{?UqZ@b!VQ5znXK?u?-ej=zeedsM>7+LB z+9?SlN;*y1G31H2Jz#bg!n6PcntUJ5~t{qC?kn*L6{ zGFx-bP4@q@cP2}3V@rO26^FNsF3eL$_(otRG0z0J!#oiniGcvI_TFCG3qL_GI=pd2 zNBC*%xPA{&uSPDj$87kG>G#7qjqih#&-rd&dBOT&=z?0T2EA^6wxD z|AG1hA7VeCA0*)6KfoX0LkRu>{24!dc*z$(eDT8%LQ;-iy+4NuZ_Bp_Z*6FAtY`R+~+Bc6wch_L0g? z0#v&<*SIyh11&Lj>I-)xE40?Rm~5Y%BgkHeXsmn%$W|(HUz?;lY4%~nmM6cra22^< zaMup$A%C8;kdxPz?2e1nbjVDl4iFjbXdM;;o#tER?(9-kEz1^528mc}7fTTX-9vV? z5|N8AaI4e`4G{xlr}4oDI|jvd*L3YtL@(IvFL)*s_CCH{;r%i+Y42_+Ee9}G2;%d4 z${^ids@fB^BSA5Z>ryjA&&3D)@N#S9c5}uq$A8Kht+1AsTsn6wfEve^I2h5`SjB(~ z`bc)l8+mc+epKh3DrCM=?%*bsvAR*OY5DJKBFWjx;=OK27KJ0m0}Cbi?n@PBn7 zo(AV>?+m@P=w6>d8;+FT$kqF)LU4&^CR;_--bmA1*TauQ{UC+D56gXBWPzKgqAJ)> z`A9_fr7s`Z;z$L8;i54761G`JyvYpO{OX-q~ptvziq|D^ioWvG?&PAt%tJ=sU; ze9`wg0&O-|jz>$kHW%C$A`Y?-fqzHDh-3wg-xSvc&0@9+3s0uSBciPaZK)0qlit|r zH1t{E6)1Z^aM3&Tw9-uR^$ebdL(J;BDijfs>DsW_x*OIc;w&P{Jz@Fx)fqy7a*wQw z12vBWu>r)z(RY!WkqoI_vk=tExd;CVkMo^}_xdZusW) z_wg~A=0_E(U&9TRS25||kJS)@z`rF{Lpcy6cpCi#tHA_FAQX*!YpnLrDf@Dli@#Nx z4FMtI*KsuzM9~K?`y2Z3K7Z8go>c8C`tV{Hj=&&=6QAViy@zrC_{wbFdwB3Aymp@r zh=PBd4T$=l341TJ_CjkfwDzU!IuHXXj(x~UexS^TeGg?ehyd4K7$3IT1y^*of;0qL zzwl9~-KRX;?PHquaE>pU_M&Monnu59+Ha7J*Pl~GcxL1Ml02J6{eLLWmZ8;c8SxQ6 zG2RFg-nkUlnl;vr#A*|RN5CwxRLRc@yuZ$9n-I{b?nFMl`z6@G%8U@GH1e;C)}J~0 z5HI1l)Rl3RI7f{3-3H5yHBak8q;X*v@$NREUZ!*Gb-rveML49SALhXT^FgtjXcb5j0t<$={H9`Ry&ZUQ?W68i1nIFvp)DbPv9i@^t zP<<6Es1}4nGw5UNkwHcHxP99nVR<%FA=;5KICE4Dnr-zoh-~<64xTL}k;UwqcWs0blz+9=h$c9t!lv;E$ZjPu_UKd-4|Uds-EQ%2>SI{70LHf1xS?6^=p>c_ zvjz)-tO1)UaB4xxi^kJ=H0HJbG^mY9kc5mW(iT`2x5nSk6E$9}k!wX;cUC3hy zt8pS9T+;2a!ygK5y9%M3Mhvy{Ng-_`5p(5fFpHt$$bS_b?UQ7J0pum}rQ7jns8G9* zTd;GtLW3;BWpf%XMon=o<6j1*K5w-0mNoMXZ_w}}#uvC|(v@OVTg*awS92AlN}{dY zL9#UR_0@wGF%wU|niL*IvvqTUZVd{K0>SG*mSaATZ{-`zM~;N}b9sPm?P<`e5&$5I z25d026MxeyxJWVZNSpc`QQK9Q`yhTIkM+fDyl3_6eQl(6S6-_n5$)k5uw))=3)L1_ zstbZ-vFFb8Do+oi`-AAV)k=#RSNN5+6wn_qQbAF4E^#x@j%x0*mwYpx)QBTe1tMrh zbfkSom|~Sz%yy4uo)`G4?{p4>E&-I+>IoYT>wjv~P_k*yZFj#{wSJ*;gn6b*3gf_El))IFy(OMHj)>e4hvo?{7@om{r@ie^_9NtoXzB~6+fpxt*Q=*PkT zd4I>*;iRJV^}(jN;(_2ET6%9C@1H7GC-v#0#hbY9ZIAcS!IEqLm;01wapU#zjeM}G zK8D^j_~xqqu|ah0kNYE)b)>5$Qq|{wCA-6iyjq(+*FQFW{_t20s?UzZZ&hU9$JG_r zuig#Q-17L>^5_lo{y)En+TTRfK;qjrJAc3!gcfl2(?m58gcwBN9$UR{O4Nu)cG&lj zXM@T674qwgUw@N^v=9p7&_kr{Q>gYTetkC$ua308yW&?6Vo`=*!B_F?3(x(%c7 z)|-lPjH*Pa6<2bX>Hub(Tv|dk?wh^O`Otm4Pl4~Q!=t(=2UWlI;aKb~q@OlfSB-$@ zxLvE`Lcr(c4snnw1#R+ZTyEXXDSz_4gH66rN9VlZrSMqnqdmR$RyY+y0)>W^CVK)j zx_sQ_)`+BB9bXT6G-srLY=5c90LGSP z3Ve&l>vb56Sh+(DDWj~dmhXGQLi^rr_yAE!0KE*`bj%%O@iPxtwqg6 zGHaD1E)qR!fuWl4T7DPZP|QQDaLDdU2d>ncIYsm{4NW9C99tK=9JA&EkK1e5Th}8Z zo9C?e^D`=d#|XR_!6sMqf`8LYN4%^ZWOq!LX_XU7wx=qjkhHZTktqfu>Ve|-Oo9U^ zpW-*tq1rOEz{wO8iLp6i!_x0Zd>iuBp6J7)#U7lsHuqLJAbBmpVW=-`b3|AM86|!= z_f&4)pWzJ$(d(K@Ix~pbzZn;nl;(&&aJGiKH)Ahb@PE^wsValSpKt*o zHjx7mIm}M(AXVy#v#Z%v=pzL5A(ujae!GR*{UU1*mI)rWLcgCMEor-0_m)c3Hw^YP z$VVCgHk*=DF>;PIf8!lbq+X)4G;Q3Z&fCz_K}I z`TIr#{~)aG?SEDMV}rk%wb9clHOSwPwf#m_uYZL7AkJ{uLl*9n z&Z#^DQ?&4nVIl+~IE8%|B|Qp+zMS{>?*|i65F>C3hoKise6hqo2umbjmJ$ROd9lP7 zOZ@Nn12M^ISaevLPLilTLS}F-d&l!$b{oWH;R?FX}>Ek{+w!u8Cp94XvFEnphk4c zjZCMhxY)5oPhq=xX*S25vK4L(SMrW8h@+Bb9_EL8NaQv*FgY#I?Yxn924&8BQ4R*_ zY0$xiM&aZenO+Q+Kg`@D)K^`~*)wCu2Z5MGTz|}|4Ze>ewM-@@FN~NCqX{6DTSSe= zJyP-~Un>NGS<~YD^j2$|#-I*D!ZZUw*VleGil}bQ>2XOB!FJ=wi4D(l8+CVGf;8a( zcA;z5aUoqx4!bI#s+LEt{z`@Fb|--H)k;B zImEug4ti{M;f^umHtT~$5suPToulwNoMJ6%=Gx;eIoxEnUA+H7t)YJz` zsz+%YY*oGx_~>42a0sO43UIs$0zGOJaet6tts(-9!R-zW8J#P3gW5E_dm3bzskV>Z zWB?nu1#VU#mdCSdNTy_MA}RM_!}UwbB1GZfiI;uvaS0;X-3IJre9%g*F{Ko>xQvd| z>OxxbD5=mvgH*uivb^uk7C(^G5j%Uac5S(R0_+ukPU3J$BVCqi8Dv5Pnh^f+~dNX z?e^J8lfao*CwUIkopLzi3og!b6E6IMrQ{?h9kH(1P$tZyhxfdh#z0!^%;+YYEDd!9 zeD(ltL$wx0le?`Gf^c=@7!5fG9)BLUXB!I>-0}@^=9IZ$uLHeaHbucUX5D3+SVBHg zOQoMC4G!vCJxPa7-KfJ9rj{p+k%dbNI^lGkG0kl=v}3npu1+Xq*RjKhV*#uRmMDQ> znOa}9`jWIa2pMiPtBm56Qvkf9QBSA5(ZNB#X!TSQX0H|_f2Wk@nd1#D(SH|Fw7lDu z%sh^KF9G-CV)^r0P$lGaN!dJJpif@*DCKIPT<)T2(6bswaX{W+;zXZi8rhpsT%YHu2pCWMTd(_{G$A3l_Op2SDT8fkc(-Orc% zw|}MJcnX<3OJINM?fb#;et!&~k65cw>zcsW?cfLRYitE({U!VZD3T8Y+GCg>$A9|w zlhOMlY$CrAP+YD5Yyen{V_Ez`*S_-r^ye_XZ_(~wI+pEyLxnsxSL+LFeC)8o`+o4r zoBp|q?;orMboX7&`rfxBDR_4kj%J}yh=K||iv-|_ctG~Jis!+&T&xBX{7jQioO zPo96JU*7*^cx`cde}{eix%ItO@9fQK`*dItj35x`Dc1LU9N0%;W7_@RhxTI#{{4R7 zdeaO?l`6u7++Q0nY|Ng%pfcKw21Mz=H1APCD4{ZCqb{=q}OZ&9DrvLFTKm3PJ zPT>5AJMdk1x3h|e^?&E|c(jMGdw*m8ZqM*9`4IN?4-Yu-RVT%_PjLB1yXgMqzy9@q z{@Y*w?SK5A|Mf3_{cr#IumAdQ_sj63^Zm>MMKY)$2*1~r|Btvp{ee>cNs{`eQ9A7Y zEXTw2rz!sk#ooQ(H;>XGzaVt+w}$9282ptXItsqK`F9E$2!BFAzub`hrx4w$RU19U zoPV*`6@^1MfkFuU3eo*MM0cMB9DApn@zX4Ps}S9vz6twR#p6&K$2gdK$mo1$fAU2q z5j|hLy}|l;wSMcHKRq>cX>%IVH~i?&_Ghmk-yfu4;71qrNs#X`5Pyey$Ewrup>zlJ zVdRfMR?*vcp?^OZf1?fk!yCVXf3M)*EBHshf`7k3@DFjvW8yu6e`@>-!M{)1(3Abb ztERoP7*9&fRdJ#Y&n-%L2b+ktg9$1?<|g7K*SD~}Z2OyfSZ+o{U$FR*@~(y#;GRn z`|LE=u9dQ&%HE)9x=2=D#rg&z!U-@NU@uXa zR5AJyVfa4T=>ocW>;Uo`dff6bg>>{HmgZDaLxq6`Dfg@?Nsf!&rkkbTCic4RH{)d; z!#MZN%kgySBJIYu#&8R^1-#`#!Li+t2}=Kb0Dqf^Qidus2G-U3jwT{qzn`SKv170- z`-3N$5Nu8DDzc&9%uBTpJ~Ar@gxX~; zGk@|xhdkY&_TzN76p%;&S-a5b96F5Vva2>rHo^yisvr&R$#k=T8~Awbhh4@g<7uIoZat(jf6h@PyK1ioZphD^3ZHTgYsgeM4^ z6`APgEAJY-&<0Ux>;$g?b1*rGj2#R8O@Fv;qBekPQFdiiAYg+!y8#-@m0N+&Yv7dFO3f18v463#)Ve_*W_LH4&qCC6=z>x%`zzM1C27>?GG<>f*nU{X`OTYTXyT8P{ahT+pM}_2v`ql9F(60tRq~HIv z;_elGqd4*d`9T9Xka~lDKYyIyi+;c8_lthhFZ%r(bbu3Z`T~cK_jvHjn$@Z>K03f% zO&~C)5?6?DIg2B!^S-(3_0?d&A|dDWU0;|=&3l?VO0~aGa&n$wc{$`T@9v#UwlY@6 zMy`e*1e~1CsvQiLbE>B;dp;(mPi-21<)Xy-WN)$Z+|WVwAmHtQ_J0V09foZ%&MN`0 zSWzLbihJx_eIjqma%BRIyy??)VeGsa0#n-#eScZg<%NNd+5lMq_S{XLzo)G%MX3$p z)Q!)2lsv^cbrewkRFCo)c;MJtBZ}370N*w-x$Mhpa_+al?$m78g#JLI8T^C_*7cwR zX5`5_LFdy{aWyDD2!FVnLxFSH0&WjEOE~Wao5qkF1veSFy)9(cjyKMn&mq2vS9#=) z5aknMX@DqgFsa(HQ#P2y@NAsL!U70zF$E4jZ9`P2;PSbk&y)rb-L&+#kSy$ zRm#%V2{uoIiF|15xzchd^7c)W6k5)p$AE|%4o!w30RtWAHGidvP@>rEP8C++Mdelp}h@DV0xi)*f=Rkxdy=fI&@Ds|1gViB)!n zAcn8A{1uS`B{RytuAPRor9m}<*@$j)l$Lu&L{sG$c86WygisqaY^LmxqJM^B=CTFZ3#5X6(suh;jMfMO z31oz1;{t}rx3O6m%>B}u$n4T7oIgj!*IE7ujZ=z4suRC+uC_64Lrg>m|8TR#c6T0k zg}G%bLnWe=uS>Lb-4RA|2-ftNS+r0Oqo={J(h1XoP__g8LY&X0!h^^)vUlBWgRtOe z?z~;lw13l-7unqtIxU8|o^S?^V!Vk&y>m|uUl%Mcs>vFK!6^nL*t`eg(!SCppa*Bk zxxg?#L(XUoU{v3VZML_C>J)CmsKQ#ENTzDELt;Bj38$1~dPTL4IHs$U0-S5PNseS< z))%r^fa%IAEyWg2JrUPAj-VZDR<+GrW^ifJfq(P@F5IQg0Y0)n1cK$-Vr{xtY4 zN?zVm@u$IWQS$Phiof%EUoLqm(p(;z{Qi>B9{tt6M8%&5zoz8H-u7aje2I#4?Bk+* z8vN>#7xnZdD*jvRRlkiRae+cG24-J4@=u2&k^2mNTkRf{Cs-O`KEaU)gJJ@UV&51? zB7gAx{`fxHJ@*6ql|tY!0#VP@&qq!w_~>%}^;GgPV^1pi70vY!jKE;(K|MZ#lK2Zs zes&UGO!6O_Nq$wnG9qBu-7`O&)bAxqeD_2TfB*j5?^3+)FQ4v-U7rOWzjPgeFM6H7 z-|i#cEIMIdt6>}FY4`Zxl?(k3B6#$pV}Jf67aIOr@pKINnc@*d{O}X`r5*}L?{l8f zPmu5PLF0vdU&!}`eCZeR{SA=sjF%=GJsVn)zY_UI&LEDQUVn&ub9ny|@@=H{6Xe@i znJi`O0ZXYE`T+S#pCDi8E#&LA13DlbjzuXHJ2Ef&=5fob4w~)%&(~(-`TP7b_Vf)WXKLIcb^adtI&UH0XgHD>Rt|y% z*nzPztyo_(1}8V!Ug&r)YBfPwgL@)!j$0&E=gfmGH>k~dx#s#Cd)Y_Lv9ZEhxLq0O zOkPRj*phgpFX7IF2g=utbqp`JvVX>L$tQ0{vTJ%2EcZCA6sd4j74#Bqx%L<;*WH1N zPdjjit1i-uiDbn>7V4@a#h|W|wgOLnykhe)cD9CCc-_I-+d-}EbR61Esd$BPLY|^Y zfQS%a!6}hRJ~*MXT8(}yTNA`8WteIAv)EmftsL?-kvt8iJTAsIrry^pXMeFf3xkRn zD^(!?%~GNT@vv*XD#^J?9ax9TDI?GTj@h4^ILiTkBT=zXS=-aWVaj)ztFTXB%`or7 zuD}ukums6)_U1X!dVP$AEGxVOrQH2xG(z6||LmQ|w%b;ereDRYddRg3In`P{00)tB=Hykv<2Z#`TjMN@bNgw*Y6M|)D9G?$Eu`rAUm+VNI-4o8}s8X&OTDzsE* zh5@LmOhvP?bR8dyZuLHd30H5zbL1#G%$?U1Ag8*VPZujS|8%nRRnMCpsIgaPexE0B%WGXAux>Vy)%PELnR=xC` zZV@OpkZpnXV{K!)nO3c)?-vc8tlMmIYsUsT(YGu1=A7Eo=29)K9G`eJI!C7MGNbR? z7u;;Jfx7I^MdaJ9Gu=FgMjEdLI;7W82|&X#Ar$SfK5I~u(SLwz0|Ce`VJstX#nJv? z+DK)Q=V&rR#KGSJj30LyFJSxv#xGz@zkunh_U$aJimqa67(T%DoRhT{14?Pz73fnKIQ!WEoqsoxfl3e2mZ}MbE2XHbys^ zO_Qx6O9-BYH>2bP;cA{Qd_3nnY06Ix?cEx(fN!ws-@Dsc&O>%EF`bNLodRJsg+9>; zPsd~@L4Tk%U~z;Sk~?8s3m%*;>F>`@azHdk-h+;3EI4KuRn`hT9Iz9~soTR|avW5d zB!SS`+hIfD&w%%YtB1k1KBd<#pG5zlPK`05N<=~Maa>}Vn8D4li}4*QP0WfZ4dDiKDuZ>WBHt(r+~j$eIpEh(1FOI}-?ydS-ZS6BC!u!R4j_ zz_!Mxy6uii2#F(sFku_CTrnExAzz_;?Qz}yFq)EeLIoTM4CKD# zYJUt9>?O453;luiS7|O_e}W7f8!t(_)AEo+v<7&3vfyqALcm7mgwoV(vIZT8ADr z#DSy32Ly43bbl#9z&_S|T5jlwZ3z5!n2*|tpfV0J^?V;Xy+?}}R)E}<#vHOrQ-5NM znjGU)5fQCNsNa4T4gY8L!fTTH1}lwk)eC>XvA=1h@gZO@nNoOq^5Ez_z3_*CziFlM zaZr8B6GQM|=D)Vc{}AxLvEuhxU@oUZd9>jKYZ*HGWa!7d8G4 zYK$Y`jz#_i=cNDc8I*44^74Yle;;W4OJe>E8l&F`jUnWLg+C_7_`jmxsxp4uX1t*B z3mU(mG5vzZe}b*DvSYR8_e0}VWqkX^SOWgkSmGCG41NxcFH{R%`+4^{G=J_M(71P! zXF$ZT3q4~jQ7I(F$Aoyl0e{YaeQW*Y!t4*5YB2K31h_^Ho9HjjC6}uSmK*_u*cF< z2=~0OG$#!{mXjC*5W9<^)qf#?Nyy+9V(yu@N{FWpStx3{5|3!W~nz20v!T#9%G-0{k>bXH@DitBR0_GW{*h!feRVX?bl zWLz0kx6_+$%b)n!CJaa~M;nyrTcKLX0>+m%LiPzotl%AI#E8V1BY)*>K`XCXTHs3| z$QM93`M$-|1HhWtb;I18w%`O!$%AW!ZOvUgo$trpmE!qYw@Ol(S+WL1=iHr|e7uE; zs(Kw)!s>KAlXk}NQcfSvxp_RPu&C2pQr1s0Lea}cIhwhf;4Hb21r&!mcV8zfJhzsS z^{WFzO*K8$HD4eDAb)~6rMi3p@*s}UF0eTs!R&bPYZ}wDEW1@?=L0o6X87jJf`Ecr zNs@22`>jZ!>-0rKoq6I9`+dm(PS)u|l@+*l%oAT|aci?dQS5LoH?GVA4LZ28f-Uyd za|GPG^@1*A-IN9`7@V1Qt@_%FV{5@Oc%N}^W*n(1HRdxA*MHY4OE!Wlg$^TNCINb* zif~3GyN=BA{<&?G#UtZ5Of7Fj=+j}JIqMOoF3gzHl0uBYPPd{#i%ECt-&7d`lvT*z z1C7`ZZHTw;N(I34$G-DwsV4^0M4`vf_*g=CD+fP0mp`Hgz;7^E(e znZFtvaf*iVMk=?^^uN=k^1cF$@wQ^w&YgF!poNy6;5BKNqe024sxF_h!RL;&a2?7cqWo z1r$SG#DDljjDM9r5fJBal=%}Z;s3j*PxGEV&9E8n1NX&^|32LKm*o5zH^#n|8{_|q zd>tHrT9xl}cKp2Ec(LObJASca`o)g_1i`W2kQ@H;JK3@OWXGqE1jp%Tro^8Mjurc4 zJWYuuEDDsb3659KOrjD$7aX?;fn$CTZ9f(q8-H(t3weM!2VeOW5eFpDbhLp8R3N4;?&@N*30^Cgxi^2qh*NYe712 z&Cc*{Og)#ggI8Ex<;U7M=M&W%(g55qWLb`wN?q5|bNCu)H3v78H*M7*^kS=BX znZe;Y3q*YDbIi26t)|3k7jQ1Q*N@oQixgy{wiJ4cN6=D;0-H3{OLmj0Uu`>0_vy5b z$a_$8Rt^*L{o6XAO+c+3j|7 zvt}pHH-*@S!=V|Gi*dYNRZRPLtAp|TQi@}(J- zDng#an%rR*;KAhpfMn^1Q^0umgn!?iU30Qm(Wm(Mf6stVh{qfAWu|f;2_D`B@H3ln zvu=XGJ)3Pg0?bGT?u~xO`67Po_&Q2On+2gkME#B0aS1=%sH9s@nIJ<7H1r#FQrrgZ zidt_bk>^3-24C3D5XHFhp}uFGnbavjIf$m{%fe#O?q;uS=RqECiX3fbzJFbH>OL=a zc6=2C8U&Td!;1Z`o_YSfkx(?WT0j$*O5m%CS?24d3#8_FxC-~1wq4S+xX&ke*)PH9 zU(y6v11?awv#!A~kh`NyX(iS6XB;1(NVV4?greRub*u=@*0ua% z=zD0X&v6&KS1-objxB2zMt^VY=y7F#zWBfPet7q8;`8kdq%!^iruu+C_Q8&_Lx(9Y z5cmP2{u)lR86`%*>G7s`uvPkL1^jWqb(6>Ympf{9PtzjL*z@0a14{j{pzi#5>x>T{ zh-bHXC*UImtlg(jt`z6P%9oFl=k4|=gpW7d=TScL`DXzi+w$n0?|=2l`*mdw4@`c) zKo5qjKNvjgJP7xF`>*52uLbZQv;h7?O9X-l#L_HC{qe2#vX1_1;dv6F(8p^12UfCU zSZuf5!k^)JltDRcN1~5&`;j&vC#iW{QF!$FamnO_6HUwaQJ)JJWMl@|VIEmc{6#{-P=YM`qGyilr|6Uus$o$`%%)e;xUzP^r7)YVJHyZr&JoN`uvb#^E zPY>gdxH0-HVE0ze?)l{#GsZtf#%l_EA>$V^ej#J}g^d4rWXv{lk&)+T9lQMN$XKNs zc%ctb0<_V@;LZdKoeFJBLo&74T^mIX5xz{0ZW^CvE4$|xe}4}|Y2;ply7O5U7AuMj zFrXiXZVG&8kb|~jY4KS=q4^70gS5AC*R21j6m5ql- z1$#-ijk_bK?x79d(hQ zTO`G+Aet+bQ;0&{rjSTq0wnD=<+TIld5MP(=9kkx&VQHC-W8@~oZRW6pMBJ}1vxL6 zsp6_UZmnK!t&rl=wSJfrSFz1$D2j`)1N|GgPG1p?(01WJ{3)pX=}%#qeBZG2vge{3 zzAcE5pUbv9l;gn^RhGS*F6WdrKF<^_yxKsnRB;E!2V*kW5jed;-%X!uK1cn!$Sx&{K=0}Y3>wTX$N7)W!lqpzILp(I1c zcz>3M)NZCEL!PyBM+K-FWcxG`6s*Cj0v-IqAj(#cp8*+j=kv#V|L{XLpwmG{f)c}- ztt4|`c;z{H#7F;z>t0>AIvFp-5>7T=aEII$qw{1{&hZu^XZu)U>-1#?xKK{WPSOGm z#&WF=W>w3=D=4D8d1xuiS*#1tW3ZKT)PHO_Al0*?dvP)fV7e$Oh-j;YLOnY>c>Uu_ z+AQ3#uq2uWpvTA-)B_xo*=ezLWoMSR#^FAwPseNCp((b@nZ7O|VAR#;b^Oe`_zidd zJ_F7m4WedlYeiY zco(my{2KV;^feRJZ{k*K?X8cv74j57uH1_Jm|GG5N<7|u ztaf~6r5Cz-p{p0VqF?ChPk2)P!dio8JwB83hi>J|=!$~|KI0CD%dZcH>*i39mO9*?KE zbNPDVSc}zqpehPTtmAo$a@II^3K?yR!rH(!u%#JJiO|e6uls22HlAZ)1yE)ED4&4D zZaceE!2UE2)pX(ZrhjQkT0@3$dWNpSIo5fKgPAi_+%&0zij60NOn8}uvkT6`${;3- zbFzCA^b331UG2!9?^oX2BDXmh_O9V_h8n2lWDHkbRbk=OVuZ&-$f>tFrc$Mo#7Ke1 zv?1W$Rtf4kh`3{Q9VuPBY7N?K^4Kb;Q$GWNfm(}Lp0nTP0@e1|Vz_8wED6Vnt!fftk@MOptP*9zw%GAU>XPLdb0LSNzZ?f-iySuNR4wQG z&>dWz${l;Fp?@V2#^iB6S)?S@0!ah=CaPL#3t~rEeFntHliH=4*y&~?3i_N$ny@iF zM!ngvgqUKmyC#5{f!YR}ot9Y!Ck=pdca1)wBntNsjlEHl56UrDhmhzq<=DHW09!z$ zzl@X&+{qJ5+ljW>0uPz6+xs0at;MOlf^;~;Fb+--fV>8Wo_~Lo(n9Tv0T?bDOSoNJ zx52C9eN{fW1P{|EJ>P=%R+m&of|0E{I545g9J^c1OMT=J>DwJ?qsB3ECL0g-TnqtL zRB0{Bh>?jRhbl8|yY;S;7iD6+(wplA ze|CVao$P2^q^hXY!ZtWmSSf1V9>}Nz@D8H-5}jHbPvL$8SwWYs`u#>eOWv9 zJG1qt0l&Sx)>{f-t`-#_tNX$i5Y_(t38MNEoq7iRfT(}k2ZsHymw)-m3$h2DAs)|J zevGT$R*;{7s*hKA|8Pu2A|(1_t2&_%Ef)=a_~HYm!f^tpN#;j8bix!tLVpoC*N2P# zU?b08f4iOw$Dox`eT$xp0#ORQ?+gDY>bZW3inJ1*9q;k#_<<9A6{)KvHk0Z2kB#qx{?S)BLI0>yaT}$n1s8UdW7o zA+tXLnL%CZLzlzj0b%qv)LvcBE!-ipqg0q@0Hi?G^B6;g9J{`~$tA#ZGKP*v2AyX@ zu-Z!4Fj59Y$a8Us&j#9FynANVTm`$|4Z&JA+Z=z|kXyTxGjVV5`~i2ArZytI+pKnP zVcttDIoXz|7?K4_7EGRGh`MyhxtEG9+uRP>mY2yvwu{ErMsi-3fjO(>^w9&tyAYY@ zPt7GI5-L9`VILA!o_{D|&weOj-+olWzWGqXJ_OjaPJUd%o)T)d{k(+z<>!h-j!gUF zqauIN_^e2TeOi$S{dGkmH{02M&6|6q4e_zE0@>Mfb};3$cF&iVxu;R4m8aHBuMMK* zS5K{r0#Lbza+4{bnn+K|^OiUEe7-KT+ul;tBEb$iAMZWZv@GPdJ3CP1wo043;&ZdJg;LaVs9!+8`u(EhD}njyDGP zzL}pTQo4nz^iHt`sl@L`txxBEO3gWrO;}aP3AiEo}4YcEZ3+| zyJO#;Emb>5j5exDO`pAZQGB%w!+&zFu&C~ukk2OpU`y#I+#8!WoE3zt; zc=v?b+>Oy%Z^GCKqF$)|Q%Mu3=@c2KH*oDT39oQeFYep{QJv z7(+WoQM?H0rlf$JyjFi1du*GutBK@BJvCrCK^*p3rG**WtJhD24^=ysD=sCCC#VDM&&TR$NB%x7vouD;F{tp?+%eV3w{zxdt{uBd z8ixvknp6)wS;)Io?fudfbaTLady#|S2-&H7&Tkfrlu;PyctI+-=T^%ZVR1^ z;IhboBinByS`iOuX0WTmYA5xYuVcFio~%)=H*sylsa;&MzOm**dN8X@TV|k+uSY1Q zK^t76LcVm{5zK#w&2lKoTxU#g8qT1!;vz;KQS2t)m#JXivAZ37ahn4?cBJ57oy-e&%}@v!9kWX-=*;^^Llo^?lXTY7?FnvY+SG525|`sUC6At zOtX08^J7n6wxnn%C+;L;V1g@)aMg+7Vz|VnL<}Hu1z=_hUtuQtk`Iu#-ElriwA+=P zq|`3Yv#{7py45b6tu<#-fQHLlV8o!1qBmhV=c|B{QmH`^n@J?J3v@asl6D&oD$qc4 ziP%y)M#Bf*8qSmF*jiXl!q4Jne# z=05bkt^t#EIo0InV~pRR0n=lUJ|rReSX8K2Azik(u}%)vVNyXnm2kVvQGt_fC@I|W zN>pJw1jt~*SWnK*5Y0=t;FlwJA9W`#ly;1`N4tL;a^2NCJR&eZc9<2cUOW|_QERjg zC_F{SW7EidIb7B1|Fd`IN{=IJdcKv3k%^ebzR8#ftRzSP1VQYwK!Dg6Vj~u742>s4 zwsa9PCPIcr($(l_bQvOvs;;%Gt4>$<={|>W{s74TBY;d~BAm8Sv*EP`-b~{A6vhf5riY`3CcoXFx|Gb3T7G>m2^* z8$WhHVZOoqWUYty$Q?CESpUpg_imZ&2OC#@jrqx&iv7j`MV3BxKv{KQ2==fYe(Auz zK?g>zd$}B zfqhe6FAPKO<%`qQO9%FqI>18EUY}kO7h93-+KTa~SA^Bz z`5P&icv&7&u*G~M1>5AOTWGwIf^kFtRtjdllY(VWDOmiT6zsZ6!H9;Qjqs}u}* zD+Qz8O2P1l6s$czq+omHpdP)`zQj&^5vzkn706m4b~ADOh%VNWm2Oe*JTJujsm06OHX)@Clqs*&?AnAhz_lYlPZf^CKP7 zNgGRpWG8B5Gov^BJ~KzX+$5DbnfdYdHI0FAbamSmj9=?d8C z!u~WC8+qkY`$+ZX&2FD<#nZ9I=u2?jC_b+2x5WfsI&pJ<(x{Fi=iJpqS>X&OJyFvz z9x%p9&%R4WyYP0_E#E+%0k_v>(MHEU#MFhbgVA-kp*V^tpR<|OqgsFKz?zx&s<+8` z+}ReXq#}d76!h520L4-^zu7|AQH}L(eNwc8l&Hp0OiUuZGBQfh6WJ?4sn1Zsn|O7M z5N+!mIN^rsuGUA{i5jpht!Bz8kg>R+TTR8=YC|5bYXZ7)N3vFTuJa`8V*nQkp9iwK z&o>S&iiQ$^Ggk8i0iu7Bhxh=~VCDYaCAipl^+lFEAh#WLV5mN1_QjfwO~pZ%urgjU z$%34`1Io(Uy~}8N)^&`}EV=xV_DC3g+f~71=PhY_Lo9v*w^8un-bNmi11&|zu-&5~ z3v-*^PH#e^v!}_(+4RyO;c$S!xSUGNU%LQrso20cWu*=7!OMTxmEh3@0H)CP(Cn%W zdW>u!2l*+gVsqT=xRz!%?QBuRn2~-ZI&QP&mM|pzLS7%eMlrTbYP*Hxa}*u>q`?hi z!_XH$7!UcFPZ-e(Hf@sWqIJk3ZzKOA#^V9#oto}U&5kE=efys1RER1VWb z+TvYIn!4e*Ubufyr4byZ+_XmIb#vJUn%O96mn>)m?acgWBYcieJqzRsn;#Fi(~VqP zo1rH=p4wL#Q%*p4umr?QOvO#_xX@KEr=ggpEWg7)HLU z6pSTtT3|kwf)Nak!3ZIIZ^A~v^skc;454uHTYYUI;w^v3f$!V5WCVMs1w#l3{ke=_ zB!2(;y@R4(Qm~(bYM(8Omlo`$1^erRSfA5^K|IU}0*?IUv|#rd{xRJ`en8%HKz*NX zQJ>}ndv;7Os`a8;FRI17sMc?w2Rjd9<)0o)V4k^&zoZB2*PLL*k9x3JV?{Y(ce-Ut zYw9GSDTsft9TA_ZkYS_o$BL#W%oU(PH^U=cPB#qz8N?WHWI6A=wo?O$xEN&-4Q{GaLJI!zc&~3kT&FIWY1xT7&85=J?cT_8 zot-#yM<|<++w18tG1(n`yz3Wx(-f;_`p=Dh~Hw-)Jd{_m(?rb{$&w9>GHW zyiYGSwUiO;9Mh@n%-YaqL^@;1{74B#>~D>?+As=2Ir82WZM<3MSP|Of$tc=Mf92{0 z;tl?x1+%V@)N~W~z7~uIphn(_F(D{{KFN#759>XYZ}cfbCTCO|Fm5a)HA`YEkxc^) zoV9=3T~8`lE4AuXuEb9_-HL71^ZC>dy|7GG#;Fw@5ke)w6mxn8w6G~Qj1Gkpuh;@q z-!(`)5ej;qOVic`!!bO{Y4L0^!US#=fJVa*2VJ2vujkxMpxTBpdUHD@B4j)RI<~_> z-EbzfbRgJ+8i_t8_w+W2l$f7)NP^)qJdA(k)M2^X=5RX*C{Ax}kLVhWN4dahHZl+M z15B-@d|cwAI=Z+D>-q7-bgaHJd{g#sH(mN%J}~CGdE^6g-{k|7P=h`ZTMJ)PC*h)b zoja$X-PqLRfU4jdHT4jG3xFe?Es|88K~JQG?7{-jRXzlTIddoAO2=EOM)wh)^gDll zCatr0UIY3(!kw4_F?Yu9lbpY+Rr(Iy#SC+d0%8ZW?1!FgdIMEdl2cLyg zZwLPgBbO%Wols2qaV7Y4s5L`8O}nIp zwC*5nZXQv_2)$9fo;Cs6@^XjS$8&!m_IRh>J4t^*Q+j>z z%K!&<$w9C@#$jz>_YBCjuE=TU1(?zH-XG#@yB~0kV(H`8>%iW^srQJ?N82~*z}~{C zHvxaS4$LMK56SbDP~VRbzf=eI2s(Jins7hqKToLEjmy3TPOWFSA3v`HgNau@uy3SP zIP`sWVCcOFM2!15Z9T>d2tj`d;&-N0D1t!u@#wEXsSuJTz7($2?3r%eFT3Mr0kV+L6DEM__7by zBrcp0Eyuh9m@bSw@2(trRr;)Du2wSb^^)_`mGYgD+9$pGbnP#$&7G!K+DRrzi>yJCtUTAv&0xtvlZ69;{&Z2e3OUemRUtesVCcs zM}q?e0vn!n_m^_q*!*?ETru`*(8iVv=`aez9WBq9aLtuYONz7sb_+|n;5jV9_$s+f zhj|qt(ffa{ju$QJg40s5X6a?cOoI@%*EI7yj{pNNir1Mc0jS=kHMDAo;?iha?|RFx zT+4^Hv{i7yl10vY2F$v{1Gv#o;N~e1_{fp;lWMRToS5vn!#$V}^C4?n3*`efSpQUm z=}{>}a?u@Gm9$3VcT+hAgCo7N`5DAMM|VT%BU-jb(J zi5{QPQUuzMo#IJSyHCQ(s>)k~oeK=z}f1SmKK%{vlZ6y&P}` zrXCH(izU8T;xA%}@A{aJSR(nAEDGw{M`FpB9}x-E0yEr!x`~ zPU=uK+3aot8k5WDKq_btm+34#P~voNYA~o4JfF1s!a9-wt!?Ku19+VtOYiY|uA3_A z7Sb7sZYYgHQQB_W>OhFD5T_DqpxFgFQH9pb?QA5mz2KuG=I3i%3Om0@th0a3teL>- zqz^OmlBL8Its{pGbRjzr)KwT1nTD)0wwKunw;w?7mhN|VtxDkoe2Dsm1UR3P$ zNjU-uSrnUlWpsJ9wGMvA!L-fMBR`iYTY3z);ir z`;dL6Gg^_J0Tt&m6~Q)-XnlX%$99Jvg|0IZ0VAbLM9epx;>;2CCM_vLZ{b=DQ6l$N z=M^V<{wBLWE?42KDJ}%?D?KHyyG8dy3m`a1&YR1P%#7F`-CY|7S7^({7DPfVaY(%^K-5#iQbn_JwWJ`zTkj$^WG19eBp5W$ zg?yG}Yg1o}``dz6G(^~j(v^?da<^S3%A_(Py)mZj@^TpiuwpD}9_IY2S|U%@{*Z(K zI6we^sc|RDCwDn8P)&cq+_(!P(vQ)~q|1wL?YlMyx015+CckI`dssY_PY)fXqvK7= z)-%+A!ZD9tbt?}$e92ownP!|N%g%}hsO2VrnMTE<9F>?g52$pl8ZI$%fAiT5w;Vq- z`C*XwEY-!+bbJPMgAhQX!=@TqkpPojd4s;_F#s;6z7nDQ#~gp}Z)H*|wffLwKs6|3 zvHrO>s2}R#me!K6%?M>lK0>RD88gP3b)y!6b zs2i=;%&WUF<`|QXqn+IoT18qn^|5qn&AF-}p~cmBYvK2SM(t>wal2NT+WN{dm8F+tg9L26@_*FgwpKsMa42Zqe z_kF$3z~}1V``a2&ksboaul5;OM)Tc2|0Pi3A7S|Tw~i7Y=<0i-L>LxuNF>mYQ6fvR zB0q2!UA|f3)N;miS_c zzlbHi>tugEVu{pOvP2jqp6Td5)Fnb+uSK?RoMfcddRQoia8?dbN9@bXw7r6nK@a5ZU{HUC)SDP8C5+HH+Y{h5$UZ7|mg!u$ zPD_(Wehr%h25G>-waG`$G%a>}WaWpz;_dm$E?m5(<^&P9~g~FsuEZm37s$ z`o^1+YTr{3>?WhKD_+{QHd86(OQfho9cn3bqs zat41LDe;CHGrCB(6Gw47Fis3`OD8}W^$)$>sPgzh%2&)3OaZwu7eGhh+@g4YO9>z8 z68Rr>iJMP!iS?L{U)Cj7t1c1caq)AyL?St%?u|XKy2PN}I#=tsN%Kk-ntDwzcWa7k zzv=g-Nbtili}|3b1et2nEHgvr!7`9WLI;1RalDBOm2NlpjuuxjTb4b#KUqy!Dn>m? zb&K086(Rx@_Yq{VbmO#57-Bi;vVV?z!L^%-P=dV$^p31XY_basV5tFD<Ac9C=6bE zuXi_Rl6lnkD0-ooISkLL8WfThT+t(Qy3BEGu2M{rkGl&^9s?4_Dg)m^@E6-e-B1(= zee$cXf{CDPbjm0Q4tmmNUNw_W*gAiwGC7F{*3_6&XNxR*-r+fwX2`*912v+6G43HM z8;EtW@ZRv34%jp16jQz#JKQnNku2aty}h6lc59)H;P2xJPSgfaT&4tN=*qJ=hJjF8 zhds%hwx*J*Nk*>r7K#_lFb@&JY zL2ZW~Xb5HCW}`b~*bI>;MMQ82p8-K<*~wP|)-vFHMrcOgE!lRQL7*8AJEOOvoK^+# z%m*#H->CLzrn$rxCj`&8Vq!`049NgU@YI71t^xl#bcuTj%0#yQzPdzKRK~?vJxRW( zOMLv|A4!+^M;Jf;t;0l!#;||y2@?sFf?$FZKZ1!EDv|<=JaXTEPnd{6B!PVq`Tf~z zoDqup1uPM#i63n%zKJD1bMpNROT=h|MsS+KUM%rvSR#I}-Os!7Vu^q0HO>?d!3gzY zi7%G;i&^5kKIS8qNPjI$Bz{0Y$`c5aKj5EdiP#UH*v39O%@<01p~Qa|N@QLr@i#EP zfSaK#z6vFNy2M%Xby*P7&4;?gOXgil(#hM0E-@krt?G8U>{m^)DA^{Uwg`A3HGS|F z!%Gv+>J~F};_<0V)cXQ9&hP6IPsh?rp1MRBb$f|K&bRycgVZJ=gO@f;1?D&@-VR4@ z{&hH3mTuwuah632lR1Avg~l@@sQ%pUT4wd3grzMCH@ZZc{8*RhSlU}% z;@(^AbJx9D;+&>DXew5cma7xQRSA#uJWgF)H5trqs0)|oK*=3o1>ftYb3KNTGA-0Y zmpH%GB}(t<5^sIMFmssU@97eAYSkr%vE70CLzg%R7%E{yvRr@onz<$b+JxD7@eHno z-qR&Eo9c}&v2#rT{7{!jz11bcS$&jUC5MMz2ka|)jc@Hx-E#Kk0ZS^%eMyTNQ|7Io z&y;m3V9DEaE_@;~{}~Y2`z7RKSJ$ak@+O(58bez^0k(C=5L4^id=@-qCz(6?j9C#k z&zsSFJCGi^?VEoY*1KsqZ*~@Q@nK~JbvAf#km20=`y*ZRNB`t`r}k!LX<}+;QpqFP znlp#=PCQEor$d!dHNJ&~i`m)Z#!y&#@T!WHNS9l^D-Td=_8dupYERQ~#JYPs9}$eN|`PxtZ0#NNVNa@kEzbIP&?==5UC4z>s1f6nc;f{TAm+lZm&UAaOgLXUL43;-7^ zs^QWp{8rA-Lo`96cirL{rB|_=VYhP;M+?2rqR6FK3Ow3I6z#aslEPrOb(nMyr}0W$ zYLf4UK-I#F3Jo+Bfb@)QUDNIoXYk}Q z;$&Div^#(42iVrpnFP1hfz1&^SxY&B4}*x@1jY`)Lm?g8SvsC1xYdE$y2%vngaktg zqS0VbW@((d?avlrme-VaLqaz-gl1$u6(gUq)=r8OmE>wun_g{hsALHC5SGn-z#q)u z+14o>WgAZyg`w4noi(%W5+@5CoYuzSyx1l)zcH7$N1m75E%y(eYyeqZ9qvcC#|f;*s3#Tp@$~wC{L_E^-_Kj| zTc7@)bFvTi_3yi@A3R2g?WMc4x69xEBl^SN{Y9?edlkU{{HOo>KmPOo`(OX<|NQHJ z|F{40AOG~9{`p=cfBNTt`L}=h*AFght+jt2KUfGxp#lc~2Dt+s_x(QTzkjJntIH!( z8T9y%$BsTc#_ayk*Xspm!Q0DyjFi`7zrPCgVRP{DjU^EtAu!=LXtDmrZY;!+xcE%X z`n$Zb4;(Pu+IJGeX`F!I*L>CI=Bw_-fI|4k z#qhl*tp4T=qrPf(YPB}Q9<$cJa-Z_Wj^g~>`TU^c!xsB<-+a95#l7FG~s{0#5C(4uph9GJhSlka&%C{Glj>S$uNXir^()* z4tw^=uj#PYbl7V;jCoCm{RY!v0(m9R_T!imf0Jw08TIfh%L_s(9IcbH8ly|QO}%FP z9gvAMRSrbqt=@50rMwae`J4{R5CCwa2~&1$mmI16Sun|PHjA;^*F^~1^ud3^Dcf4- zhE8s#!1>IJx=E)w6YX#c%&ZO-3b;P15hvV>dn6KAwBa<|A5u;p^`th*K-s6JE1~jU zZhFY+ZTGg8a&{sJFDhYQ**Z(CIMRjh!Obbprztvh+bqX*R^Ll)+B#ySU8!@w^9;qi z_t=i2x=l1AJZMT*GMDl?19*QTVm!r`?zXL+In4&i<&@0vR%)qsiaKi*|?%`yLM2-@ZR>_jfLN`|`_#Hdm4uHkCaC9*# zS%-&CJ#-qGY`iJDz*MSI!e+M@?gQFD?|g~$f}|>@H8HAV?Po@8EslS%V5`QHYleCX zKAy97*c6GZ9y>!$Q*sU|62Y$}a#ftuP%Ec|f;=I=Hew+_ZG+dH*zcbKOBG8^w1NiD zMO*4XUKP+KO*B<1D!R9k>LM1kkvLVOlxpVA`_q=|4Z+^_1OOYBukW2^gDnlaQ=GN= z!gI#7dh~XMva26!aBzRIcgb{6V?dD;r*u+f*k3NkUab*wvjfMRt&g0M$OUi25lTZ9 zIO|547FWewld&9kIzW1{gJ>3-LOMxk2I)JS8EUC06t`24pVc;ShJ~3%k45jJk;_tQ za~36b!Gelmp}yZW`F(jvhOG=awFmGmH=Q@9C17mZ6#U06oY{)j< zobQ)b8uvy#l*gee0+PHO`l>~S2;vOw?aa$hX7^RtawldVDVTr4Nek-RM`GV+z~lgk zAaj|L5IgN%U<1o$aBRdQm!U%Bjh2rLp3U{y>=M2MgGHfENV(aT2s)n6LBAolXm(O| z)UIaM%+r>Mp_YGe!+>fI&oz(NLfXQKxCaD9Ly+D7XYWgv71x$5eJ2kpjP zdo6cgQ$ci_el)tk9{G8{Qh?p4Y&a2;q6pZO>HbXSy6S(HVABLkF@d6;UDt>&#is72 zG31(cvFH7rSj{!H*(c#diE3oTXV0G?5KGFkiO%FmkLy0K@Ia$c9^$z%<27?w`hI{b zQ@5NI(XS-vKp+BP`xZNt1~oWCO43nNF(H(Sjt#KlTvDKFVC)C}@FU7+nUwF;d;gl6 z*2CcU>b-w6Us2O~)gY@A5dtT7H^2H`HLb;cz0#3nki6W{9(0%T1vRbdH8rh=!7u8) zud%P`y??)g*7s0ef8{gjlS=zFsWjpM=%5fb_lm3t(FeP`hwPSFr@ zU(kPd1`bAP82KJ1l)&MI3H?TS(%Xd~2=SysKc_;!G!Z|lcn^Lt{t5N@dmrq^S3dYc zMSem)K8TOSsujhzC2+gTrDX6En|^TjmJ93Dp8POcUWV~66%#%T-rs#ckiNJ5V&HY# zidu`V%xjWNpSdWN09}+~^IonvZVot?-K1a&aBv3=WvAxdPR{0=vbrGg6 z4V3P}D3Nt#%XnIsjF;Kx%072ki<0=Elf8Z{IKHXOjFZ;Xb-gQ^ojy?0JYQK)qb7YA zF07rDoo8xt*S44OVNmRZ2VedMO6-O8iklVa;xjn58fle19CRBN^_TC=q z&sLA&c_$(h5Kyy|UckSg)08`=k?cjj6fJ((X2)Yd!s-iRI>&&UO*0zNJR;nuU)>~S9h3es)kC~Rh$GuaQ z;YmwatnkR7R$G@xj64CWD#K3+-9lH5unxMDo7B-FL`7{lwGEbzTv%x9 z1!8(Qr3zJH>>E}Ivvvo~uqJ=6;yKC9lajFF!8`BxFad|#`F0NT&^V5CXhlsqY|r2h zQ9}ygmaVs{HcEo(8Nbe4hPNDe7x(0b%EQnSisoRREi4E^Udx-1YGM|@O|Q%Xhap-s zMZifyG*9`d@pDL{s)xZ#Ak&c!gWV>ItQ0ENCZ5?biW;uY30G9{*0Fz)wt2oSDO>3_ zhBt15fI^WzIJPBxWzK0a(EIcjfP`fX2}9fKWeQ*+?u~w0dDS5!mGy*eNbVS=4l7~N zy6~IB%G>(z*(H}u1k!Q)Fi3$hsn~>wqw3U`GmG!O<`db7 zn57vt?|*%pUcmaU7a)H;>hcEJ$0e+D5BB9~p0@3tPjps_4iicp6yfIBtFXH=4HDcn zHqKUKEc|t$TooFq84nmZhssL!WR3EEmNUy8jm4);2S+ps#S-Q>0YK+@eMFlxdpDGPdtm%J@TmwXRkkXK;i!3G% z?q4zhjS!GEKpCctLjvjXdIZ3V0Q;pR76Hf*x#}|!RrX$8)u88|L>M$HOD)|nom1k1 zZp5}zxPmAu!H#jHv%=G1VuO-}kv(t)I3fuilCKL9`9@j+_a};n!MD;1U>J5W_zhYC zuX^;44PxA#+g^VRev?+f>+A2MYqMHPV!yzezpfQ0{ z#qFX0@h|lKzdj@=7vSrAdA8T#NsPp3gcH~&Jo#6ICrJu=QlaEk@;i+i9fg#GwX_szLFw@`Es`S0HSQgUa!%uAZi48MPZ1~4x!#s&`lNuzq*F@?& zvEk#k)_YFRU9)~>?qQel{hv4#)VGd!c=MJ$Dt)}K^;waS0Sl=hvDA=!1a-cWD_%>u}9m8Nn& zeqweGI@^u>FzDpgHRO*PMfEMa4-YInVi`fB*Tbq8NMe^%p{yREm8Ar`V7S(yehx-n zJGzY_!kKtfXCfbB?37~O0+c3@C|~&2k+dAAt!`J53D3{UM(53gt(KV0?-On30`}}S zWl?`xelAW|7Otr)WfbSzJORk|fenuzV8gfFT*jFILa8(HsdlK6UceA-j9kasPE?Kg zDLF}@8#$|4M~fp)X)pO!$Q}l({%k4CajwKY+>n-TmID*`ZHR0Q zDm-+Z;8OdjnFgpoT(gTvj+S_;$`Dbrb2xwG(mGXRt;Jbkzt0vtN#mTLze+n^*Md^y zp-Wxws}>kbJ;+#Jlcy|atve0(hqqlz;j59Ri91@6(EfE~0z*Rv+TOIWl+vkUzvGyd{_iKM?aJF=G zP+87WiIIi|=bE0GHXCSl%UwZFj{P;T%yM?P`J1fpeQ6T}7np|+Ykp&F_%<279Xk5sD+O zMKV)kiw2$O`em)x+q5%wWK(|`m$f}i?Z`t8XD6(XTpPq5x&v2mQMv>v$e=(~zC*FE zSF$kQQN*$UrN2|j@;yZ?FUafT`eG%^rv?FlY18xSjs?f}?r0wtv3zLoibm;W5wT7%44iZqMg@9hoIW|V?&Yvd;Zn{gZ>-nRw%PO$lXTcB?Mo9_TSO+m>0yPjzC zXK3?n8t}Wne4@=ywE2@@iVGYB;SY_SXE6OzFlBaJWdVB!Vd^4 zho^ZP`f&A!bd?v)UC`ZR2Jzpy#d|$O_JwYa|a49PAqMa6LAiloQ(E zRzmG>Wkt0l$t2v(^E zYwJi(cTm+ap^%Rq&gun)hsN3{`2Dq&k2;Ly8=qu>$ybtPVN0?t^ku~6p0>S00-R>o zVYSf(6W7^dbySBm~LeR7fKMM6Tpu%xWodeWBn`0E|Le?eh)#J zJEmZ1t!ojM+T3<+CXlf!ZYbb+163H&k!1_CRC_4G>pcP4dzXNW0@=p2^qIsGR(?@J zmIgaP&*tU!xYHaqrUdbUzl(HU2E$_k3NE&bW@3VXLzjOMB0gA3R+W2L-8SI>rR&s> zwS%qRZbeoX*$5#g!$>Hlz{WQ>pS7Ru#=_xjL*Wt!*+y|@n5=EL7poswOfF9cU;>bh z0Q6O}n^kQFFR>8yv9*GBivq0x-F)z=7}kSWHPU5;YJF@+mpZj4@z@0?ZE`|)=Wc>J#0*|ng_5JUG0Hm#PnFH!uIX;0r!7JmegTmrN~u+w0t5hV7;Bdfae5> za0#$5u!kU0{W~afp}NR5FySi+$;}Mo=OrO@5ej(^@Vy4=ZC9Z7&>X%eB(EpF+hxH; zfp#Z5)9PN4?+MAtfk3AZ5|Wo7g=l)f&YG|L#~?$GrUhfSy|q0_*2!GUyQVJ-%RQ0T zBe;Ju3CX{~xG!1B-;j{}s&{|I;F6X6jS0!0t-sF=-mgu2N8!IY zAsN1tDesK@SAfjVbMX&77rzn4yjcHi?s$xc*t-huGg?}K(hFP5H0ug#<}7!iqj|t6A<}qW$|jV_(!t<(?1fu zf2vS_YoC9TVObI;eteX9C1!u>t)KAouiYEteT?}8enx*tt~2q)Txayrt^Xqo`W{c8 z81xf^eqzwf6NCQo7&NQi#%_3&O@DvCK()!4XH`f=^ODy~=C3f7$~OsA>u5Na=_K01 z<$$!rl|7lObVRe`x+xn1KxJSNSFY1f1**N+phqN5YpFRqgy0EDxe7eU*gFfLOw z?N5obz8Cf9$2utm#V=0o)?vbj!Rpk7nd$SF4+X00h|U9Cjk#RhVzh15(yD(+i;E5H zHu!!nTD%F{{wo62Htu`JXClJ3qRynP5%)4wZFtzh96@m)sQ^4%2+GL@Pf)~Trg7!B*73;MLvbjGpl6=Ha& zx+CF-!P$1tX-+hFf!FTAq+)+kHWOz!C{5^RRK2}!#n=sv7&YfXC(Jh7ocr2i(fnu@ zvR8%Mh~4OnA=Z+oEMs^TwXLs(J8BI{-CU>#GazA7j<>^Ym_4{TcPxlom3Z207}cfF zw!)5+jCQ3xlDEg7-Eng)$IIT7U(m^|fLv#oZb|}4bHisKDKDMfg@k`StlINPgbNw& z_l^(lH^~sYLROQp3Rtu$7sh(UD?ZyCOA8-u9a$FkiSJg$+U!ANKE|;p4-Qw<8?9v2 zT`Y~B&|mS?JR(QTO@lp=SCTQT>?}o_4c3L_#^KXVfMwStvZN*1Ii{6smCSm)3G5lw zoKne(Nka{cVA@>+i~xT#4x0nzYQ$t5fHP~H`zS$f4@F9M&1?OV>%G8dsU_MkozT4? zJRz|zo%^dufR<8Tp)c;$TL9~?SeGmU)&F24jFoh8l|oPgyNZ|`3smkF78(T?A0=Ba}$6D-nB=8mCt|_NiI4{ zCtN+K4RBVHwDEtAdq*Yxsn?InDIFDOZ~A#Uh>mrfV$7KS*#xSEi$s#_8w*sc1ehZH zCrS|?Uk`)7oIv%jaI*ZXCkYcIg}o)p2-B2Ev-fnPk5NV(V-W=Yg_4B7A7sRF2tr>( zE58$DMA7>PzYS!h?sdELV}73)<7XJ-CzJ5R7=H?kk$``1J^@GWr2|il@rg11LCw#1 z5#|$&5qt9#*AMYU1X(g(zYH+mL+KM>d;*M5fRT9ujDG^axKC?$W~$M>NYZwnwImxayRyKxh?6X}l?A>cxk!5|0_7kb`|VU2DZGZ9Q@3g{zo za(6YbFB~hR)FIM+>UP7bIE?GvM!)!p(L4+aAzJyx?4F4xI)$D*Le8dNLt!Rc5tiSR zTrcLPs)bO{EN80Esvb;d+NIJKc9OWzDHl4BEO39>2;*T{HasHqrK9BT-i$GGN|V4n z@5VE#oK@Q|F_lM>5|(La4h=chQ<_nRDgznOpkv3tI|?vk2H~stFfQIEU6<>|97>Sb z0Bs5}kRQPr&D)=g?mfQln@F+6Hp z2AmTmrDiUP!sgZnj!p`x(8Y5ri8NM@jZtXRuX=gaas+&J4ML&p*-<&h=XNO49_k6r z(Gow9tHZ^nx9wOSBxTPo4J1_BFjLxakz0S{RMl;`LhZml9PO~l3$EB3>$952>pet9 z*qG~#n=#(`cnFDWY+=!rB-7+~JCPXyo^t}H_RnI|BHDmuvM!LAoG;FyMM1kER-5@e%R)*|`#OL1 z@F1aQNx!11b@D*rfJy48O1LLepnY}G$zWmw5=+$Kg7e;%UBQBfRoX4iq1vcAcwC?P zExJ$Xc+BT5c*k14)Is4WD`Fl#K%Le53icNqXYq%hbWoU}djzwDTkxV1)UgniclbQd zxOG`aOiFmUu=e_^FyCevhUK>F=1W7bJ|x}4d* zGSPEvq+^#D`N@W|%;q%EAIOR@rmna>)hX!J8l|~%Y$|bui?F2OdiH?P5OQr|Ypo#{ z)$Q9-h4kHyiuZ~Dj3`?J>)lpwtf5+8tqEQM^sylj7V8HoQ^y7jJD4Pg4A_4zbjILL z0A2*g@wS737}Fh%odM>`uTfk$P1OWPI5TBBpRYPhvAMjP%7IXW)W-Ndck`o6LF_>T zVDH^_7qsmSl3U+BRV+4?qV}sbz)#E#oTiYOatOex$IJx!R zwHVxNzAL$P9=?>^`X>R5zrug9@`q-K5+aL2ICuZ`&kWJW&wMi>ISdwIT14sR(7yT5 z5qxF$8&AK?GPJNDTi>ua#s(Sim6ces6EcKK~Hn8K-|C>Z^u7Bc5r5 zgdaTOy( zY}>YN+qN^YolMv zL7$#Z9Szru6tAMfRJ(3~;j;9xf8C;T)9a`f`*&5g9(5<1T;JOA{c;N4GOcJ2t75`x z@)5ij`wQ2p`J*&#%pmhWnsYp%YUqK|DVc7eY`6r9ItaB>MO}32TUDfFQjqPzSlWX~ zA&Q{ojg@h}+D?bRSw4P<2GlSk3kRu~y>yzpBPES^x^!j@7%0FJrmKRttG3G$y47nD zcDc@`w^<%G7X6PiP`%M3PJK+iqGAcD0bkSzdC#3~x=L`q+K3Otv#HS`LrFjB-|Cxj zX7#n&6cnW z3DUvcW`5Vu4o3>e^7tpUxeoQ-E;|8NwR8C zsK~VT*_=CZDhCzys_}&pR+Gcz;Z<^n*y9&cDQKC{6HJjQj?KdnDlpgB^OsBCXi$<0 z$R@UzVmJAC_2QH+b2henH5I$FHN8;O=WLplQ#7z}JNf|at#rp2#N)TeMPUM#R#idDj2WU?8g*cU>$o$TX z!H~}*MvGaQjs)g%Yb*OhD;D<8oW+1xZ1A`C!lAD1VjKd(W<-+O?ooNr^qVWzer~bdp}d~d{Q;j7x9Ys#=;5C5 z7y_z*tEFa${A9P65V?FPaUWhqY>C?}Ler_sfEj9!Xu}M*PX*(A-J#O#+glK)zJRaC za&{BsW%gIFBvL#~Kl*RKdUjq?pV0Cf%9wT`8xK&nTRqIhfVYxiIu~nm?QFEZ*}skL zw`JQE2Yzb;(K$V4B=qMetNj>3Xl#2*KLw%3n7h$hxYjJuhL2`d5=B%NyAQlvL_p@Z zM!ng^xQJEFNh}-U;8|<&#t5mi*^NA66Y*#!W3QL)?~H zZZmMT$9|rY!^9@d7Q~c_l^zQsJ6Ps3f6*Ef1`CR$oZ8TJIzvD!@b}kFlO2Y44x~Vt z3^sDuDaS9c6B-?zb;GkHp+!|4UaFehKw z7oysno*hX02%BB6SxpLb&@}0+20WSinB;AMno+#qa4`o&@29T&}1uKL$E8zAN?i zCRwjRf;2u2=&RDC{{MxpI+r>QX5u-Wd?|t14#`cMO-JI)X1dKgUbS4R9m%_YKHvK_ zo19MaX#qGCXJe^14NSPq_0zxoFKe+VZ^Ws6KXjb^)H86YtNs9IKH41o{`n=|U3Ixq zimxmNI{dW!(+m664$OPObY6Wo=LPH|i<7lpghSEfzo14OjM~<7wIW1H;Zf1cJG6bB zkRPlnhOax&6JcS>R%B~TH^#Qh=?)}E=jU-!%UEXHh}>rcE;Vz^lT1gR36eZ*7O&8j z*NDuWm-^OLh_!*7$!+UkQ4xjFd4<8FfZgx==z-2`#Xx;eWQo>zzBM6Ioo^645RxZ%vnDFx6L^tAf~YpuD)jSC$3japBZJopH{OB z&TOkzF1?Z8I-JuRb6VChHzgDkdDDA10+wezuE8xmV#wt`aeCV^Q(q{rNIW%=X8TUf zMpZP8>1U5awvL0I_7-Yx4WjT=6%Ob-ds9)ATfNOt4fOhF2OkS89)#IUS}-NFLhmu< z*gSDOK$9`j`u`12{eRJ^sITeGjPthG>a!QEZ~g&9v_Ccp_#+1XUvybn+`m_}av1n7 z+1_kQP_4o2JR=l6P_CS?o=oIP*4iu87TVrvfT8aat&54TP1QrjtNv&F=GDhUl@$kM z;NY_JN6mJm;5dp`xQ8`yGq!M2 z-@`m2oPz8isRV(hlX!h?%UdyL;s%8}3lJAk)AIK%4Bm4+YaI%DF{FlDR9OrIL%Fw`i&rqlD>k?HfKC={Nt!h7!$OyxSRk@DL)*?C48z`me@>5~)oh^T zFU_C~iV{k>iDxeGI|M!9)+5@xDnAJoSTh>o)8(dh=Ef2+Q2(o$^T!XgG;v-pbKGlD zBF+t?4}Xe|Ub?obzg4z6#cMl6v5udN+EGQ6hEVi;__k>}u)BEZqEz4=_qutZ#oy~= zq<`ze$GF-hi#p@m0ZiH==z{#@O8)>Hi#G2b}n`XY>3^%xuOX$b@Vd3eqA zXRloO*o8DOQY<@zwT*-S+0c~rmi{Z8OL*Y8l$q@g^WB#K;;J#j=9*X{sV`OP;(ADuVyYhR|9ug~#r z!Kv5d7AL=nVIDUEO`q=;W7T?9X5mFCsD5rsQ&1F ze8r;G$bM$z1M`(p$ETDsZF*>~#I5*mruW1uj2rOVpbCulDf3hEA1}+)#sjyK48{XV z-l*eSK{{BEMjG++Av!;dsZ!U@l66YBSc=(^WA_G0YY|O{4OmUjeIfuqzh$cHziJoa zS_IRJmE0n$7e4)gA1X&wsMYIPcAI!+(9Ea-r*7CPoR+>WE{nVuwvqhFJ1Uo)EQY)j z{tjy8EjJ+v^h$4=RPOge+e7fH{a{W-)HRGPh{UI(oQ(~qf#u6#tSC1oEMgTK-0c!e zF@=MB6}MA^oe9n(f+avBp}b$Dc%7CFf`XAQbyS@1ao>;79ldIGnPuF(C-}tj|MsMt zQE$@hlJBb(oY+y02E-StoN#}vy6Jk)HBs3#xfuFbX7Db>GMVwsDmg#;*)3olU%MGz zLh+ZSP^!1VL;tYcNRnnJz~k>mDkXOgS*s8hQurKxifV zGuBt9Q8;u+ci?-mr{*SrivHk|JrmhAwH$G-u(@6Ai}rBIC*R4|7eBm+xGCQ=NQk=g z7L9-9*|S;*`wPz^y63{6kIM*GWaG(wAu`^=GZfS}t?kxEm&;ZTKVO|R-jJPXGy1s3 zw>=%}^4q-8`1KR;%<)=xq>5W~=hw(SazY(7=aFOgANr3Q-u3QLa~*Zoq2SaZBg<8{ zDh9mIswMP%#RaZTh-XrxKN$bdXi5x(g#*akYur*;Sn*>>dN5>Ggg0d#Ic^@+f-QEh z7!$QkTgripStWxV_~oopX>+lcR0WHpyEZJHon8m1jH3pMpNJhOuvL)+;t0pxk`tIL*l{^l{cSj#f_DV7(!V%=`zW zeI;NR{f-b5BPxw_l2MFJb(Mp{jmhF)GHF% zsYkp7$)j58e$MHM=Dv>X%4%?P9?FGXbsr8%6D&!@ z65K9qW;zUcgB;j04kTKf@u^9eG!8;Az4c&;WkXO&UFfE2#9EUf8pvD;itm zN7Df`+n0ziJDgzjEwt(ahT$E8HycaAJ`pg6ZwuJ1=1@DD;8~at!E)(7njmsxn{y;o z2!)O!JL3!!W#Ns{0K))5*DLmP5tZHIXTZ0AnUKu+l{DOsa=F{L<_iYj>)Wh52tauh z_Dt=6bXO!|?zlbs@-IUMR&#_#Yrc~HU5l$kY(FC}ltNM!5Rc@^5Qcq<03xTG6Mq2v zHfFUaG7o08;SQONCu)xg#H@)K-vmCvH#+E_vFD5tqcMGlTt^1H!r)qBClC1qfI*9Y zWG6kVt|baQViUf;JA0ax8q*EUjfR1%G#dYLwsMTP^m6btiZei{Q9Bt=t6$?oQJ|9c z{Xw!{;^x+_?xg%1HQW2ovJ7PI5xt!ixou(a@vm^csOJwn5grJz?h5u1T;9<~&-;h$ z*-C`O6-})spN7C`y?Y++ zEG&cbra*eGAqO6I<>~O7zOkc^P4+AWbF5A5ZX??7*4220pREhNcqf$GGzlxY z2WY?CdI<#nV}u(zs`z8~Plc_#oakSj`@1IM$s~++H501!5Z|4K$=huiC6Hnej8d_D z$0-^;4uhM37#2Kq1xW$kAufvGyI(+1gJ!Kz}ufwwDUzrr@n3I?xFG_rrfoldZ)z4v8W@;b-C8! z7v)-Ylu!4D#e2D4NQ_oD{Hn`0=m>|a!pWjjK-LFmR{I!%##A?5w-+yc`%Wv!EGOG_ zzbAC@vpTpav3dsC!&Ol4WFcV(1Gykrw1vA(mAp{zMo_t#W9A!N0d9=CMojzOeY>s*?fvz4xX1#RPW z^)<+Q{Q3J4C_;&get!VQ!t`n`NRRRQYo32Ux5~xC=PN3*L-Vh4O9sCehI?vqE~u;m zICli4zCkE~1`mgc4uBH6;m$&O9*JC!XY5hBMg|dyj-xsI4szQQd^I9~0N;^1Q=Ce` zs>UO(4~_;cFu_f-x+6$?y$mblbsRS;Vu1GK8}B@=9nd0+0f8R8L~Q?RUe8B;?0ux( zmiP0mb{m1>S6_^Wu0`jqf9_gY&7Ns3wIhEq`o_=P_ap~p6kvksD62@VM=PS~9(N(L zzhkDz8`M56b0625&(DO6-$YM^J56)X2icR)aMB!m-8vXEVS9PBkYdnu5Dwp8q*z=^ zpAprvw~~r>YEJ756!9ZnN)Y^0Q0Xd<-P;)alThhu!b)Lt3-0;w^uwhGI?``#-yiXr zz0_;dlP~VG0mwd)PNV9ux$U|f&vWr1Cf>{T9zXfuKU(}cQOX8xeNu3u^S87xMx4n+ z)z_)l(Zoz}4kMim_#SYg0~v4eyk znRfG-7X5#9T_1GU@1GEJ|53iCe4)Rgllq+ z;h}MAzK56-tHoDOodj!H1{~#Ck>aoYnz3h8R>^*k(U@Jv@RDywR5@qdj=A+-|742|@PQ(zu3L6%{+sR$ zr++A0+aSTelQdi8W~HB^n-j-%gkqQz5tEtu%ousJAnR$GfMCSa?zT2Q@L?)n`CuhN zay6A)Pm2hqaGO(3rJibvGhD$`F?AVW(pS)K2!N2?OiKq<=HAcs%Ohn=IY0zrY~;!r z1vQ*@Y9#Yi_}<%>rXj+}_V!gctEMbh3-}nRfi<`XD&e?Ng#eFNEZ#$gR{3S3oAkn<-sVTvwx|YhPP&mT7rz}ip zCu~(GaV5eo1N=4~mrS=Ehy3o3%d!UuCyDUE=?Dgehx$ZQ<1*T{)%@d{kB}s303G(H zK*_woJZ-sm2{oE9p`VJv^tA6XiZH#a6YT%kxBU_Kd$RsB`uMjT)7-?q z=pQr=%Rgqc>}j_U$3?23bVzt4JOVdGh>bj#a|qOJWEm)f6U0NBKFzew3i zfcf~7>73)!O^W)e&bhM&>SE3l6)#~OaMw7Le`XLMuJ*Gd97F+-RU6sZR6`d6571I8 z6SO#=5FWs}pZ2+b?|RI~8Hx;ju7fuGN)y)n$K$;<-$hA6<(!1-o%jlYQiMP%f-@+v zxz;>^CoTIcyi5KckD{q@DPUK8Y4s`1_8g*64RW|NXPVx(jft#|@$tDN6!D#f6O57~ z7NEs_DyaSGH5u{Ud`KR3mMR&O4aQ#vCK9)UmvmE72OPw9-wqioJldr*gePFg_PtAo zr#?TiG=%uOUZwYY?0odLCH*4747Dn%n zZ+H5e(#-*=0{ilX58uJJphR2v`X%h}7m2NuyU7@YN*VqapF zbo_sH(*xWrqI*|CtNmk`Z(26A;Dp{H=#a-!HC@Hm{}ecrUN0CdR>nXsT8>`2!>8KL zk0~I+N@Ik8gLuko0tt^=jPS2W@b49edApS%Yg8`zAT_%TUd2fpRO%&0eMP&!=|Nz* z$`a!lQIG`B2Boob|0XHSKGNWW$+oP}rY@qaF3asp%`Xp15l+USGPxs}{&c}aclKfd z9gq9fNH(@Fb*p>nZ=;Xe;P0VqK6DpTj^E+oz5wO+lXW*FvQ#q zWX+3z)nrI@4cHOtBYsq;9eHZTz@}c6{cj@9lfQ#q>(DG_6O_LG+t9E%Q+KRWO;4k) z^Jl4TdeEeIQ1by*P9--2(|ANLCGUL4h4ECDVQa}zTO^t~gVj}iKNGQz?5bNuuLX=$ zpd$T1s|p9^Xsm1BUv~6zp-BFaUzwE2O@^cLiF1k+=D=uC!)AfIAitLA+T|!k(SKlp zmcG0@UF2M&RqV2LOm@8(>Oq?SwJ^YCvZ83h#R^ zHS9()#}hkcH(S-R!Oaj1tHy$y&7*lOmF{!NhsJ?#8^jd5XY!zYgMT@3FVPOpdgl2#D}MQ6-UwBYUsZ!^S)sn zr?>1T?5CV!fl<-+5eYE*kcaM|5E2t{>N1$?)jX2iURSa|H(lMwH{N#2GR5E)<94ze z;_QG6a#OW;#?sBZHD+!9SG?*sglBopysq%GYA zsLQSlz=+IILD;?ZiS-5Mb=0uSN&KclZLm4sGQgll<7P{20S4o>$-~qd3ytSe75bdc8o@j6yL_V$6PcedG1Z^|9Y+{@9*J} zBYVOhNJu-rb(lSX-Vjl_;+^m^wV_{Zi&y->sHvGHJ|!0Z@!db*QjuK?$O@^vd3`P) zYWtl&Bq@9r+^j2SO;9Jvp3<{*kM8sT-dD~X&1=E`1b=5A+&A0vLv6-(@dZ%1 z4<*;Tgk8)WJkolDJOBsZ*Sa6BzJ#HYwQAgq`)i1yB(PuZAuU{n;@)ys`J ziEaOeq(~A&*mvDgU(;u%1mXzOiV4p3oj%5fo(kQ}^{Q(O zNcbm6l`cmmR$93pTaU1`A^$}mr>fJ{Co-noh$Q0^+<>?gH4&=*ULV@@Ezy4}-S%uf z?%hou{&_~ou`Vwu2X?7A5%a3|xyB2^tGhIqC~26H;9iL>8TM~5ooAD%*c`}45Fi{! zYbS{C-}vX51dC%n@6D=KWC>P15`c}tLS`!uOi0- zy}9#j+o6$oPG$dH#E0-4REx6mG?h%8*=&_?=}Qj!+{+Q zm=XJN&%b=`0)p2J6IJgs?LN8nk~q!C{3qrUmzB-uHy&8IXOgtY1V#zR+XC=&jU9u2 zF21AdUWg`d(FmpscA@AtnE!%U&&fnGj`IPkQTE?q!&GIVHEkKm7f;Qj)#cU@yyq!hMUuqsJ=3@OTLIC}FN5J& zw@TN9@|!3z4O!<`;?UunW~F(10$u-c(;f?Vl@W79dt*7i9Q!~ml)Q0EzIxstNw)7y zcW)ukz~%J%ZtTfZ)L$|Simu>;)=$2_G0oDI`Sa=-pw*A zn+4%6FUItcYkxWwLwm3jFC;Y+D_jS3imrcB$`$cMf8FMxL=OpBIBuz^zCiOxey-HF zxP)vljVBN?_**G4AM*#$Rtc-i5p1_fL-<7CH^Ip zX0DqQ7XJaLuh!F_HRn3DM;y>%x2zk)DtZ20x;2!X#_Bp9#a!6YR2r8TYU{w#efLN|i47auTZzUb{8$ zt%Kk`;467^Wg(b~B=XF$yFja!ZuRRvs&w#g>4_DwH%q)P*Sr_+qedpzlw)L01BtBO z1r(>OHP^)*V)A49Cq?F*r-p6>TG6EM6cTgr80J23I}zRav?lN3AmK&z!F(yT6KoBZ zUz{Z#DRZ}8&rnLvKS(p~Oz&qreuUQNG(u2%@a8^wtSt9Zm?R?}t;1yM!J(WOEj;s* zOYG*rpapsDT42Cj)BG2CrF{R9BH)&;4m|4fulUx!4MbThzW#GqVhNCrl|nj zg0G+)D@Zn}q&?X>7KnV?ko(5;M;8Y}t~v+aIH!B<@%K2kP0K>~mI8slLxn$-&O3_iL@w%@!xPGeoF0S)3+i78rB zItDl{aLZq=dsJ`?woCLTQk`O{^m~-tKiSnTy1-Oao#z*>x&FDX>BQ|a-A-xloh_r) zlV3mUQoB)1QaBC(nD%D>J=^9uOdn#R2QpnLM&_}ucSUqA+Ilw8!l z#4n%qIiI^fm%2ZI>F&>qny8H^9V+cpzms=zB=&;QLU4DR6oC`AIU`Q zyvgc5AL-41xsqkEx36a8;uwA)05d{i%@TIA7huR`l-ozokCWl`ShyUUpd45<1**u zS)iiG*E64q^G574lxyCB9l1ovMWfKV%R(jVkft@P=|-5+*&Mpzs1hT(q#=$e$xyP= z$4W|~RxCn9>*Te-P=Fy!)%*bv$BR?H`RF*UGXP4h0pqn}4sa>{qfS$V+r3J4jpK`G zc`A)5>t@x8#^QL=Bz|?gT~h3Kiln-^fO*5;%DlgVmkl>u<<|H< z<^qD6{^}@(PMBjFR4=vv+B1z(;c|{?vzMwF|8B8c#MxF2KD?8PX4q(p_f$J%w|hpx zsnszzY+2LQQcH`NE2F!hgdUuZVU0WGa?RLS)q-?@do1Q>tSu>O6$ZqS!hMVQMZZEy|W5>F91MC&@B03)vnG`F}^+{=%c6yukf?lk&2%J ztgL4RQ-Eo`qq}(wvL&>SiI>0sh2mO7G5(-US&zAH>cCqg)P}R=^4`&9yJ}dUrLc?o zPBEvvJs{&;HaE~!l_`P?hlEm$yFkZMh-2~7H z!0hnINoUkL^L2J~r;&VBKz%`2Sv_aCFp|Y^5Y1@7XRz$E@DU{@U$Nm=qYU~3=6Uvs zz*m$B3t2y?KOs_f;pOEA)(Ig?PD;)&z^}0i8blxxbPAE18aiX0STm7HhUGyFMyP!A zlOibwVwkbZAmmX4t*FT(v>kbAmkogO{IzpBWdwWwtI!YW*Z2f4)v$3e3ir3XqGvry z8O-h1v+2R8;m@f4LBg_qR!FtyT1MZR;JgzZOYL`238S%uZNc98VLfV*<_N{J2E^#L zx*~NcLg?1vb63|Bg-zlYNwy`J8~7Kw@J_PaIFj6G%K>I;mKJgyoFBU$plJX?_m&(0 z+&w1K+OJZ&!@6OJth$w8LL;KlApD*sS&bO;BPJO&b_HQf1|fzYjDN&UH!P4;WvCMH zNyDejhzTGqn`&r8Z_EhCMC+;>pe*z&4tu7Ld-h|CH1q_q@^_p))j{uc}b| z?@xR)C@g9W*Pj%bEVU{c+6kbb4BM&MXt?~bvoPF#49UEJ5UiW@7{0r$-IN3eZ>V1V zKuWN7KIg@ou-iP#5A&VqYJbT-`6@+p>oVs()8Y0bm~Ucbanx7HAXiE1)$D&qYl5%5 zsV(|lTRD7$OpI0}u6(KUjQiCg9&y+9E4GI>M+G0fulALd3Z9_>A~vAh63$8`SDfS$ z5$cQM{q1LL{FaLhk#wI>)TCP~i@$4i;Frk~eHhAfJVZaukTXVf0ES|3J_6_uWs__2 zUY1)Pk1q%=1aTHnAn)KI!yQ5R=p|WRi~^x(*~?sg8>eB`6eeW0rqxImrr#yO=kpw& z=o1AQ;6RG!{UirKZ}e#(ud(EAq|Cb`Mt%@Lt4|vqw*LHR()tKhi8kIwuBv=y9=Oud z!jKLi1*BWz1#i>hSN8;)`?*8k!kxEJm_EXtzraHEQxbiI1Pzr5p8bO`dd3AcwiW102 zX^Udb{?=ILF724-BNwLl;iar-^6lg1K@gR5TTd!`pq7x%J%=rIp&1J?y`2Mo{GqA+ zXjNH4h}`P?acIR^-cQhOTJPq^>`MTCf=P`XEOwa8;Shu|izUmaz8HQt>E z$MSXf!v%EL(RXyjudGFBSfqHZb>@NW#mZ++FvJANB;3sr`?oyZX=^sQ_nD3;%9cGt z@q8d;*qJo#U9Vfz!Q(ZqC%0DRHT!mO3s*S8D0c#JT$$Pbr!slpXA(DQH+uNBA#Kr! zgoo7(jp*cQKqCic@Hn1N22UM$= zG}s6v<*cEvg#QU%M;GM0`zDqDZ5ktGfwz4ueM|x#Of1+u7wQ%1-v# z{tu(k#Lg3C6qAbtxT$jUjW8Zd2ocy2T7=dj1LgeHSw ze*oKS^Kz+qVM-%02&tp>>#%`o|GBZ}U7`Y1{iWW4H2ZIZWZ^(YJB)u4`$A~u$hY3! z0WU}j1Z%LH7xU1R{uh}012p{sG--c1{c>p5a~id ze~C1J;04)sFo7maIt6(kxveiu){}p6MEV+`vm9vA=*gu!&u>`DX!Hnp;p(cWre0 zPcNTVqvduXS@)HAO|URoF>Q)L^^e)wn3eG3H9Y;(bHesj~BHao~=2 zuM=z`j&2}p*-{==0H4Y8-^Q7%#}p@|!kOwXSy7BUsZ@v#YTnFuc)#i|9rG7}xI!n) z80BU-NcLB#X!K5A>W*-*EEqIys@O9zB9$tNRDfI`^e@tpCn`S^ire$vr_#`hZb?7C z5NFH~mS~b($5w8Z7t(Y;M6lp4SnaQzKF#1@)O#0W{NEhI|0aE{_O6}=Y{+<8fnD;U@+IPyyaRc!wua8 zysD@yei^uW=~AJTbK)8SvPm87l87`xvbwF*biFiACKW}3jT~BZqw12ZGXlwu!UW8nyPxFSE@f<#Gc^lAqqIe5n6_D;ab?nMe6KHE|wtLSxIgjg1c&X>E zLv?-gbS}zhxD-=MJgxiDtYYIZ#MMwISwN4f!CsMhb=`ab106|e}Z6S=Qx$kP;kv|e;ZTAVgAL~xxnXW3X$9> zK-M1pL{##H^5Z80ykVCMnJ6NW%gFV)2$A^Nb`6wSFa44vqw^9W^UM*?^|wjaqV2Jk-j)N%X~(Z zHkzOSa9=YZ)}f`=q2zfvKR+WQNTJMFiC$)H7Zt_>tNudln2k%c`y(=A83U#6e|+auqiNM0( z;y$Z+;fct8tz%Ff3D6}Z^GMa&t_C1%{bvhwxu@-vm=63Xhe(Y_XC3yVB#*&_*~@Uv z6=m)!E>n+@z9S?oiA~dd`NYU&6AjYOP9E5IH0$9YO|&C&qk^J*>q=W*=E%P;3qb-Z z<=FRNCt#(E!GTUf%lP^Yl#8&Pa3?4`P_Z7&#GK`PaRf|_DRa{W`f^j?SDW z3AS>Uj&9O7ZAZCdX1clk;V2|mIDv0#3&L6W*-)!}=HsHEo)*!NHwY&pgZhUqvAW_z z5p9bcE*Cg7p{ODG1+QYF_n=kyw25|a2|`%RX(YXr5cpk?exh9$U=DzL{tsYs3dKTj z(=ceQ$_k#pqW-F-Mv=5(&#YD!y4*UAYCXdM8~#U*@%Ui3yI#>6XeGhmhqc=_WS>{U zMJ{sm*2Qdl-$#Ned-TqtZ$)y99EQ)ReaPv}b1Ko90+fVJ5{Li@BaeeUw36 z&ad|K_-JQSkieEqH%+4-QoI1vO-bq0BPC?ooB+<K}8q~hoHaMj;N$(wcP zuHENz_D;r{Xi%+}vU;TqMXYA=W^j)@(s4x)&!c`rpn3~=zBA#?LexNT@xcPo!1IgA zSFp=fjLFt~cW_5r?fnqJoq03#zu^|!gt)TkRsQ^GLD`DjcCT_ru?slu6g5&)Xp(vr zM*iINNu9j)M2#I1xKy3C3ld7VbjS8^bic5<4<<^!Uq%r6x0dT_V+J~t1^85$6O7M4 z%=tX8@+V$Eige3d%Mwu%9wqXdVS=@Drsi zRe=;37&AdvR!)`fJTKc2Mz3wMrl-w#5Bx1oMy}aW(p_5;8Tlv8>(HOt%Vi9$X~-D! zH4@HEVMb)QN#v%_Gj8q_9I1Zg>X`YoM`4v;Su7RiJ5x$X0StiU$NszTm)%b&)h`E@ zGvSlk7j=C69+Ghsnvc9ii8n>c_cRj|1mC(K;)oy@v>!4_-b$fQud8G@tr0ATFRKA0 zP~oN+0q0Y~LEz%odm3Lk1UP+V+W5iLLF@VB%|A@QfY`qF`%7jslhYeJl6SMj>ze21 z?o6;R`l^_JAHM;1|3qkEY4BkHA2ISZk>|N8rdJ<3gd5?_5GR#fHg~Y#sSU?OxF`lx zV!M0$>Q2uVybiy*IN$hlCKAj0W9z8yR`~2~;IWmn3w7;(JCu{}ijAUQT-y7Bxjn{j z>}ZjHwO~ab!T}wAKXsn4Xw%Pf6BoZDHhM?(i;@CBU}I%4GSQ%?{=$emTrlgIfqSrD z4VNxf(JpP?Jj)#V?;Xhce&#T z`NnqO?m;a^C@YIKabO!)IP=9NuShma4{}(1_>HJqWW5uff>UC49mibYJ|IzusiTZ- z<6lFvh3fj;&YL2AGSj9--}XS%#G$vv^2$jWM#5lQqwZw9&&D6uc5xNPg@F-v5Qsy` zj>O(69^$)MYOdjCbcX7(7XN}ZIX<4ii*|2-pD=`-|F}pa4b3eJUPlk#xpQHch#~&Q zKt!>a+Kj3Z-u#i9IOW8yYVD=Mq?@R+g$Y*00qv_21p&zm;ZjVA+z@Uhj5W6NuY{OE zJx&jwv9u$dJQS0^mG{m<$&oEDj*&%TL9C1jZ+8|w!l>Ug1 zMPz4xieq$H+P$iF-*g3&_lEWI9O7`6#?3?{MdDm{k!V9X*Wf)=g(qfDxau9xLfmyD%BU220 z9eb3ooQQ07D#P~A3f1TY9rEv-gu2Vk)GSx3BaekX+{0n{42G$bCggX<&3A_VVj8(B z$=)!i7{vP3ApvsjHJ)|x!RRX>sOD9=C-p^-Z{sa^uowN$>wEPyOg|VXST_0J_T5@# z$N3?nwg05lp90@dn~KXj@llHQ4@Z ztX{8`#@n^sY>NFv#{L2}=1j7RRcug*MdX7ySN~jLS5vl$9B7N=|A7`62z{# z9S%yXo&X$3FdxI;d4s?lSNTJF<|^lAZqX-=n_s-)N6}*Hj9IZI&nYv?R=4-;*ICxD z&!%C&{3MCb4s613pm*!3u$!n0-07HkTbgY2XzC?=eKTPV-?eBfVa<43QrHXAE;~;R z@8k6Wr0l^E1Y<-BaeHSL7EXZrvHHP<9Nol)&$YhPo7OO)S{ZozfSADDMx@4Zyh()# zrGT;LfQ`~BZ`mE9hZeN4XaqO(75ARB|~k8W_O z5z6frlI6=?#_W_>+-PzXep9X$`lVnIWL{iGoo(2-OzcffzSaaxpEY@^SMYtS?dm4d z#%9kUB6_S49B^Q;%Z;;m{YQxZy2K)99!5*5GSw4LF;Y0lqTUNFW)WOhIc5)03HCV3V~2 zO87>QRi;tmy{#8uAjXUAf~)9^5mvltmquYqhrjK4n8<-|eu2P!6USeFVxlM4%r(8n z?x0r+L|>-dqJsdxrMQMGdgCK~8mTp*^f(9z2_ETwhAfh<&@v^MzR$f%k?UGfyoAXo z2T4)7jlhG}G1#v2-K_O$1r>Vy4O4eiLjIc>Z0}t2Pl-e5Vuob+w!-+>*o#h9uxgm% z<2e#`?L&Yke%5xW{+=hGh9$PeLpyg2=3m@KfSXVI2Jg|$@LDmQai!#0=*!w z+|p~TMG9)#n?o$30<}3F|HNwuUFOB}0iD+B`%?=ml!~MvdhTK^s+Ap7{=ic|YSYj_ z+@$H%ddA#if5yI$;j#~=G6-8ppShH>BJ=|6YbJmvaVD3^L%3%T@c~jaUe?ohR1F=B zQTe9tBa^LJrc?oH#B<)p%9FxXU zip&A|MYRG{#fuGE?KHeyS7&oR>%7mI1W2JHyy(C3VTtZ@?~y*lO#Ml%n&~d;dInY3 zmDz@7X9+fqlSW_C}xoeTPk(KC07H7$$;ourXh;~3>Gcj+fH8FwH&qs-`>Mj zjz_p-F$4wFOtBNFLf!$Q1si_GuAJol5n^BmuP&-ROkd2_{mik0veUfhF$20JoX7M5 zR>ufZc6}hpM~MiZOQ?A%w2bGnaP$uf>QCjOj-Z$1V!nV}Zrdtfdo6<936rOhzw=ee z{)sl9p&4{N2~+&}k^nE|sV_uIO|Y?i)GHC_LB;lxT44bFhBb%D`vOORm1)q%ZO6vaRA|`kI0{sz@NB(u< z=>S2wO+1ESLm++g5y2;jVeXv%fxps7iviKSRQ>T>AWS{~)|qz1eSA-n?f2e4Yn5_~ zul5c@8^8i5teyK5j?vATPSpDoFBr%p=IkIH#&jS17<}&` zLapm5aMx|k4?NmQZAYwuCcKJZ|{52*@@jxWFHcd5I5+%+ohdT$trP#ny^>{=g zgjc|c(+hKdDyUw~=3hc=5`v?y!olH`5jz`Ryi&x2yMPKhsP)!jAj9e*I*@tBc{=!F2O>SQ)uxYD@nk$ISj37U7H$Kx@5?in*XTZ(u2+(GCp&P@zO|tXP?>R zViDP3*U{)^H$L;LZ~D}|v)DkZplMnrul3t$?sH^n3zMXZO7%mTP!cAV1xPMoRjd)Z zxk!BB^x9^H2h#$+#=@isJkBJ<%5$9&<3OqAxI!D_86tLB3SPnDRtXs|??Tv%#+D%_ z*jNPoIy#{iHcR7LVzco-n=@vAyQcaEhl@%)o1n-wp3{feDY&{Kw5yM1-QjK@gFA*{ zBg;VAU5~K{ojBBB(ajaEhZE9sQs`{!A=jX@6Dt^L>N7=EDI*zfmE$3OI_!GBvT(Cg znbd12?|5|a>MEGG;8+%r%8_H-K$Ga40`xv-$wAnFVoJ&LHM<+B79CZ8MD`lFtXCG% z0vw3ihA+v(B@24)8rE5QrxZ3#1Ck*D%M0T`USn5^ql4(vg#s0u+VyrNs9}n9Gxk&n z5NzEf`7h}As(`lft?6a5s?v* z8JQ7TnZ8G(I683_*lh02{jGoftL7I)x+R3Q8c07$eFH-cv1E z>AC{YN6}i`N-FkJ99~_BACYCZ@fh!*7bc)V+_L9?ESF-r-B`6$>UjYyg^`&lI4@0k z0VvAKpCGoAhJsWlOHH+#FCCf3e%|Y9wuNVVgSGw)7d_GX)o^S;U%1~*Z5XxGxx&k3 zLCvvA_PKYdN4n>Zb3C)V`v`hu40O?aDNv~FD}i)SgED7-1C8$Fk7CFVr^jS~Q`YDz zNU<+}SLv)Nx#}{??4DXW9D+)vT$0Kr1(JGO!Vw8Xb^s|ZCDDt!9c$(tv2_*C-Sd3B z3*NnO^^1aFcWFu=WAnb7u~g^!w4P0>GnK_b%)~11ypgkdP8lmXsAS0~deiF&iAXkV zquZmG)C;uMF+x|ho%=PODhs!G0b*PoZ?aE+ctWx5SRF%oap6KOPvtQA#sJ|ON&_UN zUL%yx0Z_`YJlkwWi$$w!vldlbNe<19la*GN!;o`{b8>-&GdpXG@$^AGXP7gD*21rz zAaj!K)7I%ELlWW}q`I24Gj7utWuWs>v92O&sK#ZdlPPy!=0daLbSb3Z}vs6+vUBiviXEGP@C_XHWs7^NjAYw0TS zjI~yZAgZUc+=wvfo;f>0xax;lzMc`IX$!Q$qHWl?=os{ULL0u`mxoKGrL}1IrER9& z0V3-bsq1S{mdUH1yuzGwV&0$k{M;RX>*_Gi^+GCf5?SPxMz>RLVUTW*5+YK!=5*FA zrvuVEwnH_HXqRL_W%&#|HFQ7l!^!-h_|@*JIyt;3+?FT#p#t_(pp09L1>9D&$6`ii z>ro>3`%Sj<=B6~P-<^cMXCV&UIf}|{orvZ$aVN0r;O{T1g{1mw;wsS>Tm}z+9cM8E z4KuafcA-1n(D62RamSu3Fp}52b~{Dcn*f1cw919!>vmJl`#Vuof^-fqt}BjdgDpgN z@q6Skmxg){cc^~4bzzQPTT?^5dwGc&Qd6Lao~c$i8N_-z5#G(E?^v=u%SdugaiWJr zLXaWq3{gfQqisQc4FPK=+WGygKnxb?6Htmlsgq0 zPM#(Uy^SKkr}B$R{uX$<-IUko=lwK)3A}wT;P&~&O3?ijxR(lg{un(=sNcccp9cII zB`9~7L$OSrKd>)zW%8#1pPzLyzXslhU$D~rWAu~9S(1VXmV0BHe{XDmlfVcJ|E6q{ zz&L^;QTijciGeJQk>HbVd|S4OVHojUoFWMjBEJ~;CvX#iA5ZJMa%u>LVf1r!6T(OW z`w(x!D1mQf?J!7TKie~iKnaK-o`mEb-~1o{_%HwcfBpM^_?Q3mPyeuu*}p%?`HRrz z>mI>B-XrAa1gg(Rg}&c^>*<#h&cFMnLT@PX4}lW9=OgtIO9XlRu`gi3cP#OPY2!0M zv0s|U4D;{aec3;S@4tyLg4By4zTbBT`78P(V#NN6zE@8UL4Sqc$BcjZSI+p6t>beY zd!vkRl<|!+(r=XU`%}g}H9Fkrza*j3mnESZKm2Qrxv}hrHLjz72E26lMY~_ZenTCu zr8TzKT~)ELGKJey{hiuncz2=lg9CX;CiwnUz9EUKuPqL*k)ln)NFPLOr|JA5F|Q-p z4!lv4{pKylV=FI<(_IzIBPqiQAl!H4S?~7H;b=~eF?Y`D!Ur6qv`KrZw05~GPI=wAt8^W9$Xd7%r!zvt+5b^W}0qU`wF;g?yXfg40J7%#*+o<;+VK=vn|NnCCFn; zp%fm|foX_l(Mk%xNVmKSBNU)iCBg>rEK!^}1I0mBHjSx&dzv7<4(LdR4%T=p9lmqM zUQ>C@aSv2?;%><(D^2e=671|oC#mLDE-v7$cOd-aUI(kSvB6|~pxuVer1IT?Sr6@{ zQ!PDL!@Gc$rz=W|(&V8{=0qI`<-v`|$-b-M%v#*O7wzN8;+)6{$Ww$-Yk0UrcYUKf zNqaZ68EtHT0SSwXePv-}UqjR^4~r78lT%f=9(6HdS)@!}#N4bbiiW#-YOVTY!|L=5RsgV+Yy19J>NNqL~t8 zaA@Bh(MCeL6NK@63>cu?n$SnUh#B-%t(z4(Fg&+^oOh7Px#ozpHliOAKB?Lv_`-JF-|y|ash!#>iNO- zOBXcp*asNn`WX2;H8$nGxULDzidNvCg@(*WV`pJn2E5bh4)^}JI>6riJW0HSHQx2$ z^QRwwZS+3d0EJtO$t75mVFh9dcM}|Fqjou+^0q-NxxDYi#8k5p3AsKN;(LsW3zeZa z!v(JZ76W5<_39nM31+&TvR+Bk%{8+N+uTlVeT-B>ZQ!$MT(f1k=^WbhNe_Bzj3n@g7xaE4nCYY~~5OOe#>O-1%zRbZhMrsjasZYn|Ceht_yaCxx^4^;lKhx&sD{UMQfj!Z-raIP-_1iI1~?{3d;ELm$6p^YGq1S83U z+WoCL`5&{k9cOTseX8T$nv=g_);~y%{0}SBM>X=;Z|s4C5kIM&e^*Wa6+O$J>+l;Y zeM6;hsFZ#~rN4t9a~g)rbb1Ohf3{~iwDl~1+Hn#L86lx(vg}=Dc*Ww~jd_KC4Qsd8 zt$M!i5@>IZ6lFn#Z8Ha_@(^F}NffA15)C7mK&*g`NmrnwQw6&fU8?o*2!j-zu4K1u zyfv_412w3GcCK-bn;?c5rRGuc4-?5w(YFq^6 z9CX?#&|TXwUp@D6soj@$D4CvrMECq6W<&~QjiH@A@XnyP?wYP$2xtq<-ioIR;hfI% zcv6vh6;Fyt_89=Nynk-Cn*#Q+NiEaTjb7{7ML9@kTC1?fB|l1SR7%E)MviIa9Y8WZ zFDjA^G)GO1vlFR&m!|Or>akqmk=jJ-SHPxtEYHmd7Qo3$&FD_j?Fr_8QkIMqd?;2m zywtKqjTIKzp<^lGoLnJt;dlIrk+}Tco~4etHE=Jzic+xrS`~2vrv>-;e#` z6FDO8&uVJBA>$Wb8GzS_D*G}ude)_?G7PIS@79Jf-McQ;H@-JfW0UH+nhG+_O{vKp zG>VrPDUQ^9B@C`fvE7n?&*5Mv`3bLeEw&MwF7L+TBrcPK;y0AO;4IqrjB;5n zAW=)S?qtJY4_9+gLOFAcf@0=1gr8!5p$!&`EC#Fc46eN3hHnZo>QTj zdA7OL_g{o&JY8!y6>$>TFEq;w4j6#9qro0%C#o>_l%ID8qt{MNQ6m|bwb=2>l!T}? zCX85kw4a`I)I+ds9O|Ql9}beX>zwM|7^`Z3z z0zEqf{HOxV?(==i-`$j7S1JD~o#htrS60e@N@w|*fGmzXOz>;^mT%AUr^J@hsAD3s zRmy+DcJujv={}*ed&`!W9U$mea+YJ8G|Wq2*)lGLMPE6(t6@i@9kG2d^faKyXnkJbJ>~jAu?=inthM+| z+7dQoK$cfLO%8f<8HT-nyg>5odJTO5yt;>f@kHMRJZ^fKCGI#S#evRP?^J&oY4{@x z)!Ppis(nWIR8|}}3svj~3sqzx!!`*@_71{Y>W}s1#_~ZZl#j=y;Uc5+!QFl<^T!)` zwZizg!&y+hw8==6PIj6C`5uQQ**l}dr`~=%J8p`KN9i6#BJN0`nX}gqS+hiH<|)exn!wvuZxqG+OaUuj|lg5s|o~ ziUVXt_0>lXrPgMt9KHfx{UEs!!0Ax+yp(`U9Uru=vEX)wtk!53N`}W{OT_A=$x*?; zlrb|>LY7N4EHoRI;c31los{>cW^WLGxL_>sew#=bKwyjHGVElFO~+Is)}5Gry}N5X z6-H1X%U)||KEULPt|r}DK(N0<&sJ5I`i{Z4=m2apcDpO~8b;2uG@h%_zv`Z3oY%5G zER}yUW+7pU&d!Gu0~la?pr~>ZSBeRGD!a&#n?utjKC{yOr0m&Oz_Qa9YyuyDZ)Ky0 z2S3w~iRNcgB|d_3TR)~}E2eEe{9-?*$?PpS%r45gsFO^YefR00dMg)2gv72N#8Ehg zlX!q1r=4tFqj0JU;_k7?blm+ycg$V{omHm^CZR?LJ0p{z+Q>DF4EB!BS$W4t`vOU> zYymsvF+N*C_Ry1%@u}NvW)72oS9QtF#MMrbZg&ZGIP|8siGBqyX&cYMW1l#q7u2|w z1ekQTC^o}L#AvffNd+HHM1LL9ogb5oI_Y&Mx=C2&(I-Eo&YR$9RrY>OGBcieAl(JSD$YJvXL&b|VFeybMf&+oT@ zzn}&B?&MsT)A>2|hhNgpz5@Qz7U;AmPGkRq!JpC2?l(;RRV~mp@Cz-_eS8e6xjXIX5eYDm)!qc^!EE5;PcOl+vAcazxt4$d4zxYum9&Y%Kmj^{9cFu zs}7d>>px7dbjZKSA%ClXEB=rF`EUR9&wu;p|Mq|X_dovazx>C){m*~?_#S-v>4Z>t zkHgUKFg^X^r}NLAvA`%C!oOw40!Bcb2U+-|j0MJ`JVf!|y1mn6)ctj4H-+6}q;!Dw& zUMoMGsXz5UpX-oYd}2L%OLF{4lN>)TN*^UTh~Jjv06)lXpqnemmfj%V%WZs8;{IHC z-?AHT*^RgC2K|=Z_#Ltvsovr2@hO7T&R> zO0`0s5_p+`3^-VSZfsK5xzv+#jYnZm#w8mNsIRdnN?1Vr$em~$>iR(eZh4S0)rP6L zLRk;-A+y|*A@%HSNn!(~!h=PVA*gy2BN@IXG_e(QJ`!d%ecf?>$nBjf1MQI&tfNEq zZAOKwu%Uj?J&lifzdnsDM3M~8iWyP_o2;3x=w*OVK;RAVlG1MfP1HfFYbU zpgnV=vewcKxJAM)3Ee&n1b)2GeYvnnb2^)08FqJJSWa9UzMC9)^YL0nRBJL$>TppH zx4{|Y0VrqXW(|IKP!i=#IhXko2v%Yv$2Ke`YV_cLBD^p3L`?`6o3dK?p0;U~*|y&) zyncz*6SKQNWP4q^)=SsA7Fk#IP^us$^FbF{^9@v^>S*XOWyG zIBwd1x%Qi&Bzlc}1zfwjyY;>kW4MYtHi3pH$~Q4gc$so**;PA0{DrMo+^==5q?>_- zgJPE+oS{csI2myOFtArr;zN-B@!VHmGFyOO`>DvcL_1orcsoq@WyED9=Q0&KJ}ne3+V($5GGh#dXtNA!*P@3FV`xXpa46@gUk`h z80G0(u&w%9RSp%4_fVGQh$(pRxRi zynl)Ah0nNuOkYY~Y}t*EGZ zFNsm`w?w}4B=mie=(8*;pfoZ z&?AIAk?t=Bz&Q3)SV#Zi7qyLpU<#!$6nm13Hw64K0{+R3cwF0W34z}l!vSx9jp5$N z>(|(fFa*XS1oA;+IQV-shWpFb1nzwxOS}(cQ5^Xz`96~c|N11MA28YHiulH4-Oy08&iR+MCi!ZVXt$ZDRuh0K5#5@+B@C7 z%T4vd9S`mxU%Zu4;%0`GHOOFp&OJG)Vx_Et4SNv2<_kwojb{73<IlHS+ooDQVWI@}1;}K56J*P#; z^KxR>DAiBFeNHPrmji7Q zHbE6$P7QsIrX&Q6-5v`_-2oy?GU1-`^v#qSf=b?v>T6nZ!1*#?Zf3a5d(JG&-3?k( zERi1XGre_?yW{0hfRD9*sC#KUshyWwz8&G?vIIP+t~7UiyjGeAcn`1(xIe%aNR1+Y1o8L~F?vcleuJ#2 z%xwcZo38sau4%*JOdt5@Xzhq@T`UOV?8hOqv6w?MsKIuREIlb+kX4FB?8cxSdz>WS z6b;1|`qnX#rP%CmrW8U6ZwJm8CaAXC@2>|LNYB(6m24p9vz{W|BNWd`bC?bu2v{9Q zLGY4>NY4#K`kx@QLN|ugvqEL<^KJs z1Z6Q-_34mA5}94%(>`2bIS|s;n4$eSkeqM3T)nsI? zThFbRS;fyO&cWVzD$aAAk^nlsU!nrq7u6xuiYr?1^jXn=$hGfL+g6L%vWY0!dp?Lw zHyN>3HQfewa#tvLG-`c0O9AjWB5v#*_I#LzQALu8t!VO+-|Aaw?0K<|j^vS-bB_~~ zB%~ zuNcs;ohr$H)MXfR!shZT92y8koG75$OsOdpLz7aDJzr7`=>%xTT3Co(OTBR-&K3&U zhQ^nI)a~;$^Y5_IA*JsRlPCBXuH0Q<-qq>z5LbKJUL#yaImkTJgz-a-Ux9KKQWY<9lWcc)lKgyYoUmT|T-q^vMo&pPbP@42ZJN z;j;yNjv+@LErBXOf0T@32;doc4ae+r(U0q@OpO3)wetrIH zeRZXKw;25qd%h7Y15+6EG|zqGkpKU3NCG6u=XUwqNl-a#kI@|d5r;%M0_Aud`NkX) zg)r=YvETm=B=U&}ztS@UeQaQ#a?%(7LP3i93L)wyQhahq@^MZ-$02cogb9?usW%S! z3EzxQ--kCX>hG#WMRAG;>F3=4XK}lF4Ccfs9#2d0nEmeiB7D5Yy^?<)E|hON)IX~Z z^@o+|BONOF+t?=p6R#F@@4?Ua43{DFMLK_f6r++Ki&0-o@EiDi1D|i;lYRrA-yeK3 zl`gj0@wrX@O21{5=uDfIzl9i;9~#{HP>d>Gw|%+HS=SJcn4+!|D`bodxl893j0y_{ zYhlb;Go1a{#*5OQhl;lz<4>AENxZ2{UFr0pz)L(j@&t61H~LbeeR7IXPfg1(N$7%q zQJ46J&fsM@sEU`9RjEj}Xz^VX`VIydj?=13P#pRO$E=ZGg=9+GlF?4?ylF>S=XkpW zLVVm&tZ;TIMrP-U0Lt48Z>fjRp#6@3JW}clUjl#lH#V37m??Ec9z#f#o_T{j#E9!^yNr7 zg;p|Rq=FhbMEG`ujbJjpQhW9=bfR|95<DQ?(s!7Dv>yQb&s3?={% z3vbE_G80K1jirA~_4m%{R(hU)1D;3|(tcW-ugZ%6m+MCZ68r!lPX3P_+TAo**yy3iSinmY)(oN1bW22@jPpI@V{ zgD(f+iV!V@78&+5_m(5~xBUmsb+|d;2Nm~-RK+8j*p8h;iTU~)kk`auZ;ITX(|NZX}Q0}~t zMd|72+$eWbw<1DK-Y(`5fQg}u8zo%ZjHj?2U~&@@CoT*!QBGSCVr9#)^Jw&lQ}>%; zBm`=$cu1Nvqn4m8PXq2! zsiAlOL_z9b=k)oV#HfE-eu>b?cQySb$;XM17qCzGB@QDHPU7D?g&wD23i&?en_=JM{n-5xr9TzeWfpiA|BVy zIx2gn2gYQ7uSWRT?74Z0nhSOn{Ml(Uu!4Yixpi=!bi1RuqodktTo$|w+Jw8?;?QWo z70#Y@gUlPa6^F@}nKL z0CPVOoPJICTe1?tQCtnpH0q%le99{NTD+&nj}q&D5wXaP{AzXXRw|E>8aa1YE&@z79&NQ$ABL)yt0KEzO#!-oaQM|v@vCl}chE|WKs=U8tyH$5 z^@5FmrF5cad`=E_lAL-2TS$prmx3*9j;(Kdc3j6CAY6-9)b_mJX!XD(3UsGvYSPHZ zk;MrtYmU|Wpf00}#GW7?=>a+8A!(2ibHck^9LIzW+?2M*dUP)7plfZZ9t>XAUjcW= z2z)Flcm~1%)~jphH>CkjhZ)f5^r%p*2igaJKkpSN^KVCoW9QpR6qn<=^RIop1FB&> z6QC{k*0inIpI`rY$(o$@Q?cCV66@V=w^e0(X4miah3~yQx~uSByXu+GTvTo^&Wg1} z=rL1kDr_}5+(TMinUOf3pO8ah*b&yp3?(?Hf|VArH`F4(}1=#ynns zKgAp$Q>T-k#1($Hb*8AaYks^teq^`8B$cyfFJc+8GaVhG0C7t~N^0_+!a6=FTR6CEA<&5s}(6&bG=OPbn6*KiYRbVwoR0<=5E* zzr`}&q=dhPWxg5kk{8%jEPfTs+&20*^r~}C2?6~oK&O0$Wv*|r%vZqA+5_v@KaXYp z70;r-Ylc0+Kq8KbPm|1dW$VALvX#P-?`y6~KpaL1^t0~Z&&e<$(gIK7;`6I%MQ$HyxG5lGk{%tb+s`&OK!x%{*_@->dkr%r8@Bam-iLcg! zdvqI0Vkl0KpRi%{ufT>k+y>(~iXzYQf?pxUZ*|Ihvi*Cq{X3War*K)6hD8|tP|NMd zW$SlHwucGq@5HC+_Vi1G`T^E|exx}?H~-VekO^M@6->|sfl+Dv5xsqFm+$oUo!-9F zTjrhK{sAgf8PNSOd|IN4FYCI`(_2v-g;m(4MVeWVgEwe;>|@p+Alz>jZ4-@V1r%mx z1eKtj;fZE9I&wH-fIB?S3pat~M!`Ws89>H00|xgS((l6}P#Ce+2C^(P-1Drdm(q7VBk zh2vQ-CZK+@XxoX*O&2x=HV?Cqo|{VyT#&mLFDyHklC0LdMs%WvC8pb=gUxxUZspB+ zjHqQ~;hGvLtE?!%G79;By6z#kqqeu4wUS<=wh^7!PK>Pvj(x1GT0ZEC**iwTowa0} zzdp_vR!ceFel-N>mIP~Xun_`h9xJB@q^xTfT(;dIY|6YU%m`xT_Hf4Iy6xmPxWiCh zH<6PI`@COHR<=W6)VYx01P$l$lE~OT;|~&Nu6wXoxok_te+A5cA!Y9$BprjD>DJBq z?li9_Pj_yI=8y%XbZQ>Q(C}iX^;NlYE|YP~JWLYFqWPI%Z)8oRkHIZue0tgtQe^>6 z$KhBeWasH*Uk6c;P^n|2cD(P<6gcAw5oD@W(HCq-YFg!zOcU86)t6Cc zSpi&~Zd|G>=(T_&c99|OZtS4#Yl*mO50o|BaDYC#@no%k;IWAPo08#QS{qr|tGNSa zKc5vplHFIp&){A5iFbJ=9QXRnpE-NTG{5!9z297o-RZhu6Mtf7VwywmnEL`khz+*2 zVT5U+egp|HMe(H7dQ*}|35qnl-6^c7H?Cm%m(BvPW35h?*l^m!^mf8ADKAGHN$|Cv zLc;c~0cN&;I)Qv9rGf3koCw{TJ>B+3YaNwT=qK=am|=|E_f3++%OJs}EO;n1+$BIT zdy`(hgG>(Wy}vw;ooV$rmTjQ$IFm@%vbUs#6SN=8@J`)Ke6a0(G+n9P2;MvX;*oL; zGjrV^Y)2b~;*1|SoY|>dabIsrjj7_TRyGA?G~U2}$1e9px$3vl-3G*$E-bP|H`CWM%%Ca;LW1sRiOe91G!|CtL+b|S|Q0n*KZ7*lZe~h;wI08LE z;}h+Fz>it{St;g+0!Gg+pm6d7af8U`-#*2dC{2EqxILN}p(yMp;P!w1_kaAa|M%~I z`;Y(mfB&{Y;=crSLm(V~oZzvqVzJUHg(kni-JVl~Y1?}GcKY_0S82Xu zuKyI6t9#C*PdFFx7+#0~vmZFuN2|qWU{}9?G>?Vl-#+}Xhtc1daE&1w()y_W&rkG= z-n5Ay@YjcDKjN?d`dBj&0>VGxU$5=!oqxUauXp~%yz{R=pd^sC^su&NVHaOhFIv+2 zbM<1c?iHby<~{3`{wA(r?b2SUb9-LUvs|U!S+xM5CTPafufFVAaJ^OlSQ%?ZqwC{; zOg-Il#z1GttIXS|xCcN!^72d{juf`#=Vnla`DH%c2ay!hs>DXKN*wwYT&5TiPuF^} zfpu(ciX+OMHrzFSEFFGfYkoQ#0pn)A6Zs3GRjoq40v<551#Y9ykdO0VP@jnOOzbRG zTmk?thVnoVmwh)O6}?#vp|4zSs67f} znG1WRHcXWj6BaIl`|e^GJE8?|LjVYn}I&sARZPpY0p(5DFUmf=b~ByRzsL7wKPQmVVSq=o%}E%c+?Sp%#iyv<_lOKAn&qH5EsHo16sUh}+%Ipbwmo<6a4N^;8 z;rn>Gt<`wI8`2Coj@j13!kfdwyF&E=#%O6YuOj3o$dQA(AtbD9AQ;m~#XY9?w0uo> z7kE(-n~KT+J-It1+7~evz#zYWVo2V;0(P+HBUkd0$cV4=FguVSj~)E_#^%LRa*j0V zS2tsva={xZ-t}@^bGZ%4S-3MPE0$^cmI8uvSgU5!sIrP)z)*0hA5$Vhl)y^y25pwC z5=d*lyO%CGHi)U9*0?dk@Wsqu|4Xrw(}kA#dyn4SdFv85vrGL^4qVT)>D z_WieIVedTfu}N`Tr^Jg3Tu@&L4M*h!Si#_Zohg#jUxrYE0hhD7=+s6Ah~s%ZSWVTF zq2k1UGC>QSUjgr;IiVy(mmJH%(jKBuwwC5RGqgAQe)LOF@c>F+ zj4EOFT;m_0UG$i$n$#CbHBp+iwun1G4=~8mMU>c`~jkWY+A9m`PN&h#x%ast#2sV4bwD^QV8{AWbdiQpOUOkdV!?AMzVgB zf^5@rJ%;A4j<=uDKj%pwDYpJqvDP;wA0y~v_H)=DPyy^41mEw;!hdQ}+E07T$5ieq z)BTN}hadAd>hC}IJjA!!FFy*<$WL>HUz_PWZF{F}@3f77d8ci^KW$^?9V+O-Q*CC{ z|4^=QIG<|fq%972b?!y871{VHSNK@8A3P7Os#6O+sP5G`tyL~jpiIqugqnn<`t`o9 zG_;{4mB~UrGNQ-22DUw(lH0(}Rqb?>kW*ZSUd&P1=-;RmO=BP|PD30v&SlRjd}x|5 z=o*;^wnVFc91!s|%4~9Avy#J3r|cP?GE*uUfI(P zgoPAw4io)2T+STkh#lm~BZ3-IJnH!V`#f22} z`*~7-n}t1<+PbkUL&lnW=(JgRO)ls_T^%jYlL}k0B%AnF>Jz$_Y0XeNm95$R*hkA+ zj>_X`J|kA>m-qafM~Jb%bDM0)zX!Jtv|Qw|acY`PEApNwmZd}wjVx;SB!A5HQTLZM z#hSuoiBpkUqona%-kB4B zK0VqR8;^un2H88vrxW43Wg-?yd;hDf(-~c;6NgT4`>3LzP z=XAoRi=S$y93M--A2KT1$HWZmZn2_&>Wdj~2-J2!?k0>4F%vy~=}@JWk3(18Ct1Ir zd8-ldI8@-+DTRB>0*W;{1_ax|6esY1X84*GpLrz_|n z%0;#?j@pgZ-QX8*@lBY|ufAlfxj1r%HKI(PDZ2xzaJ6_}FYLhy7ZB68O^Tg=80JR| z`pYsZZ+?pS<;8|JLT`z)vE&c2NPEeVEh8BEL2C6&2^*i&N(vsHPs&$0pH~^|kFE`l zO^;uS^m0DTtG?i`f8P!$tdZT{pHGoz9U?)yJ!zbO^`x1+^VGpTt~XR>{}!cD9L0b89|%QbpX$uMUoP>V z;b{36H#DT-SC;U1l+ist>r%+G*z`x35fUIwV8rilXb9n7hJnA9GGYYuk5Wb&$6?|J zzV!kD-%1%_ns{ow!Vf8}U!jaJM8Xt7JtxIGW&8zY{G=CP`kgZVC!mafu!s;C22t;n z@trdMR?7I(7V`;Zd^W^yvn2df<_G_rGd?{DKjMr}1H+Fn<8w28$Bgfo@f|ZV@0jrq zuq3qE)bhR+GYU^p-`<+#Wlf1gkT*9Z3-9;Zcf`$G?&8%wHq00qOl67)Byw`nl{C;B z5i;Ca;&;IAyi!SMpgrAxtw}%%du8cw5`2r?rzK%q`Upg`;|fMw4b?Ww)GWRofDSOREz9DP8!Cqon#-i4F&ydEQi^z|hp?%K$j((GE*_2fIljXhniHR3z{)+sq~ zm3-P#aZSG;4_7)8S0OV7a`LjH8WP^+o{U}*IGKdiK{1xR=|?z!X#~gC64jhfHJ3O{ zDRJex4@s>~tmb!qI7mhz(Oy*7=yigk5}F&Nsnore(F#A@i)uuVE6fYyKBE{FtaI0r z!E55DaRCB5o0HHk-d3Bdnvuw^zfd`NSHO;g2SF+OOEp#Ec}0>HxTz9%O8ZnkpV!qq z!AYOXh)!tgbUhq@uJy!Cnj@{KU|5^SAuwqB2s%{$aTt3J*Qyr4;FH`*T!5m*s(T~^ zSC10`x`Qe}ff^1*mSm|e?%wJ5Cpv5J_?MWmzspXTU9ZW-`T;YJ*dn|z0*YP;(JbF?odZm~pe(XqnR4RUSJ2GtLGFdQhcX+XD za=slc3BBJ%0zA63zKBo#(`V~SpBNAwH^lQvUFmPcjM)Xg;emF&FZbg`Nd}eS0R672 zz1+pIL+arb1reWpgE>gRHd%@TxLEZ;J#t5qu%o3x9{`ZL(Vel&)xJU!riL zr?~=um5Z4i>^rImtv;<>a3v~Maf{XvQ%(0cZ_n?1TUl1X1(~$i+VI)9|00-CWkia0 zzB6Wga}0hG@cH0RhZ+A2XUpH$Vvt4|mg1j9MBXh1|79%(pGRKoyB41zc$Q=ZlKq6$ zqCAY^nE14W`<|>8K~b6}e~*-Bg2JhPFyk42#pow{{hGtzkEj+W$tR(Gvf5{U^`;2L z$gk%+!!Sh?kK6mScJ|A9?Oz?%{@^f3;N)|mNXx8|Ujy;^$o~N@eKGy{t&aM=Xzsh~ z;JfSKJ9_;RdL?KKC0Ox?Z0sMFvfsmXki!0se1c=~zyB=ldXs>D&UBD`+yO$S@qc@N zt~CEX|84m>sNHtbcToEdYTrRE^A2kN06nO1F@t0L%)XYUFS`#4@Q6IxdbGh)I6DJfu+%^7%q;sHB$H@o)9i?y7xoEw$4eta0K(?x*^p~fy5 zFRgGNLU}Ei6t%3#=cv5)H*gu_E!ABZ!4>^GUveqnR18 zDo+h-gQ!>4PR3ykehv3Ttl`-qK?W&Y+k=Vt?QC5@m=`bbRvnqWQgLnKr<3G=R6#d+wWZNs+*_oFtB^YKK%JQYX;e;!#r*{w zXQ)D<89&R~;`QsTQNbq)!jwH2$(NnD7!7O+ymvc`*U0sadF$l`2%0%rf&;}RlOIZ? zs+_>n4#;Aar6%;a{!Xg#sqXPpSal)YG}{Uadz$&T<#PK1Ksj(h7_ zW9AwOx*zVj;_4PYEAyA@{z63tC~aT5I6Jo$^u7n=;ULU2ir-3qq$#h~SVppR+Z~ae zN}UVFfhiG2#r(18!*N^i;?-Ox9-0ngR&hf<(VEL{dkPk1V{BwMrzn(pp8B3Ej3Ex@ zuq*RQIj{$Pv37E^i)zA%vt6RbE1KNoomY+BW7B|4gXQ<&v5E((e+3+Q&^-;7F?R?! zbqD?K>Mju_ai7G06$C=@U2t5Wwyr&idskQ?{DW-i_cob&e<|(aer*JmDVNYyoXz;) zsy2L)Xs!l(m=D)Py>+2m>j8FW@U!Po3c)tE;*N@cld42Yy#+yX=?H%x=fUk?A z9=~MM=;n9PLOpS47r}1^d~=n5BjC%X@CE)Xoy1pK^})u^z&T(#5@E<6Q7e#lEm{>j}9Pk4EmJEkuZsWHANf8 zAMYAQpIV`RzbuaW&5z0>$bOCuu*UCAic0a2LBt^-0rh+S3UIopf32v;L@x~uNFv|Jqr`)wThxQk7~DjMw7fof}_gmPchpE-gGlw^ zNjai_fZQInq@XabYZ5v0pt@&bp_u!IHA@PIE#1QTbKlFl31by>B3U2{)XO%o0kcrz zDB=`&sM6ZFi*kCgPp6eHAj!+>!MhMA_bh`&2d`@|E5n|_(Het*l#-Vf?5hFQ6dUPj z*WAvtr*6)480KY;4d>*D_j(q1oCbGSaQc9M(PTq>vl{0hPYT(op_DNC? zT{h~o9v)87R@EU5&=m_2=34Bp4MXUq%b&?kkaOm0u((l^h13!y-c);Hwj*b6l4^c1 zTDYmR(oyK6-?!B2%ALDjwsGiM?k;caLI7PrqQ7$%D3kNRVoKF#eb;5ADtt`5X}uiP z%B29cfAQ;jn9UuyUQW8BP=|=&%w;xbiDb!394OoJ6*qAg&UEY?S_E<{&_lSG0x~DP zoLpy!CF#gj4Da0F6pRp?D&p7?%KmK2elP?x(T!nB9d9BohPvK=~`W=Rv#bSlP&Q0R24TJtP z8iz2{ALmlG?EXJ{XOiV8wr=UEytT5)%Al@ZBi8}}qLQdV&=UfI00~45lgLSAH?xyD zr8ke1gt@!9g?V8&JmTH^LNp>=a{2EjIGn@z{NH;ACDfi;h9-E$);yx=%x!Er@MA9Yl?^y+ZA0-ANvsqf%8 zW;J@N`5yWFlQ@ok!Erm(+Rp6yWFRN*3LPSEt+C#9sHK&afC+LN+K+;K3AD%>U6E$t zHSA1RGuRhoA8_$_9qAM=^c6HoYyfX@e+c0d>=+a^=BF88Z~o`h;K}08g=-38OXHuEn%!P206Qwk9`C=AzeJCm^Lt zXaaS?qqvMid212dNjY$3M6}W2Hal1#jL>P`t3Y_cakdJZi;gG2*11IcOd{f;f8Vd9 zP?k=u$4XbpJV1%h!Ab)x|C(^Ia#K65uDDL^T<+Vs&&*GRf_%-UenBY6d$8-LLqT?) zys3A0<3zUk6bkZQ!4HLkFpZluOXTyzIPp>N_wI?D`LR%t$2!D3LqYx+l7kQu`K3sX z#Nd@ct==Fx1X-a15B=&;5R}F-fAagCZ2usVLotN@bBNrRNDz!b?^cO-B=-mcd9=tu z=x4LVZy`AxMo3%`%3yma!(}pL~_g%$^8XVX4?~3EH>^)e-8Q)lIzwJ zZyfiabA(pZmh2F56_34yH70^B4Q-}_IJB;8yd!gJj6opP9Z8$0f5LTdfAy{^k|sfd z&A~*@2&A=>i(xgzIFV?X&LnM8SP4RB4ITvod=%`6kY|xVshYKvq=ZnBvDzZwISUYZ z<64OY@VEC9aF2}ab>td#f74JkWN$&n^?jGAhRA8Kt=l%Vvbe0Vtx(_dd5>}lV|-mF zOy5&SuX7_=7^=vkbSA0Hm?b3n6t32hS|MS)-mBUj$%UGW6$_HP%K2v`$2^eSd`EKH zRoFd{oXTCC&q!{zGEffs%k9=Q4`1c;f_t5A#dJ3A`MisL;3-?He+g>9_k7;$sLSx~ zw9lrK>9x7;X|f00hTL8%tDM(Q)SL~9L9hpLIM@W}@UCR0@{v{BfSat?#C znOJ3BlMI<`!Oh>F&A;a+k@&MZ&2+jn{z-Di20J38)hHjjN9eP0eV@{hE z4`23%SWwX#MSTsSajz5b5WXy5IUA;w(u9mmh9TL+PQJAre=W(aQ#I%maT}6-6Gx^6 zb*n*WO%R>=i?Zd9+-=&Qy<|E?+U?5gw|hE;9tFv(d!}GHi+V?C*6~o-YeMEjvJ_iW zyPiPI#e=b+&C!^}e(041X!%M!4wBq<(IAw2iMrE~a^UT=bybk2a)Xc}Y5IiB~K*vX!0F*QKCYfR%8degll8hx-1Ghbe_;kw2_ zh?|+=e;=1NzX4v0zWI+xo8Kd7%+E`kx4t8$`2A&gPsCxcZxsB9wE1QH-Cx{?-b=x+ z_09JK8jO!fo1Xo&@em;Qk2+ z9CVM#hM>Pdq>4i1Z}1z-K=kp>7X?FD#-A; zf2%Wfm<)hBb>VGz3Ke?B+M5Jk3%Zf(Djf9UZC;N~_?q7cU218Pl#LYSdo5G5bFFVE zsCH%nU<70D^2NMm3Nlhp&4MNNY|x;&Xl zA;PwGv`r24{ATy5pzLPx-f0Yw& zGq+)Csp&}SwQA$%+x^maD`~UkXARekO5_%;qSVP11s77;Tzx+&F*-ir>&+hDC}J_f zaU-me&23ar8^Nem`v`e{Z@yR^3Kndk`-wIeK11xs=CgB7~W9IyTFlqH9dL zwGAP4h*QO=xBcJ_-AnW~D=KAO&05lz#~AQ=`FPES!Xi_y38g5!9`6Z(NPKIgSA zoZ}mz!GlL|8)jOQxQ=iYe<5w9EnTK8OY?dz?3R-|=nA!#kv9jkP!;q-E@``ayA6sA zq`@Aadi=!BUN!ZW!xFH=f7^mk2M!P=5{M4yMw`VvKlz(Nj@eL)(jAQ+3ZYfws}RiC z+$`MJXl|pQXGwkBA3E5t69g|zXqQH{VjCvtUE}RE6pgeUG`*a%jJ-69I9nP~cs1S1 zhs}VRfh>o!H?D8bPy3WUoF)Fe#`m}zZ9zLd_Ls$>>as-f22tTdk0{oy~{$PA!%JXlzm9AH`>iNLV9VnYM=)LL*?OU|I(zT0MpIkU_( zTh6N&f3{aSj#Qt36gm25IW?G+h(*N8i8{I#&}|O~pr?YN^C@FRI|PJBv_&z%QE>uv z{v^bmSEzAoKziCPu;ZNZ!*uD?{A_6oz*>jj>cArcU1X@Ss94TC#vht4|g^Gi++kQo%4nF@@d zzPF^Mr!5dFzKy}#mYk(7L@gVTH(56GKu1hMk@}UNEnk`Ds03Bqv_<*hqK%$xUOd*; zf1whgDR7dr$ZxkzA-i5SLn&lPtJW_ZMHt}vva@GzBD&p$0;w-t>RZiXY9n8I?s$Lk zHgfk{ePWM-ubahCBMt1s>1-sKV+=sa`j;AR^K%*Uk$*jGj~ImyJ02?W9L0B6q_?wq z&DA|G`zq@z%dnw#yUV(?(H4(M!B31Sf7&@Qb&$|;Om;4OEL__GI~h4{NzuF-mM~PS z{d#j)ozC1oDlAVwvAd(99cyDrlgY;+^n4n!Vh<_s+XssJx)Z8$AFnP&16Mkn^Azgk zFunDTIj;6J-0E4V=P<8O$KZUt3=F?JYez)H9tB4SES;5iPH_4lI=359b+z3jf3K=c zGL$_x>r6BnYNorVRqgaR=;+Yvb?2)_sZWsRhZ@e$#}DM2kAgp=;e2y^Q@;6b!T2B= zp^)6C`NxCJUBmh2_@;bwnZDj(dEIc1sqNP=_3L9by(iy%6#S-!Q+=Q|=9PwXA7%IL zDt6x*z6M(_yUP#cVf?Lt7KIQnfB8$B#!#GrIAq1V0a_%!LJ4g3tAQ2*lQ8+G0Ij9+ z2b;!zPRRLQDlK&X)z3AJ!8k;q6oucnna{4VpX(ZX>NcNUV^75PPtr9;LMX|y9Pt-K z8<1~%#+EL!Z_75{4>7nel24NMBxz5Q#ym;dUqI4UB&1j2U6=F0mNED)f6?S(q?cZ` zjF~>_{-i`xJtJB>Is78g?$AMWQJ+pCp>6W}}=OY+ZVkRv}(oEEgpKPVjsRaJ^~v2j!J(T9;qHc1`0yxu&(c zs=N6KMzXe0C=1)r32nmsf3S4cfTG28XN}E6*zO_GJ!SnMZ8XWi5w?)7YQb#J8wv-f zcwhO&KHtgAAspg8r~@2sQo4?sFwu-g53AUNk zGZ4QzX~~YIF8tKvqn4ld+iTI#ms12Zqu&8=e;MqY-IfKrY?f2Nf0fVLJYbBzPLw@u z**01VE?$$SR?vxs6+U@5v;M5XohWspcmi$@F6Ypn)A+z!J|UkY%SkP5oiBF^723GG zGR?plMmCrUY8*BgJo%8WW(vGlwoN#?0f`FC5G%3IuVuanvM7lLrsn}`N$ZN#60q-L%~{Lfc{PCXF(YhC zJKQ_QXmVX$bbTB3mvyc6;cW;%3Vv})0|3!askkTrg*W4>uwjronFe{o*UUKw9EXv zQ`+lxokzhR2Nyu%?F^1aWLA96J6K^z*H}3u8{5soX!I^kR(;EHbwNh1Dm!FeZs#*vde*QM z+(9L)mDY%FM|6Efq4j(?nK4+(r34vH-3wYjRf+$AobYLqYk+f1b&-)-s8h=_>BFNYoOQx&5jh znAZ$_Jd%jE?3A@6inw ze{xEDui%HA()O)@A=@ubX|E~Ur-HYGlRoB@ws|_G{Q|;AnN<62>)q>jUr(brf{5m61FE{dlI%MVfz;&Y&eOc2!{R@ z;i1@@o@aJ@Z00KHP=*CWbrXAf;Wt6IGC%D|AcWXwN0$#Bul7gRt?o)>`sD26a1e&-}(XTX1tSDopiPXX6AxR*YG& zB5^z6_%hp+I>tT;+jj}uL^Z-#2@|jds46`1!JBR?9ZoQ+)i&g+rPiJ-TX+g*(0}ef886P ze;iq82f$RMAuBE48B(Jy1^p9hgjrWNsiEe)wRJi59nV+*#&EjqOEvA#$ej@ShjpE%w1dk>l?JE|s9D1SGNw(+ zKt2j1;^|&&(O_THJCSJOhJhrfaixxq zxO_#c$1CF6YP2_T&kyYkE}E+n?9k1g^eA3xwx^Z}w9rq%E3eAfw7AZf4N%p&V}(+G zwyo+S^Adk?u)Jfg(6*3VPBPC<53qQR*@o#fCXa3A*%m-N@{TPUrE`<7fBVu9Zo}zO zFk34?c3}o$h98S9I2{8 z#KF}-`}}l#6cp@}m-+h)*_l;pq_kzh$adzp0*+~T-kA0JvK!m_Bx;IlhQ3WJWu8|1 zZgZc88)RKm4GLdIc;3~Ef5(&qfp&w9;;K@@_N17EqlT20pcm#$N+znNinnvgV|FGa zoz>6fVYR+mQqA=Bb)UGCiZD=A(5pmW9~MifDY}hlaAo4RJBc>WXC;whVwd6i+Zso8l(x6Q|j@yf(#~evwx%E&Cf3T_RNm(E0%rH&r zvZ)+5O!1~^mXPk)6j>t`#&f+4t4I(B)^-45%vp4{V71T{9MH9c*tXzY(Li+7qmH%BbeU~%9N~{L&l+@up<&?-{c%UY z5UZ}jqGhj?F%*|fU3E1_6Ai(kwX<&dS zyCt_mcSeAeD1#q@ZJxD6HAkCu$=iqZ8O6z#Rg?*AgVe_9N}SOsV*?OXZXXR51n(D; z2pEMwWEXlku4)^ojGWeE5l6I8W)iaT6o;u)#vhpGFjVBqp#(<8c1IBuX#>2U)YmTm z3&Ht-)&G~{e|?w#N5PL+{l7ily8J&1e$(oIdjKYUo7`VMjQ5$xu=%>+8<+oO*nH3G zf4%YXP>t^|zNm-4KDxyCJSLZdKeqZ8-dO!F%1xZOn=?I?n;)QF5cF&9{!s!#VSz^9 zP%jkX1ZXAPH-f*CdSMufW8|Mfy=a7lKL)*E6rxD2-j8$h zaz>uG@1MAr?aQ+CHP)k%Kj^ZC(Z3;Y7#{iXQhPyo5c(VRis2!|BLeg*UUy%DpSz=%hdGflyplfZ%B{}QeqdPar4|&}>`{J+`f1-Z6+ViD_8J6RE%A?@=YUD&)U}3bk zdZY}6zODgelq4R0IIIQPoB_LRPP;CwBO#X{*_pEdItYO+okp|{l{(EZa1Mb5UMc=r zMuMOUAeW0K)j9*0i%rM$1v{k#K6a+XNPef~^nkWbuh`e}O7U1IY=Bru-8JD0r`5U$ zf7~^ES{kGXKG+Rp8M`5*)&`)R#&nFy0}7qbvP$d{!VwjPRZY%u+iNhTmrYB#?Y7<) zxqxTAz#-mnB(l|J?JdKG=5~(gbeme*5&~70VlhIS3Lb;0yi~Drq9wLtZzm14M`V_I zYelVOF!j!W4z8#a2u+fb5=BH0rnJcCfAAB5Y^sbpfwk0@D>xopHDvX)W2XZQ=w{3( zatfdnsLPYPT{YR2rcc^AJV-%a?s;~Y62CdXw7p5BM?rXucbC<0cT~ggj%poxsu?=J z-8g6#7O;Nu{1FS4lmgWPu|)oi9QS!j6x^P^a&j~Ce042O%pRTng?S>WQ`ic~f4DNf zy2iUL0VW+`YJ~0-hXMeyQ9Ya5xF?SXrywdkG*6DPTlF@ii`5>1=QAN2G{cDpLtZ-n zthO(TQ|jnuU08Z?C89c#DlVZjOS?3bOSKqR433Jeko|Zf&g?i^+Qg+?Dis%_19h_2 z!7F3evim75nAK+v8TtaJa2-=-A1yG2n#8RREi?9aI@2s^2yFC$G`@7Ez2B5Ze{U_y7#;}vFgRO%tPR1tbPozW8j3fWq3 znDZIio$?p&Egl)f(An!PajY{x@iRHMO-kAx$0S|D@NLtwA4;FQ?Vb-691N?&ZnYP0 zi<0j-%}y+BcM=%?5=7%^f3dx@!bz(`E7Nu>oCLhBQ(d6yqygAwVzPk zR=q~krU=>x!cGB4+Uf7S^BXAv%SHJ>RKSl?0^R|D-;WA-9N$R^e|V?h`?L4g1;3pV zuoV1VRKWY=@2f+-|I^OzUH_JK`5RFI{kNk6KF;Ot5BB$`z_5I7KR<6jU!4+g+4n3T z{hQEBl7`4%s*1gD#!!lQ>pO?C6pWyh@Ss$`(02|+ukk9@6gNJb-+pZ?R9w4%fFIdlD9_z z0$mCJLd(atY~v@p{4eTs_jyrz!!G}5{~`4Nm9NO<9ZfFWk|uv6Ut>%BH~jwcHMe{$ zzE5uX03Ph%QwLv`}o6M}bW&x~`*DZWg&#kSdYu zIKI13`^8N@-K5QEo4yk%_DVNLx)-@t}4)=kujMT>t@I&CU9K{+yGc+!OQA3_k?~^ zQQ$?bP$Aru=a`}o^=-4w>Avoor?a}+FEl1CuG6&1*y|jpnI^?dllhp(D7hey`L1We zOC9xO9l*^bqfEEr>A|gf4jg*59|<&!B`ZC6yyfuYf8xmh|JggUwneS<>wh4wf6F`^ zGJ}99Ak!H#qs%gX`d6hYsjAeFq$}ySJ9?&%&#l5{Z}#t6>t6SRa-rlAx>^AjU0QY@ zHL@-cFi;=k@L(31a=eEKIf*oBmA!kvCt8+dc4{(v1+REdG!L*VM`%<*o6FG*uWTSV z_uIkue|66hsKJs$5k-l#4$R`D@+PGYeV6Q`q4TNM+&5WNANam3{kQ@e0Jn~myzl%IIMDHiYQdJ|$Vnj{`x7G&C_Dv)pn8Upwi=*}MBH}+0?P-V zmQgM6B-^(n%-DgsneNIxPV`677I;DnLu|LHNkf}=$jg!pM>+W53>7#om#VbT02~PXfHtoF%eq-+I1@(5{m{Is6W_dKp z11)IQ_$rv*sVw$nWB^O0J|pY-dO8_LCf!NL*zXb_)Yr@P0AG857h_;~oTh0VmkP;& z@iD+Jr}(^=?dd9?P{e%|lrCpk0;pp&fA=TZ?96tIuDpsJQVD_*+i6c@zm9&16)lqT zX)ByMdgf~9Twf%yy>LsqNN`bMpwh{k&d|YcQWX0OME1Sus*TOZq<64Wsf8MAbg#TX zu)hEJcN=vFs;G!Ka>KT2GASeab?r~Qxy~v%?R0tlxaw)qk+yJ?!86H;!+D=gf9TFz z@4n9t3LUD{;baH5okk@;N;cgty`RJ^pCIs6@Mkg0uN3_H%>8-6?L(IQ z9HBt`uRxY4fy3X`asC!rLI?#tf9=D623c+_>-Qo{1jk7NgmL(dEWd&*zkVLx$nx(* zmMFm@Ji|QahyT9SBYeyc`F(ja%l{o_`RlUu1+zr|J!T1m#H;_`C(shvNae;YN$Ow3 z_p#+`1%6}8H@19ZOZts1|9Wi6-V?T`?dgxpEmg8NuPKw~1}nGOzTL1Te_z=BP6|5K zy`WSpW(k28Dae3>agI(@ITw0dtkEcPWK^&|fqEM2P~rmOHt*0l)ZYhXS7m;}+_p_H zpDXJjI;6(gIm&moTH@%4Qo+HX$pBQ{iII<nJ zdz(_hDsIME@a&8*0@lvRe?lb52&|M6$GK|uTI`-j4pqhT=^E#XSAui3;z@~|oa@S8 zE*7*Fv07>ObZ3jA*Ehwc?BmN$mvfEiC|uC$hG1Ey$WX00@tt7AC^IZ2ks!``X;N!2 zLVi!As-;W2EOrwL9uP9kIGmL0dY^CKQ0KD|%y*74p?;@pf+~q}f2JR9PJ|woMaY-C z07JltFuQQS#wrev*V8!F)1JQCl$C1*BVANbBZmvV6>P*4b60BD9EM)f4q8m?E1e6& zXaethzZLR*XuGjBRyuOfVCeBZTuADMMw0{n+BAY7!<{mB{Vh|`BDCiD22BOCq!Y3I%T?iR8xvLAiu4UuJo4;T+gF3c2un zz5%Vn3PJ3hNTim8WnMk|M=NCwoAgj7N?gprBNdeiBnNv#59v}k=fk9V`0b{M5H1-W zV2JzCBzL+2ZK7JM0m18vErT&$Bj2;Zp^O3fXv-_+e_iO^fnZK#M(O084aog|>>rb5 zp{+d>30zC&YJ{MoTe{NrAp}uUE=-0RWttGlYoxWq!|EeXLCBLvl|9$B4pR)P%ryTah ze+d|Qg39jWOP3dmgMQd$5~V;GMG*-9M<%(v@Y>`1fCPeW4JO~YF7I5IkDt7~|KmY= zf9JaV|IcPIoI!Z{xnevgx4$yi1%ar4y{PAB4KCsDCcFI7-V%mL3_-9Y`g+*QYaxAe z+&9O4b6on(asLMS>49J6WBfE;iqjtodpQtySTbX{uRjTUaXiSTc3+0QR9;SL@aJJK zC~_yG;EEn5x8@sMPxA&md0cy526PVqf62O;fw87GB`j^qlUJ}+ZB}=5a614G;yEl7 zo^?-+#A_BBJDTd$c8Wn&8Jl*C?;b6Q7|asg$73D4d%Hj!S1b8)yJDu=Cwa8V*$m=ZM0o4R=wOfgbFe;>nM zQ}+m7#I;lLl2n=~DlnC-xVbzyH0-U5OQ^oBEy|4^Oca3V>yFy>$F=aBqsx`Iy4zD* zu81INjse_SH0AtLO{^^uT4rlFQ~^1|-T{pK7I^99TIwmuxu)VRbSROrg;Q70j30NC zL$C&pOazozyb5;685o(v>AIw6e@GN(KKF=DTIu}2f(NuJrS8;9nC0Mxd@&AlV@#-K z5@S?2as$R%rN9V)Wx4*CDzxf(HS;Y^QSYV`a z?hIora7Muh<=9UkIqykURymQNFFl8|(B)O|%HV``3DyEf^FuPG)sbxae}j*ae7Z}g zk_&NA8}=c65HI#FS_5h^A&57f$4yNPwb)&17wW#78PC0K(#cg0p>WMEfLsuAvF5UM z1{u%R>-NM_fPSOk{HS_VU}kLyc`8mIW67{Co{~aV%3yh2ix9UIY?PbBHV!eYyZ0pI zKPC-2@w9uf7jL9dOUP+7f71jyKvTEu(ynca43Huwb~y?&aZsO5Ed~*@%m0% z#aBVHLUE2=5jrpw#GT6q)(*zn+9TBOLMJ50CGJRUA0D49?HAdk#(&1#n8#9)7F+Vk z^OawF5q?!4s1>B3KjzDmp;Pis)*TA$}$Nn%# zqZUMqq(L=yh3B$-tP6#OLWRWc%*WTVCk#ZC1F7DyF}%}&!uhy{&T_JxGRVdf+pS*( z5j8iCKu&U-JVGHCK~d_7jC6KAu07kUD-%1t@#17UXr(%n;{`W?;c_vEU-oRp7`-=kUm-YWQ; zg0II9G^?M;Rev+nf1}{{HLG8I%XlZt4 z;kd^qeF#>@ksqlsQ3%E{ltRArkN=Zk9Pv2gF#LvbZy5K6asTCwDM212DDdxqaUl9H z=yMncBU|&zf8RsnC=7pm&u`MW=OX&1ac>&;rg8L}#{CUVEJ2fo;OMEU{4tGd#g#uL z<_?rlD=r~$Tzlv$c{2xJ_uGcsI;d)oFZM_)ccZbd9R-gBm=R&51j4mRWe~ZT{#@SU)iRL%z?%G4^8qD%w(il>sAdryKvhMEHfGF|_zEhUIwb}IgIaeWw zlUU|5J2p@nq3{@+9We17!awe;=hIy~>5GM&Vx#DUW5((Q>4JFI&|p!v>Zo=(X~0k` zY+24Oa3^CHNM)O^+whR@&kG#yXhsHAYckCsf2P=WxJ5w&-g{n^&c!f!w<@5@&@k&h z>^2%#!25anaHUjDX@IRM&{$w_^S!E1*S4;kre>`BjB}npsr=dii3YY{ct-Vbx2B$I z$fOg}tiH_pED{WnMuEIdUr`hFmzjzTr-MPO+MQuGB7xjUQqMAmNEBVRqB*04l3fU& zf5>YT8T{?;pCmgNf*J3}OG3J(fJs=o9YY21r~6176lkL}e`o`~SH`ok=VC%?lc+8h z_~=}lpgK4vFi;mPJ>7uz$at4Lwv=cd4u@M@p?*o?o8=!;<|ODB*g2^%r+SOgBz(Z^ zK$)+l)rvv|9Z>~uJv7M>)4fd-eD;S7e`a&ERA*E1(KGXkVeSF1??P``%nMH( z#To;Z3fLuss>jmpX!qewPss1YFtY)X(BqSYe4rpd>Ug%wM9Nn7RS<($dj*ElK9geu?_xvP6Z%r| zI6h*if$&S#>6of@8P)7)Md_*IZq#-1yUXh}4Q zGCy0S{%{QQ=d4S(bN_A(^Vi_n?~Y-P`1BA};S;p=PkrMvhWTp+|4SkA>uVXz2v2c1_85Wxu?%Je zg*J=ur&J7jiPkJso0x}(QhjD z*HbaNz~ZCkKB?G2{(;x{zIlyrAHBxo!qUR+Gq16n+s%p+uAd_qbP=-p0s!7ZW{p-h zc!u|4__!|ChzOB>Du+p6bh|gg$4%wD&xT;I5&Ht-u0&yeyM^@ffBW)Yy1ru{Pc_}a zQL@88aM${xT8Ow^)026ESD{Hj(-)7+piIoOMPiDn%M>)HBPX}*q&iKiI^H(0hpYer zC=zg-gVCoG&!ODPm-G-p8^)uMbLts+fYwxYS=r=9T4gwou(+xgmnag}raOoeP_M~B zcLOl3?e$tGbCikOe`jM3Lr#SUP8Y7we!e;h9fTd=QW|;C7WMdSk+_@uXNyE|R7YTn zcHH#z8f$&M&o?Kp&ZiT@EV+HgOBAT=oKc!v0x)rdn!plBoUYECBBO?;&V4t!i@KW$ z?tD6WnlwAuS=4IKocU2%YrO)hvfQzE_Pp5%slxQAJ-@G5>C%XvVLWcm^E4nD&uY|2 z@eDGjM)|4}Xbqr!>SoD^0eCivr6rv12dGlD^00cVlB=66?{3NVc)>NO@O>k`jI2kv z7+9G-J{&2Ef2Q~oY8?f#Q`J4g>!>fw$C>ZK1sVA49_ll4F7rl`CICNf1u=QYpYr~u zI_P7>?zX7=MoEwtKVc7c@eLq*lO$zODgl}JH``+TJCcsG>09;0y!f_06NNB zXU+5N3~J#pM`;3>b|qeJhk19od8#U39@l3TI$Cn%e|LKxBplVf7^ZJGBwFj&9Bl?J z_meifS=b$Gop?Jb5VSLP^!MgL#@=D(8F@j5?*p%mIem?K?RBsb9Qh3LH??AD)i>M2 z8pYQ-LnUWHICpmpYqbcj{)k|f3MQ94I-U6Q0BHsavv(?y%E^&=?(8Gh zon<1@fAfS}6jL*^WDoe@6<{s_Fj7#s48bQsv|$&FdOZaD+k2)qFQkyYsYn3 zkTG1${XTLc@{~9QlD55zhlmccQ0TWh140NzJoo93ttbRR zf7pjO6XJt66d|DvGkgbrp$H682=;Vn|8uROI0h34`KRP)Up-TAIoex}_C|952{{_h zGmpjLxn}&;ax@6voS>ftCx6D>p5Y`Pup9O-qj`vQ#cBccH8B7kN+c?Y%+l!E!NwkBh0e3*}1pOw928wID}&8L2B$4hv6Cjb?g-S~2@f7cAw%cQ}?DHyKd5 z+?7OR%g1rn6#d4;QoF`Ss73CrFY^3h$P`_ci@B!)=S~yM+Nl}|)!-@sv~UV+fBv>| z^o@x2ZNCL11hYti(Y0Rj$Y*hU;ksgyZo5&>?PxDe4RZpH=c+bx7H#J2V&aj46=e*U z>d~K{=1>ZkUgpr+`@|e7z09G|(;RAiG>0CT>o4X|!@^YRNzJqha$9XjfKsq zh8sM#;Mh>xtsqwrxHBZ2KJkbAyx&W<*LfE;N+%$~BmP=e9t{{_J{-#{#_+aZH0Yw?y~B92$G>HQ9y@O?Fttq9nt+Mpf`9xT(#lr40UhAo>`4nnRCI zbLeB63N6{DkRCrVhwcpHM&rSS$lTi~ zxHczoWDJ<(!0I<@JgJ5hTEf)d$g8%e+JzL^&C98Bl%Ao|?NBr4*1sQ#quHb9r6R|K z*f012+eOzXYRw$`E}YXMo3yvt=64V}OQskLJx#pqj{6ap{Odvvf9Lb5zeYw_3dOQ{#NTR%x|76XgrKoWjblsV7ZE-C*vg@N#q3O!Ngb1vg3KZhIDiZglPSd> zzw?&TWogPEsKj=+D+L@|yQs3k%Of=7l}1QTv(-B1DY5G4P++WAuGUHtQu18DZq=A5 zs0cg3UbewF=KxUefA=m@g9wRi^P!+FP}l)bk%0Iyr#c9>55qn^)|7Q$lMBeQYA%dB zg_Or5F3>ATUPoWnJi##-hLF+5eIpEsDko-q8IRb{s=Mnf* z7SYG?`yfkuTSVVX?#<->qf8Fv1fD_|?r&gnB=IGagEsQ^t3&h?G29mx(f^|`5=5bI zGP&nc`et%(e^YJY^SsDf2DW~5E_X?H+f+>v zSnfG;K3lS8>?2UMaMHa{RCs^v>ex18Y*IEDP5_X5e``Xy`0;G+hDaW!$wImkcMz zh8G~}S0^8%td{_}E+u87HA+}OET|UZ5&|jQo}-0f=9{i_C*M>`)Z}jIp*fN_c!`73 z7naoBf0J%-T@rHV9I*y~Pl*)0nA~>hJ(*nefyvqN$u(R7i_hX7(i&i5_6XSh!sN_q zHy9Sdt4}7U`EXSAXpIIbzQReB$M`0bN>KoS#%gk}3|HS6Gox&!6la2%bTLx`&a^C~ z7Hp^?4E;u>8G7}IzO+4aSFZgb%+a!1opYYIkA
dJJZED~Pnn?mt12d?bpWfQ$WZKD1*IiT7(3ZRQ5 zc8BJYG6Zw${TjUIcbdX^#o@4G9Bz(F3bw0-$AxIP1w~!i8ghp%(Ne{%r%lwj2m`To zfV%=N_p*tm`nOiHFXuOe_B#^TyEmNJy&v=3ox4ja|?M*f5hYt7O72~ ze0d7yq=hd+M{Qy6c4+im;4PA6`Uu&wM&=Rp3R{DmD4}9<+F!a$Y~W;q5u?DBs<8rJY`p_6)eWFCVPf59$Z)&rnbq6sbrnrgWWsA{88@33DLUNan|6(# z(UuuB-rq~=ZX(aeCnNeFY1sDLf0_Op1^-CHwr%`<9C{xMex+gC3tGM#w*8G3QG~*N zYQr{!hcFi9=r5TZ3Udt2K6ivalgU9C0sSEB_D@GBAQ1J(pd5lD^tq(H+1Q(nz1bN3W@CQ?8}lzmnQ@;juK%D>^nwH~e@#y&dNR+pvw;JKL9$k)NTbuqXy}F02Rd_e(0Um@Gf5P?%VI+|7MuK18 zlE|uxv{iX4v+j3q1*4QAa!YUy`*5Ck_kJ&}dCClyN<~gSlkk0Rm1#4jRW?)FIIO69 zjq_HE+J3QC$73kt-YlK@JhXy+QE6Guyx6tLf90XwgW7_E;|OAg!|1gQtS3p0Hw;totRQm=JO^IHtI?sT_Wpdy z0ey!%({hw~RkY_og^Sc}xjRjf8sM|8=qru0GD;N^IhaAqz#YMO#f)Ek(WkRw!ys%vLDsuzRTN zF)+oqL7^^bf6+v~!ZiB*DhTP8i{-?pIsoB zhPI@dmDmaGiWkYWG1`L|?C;zvBPEIeWn)pC&%e?!iP-`6}$E z$)AAYvh;i0w$t79zE5gl0mGy|L@n7P*}Pptk33)>6)S#XPJg>Qc`^MGLv321Z<*7+ z0=kdctFyd}-h9wrOV+>>!Y3w}i1>n)ghQ=c^~hJpp$J3o`KWKr$&Tk_r)$pWlIX~qHxOPE>n5nKH`J`Z-{0;ht|w--xGLVV11A<*aHJG= zgR0uh<5mt67JrXRHq!JS-k}Vth02 z4GXyPOpwiEmk1u$bb`>HBzrvHbC1hz94K(ZFyVmRS1QbBZznsCSv{`%ZeS!P8KCv{ z_+rV#3IP|ihI17n28af(zs&UPTF~3|=PQ=4f1pSE?SJ@+6m7eP-=RnQig zvL4O%*M;$*XS#QuYvxmr_Q~;?6zvu8TY9uF&cTlk4t*;{djq7u?hSvOg(yuRBqu(7V?WlU5s=6e+z;ko7=}^={!=t*Foep9ks=NGCt$BX!dst? z0Zji)z1gPxdQ42cNw@dtw~*;0eb;|0>w4N+KNHrsUA++$=V(Fr-~SU_y*JNn@KZmFC3H_l)M-;LR8(;pto8=7qd0AVfcIANQDgqSPzhe%q|8q_0F& z+D8kDpC|YtkVF%#hvqp1s)GotDa4Na?xW1Rn$!1 zseer-qK4HD3Gp_9JZ)Swr=n{zr8B<9x*dU|)1G6La55l@Lq`|X4qekxB6bu7AQR7? zM1*3&Np0kbbg`W>AwpnaCg&REidJ#YifnLrMdc;k7@R3Q5mFu5m3$z6dx3SV4`kI6xBD#*sPcCrp0 z8btX1h6tpkwO!9k5uBNK{;&fCeX%voM#6n4DgB-cY;8jh{vTN+rZx^^?xdo z331^A9%ql56I7iC#2P`xq>9)x1zD=y=0k95F#)#GH!~LyS|>zQ&v(Fs&ZD(cB>XYu3iQ6UFKc zmKKYt9mDJK3QLm2lNev`lXWw!bdG?km*pzE1GU1}bJ&I@y%ts-sK+oWqru|Uq9X=O3f+`y2o+&N)Fyh=>N1CXj?Nz6$06C|8#$4SB<1n= z_Tm+v*MfcqJPyj^Rv7e~C>+pdx3)Br!^Vgv$JTd=(_~F|4`Y@U*}C*b!_= zjcen_9g1uv)oL0ajBHUtpnsq*Bo}fB-^3kF!cdE$D{37ZN$hra|6Wcmr9dn^1-KuJ z3+aLrAA(1OSGweJ=0e|W`S6Udt1G9C7nLNlhw*X`j74#fA1nX9j>|;qF;|&9pAIqK zEQ3>sPuXN!blAX>p7p3-$BdgxZ-R=}6A_zXsLWK_+vVT#4_V)PosbX8C{zU=W zXHhxoSIO6(5uklJtA892+cNf_7odH44!%9MfcoI&Qo}@|ozy2RW z(b%UFv~L5r=VSl#DSz?U{CDgt-<%D&ZD{^kgb~BgAFHtA1@ftT`;;)^h=7yS53hP9 zFqnXT24N%-^m_p#jMDJ0;w}6!0$*!I_c>tvfSQi~_vsS=|B=4#F>H_XMxU;r?}+g; z#Q4Qgct?!?X2ghKG(?feGcCL$#&^W{*NjwuTVg&zjDN8v7Jq@BMXqlEBmM?3QuOP^ zZ}qUy6E=Rt7oRKXJ70X~i|>4qdFP8ipD*%zo}AYBCG7hHz9_)+v*>m9@-Bz?qyk;y za5lE0*XxI(SEz^_clLEZX9~&-n4q7)`2_kygdi=^lA)A^;Q`BzWC0-i)-Z~lfctlz zAocw&*)8zWk$>@2pjU9%AMs1!50;E$_^A8T9doLKhuf03Wb4?H@B>JN5VaI zsjS9^vgZ?bjQ!=@D-#9xMo(V{F)C-#0D@aioVmetw|{`?j_>%%m&A)qyGhfa=Npt< zp?iz8_0D+$Mt%l0c-i?yuY0hdG?$|j`?vpOVC`CcrrDJ-1Ac9JXR7<{;f zS)#7ph=0`6HTC2L49BCK6cU!jeuoNpH|AA=O!Ayv6m-R}jXNUR&8Ldk9tlq#09G^4 zykQ@t&flgD+vi4kh(*WKdx}l#i?*Y(2tsv_7koA)z$TytU>B7#%ZR*6!@U&S6F#nk zKM`^)ls-8`*F6^8G2G z3S~>?DzK+*`D$qjzl+)aQ0ax z*hjdvqWa=Gy^5Q=h3EXlZ{u3*2V}hAfp6+5r7g;KFCW0xg9Rxf@v>kOT!mIWne2?L z%zqhGqjNY5dZLM;$Y*+qrJM+-Bd|xmacGcIb*&~M9!pQ!yD2o!W?5lE<{&eT~6SneqHuIJ<3lrbkP z@fkL8p(9NSm&52?QfdP4_THOqPO>oBD>y1)T4}TcP zH9IK>i;(x-X@}JHZ5tRC&UG*LdF(kmqr(N|(5_wEZ zhX2ug5yj}AB4B(xe1E%H-{*J{!GB=vsYCpJ{o;p0-ajW`d<-pt;50)2UcLK{7k|f# zpNzu0g7JR@Uc^b7<1hk$$BXZH@dx0=4=cdb+$*t`8>-xp# zO8U+h-}&M@Uu53-;?L)cTn|-o{HOGbPrmpp9Dee}XW=j&iLG$8ucv}_uYcaA%BrCA z4nA6Uq`O^n+C?<$5YY5hJ83rUW!@<&*AfWIHLAcly~Ky!KJU$Rwt;FV6h}T8lWvm0 ze#CQfo7jfq-t}}?$oSq6A}(ZQN`e6Kcy872X^TDroCMon61peOf!hN9)!(O-ddp0S zdYrH--tL;Kn?!uF`d2_9MSq*Pyv2EZCq%f(Wj48Eb%;x5HQaZpLs@nc?VTN=#Km|$ zn68d{RyRjlG))X>rdX3K2v56VRBRL5ksE#Vo!!NS?Hse0;*#C?Pjm^fr^Y}V!J@J;CMxz6IE%RgG}^5e2liqp=y*^l ztd*l}V&Bft#VMO0pUKghCqC3z2deb-WT+Nz4_pucNMqo}lYcLIPNT9VAPECDcBrYL zQ6b)L=RRi=N<%c{74V4{ueubGa9LytrV6Bg0+Re`$Y|0|9=o>sfbRzQTRD-toVCX|zu3;_ee+%c zKWUz)J)7qV%74>s_9n-;gehhN9c@!ES=Vx1EK#|~ve4ggQ6AElez8O~F2qP3@3-RX z_IkF~rs2y@Mq7yi9Edr=DG9+`i{%`)UVIWjA>3C%PzpB3{1P`_l=a`5^c`n5ArM-0Xk{r&Wf16CDz2qLm zg&Ljiq{$ZT0hR320%?E@^RLp_SHQQHvwziXb{mv8ma~7=ZFZw~Z!BlO>Ncy+PSm!| z^Cj{Pw}06!;2X=?Z@SH@jxZ3`<~IBKmY=)LZnxg^6Tej9{$;mW^J%-m{O&gU_w&X7 zgk9x7oG(%+Oi(|PFA^||Ff0Lm!WUtIzzK*#e=uKs*)RMQz=%AqA^x4V9XLijy*Hj{ zi+)VduQmw8DRS!&_&Z_T-g*icU;Z6`fEWn~Cx4O0mKOhqHweVB4TXJ&VaIcfuwTar z-Nxv>Kj3?R!2dop_oe=TI4zJoNq%5+|Bn8EDD@e}gNdyn;D`2r(54Oi0P@IR;E$a% zpf7a=d@W<|aPJ-Ny~91`9q#=N#mV~pfW+Yo?g`%q_wJzrxXK{7t>8J=4Ov`vDiQ%E z?0>s6&{c3qsNg)@69=02Zfb*msV8ea=Ty{Xs7Y8muW_1MMO#X`Gf%i@B#*oX_G6aI zoAYJWs$nG|VR}8fDMuA^1k)hTkD%b_ueN}<9V_gIXIsFw!qwapgG+y4hPu4WnxZ*u zqC2R@P1V2lgVStPJbc|615LaPsgrn@vthnZZUPoMvGkdD*GOc zG)NQ~aH!!PXfP6hB@-{|8<@J1ggaH)3+|Cn6Wv2oJ9ObnUe;?X?h}!@KQ8i0owB%% zJj~TNrUuSgjLlTPkn~i8x8x^fsj;xWCokn)ZLc|CiVN02hkra0 z_Zq4#jv6>hQW553js|$eswSkPCs1u~f#t#p0_EY{YlcP?$+QfP^Y?MvAC!SoT zv$WU=55yNj+jrun@3CnuYa72TAXi-kmG{(LbTEp6h<6m=!F%k2Y<&yI&gM^s=$!{W zx^p4ytekN~nwX3lryWyUcY!l)DSwqo5+u!5%3;AKi$&S_QX963M@MTi9ij|s??Wvy zHs&g9IYdidXP+K)_kO_T>5SzOJoMhO2G|ie+f0@9_+!j$cE{bLlfvDLSkz0nxTFm~ z^5^i{+tb!B4(#K6g^ZvOH79gfW=SZ6yD9bzpBl0XF}X7abs#aUYJ?qrmw&u2*-xv8 z@)Nac2IT2DZ2?uOV)|_pv92aYp;%)N_d7}hc3x|<%P(D3V>3RpD-X+sFHg$>hmyNr z=J}3Gy-Nc1=AC8Il0o-&Crb&yXIZ!DC0&9BoAEk7Z?~@r1{>R=Li$B!zS$XY%ZI{Z z-L_ThB^W%B-cvC6*su2XxqrHKXZ3`+m);xh`s}z4RaPp>1%PEfmYP@y*CW;&M|r%r zqqr>rIN-^Gq~gALvW?NtV|~50utKID#O#2luZLt z!W%AX#8mh_m?)b`$lZ|1q_aFF>FyW*=(@{-&hFwZ-NBQSO!Q751b_Tn3tdIPR&{SPPJBbD5S*FPY@K}sqd@2`t;K{7svb>FS{Y9YnmgT(y{#Bs&mgT(yeii63t7t{->G=|} zZRTr0?=8#Qrp-5jo`1lDl9fGQaL>kwUjTa38TPV z2K@w4Bq5gl`Ot4@J0sIzDD|0i{Nz1UCB4NCmjdA(rBuUxJdA7?N;ekUH1 zqBuO|KOd|hg~#TU8H)HB;LOy+SAUocce&Z z2uuElf

@Ru2DAVIqQJ7$$rM4jBx6mJu>U1x zB1)4_xbf$di3oyG5KQ6JKho{@U$FQ6WMF=-Sn=K7_ubz29bbM+S%^R)OXC>zfnNSh zdtdTN9p5ra{C^kZcSiZFbN)zZ_(dDv*An>-CEuasJCtPJq2%9SRWd@?BXoS$zKPf$ z*!a@3unKy9$%`B-mvtg0BAp$BUNeS{XQE_{r^BVRt~>r9_5KXtxqr1`f^N-{vvW?A<%W5=NpthP zqjF7*GO&(M;fM&~S-CR--Xrs42UphjRJ^EYx93l6f4@bB&(um+VcNOb3XrW>M8~%9 z@Sxr^Yna(_V-r?X>DErXk7>N*=RH9%#jyG{Dk*>-0e#BGnzM>|19IcV*JJDqEQGSZ zZ^^+t34f_$79l%8GbF{J=Uv=NPFWk5Ng#`y6CHBl_NiBSaB$X)%Vnt} z0_Y2BKkJXD7GI&x^EI#s=dhi!Y+gydJBDcEVt*5hCzpC)V!S)+xxA{ouD`#li)f|(?yzpEO{=JlgP>p6T6?4xz*_86dkqKPA_TA8 zw@a_%YFL?%z`b&o4$N6y+Uay9S@|3jj7Xl?ns$j&B_GrM74VAE>X9ijW!5yzR9uw3 z$bSI4FpmwBbiL&u16_C{tghnWKxT-o+)zf;5X#6iAmuDEdtC8@VeiMnDzuaI-U zR=Q9nBc^~g+3KKixJG6+wq`YCb43a2Kn@v{k2x%*br;>&Qwt-_&CR8IWF2Gd5F`f7 zTiZ2U+I=dv1~@Y5UO^9eyb}h97%#$wbbpZ54+I-j)BS?59aMDDQ6q)0Bn6*JZgeJh zNB$Nl2RoXR)lD}E<9>{q!m`lvHq^(kma{n|`XLYxPw@C#VXZEF1c^kQo08xYNW^Zp z-WMuJ^^$_kM}D-=Cauhh315$=6ESkoPUuUIDO#+(xkWZ0>10CSsk&EKj7Dp{6@Skj zg9tUO(U_uX3?n_Z0U$k@>6N)GI6TZ*YAcVdJJqsSCA!jt;b42O$oxSAVkxhFRHTJ_QWEFYZ^6w|H$O&Nk%fdz6Otk|`At znLA;)T>OQ(IC6?>Hg*|K3nm6TaLt-m!2Efge^6EPb`Af6ZSSW+Uje_vw)cyf{R;uV z$F`R}Fnukeuj%-CRr40`dFaV^RW(EJw!MG3=odoKAIjEXj-?>k9Y<~@BX^0`& z7gYU`w!Jis(m#i-VJHrNuWbqXf@Lp9*e5Of8eDq;w3lt~rp0^GwI}|0(KUobp+8dP zkr0hw2nAvPa8Vu%eUOWN2WR`@Aic}--er0JeO&8{vOI{y2!f^meX=|le|G143%uZ8 z&^PWNFU{U>j=gUcc`)@wMStFF4SR=Q@9^s#elhRx>u)Hx6)If-H=o{T8>Vl-FMTwn zRd7)+?<}~?uGHn?a%^!bc6N8^w%wz`$RkphL&^DITuxCdf_X?$OcU(Abbs{o`~v%it!%{`Uqrbl!FS`&gIHr)E$#9&k+dQmx#aIQgpUUZz=rnthSb#rg-Ip@9Wnx5$b zDAdjOLGi9lEb_fpz(<#cR#o>=f`v~-TtxU8r% z205d0Ev_?X_l3z=?8({V_+aeqsI3%zAztz5v(LQEe+bRD6=(>H}zHd|GJ@>xv9=+cK zyC@2werN?MPLhJi5}$UsLwO2fA35L$!!86NA(HqRu>mPwe9P3>D8MvFD1gY_it}zLH_T zm&^M%6}5c|S6`LOqyAM18}-vyejLc>dA2Zueh&2z;+K{jZ=v~};k`4wcZPR(XLx^u zB}WU$+tGc!r)GaBt5zWg!_u?P!YsC9+xC(c_nGuL?YW_G=IDF zP+#;Z3@kAUi~5Sjn<0+@SvkN*pO&r0E+Muc`=s6=uvgw1tWT0rxromck1oks1}$bF zCHv81oeGjpW6s9@B86SNT^>GaUL3ry5{ zj$%t)XHsTSo{4DJ)A44lB{rSnwSVAq$c{v$;(>H~?tu%+fjcrx#!Iv`#)fdP9^K*VtkqnSa~Tsh)$m zma)RAlk21JS}JnJ#zp>6C9r@VvT$enphKW-XmV6+&vdrc`KXPJtntIbEkhUe-~kQL z+h&)w=_8}n*^;xIPPU`Sr^XY`wyz{R>QEI}XeXtKS9tQ8D{2M6jF4wONHM@_=g^Ig z#<7@mCs3mfTV?CWK5QPXUw>8c>`Q3Mc7KS2_HeJ{9cU4L&2}AC$rqVG?#z~)Iex~E z;+%@`+%IUM4je`0QN*;UdL?g??PUCokxIqRQj~^ja5e3!C|gzC%e@&V6Ci`kL(Uhp zfNWB4aUB9q_rUJRs^f}nMWPs+uGM8a+oZ zJm5D+ByX`zFGN)OO0Pyr^SDtl2Iwupo`7snj=fcng&vdfD zK&FM?aF_i`q$cx8q&&A=htErseNzjh-l)f$K5d7B=~V(H6}I%X;au2ek9?O)7JnBq z=&S|fSv5@z**(WGYjM4qb z2Wk;2Inx2EFCm~p^&E?HP8wntt2C#Bv|N`aW@~s1tmQi9nkN}a5$Th9EbO-iMd>Oc z10N^X1*Ps`Yae@?FX`t7@OsQaHy3+EEYU1%>0X5CS|g`=#D8G@D&N{B_3q1=UO9^^ z>S-}I8f^ug3L`p^HYFa%%TP^#KwC#6c*c|Shthc8tBUtwJ^a@) zX+KX-eQWSv&7}Q2iT0Nb>NVD@SO4{LePPDmkxBb`674<@f0;@9jrsTGHGHQk-X52~ znMuo1-!F~#Cx3X|A1R6Vk3W|F!|UylF#QsU{W#hQJ@?cENkL!JP7J~@j>g`o)(@<= zhfyf}mq`0)nxOw6?L-LtdHpHcNg=Nv{GG59#xa^A5#)6uf2W3{pMqBW0%f39JN__<~jkM*5&{^yX+Poe57(tk<+izNl|ms0UF&Po16ed3%n zy;IL$;hb+l`JHpVbIy0pd3fiXe?#>^-w#~l@;VLwCg*(YoU{DMIY-K9T3^bnqHCpzsD(lk1*b*l19te1N zjPi7wr+04d(gNM~Oa@v9jOJ{o1sp#pe6 zOI3Ew@;en0z-6ytGECp@`ti0q;N>{kT zq_z}TpITJ7s*3o0GU5g-aPI7%FJ@6GY`7z}{C_zGSM{cMXp-M_DLD)`A9D}#T{taw zZ#qPMUwSk$h(N%T*&F6$9WV#|v^s;=hE9Adzq)+v@XPhB!J}-T#0zs`u?kN-Ti$Yh zp2QU)hX}jJClek)k0#N4t~G4xL%?J~);`=>(}Q(sRr%{U8MhUm`fg9*3=SgHwJ%$c zIe(tvg&e9F)0PG0EU2s+S1Omw6(50^jG--Zs>sU6i!N^ZU0|#MD~i~=2pJ7q^JMG= z6RWtpZKO*jCYqc)RE#RhD#4nRk3tuy0vi(zW%Z7#PVEm-jEUZp}yg_EkGWY#(Q5ULVmOW`O5v{ zY*EH6sP>){nmwretUkwr$cORS_evp2QeDj8t*k5LYCr0GYhSwu0F-n+8Q8{gTZPIf zAdsrA`r}=S`qGdY_+UqG4LaeJgMSISgqd2L?q`>l1Y_Q=A|iNoKsas0-7J~H;V^SO zhh0^sO)ZDd0uf7-MR5GPb|cwNMT^AS*F)eU520TLPk;0lDI%7c zXUL#SjYrY1M@3uN-kEUFIYXbvoL^MR+o7Kla{5Vm1ESa~6PkH3x^G;PM8NlW1f4tldNEF#`1$9)$2bWLf#K&r@_!w1egkoSdl=pk z=iiAq37Vt@hGYNwi1HWxjqDv|{^y{~PZ8-0lnK8D$bSK4669Of^=B*--ErlIx`Xsj zuQctCC=>q){~Be!#ol+6`HnK*QRd+tW&RD4O+Tdg`ZE6s$tE>eP{tI6$x2;*`e1~@ z-<$zFhCS;=7~P3^N`Df!3}T@1WrRXk%S}&i+jSB-D*1#m#T6nhU!u%x-t)NG;22a@ zH8nk3fZrqrGMUtv_cK{zVT6H!`m%U zYW0zU7g6+w_6EH*$XC5C6)M@&grGJp$+FBX$JEx~d%;XFW?U;WMcplGGkY{+{zPVq ztslWWaX`8nQ7X$hf|8o%RP3--=kp0FK-ZkHpx0GFIf_!QYo&X|v~?AV^&ucIFrf?> zpSDCHkm+tr^M8Fl9qt#}F4P-yj1)+v#)#M(Y(;~4$c<-><8V|pH6c&6&c*R{h90M& z6N*!O@e+HgbyQOk`1w6N_}F)?Duw*LZ3RI>dU@%GGM9J#;)BYaV~vb>jP?{uwkjHs zce02kjIvrNsua$ui~8)~Y9N|-=ROKy)imb_rkkpxGJoeBYfJ607FG#+a=mou`gAO6 zOE0?vcv*12I`SC8Ve=>?K_abKi{mVW+@is+LDmrS!%62yN7ETFMXeM(33@2I_r-?y ziCrGaN5!N*?InuIj4tTmVJ&YExzI#+&Z8BGT))0n%&l1YK20d=PbtYF+9u z970iceSd)5k@{IBW#vR7Jf0*4aEC@fTy-Y&t|N@GEs+fycQu1UrvjDC-K1HLva#}~ z8g@uBksoyr3@M}=Z)9>uncqpbM)Z|=t`2WY;cul|8_x-AFxHNPNlXEKuVOXwadL^X z7)gzkWmzIt=ota#O~hMTB;`muM;@?kZ5-tJbAR{ooVgF(<_aEeb@qA^4~E?Bj6MuY zlRDQ+T&rj4Zfa(oB#z3X%%gD1B@wm;0wMF+t+$Z1*4y1}L~V$Hl2a~1OP$$g)Ev^Z zW{5c7LqPaSx0Y(fvl7n=PNx>03MPDzsS@}{VlrhfQ*c!5Y_CX3cS(6`I$_;+ zV1M26j?L>SAz)^*8=*j<0}IxmalUi^ zVJH(3C*}mlKNe+vbN+pCvCF>~%KS$hJbw_f+*|*;2O;XkwmI~#@4HP;d`0NKWGf|%>nvRJow!h27EV$ zdB?GT0LKypLkK7b|MkW&C_?^(d`W2EUVq4`r{COQKJZ!WE&u-KLYXLxLMTb3*MIN0 z#k`{DJGp%)x9{Zk@J??32DcarkPb`odQY5x!!719iYsrVA?TzKOKIeYL|lSQ5;2(K zeb4JQee^<~Wz|g&#bC?=sdyx9qJDv&-LP{z1*B1E zn!|G7IU<-U_^#E9A>_nSt7A*5$$!|;$wp|mhpC514u((Uhmw*^h7$njTCkVm=$k=+ zdrcJr);P}{V`beVnB^%7!pmMDjtdn}&!-x&mVQ2Y?!inG40v2S!s>GtC^20yt%719 z!xIo*B0Rf8sd#ZMGV*oT@0Vzp5su~^TifR$rKt?jV1hXXI%otJ86XeYynlE{y-{Bl z)-5y76?_D&EjSC2THwBNPq@jz&s3_MX)IBsDBlbSE~s7aSlmRVK@B+enc)`FH3XJ- ztEru}Cy#8OTJV|+7PTIZjDBq~L641<#{dnBZ%`@$_xKWN)cO7xf)(D$E&aMix$;AB7)6iw(C|}z9 zaK77Tl3z~u;dCmnqTZ}HFRb=fJcBnZqqWc6>bbGpBMdA~Z!EViz|m5j6WQ{4gyGBf zcFi=1nfP_5-wQ(6WU}5m=%$@-w>q7>;c8+OG|<^RGO;|LN50|2=YK<%y5N|!r!ZVK z$z303@ew23BTZa%9R_kf?+nfn8 zM4W31ITv-=K&8meeSZ(ec^w`xQ7QZ$)`Q#4C>!TUAtt_~-~|%lX*f9DWjyz1d+_~R z9rtM;0GNuC>7BmdR)~LTwfq(3oi9g>)1{wXI^^F*y?a!93utC@*SZ`QJK4zZbC;_I zE0`{fADG>KnNUdk*7hYPlcG9%sM)pfle`w6QsLl1^Q5sg5suNHnMc< zj(ME39xr0V@qRVe25w~AY@qPr^+~_$Zf7Jj^dp7Yv`h8_K&~Ttya6aer79t5WV%`4 zc~;gCG%0lgTYu&l_t{l3ZdM!J~uKE3M$uUlvsaW>&EjQn;uBl0X z$Uz2s&h?-B@Ef@I-A3kjR@TH|8u^ht4rK+FC)pQ-{ePUtVH}Q89Q(s_%~1j;kY5!{ z{#hPJVb2Kjhlt$k@b)pu8AebF`JNDygkI{vPe_iy$PW(9ziH1*5->*MpA?w?O#2uV zdUo#%^#5)c_Z%De#qmCl4Y^bGclVfg_n3c#dkli{IF3Uf#EAbL?lCBa{zSf{h@Tgm zM1I1427hA+_C*ply?^>=H1>bc=TlF?_(wMOrIpNE9D65Y?_}(qj2+&|*xz6!~Q4DNnx7ufT;y>W811YT!W9AM)72nEud`o<8AhM z^Y9=O8uE!1toHP5<}E$DLWD^@0rsW`s6a}Arcn&lfyKh5{@Ht_XEXjT{c6d!z6boH z(&4RH!)> zyJ8UGhnZp4LbK-M4Bg@OZg#i_W-Ji5gA1(NdPuf{l~c=z6)e3BOnY@G#k`2eIXRsU z%GBNEs55uoR)GLj_bqL@QNXyt1jU%wVzm_mqaLnVx_?UX zsV)FV$nS;44kF8PlqsX?jm)IT*W8-L)Pn@lDAA+?x1 z{Ms7G8F$8Se_xt5xHA)bP-jkxCQDhkfHg-&fDgA*Sn=z@FmB^=NSY;tmZTz^GZ2w)0yF|a&_8IK zjFS-h5qRwf>~Hg~U#YG5=BWJZ%nL&Z48o94mdWo~$Di5Ad^rR#{a1?2cDdJcTB^-; ze~@CA9Q-|v_}^N$_9?!6l}7yPh=0lZ<&9i@f^pbS zuQxs!zkCkk&^OK67k}Q(uQ>V++}?rPJ8(O^1Gm2+iTE1SqZz)rem1`j+_cBYZ@iH@ zX>nXv5Q1RVpu478TlwOfdyZQuy9oBE7o;qesp3h*wcZb^?yq#LedGPVJIzHv9Dc% z_xY@lPd%`_xvx+~3Wqz^U!w%e<{BgY*A!oy0ZHzjHttS!H zNZ7nJJrz36nS*7~af-1E8zpeI@~8(J(jqev_VaP=0R>a(jJ}AnzbDPzbDTq?BfoN8 zbB3f~@pZ-Se1C{K=c!x07-)~dB{8T#f`0>tKp&@y0Ia(_8bo7gdT?-dL!*mU zEFKtAO>!kDyQS|{2)-V@@5#=%`>8lQ-aI&dkzBm5hhNFgR_JHh8I^4pDPmaIg38cn zS2@QH7Zz>|cTJKr-%z(oMmY~W50X+60=f60Ze3HGz&vJII2@|ER1OZ3;3e0G*(4eT zcz+>&$iKROv;mnxi3ePJ5%*WpDNBA*|Bo(?{V>fQn4x1C$w0ptG^ zz({ZifwI`&P&)S=F#e|l#!n&UE5L~SV9OO4`b_QjmF3De0OKo^z5~X0!1xXr5AT5S zZ&38PqEaEjt4iT-0mfIA!u3OyLVt*hE7Emx@ebWJp;t80XUS+FB_d!#W!mgg1fI%OysZ^@NqRTbaq`G4G)$y1k& z**?l>&~|FxT`wCVELmd7_h>*fSUeZgg22&<)(XV2E>+l&p;MNeYhLl*jXb|^)VaQf zU2H?>$N8#6rfeh3a^41Tj;$cqH-r=g zx>V(f^G&({x=k92%{l9bk-eJ*XmU1o?stjcz19S^?{Jv%ozoQn$D7Oa#$}9pF)n4T z3L@H4f#rHjxrdX7L~y=Zv+|IZo(BYUV1m^bWX%un7PH&xptM1a#eb!qi;eMul3ml| zc-1yBHHFM`&NK`5^(Ga*e>gO_H}n`;2>*3k^0RzY5XVc8JWDMFiecq|>^jkUk$S zz6=a0LPi~6MZ+ma!vIZ4YVPcfQ6}2$ zk%Hagl3&;3^}w7+nLSwj4r!4COx6$PHhI~#?(9JMBBk;xvwvwG?jAv%zFx2|f!X0p zv*`~k>z9txKbuX9v+=k*8krUJ#W^2}%n=qXJe@GQxDjVRiqEM^ESYX=-j%|3-6q^> zsNc{x@}RYqN;#}-5XcD+xrCl>K-}}(|7Y*amK?Q~aQ!OhUJ(}aaC0IUg_y();#@I< zgh0&0(;rE+hkq_tx82)q?`^xd=}?uFCDvNxg0KJllk>ao%I>E>Se3iu@p!~aC#_X_wW3&a0J;kO0+f`#E{ z3ctKS``gRCF!-9n?-lS%7KU$wT5bd0;uqllg2Ip85a^dI4BuDy0bg-1{EGnN-{Gn9 z-wqgI1b_Ih@_hZ1kPmR^O+f!GVTHO8Z`25yJ>@VLthax%Uhx!VB^ zP$yPXD_n?^un`I1UYuLMgv!bQMCeEgA++y7702QNXPe5MxntI62=0OGfLcT^)dh|i zIe!t&=-EBka$dOg(RV;S+*%PI@zwyn3>cajUMt!FpKzm`=|4oW^A*?CR-4Z|m@y>N<8uN~8Dby&*^vjYcsm#gQ8|BIXtK zXj0+O8X*Y~F|o)%Hc~~3Q1*V_pVP`)Lw_};6;|J^h58D}35w^=rLw=qq|c8Ol*1I) z_uPrW+ufj*sBTYa$iyD7HrO=ZVsGsp*K(S(%9WV_^~Sk$aR8F@eBWH)JP=&kp#Xw> zXMBo4k6lxetoR6*7k9rUUkvugpzPo8jj~;OzeB#LKQ@hm*Je(p3td0VaUzQ~ zdAUeJ7!q2fNMM#!@nHk|2{MAH2%nMpg6nj%+;oX{sPt7o{A}~Qr|z6}41c=lytR3D z#Z)j5PYkWg3otf@9qAVie%24a0_No^xk6f7{=!q|GUfn(T+i;!(v;P+s>C@k%GPP$bXU=-%ZXk4SZBASB(%#_SZeO|K@bD>aoYDU%xM1e0TkQ zcCg#6$ls4H{tX@~|K)TMCjjKT(nSEpNE{`JxAH}j1vrNI-gFTmNE8D96gNNwgTK`c z5CSm#lW>kCG4e}hfS+LEFZm+$I5zzv1S3Cv@JoOZ0%3x9#E0R3xqmAlifkn88(aY) z0D+00=jb(9AEtmGrhxxEGWVV-Ajl&q2}AgQ(G+BzV{j+W*S9w|HnummZQHhO>l@p) z?QCq@w(X6bJo)|am(QE2uBn>p>2uC>_4GM?ed725{M-86aUaDL1aBY@Fma*Z{NA?E z;=ng;K;2LE2<^`T&%CF2j{?tM-tA(98pYMyQe2}x*jt%1BiYlF;E9;ByS8xQE*)?c zSWh3oqS%`=7xpb$0D;L)Nxn89!OBk6bI#qkxk?8@$1<);4wQORn`E0YA=dI3v^l#B z8pNj7*Sf!5-jvrG#`?dd3B)f8)wT1ym2ge3-F@b|G=h2Ox)2>$+s&+<5jfr`%d~P& zb=k4f104sqz2#fCL@w5R1DWKE7 zw-UdLSx8lhi|5`R%%A_r{T?{e%?5uu)E01P#&0{;$dWFsmRBvF!%c@g7;DD}SCDm6 z|I4NoQNsWf+3a$v7uZGu&sk7+eTmu*&a7tUowY|ShfV46=of_{QbBs*2rVLA2;qXe z)`3`uq={SV^0P`*UMrqufNWvNy36#qy%4%lU1n(LWX$MrC#`lS%QM5Qry^6n(!x~R z4F5GF=qCSrqx(qd%#^m}?Ml8XwlstQcGOfU>@TK|{qezxER|^*lNy7KO&?L@rc3Ggj+{lf7;eq+JuB}e3sUE9oAyln@Nq=gwrfG<1mRh@>W$2n^@ zk^`7d0sC1~Ojz3cRMNl(<(JqDJ7XRMVr$lfyKoorIt7G<49=|1(6)-B2fisNQXzUb zgC^X6m}^#FY=vsZAk{0yKK@=@Yl-nw_orSzvjcYn|6r$mIe{IsATrM-@u5M0IWBn} z{tfMIX`@l_U@)#Lbx@@`im!kmQWtRGMvJ!F0ahAa61)0y4v#y%z^Y;m371hSD1kv4 zSQ2uU1(GneTr3mNoGqvcNuT)VB`BF@hW9i=C?O&&Bw}E)tP48jQ0ulu^)-@g)=*HV zD+H}@_ifn+(sQPV4P_~(*h14c?ae5wf_ z=!QSRe$J46lh3{XncP_Z;ct50TzcLhcP%JrL&dq5cpW@*{+Ply`t+&-d9Fgw1ymRS z_45EA^YrY73mAzmBb^_Yzq1;1uaNZs@3BQQ z$WLB3-dP9V#p8Khm=a0cjH2&vcBM0JQwS~xJ1Sc*3#^Z#TVWpz^byvG4^Gr?C=A_N zJa7hlzh+W%U4%WZNAY1F0{wmI<}j=P;Cn9ic{xeCM!)KnQ}cF9Q^WA9zva$2(tnWujE7h>~VEU4O0 zSTrCzemb4HKN2@~HB0Sd`lU_}7|sIYrjb3BnVfQT{5yQ=s2ES}3JzFDnmU7uofKPf z!C*|uL8)l{2?M)M?#FY|0rXG2JGl#)&Ce=XMUH61F)NzX&CA_nwD|spH(1E~Eo8x| z!2=9@F0y zO1$&ntRlz+`&%@Eiyk2w$mDiSUesn}qKP^|V!c@FEwhslC(i0}YB{W2MdU;?drU~o zr3yPg3`R>@s%xZhAhH4o{C;eMly~S<(C*vhgz!2nhF|uO2n7HeoS|hlE9=vZb}wD#P`7_{By zShHBHVeBSG6uSo444khaKzM*ZTTg_`0s3=piqvk~a4FPma0M|(^5jjq?=YxW2#n>R zJX%y?pepj`l}f30wT+ho{hXIRP47~11k0<)KjC-g^INQpye`nrj1R1_Pz%s0bzDCq@Q=0N&z~R`|m#8jU8NtWu@z z9&R+_?ZKP7Gu=c#XTTWojmLK4yE%Ud-|61(`S~}gCXLd&*YgJZP(>C!r}~Pt1Mbdk z<3o6POzElh%gv7IwYI+-T^ptIJy65z>WgCjr(8l?WgS&=)S!0MZS+R#9;^P zZYMVjO1}d>iHmSh#W=^jHUY6_dWQ@Hs}LI> zNE;-(_@zMJIQZ80wWgVnu>!D>JPW;i`a=2RMOWpg@vITPufMXsae80xZ6Cqy3jnb8 zg1-O{Ah%Tguk)T?wu7(h8GMK*5c?neS&Khc7~`Ck6jbyRjls|Au*6eU*}17g0WQNT zGwdPAYt#U)?(k5-T97;5rh@?zozy(bAX|kGmpMV4sc=aM+t>d3*atgJp;|ONWR_sK zcRYIJgTDkr!xike%R6OGR;o?u8f6uI9RPkFf-QMQYpshV0R{wx0!iD{<@+U8ByjmO zu&feM=D$*lO9Qy9NFy_&1KH&)GS|FA^v%)!>h;wx8gv&KV_=v;27GZWod=(Jm zUh6&5j_VmcwM>aGD@60Ty1JI|%nfLa+P)&~D8>|q9^CFwL7~w~8C*Z$xu+&+CJNMQ zZi{uqrP)1QVzB1yfa({6mpc)oo#?$DKGaMXesm03nrP#2g^;JX#DIUU(M0q9RK^~)_XyX(>18k*RcT)9 z`&m(sL5ETo&LRiqBW3(k*#Y1`+cSc%>Yglpl8ra#7e7}K$VD>zHn{V?%|SghqmBDT z&WD!yCGL}{?An8aA`GM=ADprb5n_~r8ZLc9si8zTcRDou8)9`W_H2*y#+^}N%<^oH zs10)2--bmrTJw#XP#Dp+bP@qLywrPuny6)+P}@YsH}kLtQ?4?*6aruXaGI3@!M&L# zsV8;1ZGDraslX_@Ot|8pz)j6iJ|0(Ly}H6e(L}B#xE)18+Zc{tkd_dFA_Y29>1LeE zsQg{T0OS1NT2?Pt+|k6#nhl0I;S=KMHoPH2v7lPi*4B`rhO%NWTUC4821KyJt4Ub% zj^h&F`$*}WMaH2)F9qmu9x>E-m=VmnF}t1t@nzaK?yxGt-Ik2x<09F&3u6C1k}LXt zTDQY-e^UR7Y1;V}>p*_5+6Sdb9o{hdY#SAwM-mYS5WRY?%=(A@C+inzSL+dSodCP2 ze$S3J(nwA#;m1Q_t&uG7$k@n=P&mT)EBukSG;k0xpB!+Mk33+yC&MuScG&5qLGAY2 z?`-5|gJ-c_4iD<>NqZ5Wuv}-ftD5{JmGtTa#s%~-AC3g9w|L)R z_;@n>F2KM?ehl$b07ZVRN3d9Qf9CC&Gj!e~!LWl;IgpQ_O)(%0JN`TS>NhLMhnX|h33Ozuc2_Jp;zA_QDJH=XD<>E9=sKwF0%tN!rT`a-?@zm!4t;_d_30bNj@X2!WBXh*{XU5n?Acev&l z6=g)R%7V^Jq8rSDodZkmyy3mN<(T{i?iXl`S8K-;w=I(#G_`Q!=Ld0p1xhcIGe4ke z9*PnyUR8iuq$LopCxJf{7koj?Q?+dY`*Z9C$5f@EL>G-ucnQr)XUFT zf2DWch^AuObX+Pt(-03djgbr0ky8CbXh%#Cbje0%BU%Ex7VBVtOeYXi0{lnuTqAE5 z1EFY*1qu8fwFg(NS5e%%OIL)u(-_!<2v;s!YbhX#v6WdE%g;w`2ens`$i7|o4~Rc2 zYoG+O>w%rXDtLRIs07i;u*8IGR@y+YnsbX$LY5b*#=pRNTD7+dCM#d+qlbij68YjZ z+cpuGSaL%xR=3dJxk>*g2Kirv@K>Uc?6*ri*-{;IclK++*KHAY55?+1*rG)G<(Cr! z-SU7xu5R7UWWOH##cxa<*E}mozV=&}*CSyB?}|KQxtgLTEqV`JkJr+l@`!t4d7E((3Bwe`9zSx;ZUCL|V7whlIc_vBI%?Y2l)R!E2JYyH^e z5izfE49*NqEUSr&eT^Ti@Y1Oj$_W%f*MR_9j-%Id$vvvhhoT)Uf>#Em`0YV|6R8OO zWlCo|I|alhwujczdYP6PhU+0|nFSZk9E?p$bf5}uqu#%!N9L+$gq!ys2^#X-cvdAV zJCb7>*NLVMr)#b!D15*gQUp2R=Wb7ecne+c z-U_@+G0M-Cb$1Uh9CEbXT(x%r-CuxDNB$#%Sj!;M07s6=_s8u!`TF+_p&l@h0>*pJD7qkd04eMf26?B%IvDYe%zz3!Zl~8vZ{Z(scTZtDVh|Bz5K>Rw+os=* zRL`p%L^qwD++NeQZ_B`mk*fpf{MScn%kww8_{OX^{p$CbqX*&vJB~3QN6c4R zXSY7F{X733}5=F)_JaBDk}jR7wM zq}Vl|<_`!$XNevQ<^w+P4ChCOT=C=oE-)cJeKnN95oGTrLH zEXG)PB^}4yVe@8Yy*eXIAJI_5ZSB+bOk%vPPoaL?**FY84(JmdD38^#b zeMDatEtkw7ivz=7#a}c`O;HQmJZ`#Jy;Mkoi&t+FQEE!9-Z~oJS*w@YOf7TWytc9y zWKgbtE^;%Q1nmGa^+|1$tAWj=d(0KhH9@=B3lp5Q!UD$&D4sJn|E;2)5rIx*eUGY+ zWAACpAZen9JkT;Cs3Ta?AAm~INCm;aBhO`b4Fl>5`f!glSx6OB3;SUu20WnwsH*50 z=x3KD(it8T;efU|=cly%MX*_w{0a}WnFBLp0UsU{qioU+CbE(#6Uo2_L-1vZ zz8gs`Lo%W`R0WFrz$7eX=O;3gK!E@5&xnPN$=!4g%4c zzl-U%5gNd5&I~A_SYk}fqoqSOn-fayxLd&;xN9gi5|^;J2?oMHQ3e!G?yc~KY z61|nF0ej&}vi$7{X>$&nJLqMfBYV8O$#iGNkrrV3V1uD!-d^%hR6Sv{Z(a)2Mb+C> zmI2k9h1lkV@4u?8(&F?gbCreKIkbg##9(hu?BAd~DICTq#dcFrFfV7FRVU;jSnso( zri#H50?5U4;~>`4#A6LoORIpW^_#-M_4M1_7s!3hd}Pt1lVuMFpYr!vAr4cc0)t*Vk9e<{9JQq+RVYaO%_eL zo)ojar53U>7$yqr%L>}ITNozg?<+6|S~;f*{=Bp)ouLdPOwLwH$Em2}gLxGH97(K*NFBMq>!K5Zi-{qCY&a?N3$K!HGDfB z+S#k^?p~Wy(^{?T*KKDGJg&lEem&z<0F!;=>70*x8Z-0tARlrfU1a1bH;_xQ`4A7N_#T!btjOD&Q(Lj}YP`vjAIcquwP+R6N=BY>eg*WQe zmHvclx~#kppH~=`fE60pCa_@wzZwB{Z-mT)tW1a0qA4F0Qvz}Q^9GXtR1ZlDd!iRQ ziXf1qLw7aif!9+yS?9pD0-3RpKr((T<_>}3VxhN+=ZO9u&D75TSnAC@z3v&OH6YTo$jZ;MsuB9NTC`juZ60{w78fgEgU z7Lg)KO{}au8hM$XTq64h0}+0neCXfqDD|R!8;}l^!J$3@aNlsuIBlB%Z2HA%jZ}f; z$9}K;i2{|iJUmtDAMI{GKr%A0bEnTT_ob!rl4dyUwbxq3b=WRx8A?j@qc6vD$W$jm z<6D=Tr3q;ka31`H91XRgi*`4>Syl1xAzUEQzBy8RVkfzKI{Ucd3jC_#!9{Oe!F>T+ zt+;jto0z5&pzAase{%&&tF3@CgeYaMP@X6UEb$6hWq>;n{)*NkRKOz+64Yw=C?uq7Qr0+RV2mtgO4J zZ=(8n4g6;}L=8?i?v55e(9Ac6B)SUrG9P$mDD2#(d}ZE_xS~>!gI)31{2MXYQMaN4 z19I;O9e-9QYF{IT{315T1>MLz&ZsSPIw;H##a|b9)N2KDZ@+7^c@zdxNciko<(w2X zv|Dr%(4Gc)3;ty&vZDwYc0i&a2C0Wd=v{(LaL&**K*?8aXzVIj`WEG>C%}0S{a6pJ z!4`oDj_H5!FOc|O=<{|>ps!xzz*+~zvGy#T!%m*wOV%NHPib4czRJ>@u(J?6z;mbc zl0JD^Q>(gZNfTSg%0>?H9)@|W+8{aCWnjYsV6&>Oe&2mOW7@yIu53%Zb<_zbvxu{8 z{FTHA&(MQ%G{K}%D7}&ujs7lT)Vdn0*1N2s=~*=8716MSRmplI!_HODW`P`rG>IxF zoY)=jmgO#{?hyuqaYKs(Y`#km=Hh4;jRH66Zd2D#4w;J(?P9cx;0aG*QZr8y36T;6 zpiYgB3D9C{y7N51C22%UXK8ZO_NxG1GN&KU9H*S#kj+(YI%-|9JD{16^44MCOe?o- zHu{m(X3k?bH^0%3VcbS5yN)yqe12C`66-tb`Z!objA&;=>CtCkNBG@~K`hIlWh zltqm#*wASG^-~L10)iTd6}=U=%ptD>C{P)0?d(8*NG}FKNX4L-cMz&RhQxCFR;&JuxdZrm8uW_#=^)W+nA513aU>!!U$9 ziz&Y;nabs;-~Kf{Bm^pyXf9htjkgBnYfe&^1t&f;kF<$$0FF!HR8x62H6;-bup`ZI zMQ>la%FGT!$4T>%AEMev_uQh`bH7aqA?Cu-gpDI?DSo1}lSr^e)!sbXo-DtVdRWy2Ds2xWI&iWYaX>e-Pw%d68n2bcL?y@P&+7x5Fe4^&wLW9Ss=+V_-%_%anond`UZ=^}|#$ zDpJbc`)1yW{+vD|j)(yn3{GU25S*X7fPKFtXP-+yBy4Q7sAFO9ndyjG>K4ml#0dyF zmKJu!P|>Ssc8NgTG}sEdye5R_OGQ5Lr7f7SksmX_Tz9MBT{pSej*g$9bN`8me$+)K zY<@DHj7K6gU3+VU-}HIJ$pise#{Z6MJ_Y-cytaO=#n8^K3_APoL=MCQJFZHhB!L#V zPCl|t#F~k5V>WmkEx2@1`WcDkdiSDEG?{YG!f5tTl2lY%aI8vc?wABs>`RE>;G{bn zQqeVFRPzb5(lazkv?K@9csmC(#>bTnRjIVYPS&g6+Pn+}M!2v0C|Z;m*KmMc5K4}} zz5Kw1(1uY{Bdi+xMLIQuUYVk2p_gpW951sFs4OpIUq2xi(zkP;tR&XO+Jc`n^ZIY! z!?1x=mS0gUZJ2cOX6Ml9hp?UtZbgAXbj@H7m>4M#Y)b568~*J@`sD zzm#=p@yZ50G#Gqmk)DmS)8T{y?Q zJKF(Qv?ET+ZT0Hgq-L)tbGWDy7^f%gCOwcOI;CkTlJnkSfEFbDU{iR(Q z5LG(dKr;Y5oM{V;x=IX06>og+3zGU#YUebRh{0;0=%FAm3^9gB_cWA10`=s-Nf4MQ zcIo}q`#JRAAB~e^R}Ug(4}NWc`d;xq_8>y~M_PgwG>jc|jF|^P8hTzB|M*^m6eNPb zXc$)hx7!x?+p-KNprYr#z{HZcmWkT=^tylORez=z`ek4v8v6OB-WO2d!i)3}lVlZc zI|BMUFWrr&CGE|tQg^^#Q~kkNFA#CfX4X(}WPt=!S_iVEC9((7PSD?gqoczOA(9= z(_2c>qM9F8chO}_CIeBwgK@S?QW{|BCz!!nd!lC3V+}w^Q>1Irn}>Oe&Q$1H!Vm)@ z>T_+6*|7sGwJ@9&F|()vgWi6kwtuD7UI))5-)l_CQra>hs*@f9ZBa7yor>%ducxh( zS<<>19hK+HSey3d@rVb3^;h@6@h0D75cS|2NAC^>ol{{M$A@SbH;ErCH=f1Y;ewP= zS*&FVk<7)hHiQjJ$Ddj3yg;chV9|bwcH=|E1GoRRZgwf|QabtrXkRkh_oVG($SWhq za~t*#$J@lX-(E$4Koh#=j$VS;%&Gm+e!^x{k@mtggkoU0!)x2hj6WXvtGgO%(1BmY zMyfxmqt%#iy@W9gbyb=+MI>d@vI=!S0IL6=NVe{N2nc+4qV)-$;^1;rWUqd zqKzYJRge_ET^1h_Ai}TFXlg@h{I&ph6#2KZO}J{L%b7TH>JvIs%fC-Q6kG`7Y@D3M z#?baJh3Hb2;jzt5s_J2$MLN$oZYa!TL~uc&x{IscBtgDri7zV%N+ z-}ioYH)=W26=G-&>=(P0-@LPFQLDu^bE^w{$j7E25ZHb*Ks9cl`=;iPsQ{yQ80ofb zJVYAbSPG278KU_@86Jn|s19fgDOWt=Yub9IRjghDljV*wurSt)*e^a^)`1XMBVq@L z2eVPM>&X(zQB*2_?SOd~191x!ou?>DycP3^eG;grdyd~n*Q^(@#1)HtNgwS1_9(GoYfsI-0pJ zt$QNRhxDvOS28X8C@_CDPkV+oMIi}DRh2%S{W%sZ?Jt>;Pq zYXA~j+XsGHJ?IZ!-3H`rpa1h26L5(d|4AVSGJ5qX~jiX*Qb(XbyqFjH~GV;rST zItKC(ejyeMY$2!%S2`NR@0Y=EL|~|MfQ`!8g^Ff{^od$TV`#ymT4W>G8#$tAemmpX z6cU;4I#q1(`f{?w`8Y|_pl9-6#5}ngHIp3h5PkzAR8-#&(sLz}v|F$aIacmDE41NFCw%zJd`-)8qUR5Ti;8 zG^0W)5D)57^#@2LSweV*-nDufCt(=55K8(}rFgA1WaD@=JHLgKM-<`@E_eVWa8?bw zW|L1!ypT~Js|jO*2O(n-_4d`XRtZ=<*PjViX+X2YaC&2Q6r1Uh$*{(qyoOzBbe}!F z(L&Jnp0TV9loKXsm4rlkHMKVo;AlXDa)=mNI#4&FCh$5aV}$+qPXKToaq^-kt2WrQ z890UQp!@74Eki{r#+>o6gI9T>bCZLfX1>pKu8UIg!`>%J@)9_E zk)qOs5KO2|OG5cDj6kM!Rd>)JY)-X{m>|iv{hdh(O5(9#qIuHUC`Wk<00`{fp zIa9PsC#+wCiaA3Hg86mRAMTp2|O_kmlb4AFG6$coWoeIegK6%L6c7D(O=O=fA$F^u)q8VUB; zm()zKHI;}c8@A=M&-Ci?p5)NAoIC=n#WlXXalDy%HvQyScTZrE&@_3)=GaBsXl)73 zr1{e8LOPh-8%SC-?eO&?rZuG)*eOZ5@Q20J>|N*Zyz`VBRXs$Sj(VTHtIj zQgyi(71(Cpc+=!EXGpFNo=WuRspM)IEwyL~63km1`4dOH$p&~RD&0-m&f;V(3(N!_ zkE}+Pb8?f&T!5274~82e+*E1c3F&X(RT3`cP*S}_nna%7(Itf?G8Ss(I3ih$t66a4 zPfp%U0J^xr%z(HYu$*#3yFtCJnK@QO0k?9`+O_T_Z$%zR6$$C%)3h$4pt@udBIeH& zy>P}%us}QKPa4oj;8@3_KlfGE)Vx0GIuORek`6K;J$ZIyX)2|OygD>a8Qtr`eXOX1 zr(PK}g#ZWdUYCDqlK5;CoP4SxFYko4W{^fwMWq8IM21Yn%t-mDfue=1*>Gm$e^4LuvGH;KD76K1B&sM1gMC_aJ$KoWMq`AVHA364t>#*Uz&sp272f6x!q z8soEjMVNR+{UwVL+!X{Hn$)rEQbY}@{1G-!-N4wcLbmVKnWT{JL>OR0nTEY96a^g_T+Y7YFD0vaMLlyY5qO$CdyT(xBYbw;&*Gje)5 zAb7X2MK4I-E>PyzwE5p09t)Ab0WuKMxu*`gp?|09CSp%H@YtGHhtcS%Ea94=>#3Ef zu-+~87aUTtQLK~)%tdsK;N-+Cyf#iuBdDl8G4VLC@u|&qL2l8Qn>KCMWSE$v5HHOt zNfY<~^0R=ag#3+BG*K){di7j~ckE!92BfOjPoAqovIXetz&J-vI^v=Wcx^kzb&4@a z0^)-M?WJc0R$(;n%rE>3;+zg_^<59g({GG@QYbW4P zXX~%RY(k;1Nf2KnO$WK#Ot``n&YOjfZ3u~Ec{^|=#;d~mEN)bM?!a8PuHR7TZ7O<& zS6~~hxD$BDcZS(zWNnkYIiD_-0?4#X1iB^5$EroLFLgBL2sZhp06#{~rJ^*%n>gzW zSRF9(KD5waoMCshiiIJQ3hH1dqpN@=20%GU#CT4Px1rqz{mF$}&9`!Oa34TkxEfB+ z*Og1kkd%y>RhS$L7I>O{g8$?1Y`{z!SRgfPqGjOG%5-J)6|&X~Y?bW{4LJUxM@HTI z>fuzeP5L6Q#_UA28=26nZv>iR8I)7mS_=bdXiO+3F_$7U;-EcY%v-aIUP;sxDHtSC zMQ$lI;y{Kv8SJE4ty&7(gv*mY~366x8 zcpjxa&o8$p54L1IGSE?Y)VovM*j{XzPAf8LwyhmhXW($y9C4R2+N2LPCk8ZbZooVQ z)PL@?!PSS0 ziIw=QtoDZw?>9EaS=V}vDFT(IwCf++;F>(QM*;;**#Ro38c}F&C0LAO%6+i@T%0(vSinE2X zZ52vSGF4~d2BmL@n^m9c}(?#e2lN-xz*W($h z*y}sl9DZx1L|co7->yDmH6MA(fUV)o&MVpm88)}wx4rqZj?&SbjiM7y;Iz(G=MT7H zt9NhZ(I9gdkU6Ol3`ccOusAkN9!r${Ds|vTKlUx#JojXqP!n6y;uZ1H7#O^geFwrkk2+&2)GpB3LVMtAG(I zeGNs(q*A!FukOFUPwc*C%zD1R_&Q(hzHdp@4gv>c&$DYD&rfo@-R>Jny@2t}BUM1xz?Dkg-mkm+ zU(LBCy4N}Cad)u>t=wHGVe>b`mVnv^+2HYkKwB-mu6JTDdsV>AO({N3H&PIh5!mzw zaRVo(0_sduk?A4FQEkKicR{pVg#*~$(r5N7O31DhU&xr`Pp1sPN~0YY*}A0Ryls=d zojuTp7D)aG*Pm)>_+2RP{CEQ5y6kC5gEe0~9`x@hg!1WhufY75bPT-X0Cb_++8I0xtQULLPgbhyckRxPd$<%(vyyK;pOYoGubn>&-v+<5{qsQ1 z`N|2MAs`K4MWIPPb~%bHA$>3)anoiiZ@$(t@xS+J`6*Av>6Jnv6>+&>e0JRbSF0RRXBT-B7^MgDe>IQgtR0;Ed+2L+%ruiWmhBLEM4(Ou7Z z(CIup?*aH|AbY5zT5N2FHxH|9pJBTZ!4D;ZMOKejcIMh>)4ompzQ$@+iCG{OsJGN6 z*#dRz^y-;*09AOQm0L-jJTHO2r>Qke5K!%WT^VAc| zh#d%nwAS3iRx8hTjRS9k7?&a86I{B28{sXF30s&rcwTXdG>e&ijmKW-a@~B=4v>bR zMVovT25;{4T^)sk$OEe}+Efl5wyOKDtQfwcGym*rI&QE%?YM7kzBdk}Qhx@cbtI%M zu>}Qvtf5IxVv1lz=RA4hVkH8 zxwB$WCo*G(pNyHRTI81g(t7x%ldC%HPERA1?p#rGPI)Y@zz0x8WDs* zyLaKWr#kqs?h3~S-jlmqmS63Unaw#tD=UFgWG zQr*DAGlA?U02Zrf8OKY;;>N~Ek>*M1YJDp9FlYb}f*2t7-?PZ#qn6Tz^pD)r8zJP= zOD;m;+O=1vai3`TvUk9h<<1HDl)rL^KoU^>TU>&yef==H_ecxS2>VlW7P>y)jkxWP z`#-OFfBkq(udj|AVoq?1nHOHW>+7Nia35&54ql^tz>UrON^Roh4GMv9Y}QIp?Gq#|~cLA{!YSWVAcd z=Yhh_;@0DS*QG`U8B@=#BzEUZ(purDxw!e6o)0_B4hgabL6@QJ6p+!e!tTSKwa*;% z4^q?2-SejhjO**x?#xyeFF-xl4dMh~jzoc|#PkL~q3Zx6)=_YZkrzHi0Ox;$x%^)U z)*><^G~g)cmJTmXj4Yk>ysusKygbl&)n0t?P}%ZB5yUF7EaRnOb7Rvl<9r3bjmc9_ z*{kC=y|%Jff1dpWL*LV(1NlthDPl%(t%91R)Vts+ga-g8ORP_+;qAX* z0}Je@j$%aA_|J<=mAT(+2d}`(t2d`{xY~eBJF0qI&lcroSNzC)1S6o4E8(=Ky+;Dz@E5*V5DK;iir z+5e3jQKk+9eyQFQAEK_}NkI{5!T^^nTdK?We7vcPO*jPZGn zw(|>MD3bvS-o+syK=H*+6do3(|NDA$+jcR+2q32xd*8_YR2W`o0Ph`ae4kh7fRC#c z!0Y|a_Z33-%kg&?%%&yp_dk0f2fPr2PPA#fRB~=?Zuow4jR!%Ai&`zw73D7v=`iYX z1`JiXu-M4i)PtYA{7}Dr8uu<<9tn~o=AiJjyzOf!@usWM|2Jr`#6P{&j^z{57@F@| z`S(55EiJ7z-{;9L73C==36;M?NVZQ6br6Lj&Ey)SW4??etg#rEG6ZyYe$=V02}ezF zzW}U3-zK->ccmXN8~1VXCK5~uqKdJnDD_1iGaM&wzCP{mS*|E`CBW*@=qsPefW@4u zm(nGthBi7I?JmpHILZSD&)e5FmHk zQ$B`;OaZ)TYi#wKKxmLrI`>?-?d|XrUwn`$r*OI#quHzA!68PE zAq^3mVz_NEHH^%?i-WHgkn{k_{nkR=U8Jrx;$V)MD)(Te-ze}x%eXB%4#kFVfn*3< z2?l7*^*~6+I25Btz>Z4;U%}WNdOL~?UDAjkt9#Ah0q^8t(X{Gu;DMHmKHG@nKqjn% z4$66moJ2v#6j^MNy2Y00Z-I5fwf{6n?tg`o&o3gkpD1(l-3hysEcODn@+8VXEWZL_ zMmq`{s63Syeg7TiV^c?IpcSkt^kzWovs_odq5GEWeKtAVZ~;CYK8M!?{7MX;Fa1UR zEU?p7q0N7cxgYayEZ)qIm!@4A&*f zHF(cQIFXX6%B^va)IExNmJ9vyUlF>zISHcd$T+H$HYc#>{f&nM^MU=>Qh#pR7wfu&0b*Vqs%1E z0Kk}JTCMO=rdWvXs}rW0o<}-U5~GCY$=}4!(Vr>wQAWt+bAv?@LRGcWhS5?5{+aXT zTh_BX3gi5BZzXi-`Nz9#7J#pV3u;}hN9Mt)Fk5AAx1yj|$w_quvO?C}EaaFZTDc5~ zMaU zDN4&Q9>q@?l`?1(V0>nlPcjfpf_G()u_+JA@8o-4#L0+|$;gmQtDu@Jzv8*Z-Jo^R zSXu}XM6co0VU@KAy_UeRS{$b@(w6i-J|3(h_-=4tn7HI8fye*QH|y8fqQ#?X1GtP9 zr+({Ha!dOeV9!L+AJC38eLvf~-;CC5>w~C=0Ov5O6=Jvm%B) zhr#1C@at-D=RZ6S&+0g0jJ)_l(MCMy``Qr>C#UkouFLzP29KyH!~)e4ASIt#G#YQ- z!hgB_R_g`#LiFTWMQ9o7k@0={>B)P|7j6@iWXJcCuZ<*=w!=^WWs-Knx8&IO`>dnj zPr>!ex>_J#hx&P zDQQ71k#}wdPx+WxR<#X!0D*;0bfO{JT^^keqOTJx(9%|6{kvAJQ)FdtVd-D9aQj3t zMjbOkL-U-m-hBjL7Ge%{=}#tPoH?F&Cwe zo<4@0=rchj3b&t6$ggK_D@Wg&7vJxP@jDftcKP?$%wfbmKqz8Vq<%7w&tX>uENQ&O zj@|#bM5Nf8!C{^WJi%J=9E;T+DoA0fjS+QZm%(Pu0m`E^SCnDgi_;g~IKcN4v!rAinv_PWSY8lo^B)B!?a>Fv_c5 zV_&l(h41{YuikJdgI|U0~BpQ)mTY8v-GX?rme30Hb!@df= z9AOhtk_pIt=OdSAK1MQpQ^W)PFPsVKZLvskE;1MRSpd5uv)T51VNz4taB_fSK(svA za2-zH{2zE$E?4dJ@hsBr6PuHTen$dYx?GRAg8V7PlaV$Ss1c}kwH|%57Ctru zEa!=|2~Ge5ONl>_Z#ipq)XHnG^i7Jr^M+7coHHA&h%D^Y!jG_6m3$UL1{2;skhP>e zP9xWCt4!h)&T%PsB(r|UUJNixT<8mS?WfokJODS;{x>3q{z07~JY?o16|pignD4p9 zwc`3#sO5GZop7o;R2uO2&69Z)zLPOs&p=`mpr0edKYNfrsxth7MZ5Y0n% zUUO2<yk#x~wG^pYL^(ouiYio_Qsx=*6DEfyh>Y4F$Ko5kd&yg#(SuEY(gF zJ@kGv6-8u*&*An7LZ^1If_KLc$f%Z1(EZ#)hifTV7bWu9)lIM zqQsYn;h5qNMj!;=uzr-{W)@K!l-~$CEMo)|_YM87a^x4%4+AXLOnN?X9 z3KF%fdypdRn7@iPIjkj$xgmhGRC&k}w$MEK#A!txS5tSx)e?e-@`p;o34=roCheSg zD5p{8K&q*=EhP}m%{VB40q`c)&_z`8ciSQ|Zn_oEge!HTaj28{bD=mXRKBV{9(iCY zS=%SrwGQ?D%-1xkgK#lUuqZ^DZNmgn0XiJ>0a){SW3Gt^P#LoHl-9>&HS^!MI$aK< zoZ>=pl;*!D%FB;21v2xCA^@`|S8R6bmtmAd;j~^djU`*dcsh!k0S4fbQ47wblP-#| zODxt!sH_#L@5Z-l_^j5uGVl>&EHx-3ruT0Sm^{k6=6*B(e6>Z=+j8z+M2B4`3^xi)9eL2 z%~9V>|1+{geX$^p6VMd#a<3Q1JuBWZPu-ZYW42}PsdV}Zk0%-5Rm(XlxvyYaX;87u&)}U5Ks4S%q8u+x!FcK#YeUW5F$;TeWe$)Slm}-A< z&lu#>^$+@`W{v{%gtIL_l`Vg@4!26s#?^($x-+hMy#CBXd%y>cf4P5hkQ8QdqpIT3 zVD&XF(}K$qbPSpdhn9rD`(V#2TWADzT>wJujVkGls{VZXGbjZq`*nh7(WWm=@2W)v zWZxlQjb`^z#B8UT04A+tXDb1lX|u+^eeIq9{@SPhfvJN;$QdAMg8{>Fnb^3Lnu=$Xp3(B4?>t-2EXo&1Rth^NB;?LkgvRB#8aQaRw4KuJg2WVG= zslN0X9?VTxYNKt_dH=$W{={ah3Svxf5?yW@0<`Xg%4|lS<{c3*YE~XR3r|&}9VsCA zofRlu{Cr$=D(w+mJ_!VQjQ;dG$?20kDBiXw;m@J+KOWS>IHyZfWOoFYN+-j4?kPM# z3_9Ld%1%Og^J$u+NlQJ%)Oq0K3<;-8-eQ4;ZSd{cjQ3{`4%CqKX;8_A@1BfQbdDAE z1@JfQ++M8VJWzV9ub)`KNw;#h8{TqIzochav{99tie;K<%X7AgvN|@zcf@l_Fk{AsQm&ra1z{jfU*){&dy= zktWcKX)rk-;`L&LkRP|h-Wrr!)F9?{cdfR%F^EQye>awJQB9dF!I?H9P*tWJ1jL7! z(Dn);h;uN52(K3v=qGR{$WKq1EMb5omFw;2At0Zm8f*C&)aTj}C0|nTRk=jalN6$f zt~HX|5Xf91ao5rD*SY&l^|-LL^(d2Xt7|NmL75BQq>nZF%Y)Q zk(bZHHWv+ta;TG;!AqN!CkhB*pj@vn?Ii}0ZE#OyQ#8N{|BdWMoKV(Veut2tg|#Bq zg!GDpT|Dh_Q50fyfTSxf!Q`Ay>-`(g&uuhaC=Lonj`DV9+e`JaG#;I8ab%M!cw`f@ z)NO%*;mYn^t>;CQspahQDu?w6K?|M@zbG7qplT<5*#(e*4RnvqO+odEaRjU~xro0D3O}y7lhS z=KT7zK6GgoBM2^j3b47-epyr1sV9K@twwNp)0SCmXtwp!`C_$@-!$?lF$7Z5nq)Vb zD0siz%G>Y2@M%J@2OY4I*5h34d_`yv4cImKxZir8S}f27V@0X?{BU{Jb9z~r$e~Po zk7ajWzKq}EVEAy{JGA%`-}$u3IupDmkAVw*-1B0dVg6XWG+6a^Zt!?8@D-2|fIe1q zUFa#c`U$MyhToP^Q^*|~+jKq~l~C+z7Ls4fr}7z}aah?20}n9AxCr65+Ja_X0{qC< z9U(J4VT5E!Eul$h=Gd>o;i`(N;A>aG}3{*q^j=Uboyc{#@+dia?voA6O(KpgsrytCw4H3uH#0FC@7$ z&N>%vYhx>+b&e1Sb?+uQBH+%5OV?QFR%>FUuK0%h({mY)9Sax0vCvJ|@2sDiM8bq7 zny0IA7(4}ND}O*=9-sn`(YH~NARi^gmg*JNc!go+kYOf;Oh*t8P!#yPvMqzBI0iA0i!-2+i+zSEDSF*6} zmtPLTNO>3%D%%37%=wJjlrwd5BAg*y(|38f3&636Pq8u(G2?a2P|ZjxPC!sgMxzuM zSron>V9ln|9`_T2m|??ZLL)b_(dMh{ps-6W-r%wDh(RU55{>C2r%UsQ$ze;ZFd}mf zA}9k|MQK2AB6rt>@ks`8*u`;42)|ekk~4$qfzb&*39%g4KoOD<_rT&I!aVm9+yT<- zHd23+yyTA{m4@E1Y>@BMizy|(Yau|^4woGZ91L#Njie2x=0d-7$82s`cr^BPG8MA1 zoK?53(`Lpu7Im-qp1CLFccoiq=OCJa2b%#D%F2%kI0Haw3UjDmJcR~Q64|spOO3q? za59voQ&h>~^>7WcLowo)I3!%&vf}o(Y&x+`oMHaw30LzWRr8_dZ5!}u4cQ^MEf`U$ zio8VytJwT!+LJR@9DOs|&XES@s(8Y5G{>XhXW2{hlW%uc8dRbafnMd->W!v=((vZDwT`Nd=~<} zN?XYKu%9H#(D$0w$z3ye1rk|QT3@|NNu72#TwR@3MWWQZL0G-X#IC?0--7&>d4w-} z1&d5pGPbOd7^^gdl>Sv5LXEV{k`e&w&X#kWff!OD@!bZj{NJMKeeo(B;Wle9;1b*B zi{IkIs#{QfN`=48Ov{u!eYT`v;|P3>tp!$f>2jcFPx`;rQ4MytJccP6zsdMg-my!} ziT2m^>5$>b)W{c1td&~7k_Av*-w;P!`fqu?*hYMcRK+`V^(UGkCiDyT}JweWhHS=XxC7RvJIt$l+qpJ z;kGVwp&3&#s>#`7+uST9Pm(kgL3kOz;Vi|e*St6EDSw{r(~tY0J3dGmPqNY)?5KHZ z%vDfG^1c@UjSSGe3-|$e&RHO>dq@4NyhAsxO+1NEpL-70cDHb?_4xKFfcDB7s>aD6 zyUicRIywaXQ|i3~GES_r&2tHh>?ntugJ)L|jOTY4G+pZr4Si(xjFIYy;3+NR`(*kg z?Qw@%^oqF4D@?GmkslXINR4Uq9*36!Pl3Z)cNP_rG}bkQ0#AT--@x@?HHxy}Jgz=N z#i%Q}e&@&ilQvJ-U+9$wb0)lzhppjFHo@nmzbgv+T53EX#oY`q_)pL+g5$Je`;b5m zT$ULt!`sjRIl2{Lf~HL4$+Cfydov0_R*l}xe5muP@VTUTcd!91%VOIJChmu3)4{PO zxRC=${`>~H?^J*{lImKvD|$7=PeC9cpwCZGASGE)Ff^6tJhGiy5P#i@BXEqnV?ryS=%C8-tg<9m8KaL$+f~VBHKZNv4bsbk$f%A@;{0BL0Lj8UvTUF{CYvp; zRbe38HxZfCh`2O}P^uCd>#YJ6rHsATAxY^*SJ1es2WOU^EB_;ksB!L15zS-iudMpv zvbW8+*=(%_j@YbY%j87{5Mf)~R!PPGUVcY!H0cwWgo`>%%wQ@4w(d4Rm}{gPKe#mz zqnY{ABfF$T+lEfLp7G_0os1$_`wWHeVmYobZ3rh}Fr;h|xXQn{ks#%OW zlQlJ_r!C2}EpFrw^Z_f;EE2>SH_~vXGx~ibp3)nQDU>HO^7l&wy2EQ#he3bJflWd! zKhS>y5a!=sH!%>d`Ps^N8z|6MNJ}UOLkDMOuyL|1&8Gzq0MF#xs#Qw^riNlooA!f{ zOhclEqWVXK_g5ZR+LI0xW6Qvo&tLzRpR^F4fYRDZh=9^2TF8LX_R6oQhZZWJWuOvj zksJCiyccX3zc-{smxB?N)|P_>qzP7n;iutNf(iexBJMOLT5tluf6SLVwb41puerj5 z4FrV#)rr67i<_0Xy*cCGG4o%u1g8kZBzpYcvG!rRgA>IH@II!xa%k)uQUw}Z-! z7a!>q)nZHx+0~FExi=k}%v@qPgpA>f(kcXsRsKoM3LCjRF(5y2=s~J^JaH(ncpwab zuix!@cY=44G~~OpyOCT#Iu35EO>5|kC*6+a0nCH0#mkFLMUC`jDN z`L!RBp*K~|DJr3UY5=1#NNjXQqnu1+0d5x$cSr6X9!pWUf+k)TIo$Msv$#0crOiMl z&XKGSAQ(Hi2Lb94%NSaqA z1dmp?C+epO5fSvgq7XfKf|APKkZK~fOwZVM<$m1KhLb%a40kAQ_`S`zNvCqr^Y8;c zVANc%Wv0sW%=K$%jms=DUF+(aHVz$1IRUz+mwc|V8dX?wie->jj0y!x^JI%w*SUBBGybKjr# z$@c>H{=VO#iP-(H7aIF{do=aq^E!o)%6>cAk>KPM)9Nygmw9=n#k2>66x_Z!nKtwNVzhPp( z?|kFACO+L5%?Diah@ScYp824Lv3Chvs{TSAuJ**5$ zX%3L~;AD$lmyt~4SL{WyTQ8Hov;KlW*`Tn(jNl{-FS`0!(s#@vt!_Xe5Ja=3VE5pd zuP^cKlK1Jic!fUj{1J*OfHEe{h>rN4B`kUMH~;s@`2AlY;R?N>Y8i3N=4H6X#C{x0 zPXqbB;?NO-7q4!K?NSUQ)8Xr&Lw082@N3XTq>Pq{g=p8<@Ml@GTshiIOdmN-m4XsV--HD1Cq;j-MAnzU75@WGTxGZ?-KTF6dqp6({t2x zu!5{U$V+K`9h1$$PlnSlq$-u3Q57ma*T388(UTbJE!R-+KnU_aCRUZns&WQT73Y@g z@~Z8zlzXE7%dNC)C&NJ1RbR0LA7#_&tzV5_lwD8wH5A6%?0MbgxIYJktMa?;DD`6Gp)= z6u`g5%>z-l1*o|Jk&^85Wg_n^?lKg#5^2s=9lxEb+bQQ2f|Y!o$8pHLp8VyB#2c$5 zy20gaZsg81r>I51U6FGZKh>(5OX#lrWGUX$^SAC#m<>;@gW0Y!_lbj4xEY$_IHmoPb9QlnfRO)#S-YCMxmi0{y8gwe8?|*E z*SIkJ4UIm7caG%gRmjM(-67jcF32v%x$I}UXHf7f6T|`&_W-TY?^mv5+Ra(HaH}S- z+vx&?Q=vygvbmoRN*GDL=9zk$(bV1+@{|=a?x~tB(I*{Q`+YeInHm}ybZ*5Mb6qwi zJzYM+622TmoAQf~=Sg?f;QQ~>vXOj*{0W3Zia$3_|mlSt!S zZjwwRpSVpY!PvC3?ER%+@ZWjPyv%7i>$xqIDV5*TmEWiw40HYF(YBJ zE7j*`^;BqAxiJ7|>9U3SP1Iw%$lpru5HtQ-3>V_>@unmy zYv^#}{+ec!4}AZ9T);8wfu?3&Hf76URdYce^F~;qF!4#|^1hj$)tlQ6xVBd&)kbTl zt_omyCg=WZIrHr`snwLr>vf$o9^HDmo=ByF(`n@r)=6i9;g)fdZ71&HG!9D0RA~I>g}JSn|PH6H6XZ_)U9Q)JW{+ zy+6U}t>#H6+$&I0e&ovc`V;-UHH|dJ$9n*T-#Z{;|GaaOC8s;Bgd2WJwRK*7DJuTl z=2HjIPIqbWZSi?HE7`yOExG3zxY|f9}oSnH<{g=on6mXU2T5f9uIFj-iH}m zo?oU0ck`a*2=SWgzXaA}>q49{7r(@5BPW&cT%@sj{hb0R@_f%@<9H-pvXT5K0%AbS z_idyY$%xwBfcyx`?O>AbixA?dkYtu@$^y1O%4GS{V$2~*BH!k1M8F@F`9szsgMGrG zCb@0com*{peDrWo^c3mr#v~F#SYTtRo4BE8QdA_$!+pYe`r=X0oZGgMh5>f`luQsDX;YC_uYNzoBfwp6-3=xeKDx~L=xF#U+ zqx~~efeCEs&e}2qkj;ap;wLm5;%JbC*#H4iN z+I-Glj-s0{tTu-PK2=_7){B#vG$->=;;*jFEdyUNW)@|gfwwv?L_ZJX`&!2_!Pr*c z9a`^yL_y4C6xKXNz816hZ9Zr#+Y*YrD$wvHhQ_jK!d%55;ASL25T+fIO(%8A4GG7v z3A}x!6oGV02 z0f|^6X*oVJR$D$XqLxg|iz@KI3vPr4W(^U(P8A4G#U91jUFO>{4}my|WZ+~MR5`fr za*!@`U%$w%%anx4s0c5>h);}fbcfF&RDeVt=?}+Xg_u(AvUHG}0PwC?%)J=b-17R+ zfgSjx!3e!K5(jytQyA;a%VWW(|%j#E5s2Tf8hXJ#OPJasflVAciHU8L4z zLuWZ@)8+7B6I%;qTR1jEv4ze13st4BzUtxZu|0ntFX`D%j#2h3`cS}ux^GGvY1c}1 zDyb&<#0T7}#>$%S-0R7H?nY;*ujl8c3%O#AX+^tN%X#&<3`f=0z6a!3+KaArUX72m$0CWZRu)Pb2Ff%ioRGjy~3`~dnhjEyUQ<+qM_KP#D8 zHUU()=ZJ-ipe7g@O_!I~rhaVCQEfG8l9k5<8gqCqzHN+}r7e?|{fW_?)@c=~ z63y+trYCiucUZ<7mA`4JWU=7ogMXR#@AN~+JRu)~zHMP~m?2B;eY;H&{uS75j$)lH15r)j_SBV7h*WYBU zub~jQfWrQ74~1F0ux$tvQs`Ca2V{n?T!HO^xc;(yXjdwR54`g_x*Q3`qR0ur(JsIC z!rJRL{i>@R;mRjw)5#;4o&8U`aEQc;15+A~L9VWf(0(Ud4qnwSoS0BiR{%iM-C;|b zF{gz!m;aQCE{tiaAS|Ag@wRgUTw2S6j90@+<>pRoR^TF(}j%I5KY z$I6&MiE>z8H$<*UZu zngs`UdlPe)FLCuRX>~k(&0&uNDeTJ^G(H?~_p!Jb{?Fi0cZ?ARl_D)Pan5f*5(V@m zB-G#Uh#d`8Ajg_Jn~SId9Oa^S{Q%iNvWbU3Zrmm7MygL6%)2O~IODD0}PdDxXqaF-VEgj&O@`sbXL-ui9r&5L!mHKrM+BhyiI8Mn$5vAgx3oJcB1TOXfFv_?BqhY7 zZr@LY!e-~k8pG@u=zGJ=?py60Jms1U@$I+9?5zUy*J~c)%!-fFBAXYCIoVAdX9h#} zxNQ|9qP8t|g=Jl9TRn#ROCh-E0|*P_(!?jAXdxo9&KL34nX7CRzWh*S24{sf@#Y4W zPT~QHkt8)@4wf&WTj^36!wd>cvm@WTj;`%(j{L$osEjA?`;lFB8x|%g;p-4LP*ttq zQ(FZ0TRZq)AC0S$KqQj@NB5N}57|ioTO%0(n;ogSLTYI8%MRK9=UXGPRkU>3%G_nzvhlC|1yJQ`R<>{b6!+5 zQxMw5dOu}N(RT+O?Xt_B-F8+{S#6J_Pp1u|ii2Z^gQ<1pF(g3o_v$DXb-~IyBf)gd z3DiQByau zxs|FB+NrRa{S4Kb8j&@acybJUQ=2=9B`bw2(K8FPmmkD)*$^$IY)@pxhivEc9vr;L zmApe}xc<3Xt~`Jq@UHDLyqRW9TXbKgsvCN*8-jD21BiJV$%pV)R)s2)hmDApk-@wl zymp{LA_7owHN*N#Hsq$d0|26Ojn7VwqxkOCz9cN(nTI-(qCby@5=8u0)xHk2Tn5FM ziGA0QTzoR-%xCyq%>WlZPnTxf94B_1&dr(aUfBn>Rf&+yrK@+NsB6c-UKLGjLvk#g#oBrmUcYaTTGV$6(1{~wsUNjYDYHM5A9%Utxf09=NenR1FPdR5QV(WWEQ#r1 z{AaBTya3dZ4LGcsKuS2_+_cM`e!mqZTBHhEpRK4qWs=y95FwYr1FWUCcCjEc>-y>C z74UYr<}y(wA%?4%A@U+dtpW?qHQw7v?WCnKinP+jqHO04VmoBT35$0MkCw2gCM-siqLurnFNf`P{Up`_x!$>e3$;XjWIVzUKbz{ z#~PLluH-t{aaC{(PNO4VUvnT-R!JTfmy3fie80#1{8*|PY#wyhV7tP{aJr4-QW2@Q z{dmVs#Dlkb*j_lGc-`3jHPW`s7EP)^@fgu0zwIkwlMn|je{4~IIP&77XTeV%&`Q&$e_7bokn9sIr>&MlO-e3}zkL4YH^ z@%nntN46goexRkj&r1jUIA|!&2kMP*J zmsJenb!fHTOz}0E-1I)2*%ppgePee4V#r6{V26!*2dMZU)-z#(`1uY z->YUbT*eK4lD9n!6=?6bz0wqHOBJNk8$RSs2Xy_tkTKt1WrTu; zE6MV6wT}Gtmr zCD^I}J^F*@B&waC=qUsaxTJ zj94657a-|=_{;;?h&p=pdtD0597ai<(v0ju_!+S2Qw!pACX)Jd_U9k(p~R!Fvmd4& zpMBi0M{a9*D7^(o_kL$#p&ZIWL*J4Ihdj>;^>xBbf3o0%E`I9#6$Rmg-?D)-8Fjyn zpZ&Qyfg}Vy9GfB=Px~RA&M26~Wa!V~k23w7tr+wU&kTT=O`F1&0)WbE%({)ZByM?& z2*@9^U)O3>SYdK!MdQ+Il`xDw1fY#AL=KNM_dTOL!}8oNvi-VQVL*&7B$LLvZ5(eV za4I5i4XB!X2@KMsw_5Ef>z0y|!la9|x;%pOmj2d8mjC07vl`RfsjUn^!t`p(vu>lE z@_=ixh6q?LnsjR!JdcsMrm4b#aV$!Y>%a}xr7B6f7&_w~4m&WAl=T`v@ff@J^XYf# zDJ17R6qb~AV*PzrJ9q;<;)sK9+%o|1_aL;RJ)#~h4sws`JWF825Ixjd)(Z6NEAOntt zLRs1L@v=mGv01iu>k zAD;ABD5Zz@0ZPp(9#+lj3Z?A(?pOHd9KDV41)1tW6pol~lt)1)9@^Zbxzv|qjbFYf;LI*I>i+9n0?U$xL` zGx8VVzngE8`Jz7ADt*55ku{dQZ@zs+?N(Z(m0a|>kx)~gjX~!vTG)G4-Yt}KFnKZ5 zQ3s~m%@%)Ucq4#1rOxS~A2si4&aQO%l${je*Og)=mS=cUyk$eaCZj>_D@}Uc3Sgq) zJpSQuu;u;h%+{U_?~*_SBf{mNoT9lxJ#WLzw}Oh5xgfBkI;zS{A!bn7Fl_Kb~Zr%@X`XC{?}r>R`0zJw%n! z^`%&&tbLL%_7z7Ge}{N<`=h7u)t6_8V{$}xQoSq1GYaG;cGRi7_4P)C$y3-Ie-3@f zh_ctWu-OCd(o=;z*~_R#CCkc7>ciy>F9uw}w2gAVQ<97{wi?06BfaY)&O}%K>zxCc z&Lah{?>11XQ++ePw8 zu?txS3Q@f?(rDZtl$iK;_?cX|e8Uz$V!#ZRXew{V+U-c$F%k{?+D&#{@N1GqYU?bW zY2++5gu1(tVjOyG30l=!kawoEb27!}qcMT@%Zr~sGDE9r$V*04v$HMK`oPV; zTlA<#^_FC z82Ixegkl6+*|(wi+fvA+ING(Nr08>Jw(r)|ysA;vLtFN;E--IatTN$Rj&K*IgrT#= znGIK*##Gw*%GmP0_;x`4)@D(A4YPZOchoW261ieN3c9BzxA^|21`vR`NmIDlEEEg+ z;V#eOoD{sulN$@s+@2z2u9JjxjFtjmJ40aL;E3&zcV3zBNR-z5OGW{) zqULZApl%h{5M#1e>;P<-$iDb3Y=o0u$Ts6kK-x^2ZJB!Z=p@u$Fz0G$KCeBbpW|D} z+xwo&BeXQS@nG9qpM139yxRNXooi?gG`lUQrpAT!zuV{V@bRtBF3ub~wHDVE>Tj;o zcf>qao)o*MjksO;54cNxf3(fN_wCT#Jm}h-zJqbBGo&-H*9Rc0^-uI^{)lGIn8UAS z&PZCzZn*8XcPYw+x}r?)5U**I%U3{^TW@QLJgkf#?gaM1%&EE$F}NZZ+*p%#5scY> znR``l%6+Rw=Ld?aSP)|_VmmAEC=Sjur7tVb<$nJ*?jlfMiAPu3GHc@+lhPx1%&gI~ z`^_|_in2$c*&a~%>TzbXdTxg2N*Qr%EqFV%F}?uTefhzF>LV+{1$IfQS+o>yXd?{` zk5KrngLvIkn`UB=)?KX1zb{&zxw~Syit|==D+O6K)M^+NMicxoShlYJoyOdSC{Fzy zQsME8@$+Lr5Wvk1HPCYQnXh8pf0B62?l>#EV^krvE(L&Smfqq4KRt-NPn>x_fFAy6 zEa?mbt|WhCKi^Wc`}ut;xaQ*~%kkr_)B?M5%VWG= zbn7M<>yQKEU~Ms|du;Glz+Ko9d3%)@b4O6{9bX4bU+BGOs^#GsjA7v0`@vNA`<`Pk zbn_CjEFnM&S>Tw&>eW#y!hPnnW_RzuUc!Dm=={m>rBjyuGM+;F53Qi5xryq(tYT-+ zOgQv0!2xZ*7IlfH@D}9-Dv9r~$gg^@frbneBTMTI8i%(0SOcyc2)#@M0P1t@ANKVD z5AX?eVJhP#ZNG`E*f`E*ukW8Zv?F5@VI;WWl%iO_FFWM^ShSz%y98C)O-rsrDf`oo z<}M>oOn!pXSwPK!^itiEf%E?cv^vn-&ee|rNm;MwHq;AgMSs>s8 zRUV&)j2Den)(o%T^nhG7Xq6d(6VXZlxbo+(v1?^+NaOvji=R*{qsnlYsI2JxM0cgR z`3@ZI-1~;0Wy2NAs(~r$vOisCk=@YAy$F~6NzMxNn@lxc<#4HcltF`Bowg#JBu3W8 zd2h1&EMaNzRlrD%cNpcOd_*dW4c5X)0G7WtfnBOwR{C&cGR@Rg=_qIeBKEje^CN?S(+RR(EP z6i*O}X2E8ts~8m|k7T5<#}kigrW36KF-H|Eku1GZWLQWdn5RNc=hWR0OkY7jaRPzL zVQgSI_XGY+jJhLCv^zu4B1|lDDXxv<2$}QH@+kK$Ryr<`#KIIsxs#kUmw&*tm@Ojr z7jmjHkYy%^ndP=y5@a9sJ}m7!ey&q%x3JZ?gVwPq<1 zGoV3_XVa=t0Ik|V)Iz>8v20Cei}$vmItLb!U;s1}L)^I}V^YUBXz-Wd)ztP1VhxF< zFD}oB#Y-)WN+_6sEs^^E(8&wqL!&TpBp9y?+LPpWrM=>@C2Z1w*n{!Lb->vmcw{f& zxhnQ>)EVzTyv$8yF)D!3+_yzG@pk8(n=F>p?@%$tc~1|&j;9Kg5G|UnPW;oZo8OBoC6=>fFIj4+| zY36CMv85^jV{wuB?G9vZ8RKz#@4)|Y51^TNqJh2%5tCA^po|vs8+1bU%Q{Zn@p-&Q zJl9AKlH{TFmqEQn@fU43_^$z40Gg_VyZ*(D1pX6eo^24ss z7B_K;w?jHqi~iw1&`{*th~Z{q~vPWf0gnnJYjtwId)`!-3!U=+wScTir24& zzkl%Af8g=vhP%i23y*FTDT%1kC>j=x3|^ZC>6&Q5PRwnByxXTMTn^O*~uPaJ{EeKF}X%!=B7I(=#uFF<9RYArA_3l`g0 z%yQ4Nf$@kL%?7QUu3}~DltI8;MC&My=AjMl568;)-ZgVpF8{F#IoG3ns&(X$DR9awLb ztBy1>wf09*QOhq4X7A_3EH|*;A;|zbJ0*WFbU=Kz1Afb&vah|GzsZ!01r#)zrxnk-PO&}{$G*%pJ4RAo%nwMfB)OhUX(B;+s}kHd=>O5`kQ|u zp5csVHLgipn2)NgL&kcpYMO#vx>WRSYhs$4&ueCH@Aav3%9l~Q3xS_Y%9OWCMG6!o z5TMrNz|$nVGiMr!fuyBbUUJ%$NX;h$tGRNo?&5ey6?;|$PLOX0^EeqR8)M&T4Z9GloxPjT@CIChKcX+)P`-7q1xTG7Mf)eDcGQMP+q zavGu9R^^Gpix`X&uTEZ%NX9B|_y3zgpFm{2z@ehBDIcpo^Bt_nN)uR-^+wbQ?Qf2YzxFxCk>0WCzTJxO|6lIj6)^*VZy|F|Oqs{-kL2uG(JdWcYyf@cmUQ zyEu1cf4y9P7ryz0kx3WWlY{Li(MS(rodJw)Zgx=df)1jc^Yf-pdd(r6h^%L3XdUZ6 zpwfrHB8eMC%SE6qkj-1*4O;=;sFvxU{XT7305ij_eInrX&`5gOr|Z4v5Z6Su26bx~ zl3IqV;mp&YzT;4=*9E0kFhJSJ1Kt^f&=45K3|Y;Ro0^iDsGpgen4SvW@IC@!hYNd+%}M|T?fa05bj|1PLzw800E2`J7*bf+Qf zm=H$1-wkvwFqNS=7qy#$P|Uz^c^^9iMyCbc!KkfDWbJVWk+ehGm=N6=h`>Uv-I2BP wA3@TNsO!<~hm_f{A{*I&vSaMiH@@Le6k!D}7z71{5W{TX@~)Z_z?{wi0B?u+jQ{`u delta 311148 zcmbrlbyOTd`!z@)SRlB&LxA9J6D$NLcyI`W;O^2$@BqPryE_C8Ho*e~cNqqEcbQ?9 z_uaE+zu$Lu_n)mkbGoLgPIXn?>U!>TtGYUaHhz;4&`?Hs`3mVjAwq5A-GA=?SHOIZ zSUP>yaCLHauzZNrhcINVSu+L7Ew%g>v3p)*i z;|_Q!{30w>OfR#99NR3SZ3ql9Y$D@up4%qtDhmr4Q5j~VYh=hj#{%|4v=$5Sr&98M_2($jy#%xsLEgz%DR z$8=)z8&ED~Rh?Qf?T`P{ZqrQU45k~FP6kMpM{c1c4kP4 z%!%Qg9l5u?s60<#C1s|7*%bS$(j(qNp8Wj_KW6bNwqGJcTy%9#pVz?Qp_RwIXF;`a z@D9`3$3f52qJj@29trA&YPxkEHPcG(D~zeUfXA)qZRFg)} z(D*(>ga5xm^V!MO>Oa`TCUz_J@!*A@hMYb_3nZ0PapoU~4Cff(Rk5wg@U@dHH!``j zUmqWvglv|ka-gh)4Bozam95~hT^8PDc9;0(AiS*4W`y4yL7@(68^C^;hUYN#3Mwr$O& z0KQ>%Tqk$0c$l{^Qq6vE{oKUan`gv-{o&1f%YfP#8amW)WF?KcH6D!fmiZ8_(cIUa zzjis@mggKx=})8#qpL;Qgjr}~Ri|I7&I~%=%ldbUwD0L%yUli{ASDlIUTvmL{CWFf z{KbOjirVjJHMIs&r8oHrw3@kc#@9A ztZ*(`RiUP)Qn@)G8mI-#kg7LDwih%NCcv1S@FsJj(_Q@ClKe#7SUZp$-k2*k7jS*q zQe^r+(P*|JuVQ~j1OFKf!vBGWhnu^T1D7}8U|*atuH4H*GdZD_gD-1rZ}qq5_4eUk(L~$Smi{m{j{aHwZ65W5*st7{@YivJaksfhE=Tilb{zXOp;*$^oj^xDkQ+_TRU?DK-; z-W=rI%HiZincrkX6kjBsbCFPT6X%NcRSmb&`mU5R6?azeC+u#^;C?Z_S<`t z=q*PPq=y4p7Vqiv^TFmHcD`*81w_1Qvk`$!v$QR&oE^uXb7rJ)z9EpXp8d|fVL>e~ z61Nzxmz7-Q&vGS9@7^|dpL&n}|GrwGK98=KldI+bwo+woDHVI*AR(FBrM{>{CkBp< z)#F!`@WG7d)K#M0<_+TF4M56})-T0{$Wek{nYUv!?bd@)$29iiYC_gb-$dy8UVIag z5OGF!j6^we`0KZ2s9_8_K3_O#ZfEgP|6ufsJiamzVypwMaBT5A0d9n%It_nr>z;1v?2B{bCh@{4kol->} z@_#WFE^Y0Z=x#sn?j^g--uR1de%c^C<85D5g&mE$))Sstu9Hp*L>F#2dI3(S&UrIu zLuTp4rAqy31gPZW_f>cdrT#)O$R$r-qpEOglKuaMTJ=mJ<9qRw$WnS|j01)8HBHRg z4io*qbzSWa`y2=kA9Vx%=t^LblH=;UjcsWyt62 zG*7itaqBtN{k98Xjp6?`(JW$`iix=kY<8@t{;eUUcyeDfSecw{)tlZGcg@;*I5qt} zMJ>1W?6>Wmb2wQ~BtSHKAoe(!V66Q4JGig<_t5Qp;{Cv;Bi zivi96>G?HONu0#0a?7~seW+VVrO6N(%CUbsNmBO{{Yy6YAESXVB4E>&Z-UgM_>#@i z^xvlkc5C{+Uv1~n%#%Ju;VOMCZ8rytF`OIZa!^ZW*8(n+v$fY)wXcv!4EpK%eeSj# z{*W-JA>FW25MFcI1ugurYMlE{dhtra1L z{O9T~vI@O%T-hJYudJ(rqGAZ0_m#;r>#@HW|5NPP&=5d%N#^4=X3O<9id;&hTPj$Ha=3UU=W zpFLDz6vF^1ucGJkq;QejSNrmsNYs-iUs)+}f}dG&FE5elN^2=&O8q%r`k%OB^KHY= zsWz5;*=5cvF?I{#Imwvc`VlU!W0iX>*YuL^0ONXx!H#s3=33_&KZ50w)J>gJUu0cs zV?EpJ*q|&~Gx-5y^9-AUqIl%wM5yPZvL;niGIOi#8)fG?&1Q(Psu6-p>2<<~ar3C2 zA3?^F)SZKM1g=e4Bx7TN+k?uV8pQ6Yt9E}c1|GYr7h>~KmQGH@tgpHO>r8hH;VE8TnUaga#E%ON)^$r|SJ}-KpYCqE z%%)GpueV_j_hGkq(HB=-^cVysK9Sxefap|4@$3nf-S84l~<-_!4d8vB>C~I zuEc?4#fsyTe_jqL&&OVCY*f2>DhdX$MPqkEjbk$49|42GH+HqF1^V2Fp4c-hCzbQAZllLnXPg!QU z)cpNdUT&LlM5)`2oZtPHk_%i4O*Zk~W4a5JBZC&jF>QocGpXWiu>#Tw6_1V2ofg1obu`Q!#Ar+q?@cCkB!u)mJ>{{F;=- z)MkFp755=zb&n9@7aYorw&2%D>L_OuI-J4qD8o#NmZx`O|H<#86`VDc`D#mLRh!QG zq6GQ*3HZR@=gR1WblH4r-mhwNQVJ*Q>pW*I?&ZI%NEF8Zo89pmcdt!%lj?u1HSKTa z|3{Vot&!-W#A2~Ee`|*Q`Kk6-8pt|BnHXDYtKq5yw9lPl6GHiKI~#zwsOQf7r}Y2c zU-lpTK7_$5e=}dn{HOJ?luByViO)mw9+z1or6cOy$(F-H*-gU#&vpUN4WkTR6Zv&8 zWU+DgR$>sh8AN=xGiq5kaY`9O{n2?WO+;Rmnkrmas<*KJTb8#D#>wyNb)MD(7Zc|( zWMJqW(OBvqy&p4bXfT8?VFd{!X&HY_L?GXtILx2jS*v{&A>Vp`2+b;=7LSDtBd=PB@c}Sb|fx$ z>IMw7?lZ;W|0!~Ww56EPd|I693!gUz_mA%T@7s&O_HNTBDcGjoMjy!jL|dq>@do29 z78?^v>~}OxjvS!#^$bQgLOy1{eg*qHUVQ7K<8O1C#vxH>1l7v1DmhE^G}xG*YO_X; zT7>mZ5p8S_L%A?8IJ9dXUnGMMKF?ADxqFYUrBjt{6Sk0HQ+!-%9nCRZx2)%sZvTVR z^iVCZH z*D(Q0g7%*QUmXYE78bhbxeZ33d(0h4$8BG^(M0vOd89Ln$Y%3(NpTrbb9Hs)ou0Uq z+#NKE?P>>n;%}e{igm?64;%hB7#pO!Ex&#CGpD}et*9O;#sp!8)_Z3m-Yr+Od%T@* z2P943^VuytNCPV%-+YaaR9k9(ffxe$3S}&Tk$*aK63*;7WzY)3TsxN})(T{DDM7!A zsiN*t&z-OqW2;u(gF%HeS>&@&!o!Dp@y_9Gn{<3X-Vpwy2oT6`keTJXuQw`@mRpEL!;5ac+Sg&s@fQ)z(; zjHyR-jrEl~le&&t(|&I6a7CLIX8X1-EcdNYI#mPj=_Vcd<=rKr-i9yu$te_Cx9 z?C}wJa`ivL{C5qio-BAcAbUI9qyvSY2{xV*?HH&(7`Cn!ZZ{4Xb~RBxwKTTXA>@#EA|J^sRo`-=Ua@0KtwAp@%;OmL^zbLw*9AlM1y{UX8_r|7vOQWOxgqm}mD{Nqk=pFG2R~y@s!0v@&xRw&~%!Git3`Sy9cdQml9B2l)p8@LJPAaV|aCF6| zpTMGRm(#NEZ+(G9lhg_yD_i3iZr1kY2Hs7=F`A3ZvH?HSf9X1O4aIbHn)1l>`D=gH zy$r4XSs2~GH(q7)ujW|p=a-fde#xhFrX$mO@eczm;>m5celb{;SZCeZqf)h*iiY=I zP2D87Nr~;b4jVO`B_0Y&fz7TfCzA`ug?)gjOD$np^^p7YyO3dv1;_G>gO9JbL2SO* z*Bltv7ImF_+QA~s@adt;k~?Xdp_?E5BmSRLsHd=zyf@?_auFqhR#gVqWvAW}U1D>i zl~okk-id+-oIxH08RNtD_ctYcx(=^`b`vh{?f&e9@@^lsRyB>%L6Gcac4Fe{gW&+u z(&x*u#>3F29SsNQS5yK0z)~~4tL?CI-eX*>7RC}OeX}prIq#Bckgn2C>Y6j+OImzO zape7~g%0Otl0?T?nspTZ&ix*3$!&DFR3SbzuzHvAQ&SJSOJ}Dye|SkYeiiZ6P|{d{ zbLeKc0=t9SL$1WO`VEVYG5k}|AfY5sXk?mZTtvZBqxBhNf)lJ2R>9YarWJ;BYDk@l z@~y+~fgjrZ7&zICby%$HC8oXTpjGyT);*xmnkL$=@*+?RCEqmLzcRnQ>h`_{F59B< z05@oYzxvbqj|2XGSNQS90o9!2y=1IflCp;rjsw_pkNGg4vKx&<2blovV8I-y`KLP` z>``~m_^*WJn&C)1_yzvS^n!%2WuBkRnEUBkTPHW&SDp4TT6YZxZZlHRt12li#GlYy z(Y#77fz$kX6X?9y?5hF{fqGscZZVk z@0)~-(tXBZ_=+t1MpHSezt=NUeW3mqzOYA_|)5^FLifb_etS;eLct4f}}E zs6s!Zi_pt%?uhUaiLe4+K1L3VDi(d1)OTY*j(!*@S0+24+zr8MB=Ps2m)hgM|Jw-*M>4DO;iv^<1- zGj{vP*c#BHJdKrwz#?^I+UvFLF;I+rYrVejH;h5LNj^jiRuucKi2G|&7NJolci!jECJOaMQcLEAL~4#ig)Uyw?~eOI zq-*~i^*M`UeEh~FCnCk3#B;LIQrgEXQy}ueD1wRVk`DhnAc8rdh#9dO;hOf+vXBa0 zO>8EVXzxxm^%aSh02UqHxqWFqp2)^@GC%Gmg(K0_WnJLg4UJcEmM>~32fXMR(KpG8|P!V3o>#u2TDi)Y)(SVTWwO81$Zf1V7GMG5YUW zq;JhBo#=J~A>b-3!*I|8$&h#|Z+#YT88JK)8TL{Xhl>d5O_bRP$ft5paz7axhC5ZdE{^U>E$o*+ zzRykRy$vWDjvbvns>odHt}ZZgJaS0WBLoV~(+YE4=YWXOJ_&J3GS%{EhOqRJzP*uB zBge~0ig9(2_>YsX>z~Q9C(bEeg7i?ps%SkNQY_Jg`s-_Uj8zRX(N_u6CtI zR^Hi`Pb9-rf8J3!kch0W5fv<4E(j5G6Bra|)vl>aAfoAX)KehygAzyFHc?q97O zto}ENd$Q)V@9tUtW=d84iB1I^e^Pa#6vpc$-2?QGI_oVD8TlB{o2549JPG8KqN(1z zZ5oMeH~NuG4T;{;&wDr7_&5JWw23d<6559#lCKYTStTE|=zx6L6I*#D?PD@2GWnyJ zz5sszEb=aTJ-wRM_;Rnv-*lWd58KMj(B7dRs7#odPsf3`g(F?8OiIXr+^3MtCn7Aw z!CVBbk#r_s5AV$%Dg4Z`eFe>uOglRZjNT7M7H`zn79-Ee6z_(6n}P}%&nTyxt~JY> zNf;CFOhPQ2{XPpY$R2gVj&J9opqrL2tKvi@ABr?kWQYBRg_~6bgve5fWmM#2Tu<>P zOK=HMkILdtm7#?nK6p<6SIQ6Lrps-=!iC%z+4UAEJdNS0%iCz(-p1oYz0$lk#hTSK z%~%MEciVh5TBkE&O+C42dFyz(87{m5x?U9G$F^~T?-mszPCYw2KQ^C*BVw7ymUXV3 z)&e!-+R?`S3`8wVm6KL1n{&9@;>UrqyAa0;!;N96> zH+MSYh%G5|zRmRx5W$V`xk$ggZ8%+(cvy-hWqBIU1p)VidX9AV1)|w{Pzm_q{j^>@ z*c-mdi0+?R7>s$EM22-LCUxOhPexKw_$&vZJUNoUG4Q7?#4%Boeq{8ogBcmI0s^Ah zT-QA7sJq3fn z$Jnh!!(zLIUr|~zYQ&18hh#L9h?yWvq-Q13ma@Q3Y6r(6+lz*Ku^b*JyQwI}H}Ut-6PIfmcS zw>B!>C{+_P$%Oh`V|=;CPWu-T(3r~#xc^h4gq}IxR}Zp(amx>9)U^_R@fgLDqQ%~( zdz&pmtAy_68jJfetXwA+HZN&s)xt43js7MypNk~r5|CdrB=<~q9&xbd|22;2QBDuy zD5UXx0Cc^@qHy(p7>kZrd365klcf`-<<^ODY32HhZCp8C`!URKRA^=%LjJ<)k&Eg3 zkUaq<4#D+e-mAneBiRWmrmNwxF!|o@jbE-H_wp293k2odIBG-b zi~xPt*FREX-s2=XvXaNY_huVyq-12DTGZ3HQ{l)`Z@ORX9!^xHgLJZqT%fu4IMK7! z+jdqVli|HM^&0*pfP!4hghih@50&{mY&GxCT4u*asUQ%mvHDSkcYMuY7)$KI5FcgJ zuMJfH0FaIkW8|Id+tBe+e&@=g<1bRbyg7F6b5 z;h1f_!aFIvq#!C!aDZ4fJCWkuroSRVusf9m1t$9G@zmq{F3Kv!(q^S)%yE60LwiL^RX&!%W*WE zuPqp-*Q+i2Y0uFn*csRa&W zFO5VkodL&WdmCX(t6s)&8Ht2)10-zEZ+!7YpdHVc(YXtCih6RM88QQZ{r7!YC)wk} z?4PEZ<5ySJvcUz0HO#0>@CI;i=kD7vZ%0?wmdfC}s84!=`Pj|dqwc$7b`li=-u;VR zA1Z;z&OTf7lUgk5st9I;TIq@q>l&{1tBXwOg`$1r-m*1D`0hrsbKnR9kdUNO(?q>R0;^& zsfwR2KZs+GBG|}fAeXkQvY4&bM_$$ig)~6)rgzw%%VSj5hYe{*vheY+xZ5oIW0pk1 zLfrla=Yug-y;{yKyV-K9_5#bE_AoXVX1O7bNu=Ko4r%R7hKq6tv2%sxSj7GVrB)|_ ziDA^vb>+gW{ne(?DuS+8yR>bn*3mV>@Yh>tD3+Z1T)t>rm-p%1?kO~IGi*8c=?-9r zNsN42B?na&?CwfXn;g%)KI^deeoOKiA=a)S7uNdd!VkH4hBhWD=c*M8&*TyuaJ6_j znA;J!ISu^2e+1g#m86cHh<$|bQ*Io9fNz4k{H~Jp90MO(HfcKoU@@n(;A`%Wzu`q! z=hm8)tQ9w1O?wWvI^XdXuYH#R8SP3%ah^%1cwJr>EUE8zdxCMmMfYS3xa)j~RRQ!g z3k2R|7LEr3n}w!SowqwF%cuU{S2tj4@YO>~AuZVNQrw9KxTD4OciGj>?Ma$%2$7#^ zZTro4dm2SGrjr79+B=!W750u}>%GF>WhVY9y|>7Q#v#-QMhmz+8wF+xU&Lyim+vXF zM!pXwyYswAHjWVcDCqJwVqR?)_H-UU!F*bCj~)%4UN?IQxx4Dk1mBxXUB)3E(5^Zn zs`iXQVl&G_(Q#1r4z%49ZFh-<{CH}|Gx?#I2X0uq6SmeYtgM2Xa;L4#G0E{a_#!_8 zjd9F@0ur48@?E&D1kU9%PJ9Cy9Vg-Zv=)vcyq;ra8-=v6lQ}OCDDb$+&@}K_#p-n5 zJ4DzQN0>>#-LoR5y7XA2$(w+HO~H>hgmv z9SV1OZ|?Yw({?_%r42cDowpbQFg5oZJy0wc8fHDLNbPC<5-RF@+OAM5ZR*e3cDqeW z1HQ*J^1nJajRzjLM|0tW)u(Wg4AjlgOd#-n?-;rQ+pKI^ecaePK84=xp$khz*saFa zAoe;70a_R(6)pJcc2oGt^J;8Y!70%BuoE{<3gP4a=;s9ShxZrGgVAqSVI!pq2v~0b zuSs|V-ND|7X?IFOR%@}N|J8mq052`nGZA@O&y6$j-Q1g2FCe`?B5moqt*gIrr*HM04suqx&!e^+sS3f$^Qxz2b`ZDLwnvr zeazaS`+K-qUrvr0{_S%Gw8gBnPxOx%;M!xRb&`m2?)F2b$Y1w)dq|!Z9o<_)Ja0R$ z(nzV;WX2Ls*n4%p-@M*OMpV_JkF!Ia%pMjR( zuIL$yMvbK-7;y=ib^}$;2Vt=Gza$YMwMFsL^zl3~N*WJIrvxJL@SS;R9 zhoM2C1Ff@hJ-CF1mU;FLK=h|kh1BUk8KM%r@sD}8x6$ItDGkKDj}{2V!!~$_g#hn4 zCbyD!vnOi^h$=u^_T^unL++GT@o=kg5F>p z_l~d5xgz*_1KGFn6$3F%ug{kZ+(;+0%_dEQyD??4-&?^ZiU>{sVT*PA$7O1bp5cnl zRs!mGu`=Wv6vTQO`HD6-sqZFFi0Gug)w=k2_3|F{vVwch&8MQ`PXEa#ED|DI*di$g#m7lQwtzfhjKJ+UTu8REUCx#V&x6-c4J+8O}yBf ztCt_c@26aJ)IIb7o~POsg+JXz;14!Wxw}vm?MXQ|7?6WFHXd>KMIw{0E_rTOei5*p z!wjR>Zf?&HXDu9imrvXM*WY4kuFE^&OIVKW@O0SX+pxyH=oz%#&N}K7r-t7`!Pmf3%mj|Apo9)QwM5Ubxi*LW z(-LpjYFq*m_8>Rne9o|T#rFwyk8(l>sqF*hy4?VsTI`tcDoPrh2SgJ9TR$HGp^h?S zvlTl0yu`~LL_^QEk2b9Jzuk)kOKWA#T)M_3#YM1+&^Y>E+{CH}x?Y8PIr%@a2*?}U zs@I*E>j6k%kf7yp#LiqQ6eNm)vqr~BE(|=q3K~ShK#s=7Fta4-#xeL_q98PxiU@=q zK%Edrl0l^AU_2qOxYZ{zyuGauL%<*Zh_O{zhCUa#zcHlkJ!U2D{m?@b4niin*w%CE zIyZTlJ9sCY_Y`EpT7W~iUCj*@@mU1#*fQ~26(LcwRr?_(uJn`^64EYeYy+(uV z43vVz7A5nd^7&T+pS%>8rJY0{j+%;GoC5B9)^CecH(@tIv#~ricYoC8F-^ zog(-@PM*wmGR(cJT70Gw@)Hd&Sj7S_w>NXaFZEdLe_Ctaidl!WVY}J9`e+n#o+Lwr zpD(&p>wS>{!zmCcr(kvNKh6bwV8g%&x;@fF*e30hq3fp*fh^6`9L&pubnhrPmSt9G z!&&Ln`;PlTb;c?IlcL;Cnn1PPR&0)QEpx_;(zZV48r4Sz)PM`O9`+`@+$$C%TY3}Z z*SBW$G>D_k!uh}yPVRR{QV%1b(0#9k`6#yaX9GvD4c#}bMX)tdnKwiHumO|sYxX88 z?(SBlw}Y&9q9IPycichwZC<&Zfga+Iy7}pMyhp|kaHmimAAHm;TERHnTKuFvokK&o zqh$bSt+=2XHUiUSZF%-^ds#`;EP78{U(j}VbAL&HUZSVa2f==lo-WHSxX*@aS1aXA zg=}=ZPdV#zoP^KYTyOTb0D{u=>1JlDMD_SxEt7( zj^;(VfB~){`nizI7G72b-kbXS<&UfjsElXe*Equ&4(t_~p0TV8f|_=R1Yc9p?Kq-N zemdK0xsDS?&}eEM5@3hV%(P*b%vH~?e#6Vit6>&*uFL+ZVTT*nj-G*aRV1jgC;kqd?AL_0K(m2k_fXz~LO8ymMS*Bo zk=JD8S-N*Gnr@D-!9sS-Dgm=MtqVz1;CZF&B2?+4h(^uzfyO9b&D$ zDM=PQwBf2zQ*b58-R1n)?lq;GP0_gDmUO|DM3t1FwZJbXq-l3n-hh_$iIb0%o)^Lm zTIt`o4rlaIN8d`+cGTfq#wN_CHuLiSo+z=GH; zGuQcmxpP8@luyTBFJy%FP|o(7TR!{YTx&d;;g-!*z#F#1TGz-bq_pwR^XkxR`o<@* zVU>O!{pIN6T2m%)Z-?B0Qh1o>9*pdHwK~|68^5swd4Q=a)WS9f6mlhYYvD!5bTi70 zMxDSlw@t5PcewKL-OWK zhOhhs0_L=e#)@xzY;%DC$)gu@BUWh_-1g7*NzOhUycIlkXZmNO>wGeP7-)WdxSW!+ zM~+G2b9HkY-vyhU+y#Nphj5+1*Dhk|lF|@@r3>uiWiE_d6ikm6PmSO zQR<{V7^U_&FuyFU*?vY~&$e2R6-@X_Yip#IC7f;#%Z%dLJ#pppI9VYAZsY|bp0-jl zbK!SRI3>-7fh;c*OE<9R)U{{+ML})Ot42_d=(Fv+40TvKDQEZp zSqdHDY1CAHAXq>{R~8%k>dsR*jjHgyM*wth!`76>-Cg$K?arYdX`5BM{JGlSi&|z) zX0kz`lmy~76FgF90G z`rNUWN0qvSeM-tsv#r&qE5E!=h45o_Ad_kZcD>skst#VE_P>a@TN6K9Sw=iyv7t#2 z@xkBYcOYOm3+w2z@PR?_vQ_ZII_cRaKu_t+H_m#~cMR=7dtsJnNI*$5)?<9uHFyg4 zgq5~DlgIAK(p;vNci+x35l_8^de02!l3Q9>?L_jo{yW7)j%moEyVs3$dqba=O=53z z&m`6<6>x=oHudZ%9qu(e=P8y1__M2Agr5}SkL6g_eyAQ&&J(7s8cNFiwFb1g!5&Yc zzNev^(9RqYqu@B_t5uFc?#`TVx1z;JC1oS?Bc>mYN0fQgG#@W87gNVK;*PoxBy5aV zE0cPdG8f#ip4=yY=Ks!qjpMKN#L+r?@zFbW@rbAWN!&mH*i0fV^n(U+D+YL6 zCUI*`3kn+3TDB#s7w`LCEyX*bxFJiFneiZmt_1=TNrtt|TW-|eY^IXMb{2L2A)4j) zUl!GgDObF_&Jfs5f5QL7nZ1+K2<%Z~n~gKST&1y;4{rt6N&mXs5F1@oW5_K1yo2eh zTgvn96^egAgKHzO0bzB#PqNmLFkb%mShoiXxE|PbT7?~!3WMOrmQ{mxi<8Puf4*?4 zlt)nEJ0I}$(x||mU*CK2~m3P3GXgZKcExLSzKhiiRl^pxabdto!zJh zrZx`{+Q%jdLC-m$Am3AAd_KffX;hQfg5!rHiAnK?yWYawF5kyes4C??rjVxXMKO!1 z?ZvUHH_a5aG1`}NMbt~jpXcL+0U1f+o%j*Lt1T)-Qz*;AOQG=92(xYKfE(VUkQ2|Z zP{iFF@CXirk6Zc)EuyPAe&nAv{`f%}h7O3G< zzL=3wjmu}aUpi&4x`#c4r%YVUTJ}|v_zQTA)=iTd%=%nA6rC!#w%9J0i=H210bN%8HI+2J!+1#BCo z{(iN}(JZ{~r_6;tzKI1Ds|N-&+-eaXw~7-&1SZatiYlRlQyV(tgr#kQsFtlAc-PY; zzG5ceo%4qQKi)c=a~{(b-bNGu^}Wvc7lje!mpi54u2LVzr~B#Fk=`}`B(Tl3FNwSS*GUxZllU)qrV%ApDExpnZ?S~ZPMskH7}J`-uwg4^ zoy2Fzy0Z~DF7TFi;VhJ!@3?P3Ac-AK+5zBaku{niB;aYY5GsZELp=5$trvB;UrC_W zw7>QX__e`rVom~FJ%~~IqubwgBb`M=_rpHel<1x zY-Steq)P_D{;&F@I_!a)lTUgQE4>UX*YVKK`)uKO5DYg@8OS9dQ!V}oR+LJtaVuq& z$gA(Q%fpe4m~@}Nq;wgiOKbg16&URPqs9x)9)9$&24M#HG&GW9oABzBHu6Jw+jA&L zcV5H{fx3bwne+(tEao(?cMHyTyPl6OJ*=i5?-tXMKY_2S;Aq9HSqD9XrUpMEiCKt*26b0sAwyq zhshLIvgznRNxSC_%&@L-n}Z;9O8bJM6et;ok+c47s2OmPcoOwldlC)Qq@C1%Q{&aU zV_992{jeT>@%eNnA`TfM=J?&s7Xm7oKY94)sCWs9_H~t^=M|s;HDm{F32T2as5kV6 z!6jW+fWs{a#t$zo*OhHtSs!6$1!FI-^-ZHHY2L;3=CkpfzQ=get2GB&nfPyQ4}+xS zOS{W?Guic=gQ}^GSBuBgqgFP4tc7$rNvFDmr@tt<)cp|m*9vwQ-q}i-us8Oub)z)q zk%O;3EUl`W`>~4SSubo%5)jL>NmXr366JnP0?O5Vmb%*Q!>6?JwWPk8VC13IwoRkp zVPJLzOiF&uFijm6Ni`RWStt6`ghZ#J(%3$K40Px=>oFxwKHLRyeHS6zli>zUq|Eho zsUP9(jLh3GYRTXSoZ}O{zT!08pcPOs>WYT6`17Hy@f)b z0$hTV&XK%)xZOJUrFclKExmhv356mOE6~piy8<- zkNOg#9RRZPW6^<*uV6-reYd2skJ>skr(EYKJDoHtF$``~hz4`P;Wnn3+(o-ZDdg2q z^dAg5?m4a$?+9<6#+Pp6OL8CCe@)&1*3nW@VSAg^w_UCG_kIeeo&Hw`>gr<3$e~9& zxq)bl%E7WPxy1gMiupcnM)JQTKa=v=-1Eu}njV|9gTA1~;1YS(H)uhKLG8!if!F3k zZ_00yY(ev1MAsg!#?B)WBoS5o=gn;`kk3VA32TM8CIDBnS?LmPo=|)xpH>>MD^2%j zJILqVV}c}(*+wU^SP3dp1+BM5nW|vf*v80@gQ^q z{%^`%_p64&rocI@2G3^jO>0t!xYys&_yNsM5EQrY@8IxlyWcoVKcD98*B99EzbJp+ zBBu)M?u*wv&6ir2R7`3WQk0tj%T0P~Nk7=-O>NAwWM8#bJ(?-d!ltVMpY>*LDQiHOY8`8zdHa!{S$upo z$!{wYSM_+gc4gE1wQ%^?u@)B&V0tJ$;v`46&vB)cI6=3sTN;$j_y>qn+l?for<|fm zxQU#WmiX_zQ6Y;Q%0f-SBamZ)C@sZa<9IBv&ca>FZXXYzkN!)DY@m6_*d&$Xc(|FR zxao@bIazDES5&^UijpjTXD7{3MT(j-spBXH-|A2sw{zir;6dhX9!po1?8Ea0$P0Qb ziL2q}*Y!wF{tx@WB<^b4{eXf3H%#zi>~ZvYJ-u`MW$Y8!@48%BPj;`l^8Qh&R7g0KoheV^uVyWB3tX=#DyU7iWgf(`?`)5mK76zwD$ zcz?g_Bn2FrBHm1eS(tWGns#}>)K3*s|D(3r)k5z!UY~7=`|hR=g6?2*rmN9hF-|JU zWt+5}ZdXg-qBbq1t+pe%n&d_rRX1GEKVUrlOx>M+cK-fwnwL~YIFRyo0j;lll@Bfw zR$ougff1nNdXD3r9u$@TZuFKwrvh5el92HVj^jN0Jm>dg3)Mlva;q(?&mLft>7VX% zNrm zfJD`1yymYN9%-lcDc31nE&OPzwKEZl^k<}kl)2pq)0}My`*E!w1+TFeFnMSJwlWH7 zJN!1M!KR_cf*61^Z0fMdu@bY6!2V}iAiAim5K zQPXaJJCiGvX~)!Sd$S{?@KY*K=$8raX{PP}2EyAZU`n6|eDB8v)EzY{^ozCZ&oDL@ zkTr;yJ+4RFB$M?8BEZhW2 zx+r4vc%G%UZhLafh0MEW{;Qj|;Jh=w>aB7pn)hiPZM%66@)l7lBNL4xpeUgR`@J`ssP64XWg7bRZ+cFQF#Fd#DHtbwU`~htP}*QtiF8w9Y zdi#Kfg+mH$ha~$6N^`X@@_D30Wb*BNDnTVWKL+k>{k=ZSnusr?p#Rih?J00;cl9=4og0h zAiHl*dV>EZ%ZO7)6-c5`WvTb=<|5{uZ@#}!-5aC0-XGWg;`{r4qK1NgF<#yKL7Nr3 zSiniJAgl9tjJ7i{4UJ&yuUpvdhnIX6(FNm>sbtorE6Fbp+yRWu&(BJZUqHazaDp6X zC#*e^*iX6FBaW|k$Aa_X3e^hB;)-RH+Cl*Lt!D8IGVxLC?0E#v#7*=^d7b{4|mS#jHcgAN=#fN8g4r1MNTRx?Sw&_g+lR z*CEw5dD9&V#pN3|*!i~T3tNB1kd0cd5VId|4IIe-tUv4(I-J~E~fo z_HRCKPZL-44*&*{lo41&N@LS|vaOPi<-afQIP{{K7lwJFTXVnQjUC&c`rY-``ra{k>ET3wg|M-y;_zMzWD(?iI%kPw#;H0 zr3&Wn1_ymOeA!>8t=`N#rZ?>~y+T?pbR5m02TV;uT#CtN zt*^W813BGq)&du45p&ZE6|kj@FS(RIQG-w%6XfN)&LLyA*6Swt_$pdvaYkEuW;Nd> zjVLVw5td!jnX}`!sq*{Q&FJ=e-YY1#&`vi7{_OWJJ#5}oCpY4A(GI`SM$aIc8)n~8 zq9$(+AdqRQu5st6eG!b@EaG}!a#~sEOH%gvDf!xtz~Hp#PJ$4;OJv|7r>69C@?i_aE{Um3x>x?+3&{Aw^+)23C=a^JB5={D*hHdGC z8c$}q3+b!Gy44zdc652qx4gvelg&#^A5Az4fl4GJ!+y80<*XJax>d{zI>A5b9aDwg zVqG#SivOu`S5%!NDILF)U&Y{fwSs1H@ACfk_rYP!C|ue3IevB*3c&wb__s?3d~ZaI z_5HYh>n2vQpI(@7wr`SO9519%8@mb=>*TXcUie#VjG?@6IQ(76r&%WK3zZV2m)7-7 z7MROR$t~}GmB*6f^rcJ7EB0HlNys3f_GhuX8PN_~V;+@^2+W-hxz1e$kID;MQq7or zYM)h@<)bgBP{nT1HTw>yTc&!ygi9u>f?Y3lRd}MgOvOx5yXN&AiJ}k1GV~S-IQrA? z^uME8Meziv7JlXYiJsGK!`-n|&Qp}MbjPgW5eYfa7=6P}(0N|GhdXm7kh1Ry+~-nq8I<<*pC#k_}!5h2NUX?U7b( zH}u%Bq7KE92|EHAsfywdg^0D{(6KEl|5J#kAM{u3PH8k!W`d0|Ui{;q z9F-t-;49&dbfd`FWW;g$W(n@J!x$Y#S_~42#P9H`7St(3xoYm&b_^QE8bG`?E{(6(OOseq_{#V~5CT(p?h(-GD{n`4*1 zgU#i3QA2I_`eVx5A{j><>hT0%`|X@H960-Kh%J~_)fE4Ds}VtNHW=F&o|2&+pcdgQ zh8m3svZdBXz$1|c{u0tOIEQ*7YW%pTVumiKh-UOQ6S|LYelMMb{m)E9;WznBAdb&@ zeV5Y`BgE^*Cy(rjv;p(oIWtv`*eGg~iP#_uvF^ZjX%)!bXGdf_1!Q(4I)?Rfm%KGu z@G!Y1qJ+&Hg50#%S;PdRg72{!>opvBdjz;$s->Uquz~~c1X~GyO57VJrwek+VHcs= z$Y=Ko#M{bxYzU%-vg+Q+^32?rrI%{-dt4kmY!GY%wz9aD;3YXq=cme@ooK#$@(j6m z*0U#7_Nh?S7M&F(9Tnu2dRoAeneLl%J7DmWk{PS^TAGEJ5 zSd%wNvHsxQaWn%jPox$DUj6l&?tsHc3ycM^4EG$xw5!)@HQTRe#L-%B%Bi6EYmAc4 z;Brdb!#8Pc1!~gsa+jH3)f3wN-wY~Vac2l{X0wLa_3^z@%;l@gw7K5tcmijMRv&X)`4Oi+ZcG`>cU z@9#cenu2Zb-N3iKhNqF=n00ja@>zAgzr5o@Q9?i7V$u1p7_&fZK(Fa>z_=+>zUZ`y zkcZ_TQljH&L`+`5Ek} z@&@~#;KUlsh@Kur+6w;cH$T<{DiI?x8J%vDa`|i+vx&Rl5_;T<1iT1bp4&=Q0XE`! zPS2+Z^9UnE8SWLljRl{r7Mjq}RBbPZ4;p2My1Imo zy^NF+kBTpwi~%I@bFLn{myJ&=lH;V=ejP#lIrP$5jK8F0Spi?(G zu-)c(eLuPcF$LpBYOnoCPz^rzo12dr3V;IpIzHb}qm6^B5E2~zlGO9`Rm{bk$&#*i zI6{q{OTNqg3W^&1j2y$39tz)7ql^yq8O7=GEqMifvp%pxZ9iMwBH}tIw`07Cz`3xO z|3H+=$eHr-^n+(q>~ln!)T3lcf$bD@cB`(f&kbEPiFEiEj*0wqdRdtSwgQSon%_xF^03*F8H*z4aV66LIaZf!ZqnTM!mm4 zpYnkuiGe?==4I+5AJSbz# z9(_8LdBpmMf8s&yKhD2YBfe_h^*BQezkqIzG@4i+r|3F7x@3FmE&1VmKCrb>`Dg*} zE3YgSapf(ldGs}USD1VZxs6VDdMXykqK@wSjac|{G|e_(Qyh-@v#~vxj=_?EvZJCk zlG6sqN2QN%h&TTaa00p=4|8C}(TvniU1%Wrw=P^=2-`z3$@24G=lGeE$n%m^XyDJ5 zx%*R95qsnAfz%TA`ZO39%VO#10`?L^|Bm2jQYpo8Af^^6JvQ@98jyuAF>25?ZPs>#iV>g7ry>-z#_JUw@ zWdpLM$u#M(999vzTzdDJlWwJ2+7gEX`654n&dRA&n+$$~#{H9>Rm7wwj<0YXZn>?a zSkt63WCRpbc2)Z_5#0Xg{0I7wS27|;tDQ#%#oaRwZCZkd2$kz z+9SiJv3qjTB%8wU5ij(>J4z|)jvXUSLmV~;DsUtTJwIH?K;O=$V2Q=FSwnslPP)Vf zWvp$yLjx0IYk0L$MAv#>1(<7PjD`qMNGk$J^=Ro~82L9dwi3`vRqzVC6tB(0M%Ojg z{o{)`J?670@Z9qzLayv+O}X5&9`bmY#fQw1vW-)4NgJ(?Ih$l*p%0zfQs14esQnlp z$%uwG;ZnND4xa`56zx|;j}_dKr*9S$?5&hD-RfV5e-f-*z+0zf2L8GWd@freqZQ9S z{wv#gy<+IkYYJsu)3oVa`LIlpnN9P=5M@<6KZ9frWIRt99rmxQmRpTho0g8acAlLv zOU~-ZFzJ4F&3PK_&R4&*QN7Zoi&HQo$mQTMGSl6*)L`zkJh;wa!x&z3WKG9Rg2OQ< zQJTLcE7w1EJ#;YPriLBcB|Zum31d z)V)h8hEC414jM|maPZDwy`t2lgj8ZMuzPuq)WKc~*Oqla1ct0##l38D@zB(NhcGs#tv3;uZKb zwA=7zP$`=F2k7luhckIfJ|!F9b-5T#4|wP%@;x$v#id*GXyhh7k4|6BtK64ns9J*H z%fR&9cp_83Acwmkc`RgpMrIa*I3uv6&RA|($o4YvJ5iQmZ>Eo#QVA!M!- z7Axx;wI`(;_%;{V&fHUumYYMdqIUIZ+;b)TE4|&20mxv$aFX2?9!{YqR}vz~>CDC7 zO1&T)ncYCHn$xD;zHQA`)sHS;j8!dRiD~bb zjXcxfSXuc{q`J*2@?X}Uk?P?h$BuN2ixq>Kxdp+Si$xLOcEkXn z*r>cHqrOlVGyix3;W(A7UW)X{e&C&xt)< zm*C#IBe|TUU~VHZovn%9yR6m9D?qzk$p_5PvfuI**u2HA$hk0+@MeLN;EEG=-n)mT z*jd!^E@2%HMiV^{V1zoBPPaijF$)m{Drcq>qRtPEe zd7l^CN5~PY39xKa-%YPp1H~6D3)ua4&U++mdyidRU*Ctfb0QnN;w4o+!yW0$(g7@< zjg{1BYfX|x@Qs9sxy_(fc~u#V__Vp!>&)Thn5#=T;K`k%CHR!}4u>FEY&u1kbGy%@ zOMqu(h{oSq=7;i6hj50bvV2VEFpkud8K>*19Ly*`jpwf4PQ6wx%rh1P?DH!BN)0b^ zTo6}$Z?#I=B&i4~)35Ivp~fdiSqB0rS7M#sEPN9dHCO@H=TK2iD%Nbe_0{TwOV(T< zPWP_Lr{l2ry9`R9z#2W18r}4bj%F6v zeU|vU){YXuZ|qoB{>_J6`eAK;`oOi7TFd&Y zv{j0FfkZ6Ycs8fepzxk8*bWgQUE}S((ex8U$hlugNu<=E6_*Wuj^F_-`b(D%ZKF^V zdsP0jh|m)v;*=r@&~%|j;Qg0#&9HfnP*Vfh$TXvhq5nwmcBPeL3>4r*6yW3(+W88+ zekMn*`;X*jir$`PySi)VZ30Jlh#dU_Xj`K?|55JUudMmy$6lR!~EKit~pLySg|&33nE9?pK+h0-|`woBP{ za!4cz|DQ%3c83UrU#*2J zmHtzCgZ(9gfs3PVq4_OuXfpl`6g^G7=SYp>L{sQN0NoQ^^7!JQ^x#AlpIHv&U)k*$ zCy!|rV_9Tvm%}>RW#9xR_f*E#HCC~SdB_B4{rNfWPyrkr195x0e)Rh9vef%G$r7%V zho-QZQg4rmFrD0ns;3t1%1U~grYeERTh$8zffkc#?3X3k7Cv2L5lo^S6ji8Zbs`bK zj~C18&6t{+0R8HSNP*q?Czl%Z2)1x4WK?=Bbj?76KUU1`I!WuF<3gBT`?AJKB>iGTN0}1Y`M9y6#>0(mqzN$e;I<=VuNKHXG{jx8AXOqg)w7+^BUzYHFc;%PFh$W=|n!@6VR zhyzU#t#v*l?#mU+N`pGbbs0FP(vOy8jd1P+j*h^D1$uCud;zxMD^8vgt<$s|&U6I? zI3b>TybYJeWB3s#%b+zj;@#r;6x&7aiM$onIn{Pe3bE6w4eIB}k0?uyjEK$qj%Z(5 zZDX~75}*lgrp>Zl9&Tw2rRq$T33p+hP|W45z~4;lz{WM}jV)951|>G<;H&2F_?vba z>x!6EE5o`cNDWEAoCg+Y+bS!F1Pc6oc7?drh(k1eC zs!}3u;jE8_(N9ZJdU*~jG_o1aOB|`@dbw$j6hI^8xjgOq%$9N-=m3L11|k(QNJ=E8 zSW8(i_&sc^uhlU*2NcS_gV3_Rak)X3U|N&zVA-pJ!;`bP6?0=5wE0o4P=yV6)p+fl zF;eDeq8r;(JOBrw@yxUdJZ6j6iDG}oE8QLWEn5-!@bj!-&j@2Bj{^m=+n=( zWViJgmBoLy+13{$O)55QWaxfOO-eB2>=bvP@aRV=xeWScwF(R5=do#}8ZJQH_OSD`G`S6edC@Y3$~jVycj1*4(bDw;AD zQ9`2T^Hi|0gd0%x4QpLeE~j{^5M;}b6J2%+ml1X{^~n2xOl&O^&ow%H25u5fHXx`F zjT5QrWN@{$OE%&LElZ=2Gc4|wh31bfKur6wCeg7k|4qzEB=OES7cuc0}amMGxuM;Is$!A0mIfmqI z`I}bqiqw%px3H`3VWZjx>&EFIgqHk42F=6q;Lorp|6vr^79{C`L`B|G8*^V0MdGh1 z%IBmw{*pHkIgGq*WBV{^4M&xfON%Bty?DhM^jDc6mFKG93RiLXaM-cL1~_X(jj>vu zJhIxAtz)B%Gh;U)_zTZy(@_HBGFj=cL(8eBsulwq@1pgeYR#V+Ct>r|ihKl2T1*FZ zVH*xf7pAhMgcv@%#Ow}c(-U2Pk`EcujwTB-Z+!o8{2NxSS*; zxC30(ctQinsMPf)b*8|O1E7=VJmQ6t)X^;TN~K)Nl1d~CUQx;ORo-w-F@4P<`1l-* z=7u>0goenZYrN(Oc7IND_i~#Cs->-q)P`$MYIBqEND8Nu(BEtMM|MT^p>x{iAom2G zEP!gED(*@e$OWY83i;?&F&cb;SARBGKssDEDx>M5qhB&PlpJn&29VLVyAcQBcFxjcjZe;?N`rl+7#T3F}3SgfbA6Js;2Zf5) z@^|=s-I(r>)~Q|hx}uLYl%Ln$5=}uLv^n!M6(92F$`o@p!M7ldEN(*}Rk%LoqPb>Q zR@VZA#Q{)MKGyB3$RK>2V#Z)gPNC2r`5wgOC-1Ck)5%d~9nzfJ z&_Ob9>i0&1e-zE(=pMz6E9cO>!e1@15ExP3Tz(s23FXrXY$G~%hSrZXaLU}oF-4U? z_jP~-f-r9d#xucTnL{(D;E}&%hek1R`U?ux3ByEf!A1$t)&Z%0hafXRR{J%06)faj zw3rp}p=ewYgq?%)K1KHpzc)9<-2OY=0ZV*t3heXQGA$~z(o2LPc<-cq9OyMO7W;J} z>3-c>+H;CM(|!($(k4pcN1kj=BWy^rM+wHo>!^WZ5dWG8z(Iv}Q;AbN>|sLVO3KfP zl|EI5rrXpWr)Lc8GIN!gNiQZl zFm2STeq?1m;pF#ByI$T!)$WZ4{0^zCZ%SC^&cOWhw}E+iR7bW@swAQN&1$+EQuCIQ7tg~xSV9NZrHG_ zK-{I;KnHQ}ez4gV?kXe@;rP1loS}0S>K1w%4H`J)(%w}P<4~LASSXhZzj?4*!bBt;4t@$(GF09aTJ^NZ=yg=O37 zb)rBa@h1tZ!J6ipIgxg3#cdK>w@`*w5a3BVq;hT2ocWqM;GZa1-G?Ls{o$L7|K!@R zh0l3#CCVBsm;fEKOHCwg(Iud9YrKIehgm1aW_K_zrOuaq2@<>QQ!}?6MipgtGmT?n z=y&yE8L?kUam8>e&uT{i3YS+&o)nteWVm%>dfy?ByIFF)6SVr4A2(zlf2hZp`-#Dgnm^&*E)FFXF4W+Jo|)rp*-@tPJJ_Y)1*C9aW8^ey`p zCOds=Dp8@+7{c&;9h-iUOf{8BWwo^hOQU>EE`7^{p#&j=raSc9VqPun8^#XtkZ4IO z@n|B_EoQW4ZN-6Wea~vlfG+RGBQV2<)DEtczA{y7$xMkyuiBXT$Q2p!5+}L(u%2#& z{Lc>9-oVf_f4IQru&S?m8zV;BC>-HW?e759C?pn)AqwJ}X>jxhCI$JX!TjTgi$&5S%@ZxKX z>Gt9Sew!qyPQ*o^-x>Nt4*M1@Mk5%rUzQ0RFI*uhW_NjU1(TQXM`-6DO;;tl;_c&I z0!%KRyC+n;qgqx7xDOv#V6^?>!Wh`I@D&-&rH6TyO{SS&9kneC|8%fjmlabupBOKk zwdCf3CSG;g43%kx%Lh<&`bG@rVz?~1a<#M#=?$$iT#hN8x_J!rbqxlFauHJe2fzk| z#paSpDVGU)DQod5y?D|~OM*sX&9i6e@E>+9H|Q;Esg&y=e33!f-Vbc)qi^@peo5Dt z8NB|QcXGMa!@DXXe8p)7hi*!Oa+6&OBC$Gln2loUWW%wxa0MuC!&|;)9c}IEC$0SW z2bn%EiY$_S&^FGqxC4R#Xu@-)pZ$5-!TKqT2itQZUA?3xRaFL;1MFJt&6FC6PI=X>(BS@R14s3eP00VFQ+GRh- zHFTmH^`Cq^axjqCbzj0AfudJG5@lp`h`?>uDuM-IAcu}SM8!f5OUFJoUTx!$Aok`l zm&xX25=mdB1N?oItvELnLhDUJr_rL7ulckGlb*zA#4|O$ykQc?W0IpyVXYWm!eix< zw|r)4XXS2C9@%1Sq(KJx79yt6B2hcJ)}pa89z1N^aR^MU*3hk9Ey|dJY}vSc`nNRV zNYOIl!B8#~I^@knh*p))NldN1y3E|3K*Zj@-IcDz?ca}}C20n!JF1n_PdiwS_1X?U zT(xE@QNXQTT8&UTg=e^`OI;&W5(DRNyj~BrtwuzWzCR zmZI+4Q2|uU*vJw797-0Qpp5j6W&pu2J6h>W=G^NfsGG+bNBbum_>tMP^i-ir zg(;d%FlKaNAhhq|s*So>l?tnB?OLUQ!9e0z{-<%(RO%(wN*XI)*No^A+lvJtP312Z5Kdt95R=*?zS#ovTKSHpj^`d zIi}RWW5;w-d`g%0$e}g#>{YJ$6GrICAL97CO#4ZVcdd3&*@x-W)7H0%iFVvsC*28m z1tU|WClS8elN5Wxnt!#acsRg{KFGSnF3DJ7)vwVYzw12pU6PaORTFqMF^oVB2vm@n z#{y=b6QxPQ2**yxMC2$kc;IR${u?v(Gj}=ufFF>ES%ptwvy!O<^C5C&w9TX)*9_e_ zyfC7MO{zW??z`J;`dJT99v~!Us72~~**!;3BIFV7)D6F=%Yu&|pi2c{azEt{TNK*N zPJ1d10N6T$%;mIvAvXjsDQ=@?IPeUO3xVis=$+njsZ*Z6W4pP6>Ce?EIJ6KA{gt@D zo*H)>MMdVIgC<->Gj!|Sb#m!6>8XiYxx9WSH{F@rKsI}9sMmsm1rX>@%tn?aCuTME z4G1=-Zjd!bgUGHgxxyBZLj+=QJg_?R{5UacppOsw$vYLs?vpSGA@sMVH%v8&u?o14 zqC52VTHrex-UrJ`sJD2-iQ$fXauE3!e-sq3@9nM7d!W86k`)U$cf*6_UGRBg`2S9J zg+1Jfe8d>}V>FAM3{|scAfe z-kj1)+&xc^iUzUo;Nl)x_a3Y}d*`WA{FFm(z6Y0e$K*I+LI%oacBf9o@ZbHNVUUg( z72h?v>-}8Upa1iLlTR391hdzs4hc#O+&+5tB2KVCfw>#FUO^KiVHNrPID|$OJur|B zDp}~7M})B7gHM$a&LF;3ON^&??wc))CLM?6sqwj9Lr%2H}p^+5~ zZ1e7wTZ%g_`9+9CnxglXv~rGVmhLdf6t`Cu$l5||HD|4AK<+R%Co-Aoav*AIJQ)ruGSVuv|)^f>1+>aFo z`)?^jg-YH>%vm%WfklMu#9gWCr**+2eQC1eGRVadAJh@G_;wn=@}wW&Md13$3=`G5 z8&-5#B4(#aaMPv1E!jFIl80nqFzEh^6bs-kn>cGzrmQ0C6N>SaqSe+IdP>r+CI$oQ zSPVXq<-1mi1!AR7zF`lzj>e6MZ1@Bi}5 z`Kwp@xl;ZGbU6q5gnvKAMuJeRq1wslDKIUjYqFJ4QP#x%2*BKo;wIow?S6(*_lESl)_r`eSTho1z z%m?PAKaDS_SWQAYfdihoD-jZ)IrxI=LZq78e;-#XM&7k75sQ!rPwblun-oa~>v$SV zVJX)4a9qv_nFLv&CMCUY;|LzNwEAp`v6cVYP19~g#=1%$Yw*#k)&h}@7g@w|PtM!( z>Mrhw=;Oe_6oYN%nY?iqfF({tFlL!BH3g&ra|6w-~z-?f5-L)*A zK^tV;u04>KnRG7N8eqN!T`>p$8->N>J3reEy4%X-UMUP>CmAl1M2ysW6R`rXmjL)U zGAtWygu};YH76tvJtR+?cNT zFcyS&3NMVa^pFz2mLY2%Bif!`f+Ao#_;0BydZt2My7 zTHD-Yak%aDPTWGI_LwSjNi~Ye#1x+?^0v@mc~DiTzL6foUeBVs)jGeTIs&L%l0`T> z{9Lu9{TOWHb@kBvnoQhRNXSgysna;_x{wix9FOp7G9r3Ycod=NEH5_($0zrcu51q+<+ztD3WB=@`CCz6J8a zBZp=KzMN?zW>m+FKcp@IR}fe}mXbJ(BP&$huv=o+{#a)IXF*+`gH*DK!rA5pqP zce3c>393csX7Pij#@b87WeMB)!3AQ9T6f77f)<)3HA=y0N^maq)gd+=b~+^t0#tq3 zKKNaFwGMyi__XTASY3A{DB6tOxL{sy>0JgqW(lhY`;gLmlwO9IlNhM-gNA5FEd;w_ z2`j>uw2G|f=mU;2n!eBqtUY=dr$>G)#ZaOas`zsBLM(K3QYB4}vRKGIklQ#Sn_nu+1J zB{FrywB`1&WfAm}FSE6555S=6VBdFfPiH)T8yF|3jTgnY2z=SGpKz``gc&WDX*X`6 zgDA6XbOGV_rM99)Pjs|AD0T2?U>#U0$}|$F=m@t70iYToY$b zXuJ>d6(ci+i#5e>pLYQ(-m1q7K-@BoynzWEGo+T&Da>O&bl)!UA!jhyu4W(}(1*Xu zK{lw1h|-pbJ_u;tkNR_BlSdQ&6Gyn-mtggchoEh zi*(Yh3e*X6p%n3zC3XsW1(#RaXT{qFKAD4UjYrXXdO4AuLm;;e7kZumYf2xNJl zF!rg>p_Mhz1OeR-h$~%mSHC4%ilVF%t$~+t2l5owAPPK`I+n-el`P}f{t;X)aL%bV zwT`rbDPE$&F#jDS&~Wh9y)3GhTI|rXjoRS>-wggl0X67Qa*oAolKJ+&qpE-smL zCg(hCL>F(COk-<$PwS$6WAhN+YGxDR;-Ka4jqq@e^Xk~L$Z~rotZA3wUx45z8u z2qZcP3S}2ULE1MYNZzPmnqUTbHW`jTI& zuNy4Suz=Kvr$1{S?x;s8ubQ<@>Lk_aZ{8mnjZ)ZdwC)nvZ8kKhA|tnUY+)7~nKo8| zsc#`}656_QJ%?@DhQsiI(Sn{}3&PxV1s01K5dBzg#k1|QfUM)+#v~f2^egxEk$>bq za@h}%da~4z$xvP{Vzh#DywWXO^GL^F@8(x2Td8ySaS!ACvulI){HkRzEzC05dE$1E z*GAddKxBMtonnQG%NB`a+|!of2x7;|`Ar0qDPu3mdSxs{tr_H0=+NY+iW8eJIPeTH zdCr*Ac_W}R32h3RctNIApiR1X-a6IVVp1hdooK-dKC}cmhE`zemMmi1_ycE}#KFD) z-TAxDmaljy*QDtZ5T54bbz+F@4y#}Sffa=najvDgVzLn zBtpYQOzSl~o{#h&CkR2d7#vsvL}0bXCDV7Un#gGIvyhOWO{0kJaJuFUYm+~Nm&mDg z9YIwRWb8EPD?aPACd|H_n$Vlj$>m8H8f4!~`~cexZ*A8f2L=o*ldGutv7F~qULMUg z3%kw~i`%$di_8Nvfe@|ejcoNicACgN&0HahLoP*KF7#O33s_w|k^}gXb|4n2;->J0 zA-n9D_sczLFbGq>2~Gst&RU(>0XU2rTN zFos898#LLpXSroV4hy!Z3tTM-pUVC#h}S7Fe5v+6{Qa{>rKnSI|7@96M-y-z8`Ykm*?Qo zsj4;*Ozp*Ei)m56k(=4Ju2}e5)ip354JpVz z{YLmkG95FBCtb!>BKTVzaBck6b)P-oKjroxGi=|gPj;}ID`-aT1VzB>M3wJv#&4(W zp>WCH+=9q3Bxb zkC!lS;xGaGPbTOeUs!)?PAP~ELtqKA zEY;fWnA1@i{y~p4p{DwGqZw8rIpwfVaUtp%*TK2_E9Bwcavz7;J#%`w4y2stqHZH^ zyj{kSf!+j60<;mK=9>5_odvX3e~7{Qk%z3@#?VYOn!Q=M*ig~gBzU6|`oK2deh^-V zbq5&v#{-FEIHm$Gv;7v1wkBjZ!`)U!1#sBl73&CXMX%NB4v)dNLV5Nn2eZ7}Jo2@k z86Y0cN;7X&J1HqwZfM7L(k#&s7CTc)L_bZ7L@9EOZVCu<#-pN87M&J zvvBD4_lPpykADRlQ9T2{NKwg7LX!hFqnO5mpny+A(kLionEnWuX8g#E{pROEETrOU zcx#)BBa`X!Bcey&;K&xZg~lsxl5&#ARJxa}s!#)bpap9=PHfzTAbx_eb%|hWR4`W; zU<7aI(w#eJC8`|>ZGwXHbh%Uj%)t{YRc^Aood%HPP^~Z{Hx8N}{64e*-BP0NvmdO| z3Jgf?OjMbJ#RDU>b63o_Qa1(Ruc-8vx2fV@UQcARZfBE_%_7@X#ATGQ8PFWe32mW$ zHP5nf6~Qx+nJYtcibT#-n;`Yp$w8hN}P+qztT7EO??1$z6NTRcmv?EAb5fCKJ zm_QL+EbUOfK@Bx_@JFI{62-E$AlSGm8~1&bIRtJWnToJs1QaFvff~g`9G(ZGEn2H@ zZ~ZmQOp9x){s}&mRM9&kzO+_x{kUo9sThL^7=@8ZRR{O^{q| znUU&51x~J7XRbUx$hg%|(`PZaCBR=g>PS?IrBnvETqn!iS9t~jPPUPB>0A&e_Mv{l zZU4j9JBC-*Z13K&Z6_=0*ha^;ZQCo(ify}N+qP||V>{_|(CO}z{p`K}?>Vo&t*h3k zn&X-u##OWGzJFteLo5c)E;d!xN@qh8BWQC zf=g7{UGVRlBM`00+$OfU3W&|r5S_~Y^7X$!4B^Lu7V4pi!N~h?$xlsPlk9N_8LOkZ z^j9reV{vxi_VuA@&gRZRi|y zgNmZuzCk|M{D$oYVYEd;8*+$#^9$PdYaED?Jnxov?)yA3rubnHs*8u%V;$NT19cVy zoj>OG6w%YwiAn1*ANK&%`cDwZfRe|E;lAi&=%1+1mG&fppGF~=2@3DX2j5JCaN`y{ zNo@}VAfSuGKUcxmeTaqgKXZV*j-UfG?$kDpzcZo{-TNK#n+!P?{`h;_Nu=GIXUzV`Ucy|^`Ug)a?gOlddT(3Pn*_y{U4_&H{BZgqXK$n zcOwr4;y;}M*w(rrH@$XXyv#$^#JirsGVY;zSS{;AwEyh7KW095UPFCWo4vk{L5LsK zdVN(iN&>nd?2M|`5078(8jM^d-&UbWuwZ^YXGEAtlkJB`?`6QhMrIO4@6$-`XgvxN zi6J~XU-O3JArcJ>cKl=^5=$jt{Ox}hyBzoz+$W<8v?p1Y#=@dha&N5d9I7bH zYYl_sT1@GsnEjVW5PHVWuo)UJq0S`IHzcR=%-2oY}&UXncIYeXIy<)KS>LTG|ChSfcK zG1Ze@DA?a5(8f1S{hVx4yHwmKA)NOt@^5!I7jaN?t%u^ZEu}K$JQWE&$_5Y62xxe; zWqci&A7R-=8QF)zoA28uJZ*FymTTNj z^bENJ8^}`<2i2Y7!89&G{fd9FVSZ!W6V?jm?CFc%05d;tG&63bPhaFoZaNd+dreX` zOBqdlaMV5-%>byD-2CC3{`uB?yKd``YT_bG-SB45r1VDU!j9^^w!JJ;kmn=Y+8n>A z$M*Oab&Eu!#=<>n(FlAkqG9bB{@(~B@3k;xZy+8S69i$4xt?y?QHbioI;&EqY+RK& zyGIhS2r++)K((ue>t|a=rG1#Xm0KU;O0%h)$5dK{g)DXg(O_8VGSMp}omsS}0zfLp zwbKIOMBI*M^}3vX)Xh4Vs0RXV!g{)tC)Hv-ds+`0Sh%^zObLESKXV>WLclmi($kK0Dnn|J&6qBv7 zKHKkIeAn%YucXUt<`+0Kn#%I`%RjSi*JvjE^@*IUnsR1su|0Dpty4Z~U@9eBoJ)~i zJj>Xwc5+!<+!jzeA?z}b(sm5Bh)c8gq(Le2&6cwphWZf)MKnK=qOO3|S(Hbt#j`Ln zV@DRW3&==%Hluz3Yt3TOoF<6 z+S3xB9(6G_*!=q8ksG1(F?m8aTqkG6+BR>L`Tv@EuhItneb8PK2ZF`!s`Luxbqh-9 z9_lV<9$ulNr^djWEnzn_>`)K$cBq_{=R8>JaA$)n#B6GmHz`_2v1Hg`ns`l|5c|fVHCsaZSZad$=;^LfITLqn(_6-G zU7lfaQn+BbN|J5EnZ0Qc8w7h0>OwDsr2R^k%Yq|~$q1ZE--rneLmh%Q3j+0!xp7p^ zGDF~eh5Hf<4Rg&_4&(MtZhR2pJfv;>ZzDw~+`p&dnGoYbBa((Dl`EI=ho(hG!)WKusie404H=~*F?maW6WICKj!9mouOADtHwTvBBQ`Z1LO z(P%Pl@i9{LvFWi^Sd8vke%;ekNmW4B7PQRZ#HnI5cIfhdbZwy8Lt|CQ4%#!$Xqfr4 zMsLy!E?;xe3W$%f3C;A{V9F)BWP@6H9hm#ts+2xM6HDGb21WWEn)&zO3QcW3<=~$D zX4{e2>U6*rtT;Vo>!2|mI2^WJN?FS#Grzx1W(FNER_$yAy}R@>!6`I^32+t^NTLvJ~N(sq%CKuS?47ki$dJ(wsasWOr}NdF)jj4d_!s zMJS=npQcN}?&KE7$cc-WVsz9gk%ccGX1O-IY=&OVpB7zT&%MorlC*$vUPBTr8uOzi!pWBGtG=%=#t8>gUQ3Fic6v;{(hSP8{FQA``aT9M1oAC8^JUFrqUh+9 zm7H>wJj5BP^}uwZ{D81Z%&FTAp~TS}(K+Ru%+QQqrWlf~KjoP2%3HQfwY>O2xlu%7 zAex=mbOF-9#GUeMP96Mh0lrFah8>I%UskQ!)}@VT=%$a8_RwNsCbmj+m8Ii<_#h9h z=C4Ck(0pNgB2#_Rv*@5kRTPoR2R}i?R?K(&anr^y@y0*t4J<6?)TvxgA_9>GW^`7f z$cmTp8E|z;+StoW6^5E#J@eto+1XdKI20+mg@BTDtG;OOY)DQ|OyOQ$J>aG6j5hF- zPFSSrOs(p=9d$vQskBxre&xTB#k!D>EzFb3X+fYIyoSrO8cDJQ%GHXBu$Q|C+503x zK4z~+9Ceji*aT~E`sLI+cixLp3?s-EaEISng0eO%Pqe=GgN~OTfdRP!kDm|ZFf-k2d4bD>u4ogtH zbxG*)?>^m>3z8VFAAtHVg~(uar6-MyhoC8WM}!ma+9TA&^j4hFQNIOj8l1D}Y$_U` z=G%4XwYK)2rlO#~go?ItHl@l056hN=jE+^h`~fE>gD&sLla&&N*&J!lPdZ%Joa4`h zjdhy5kQC#`Eoz@KI=_wF3xy%HnW(kNd$c~+IZ(XSDm;|@Psq)4U{+JkdAEf5{Uaz6xZC?!(tV@f4>f4MKH{2~-p6iz8Pq;bHt zchgqcL1YHcc4Ou0sFlLwG)~5n3gp1sZSxflAOMdt29ePVPh9Zk>PY{hx2ixmk+U66 zZ>q7Bi<{Q>n=JI6k|#5@Ap;eMaebeoZcL?fz>2VEO!4!gf76w+jU*H;9}3nisM_B6 zAfR~(MHh>&i0(;qfy5ZUYRTC3MX}?>3S$f+D76fk&XNb8Gwoka;O_HK(0|kWuWRj| zUV<)mU{KqblnuRg+?{D5TSKK%&98B+elvI2!T}|Cy6Znvg#D&a05311D}>v$I$8)6 z&EGTYj{(Dny8(7@|D=nDm-JWW z`mY?=;FZ!?y58pC{_G3^GZ1|XoZ7S9Ebwm(<+xT7*b%3(967dry{}{ z8u+6T6*hViE*$bVGmr-QmLMbPfoSun!3WCq1Q_1zK=s z#3Wew9z+HVzgzO47c)E%1)zqo02#g)2MYswFqac4kEWG;(8uLY*%3aGS8N|n2z-0c zB7>o#+BBnBqV}<@bd=t;@ov9Y&8OPNsM-t%2<14=_@#%+hvfyhry8IzT96&gYjLuu z79WF+A!r%-3N;87-1I;-rVVC-{L@t(oB2~>+ZDe)TX2Rzng#R`ya~D}m-EYFETNIx zaBh?Dom>tx%_D~LZmO4f_i?7M#L;uIxK`+D!0tLWi`AF#cXX;Fq);Dw;bk`m)XJpC zaWY-l+jTj67LbL@IY=>ZswC|-ZBlQMHS{U{8r5jrs@Sw%s}2RpQFdRiZ}rXwVn1$d z)U;H~r(NS%H{4Zcz1J94DcBWedC6#`N_JFJlG1vB?z&?#b4rMeIVL9bz&~dKI*sc`va2(=SPwZ2C@qd8}Ba zJQg2;Jj@aU#-Y>Q>PRB&TppQ9dro)vL!2c&R@?#!HDko$>v%j&AfhJW^F=bGeuI9S|pr-D|#!bx%x{9UDpu+u^#Ts8}kRtZ9R{7=;cR)MqsW`(*Xw4W07spkn-OA?1bLgM7AbpC%Q2X`V_?uUv#^An`QpO2S z*4vF5@m1I>>|MN0g&>`bojAli4AbP*hTtL*40BcHuqOoGZ?;>0xD<`d>y{QFOzUj3 zoUilE*jl!r*+l!o{Q8WtC#oehdd|HhcGRYyZE$|=X$1*$JDX?@{s+^ ze3l=wb_e*)ETN@E7y zy7lWbNb#<0Kvi9$ijZuD231g1(}xX*%J9KDdx@o|f;UzvD=u(8eH?ib9RB z$zq}N#o_zugz*psqA=3?$^ZQ$KqHU^go9TLIy;m{h5z4z%dm#n!G`o@0ihdtqOIRz zR^S%IUEyJ-3J&J9z+wWz{iyFByl6tLE}0(0P+})jMe*J`gD?sGC>!C=*ha|pqY@+7 z5VlLZSgTT@SfC<0*mn*|%(RE==L`NwI>Vu3Kz@040@Fw6VDSKffQLefV$#A)gfJhu zOD#;aVQA!R5b+*MHhkd{Y6vDn*>1p$7QgdrECM zolVwLd}u_fqM)TIF&4Pquf(GSv5&;ntA?$5)SQsCC@|%w$ftMlp8(h^a_~3tW-n?& zhNzx#sAQ2jeqMKw8igyRL49y}1x^!v1b*ln4E5>4&!)vE0!f!VkIIuC$2n+b_({oM zabXrX)$vBn(`j8>&l83z`3mTH_AWtTX&M$&+h91B%BZSMEwyB7mu`e`sa7sW!J+L0 zPsW`RbZBNVA+oYM%eq)~O*~{7Vpc_C7;p6T!T?8gr#g-vI3X-rhRH=4EO1d$#%N73n%;<= zlCPp^Xm-4m+?AJdrbXSWbZV;I0S%hO6bbFWc7a0lk=YwJ_1ocRjOAh+?QMrzjt>rg zrb-O1gs(ZEWO4PYNHH64y$S+=VRDzFi$szbJVYZeXP(iEFO}JMkDEnzQ89VJU@VqB(ygC((-+64bFtcj=-{yznr-FL<|M0emz(p!cyTrBB#(HyGhR}ClN81 zEe;Fw#n{Q%1C~HRW>voWyHhl%m@PPUbf-e&n301$?{d~6;OlWXwU+Su zPl1vxh0;SX?3F0*?6sn=(Nbu%tW8pf)C`!s2y%1FX;-_Cu(Rl6$+?fh7Yw(hTaCju$p?}7hCK$fS7!x6)NMI_P(+GpUux$>6L8B; zsSG4C$b&5gf?OD^&YHCm1PVsmR3(rhcpzXylM}flj{+bm%Ca1fspa zG!AyC^w9}>VGzbb|EpL*aR1!++_PDrl_80qV=A$Ru=HmS)m@rdp`B(7F4T@84UJ?S zG<13skjdkR!iab1POQ692L`2|S3^g7piUSQy-dXgioNnY34Ca0Zg$leUQ~dlg*`Ry z-ZkLRU>w&EI7hL?cC&{H-56z@yd@StmG?96k@1fa#V{MuG(lobfv?GPdG+~y&ho7e zA^JQQRn#LI`ju%0`ckptvXF(-^2yWPZVht-?H^)aKT3tyWQp zkqO>Uo_~Qq-bm|=`KO9@^wU5Fi&_7HNf}!{Y;n9@d?LzpzjHpkuV&rxuQzS-=!KpO zTJcvwp9M0vp!vUEDmHgJwz4$i1uN?qC+RKhq7-$|NL%e+zC`{PB?TK>{Qp2nVT(rT zF5k+#uT&)b249D2~)#r5dgIix!Djz>uWm5E^Mw_UatC zdKS>XWmKmZv(vFtBhmz3xtX&9gU$7TCGfg3g+WP4v#95)t%E9G!@GY{38Gc{-S8EL zLpIYgvu|y~{DCaRD1pC<_|UeO!!B6KAsJoU@yichbm!Q<@+~_EX2ebjnQm? zpu^TCTQYn`FWN;7t(MlwyE*${oJ7PItT_Ng`m#iFDHg#a-Tq8yfs+Un@Wv5Xcym;s=5r$6S<{=sKjNnW!>L|yBQ1A@)oDbaTuRj8C5 zp*~SR8)3YZhO@%ei*4UD9kd^0%^5W1s}q}PgP5XalqRC98zl6_!#KILjOluEoVH8T z27dN=Ar>C_VZq>xpX#oXlZHqftBW&fJIUa_`#e?Zqc>`_B@wRIK?Jsk<9A~2iF$)>VRllp|Xb=qFT5pLrbp|IWfB^I?olR>wi>c8@`1*Rh z79>+ob!+r)#9hciw7hI;*PdZMB(EkEecw~M7{t=rsuvr&k{T4}^ETr}xSf-0Jqdnm z>LvOZ^siNpK}^ynU|W}eC2#&yrUmRe8aU}=Q4j87H>EfNBDiRwz0tU@&Z!b7< zVeRY~GaZXIf^y^>4IC)wB`9aS$rrR4E5Ml7r@x|D+??Gg7!im=+I2YFw>Y(E%68NV z^SrR`mnSZ(*F0@Ur<#C+GkJE4Gvy+;X`o;bKKTT5dvNE7U|J$^8FBtrVdZ}e0dh?! z?C9dshUgKP9pq{-tkgJwYSu0jZV%C zH3f|XcLFBYGusU`C^b1`8Wh)n+K!nNd+hYm)k>>AjL!sSWd(^dwK&_Y74Y5!F4R5O znn-YnA(2}Q5W4(LYmjiQ7o(Q=7oz7j*Dn61m19=T?4IpUl^8Y76-g7G7)#^XXXC~v z6F)nZTu>?aX%f?^J|e9E4T9M{T#0-V>%h3_J}SnkeiArSh-KiVfY*951A1PBdy9=v zeED>@X0-95o$6prHYyhqMp@(EoBLGeYa7@tsi~McdbL#{Dh`hZ1!DX1u4l$i(7GKM zx~XUBMHm(_n&!W5&87y^i}KC(cVy;>uo-jaK{TQpmvVBqCTK$%-%dmQ3M(M2;uHDy z7Z&YY+6pmwj6M%#slOm4vQ1x#0aJLml9#GBIGS$yR7P$Xf?Jdg8BKI;sN6#w5w|I$}xe(u=qX zfIw=esXB4<``Zrj*J<3E^Nn^Xi6gLsC5kZ=Oe?x+(S^$HyQUHe_9tzsrs(w-7Q$BE zN+rQfDJHa);!L}M?nABL`m4;I&4}^NC)Wd-b^}>Q4O=S?18oUo)A4<#tP=xU3v|6z z%6c*It=49#;qh%j3RL_cX0pUPR9A{|5E>ZZI9BRt2K~B5o|MN8HuTT7E15k) zfowz9s;_P~7{U_eq{gACdeB~vqqhK`++YipTuO)NpLsm~Vu) zKJJH~aW?zFr=6MS7iDdK;v*F#PB^?|%1QK+PQ&IJe$*zIi`=;we8U|y+RE7r629*k z$VupmvtZnocvNL@W~t;RYGvkpx0{DSv(~;|xt`<^ri+Q?IA5omo@sKNud?L4|1!ZdgipI986ic5+*<8;y9bKKE3ZeMqg1%{%nfdO(Wsw*AWIPixN+UR0LhCLDd z3U9Xxc;?Jg_tx&KgiZqYCSCPGT>6|_+Lo*NShLU>a$voWc(ftKXMD{QvHU^lvvsF5 zSsGhCta)7BluEIhZtFueAKIQpM8wf;xfwf>6!z#_96}}CJ6L+`vmQ9#uz?;GJOWk? z!VuREdU37mr&e1v>>ONz0Xi!j-*tR1w^nF(4DdBuTSmG{On6R9hM_D$B0)sN>VTacMZZ9gp)1vDF*7=)!8Epv9SWQLJDdNKa#1TfFuTcce_k@lCKb?8J@~+9#Wy6ebbe1EOq1^W&%}y;4U^;T_{n&+Qd+8GM0{i z#+^U;JWf^Bl=ccizYyrag_MoZ*aW8z(HDW17U0WHp`nX6Us|FvWZ_WoJaj{}1a9$; zuq8~DrrRX$Aqc#jNYBvA1A}nnqw1=NEp=w63l)k~@s#pvl6A_;gu?VIazJ+743u89NNY-M4Xlur4?IFK&dl;sNnu^mjW-#dlx+nzq>f6@z*?(fxod zz8j_L5e|r#J>K?7I`?fH@TdLxHy^IUbMS+Rw+VBjHj=*`^VKWY4wkAA3$cWHlm==q zZ^u+d<>if+B$^)=u?F!-Tl@o>h6|KHk#&~>H|ROk`$OjVti$i;k0=B$AiCN;YUd}a z+a|dOG%+9rCEp*04&?&+ydfRHT0*)z+y}=-w_qZPMH3UAj0acyM`F%06uB6MNlCJs zbXfXwSW45WWQ9~KyzdpA5#UyY{{7>Pz8&-{qWH6;-KdZWBsCyS3=L5TG%AGp`sGcZ zNd8`YE6J(w+NRv(vSgWM{~N2J4+2=6=Aac8SSnxH$kuB@(!e}CPhjhVJJkOXLoidSC!PON0 zS``N6PiO<*KhOpZ1c`u8W`niTx{FViQ)>m1VSe4`X_z;=TP6I~)CSFLhJ!7b33wER z*VK13pkO0zQ6YP9pysZ@Niyt5GL43Rn0`97IXu0k0p%tJrItWMBfi{BG+cO|&j)P~MJ_%^aXr<^fbij`W7X!1@)^hdu%!H)nq07WS-fkUrL2 z#7oFPTUe9ym8YUAZq~K(?8l!1jXS37D!`9{JY43*RSyuR$H2DtDqJ$uXmeqZ41BP% zg9LnZ1X{M!u(kKS+-zc>)+Ku=FNw_VVF}N<$2sF%()45zE|_2w8ys(y^5!zdszU8x zJDvEzXE7b(rK~^g9&X~fw6LbGw!vpJ`w_+i_YC zm4(~$O$Uf#ecg86V6OS=dfq$+j(TS0in!z0(~$<1d4+75b-Zti?YX-&Fa($DhqJcF zYTymq&w*ObnZ7=vOp4g^b?JJ62JdNnQ(%8L6IZkhJ^y30N@|!cZR^zRdu(!!MqNvu z>)03~;xhp?mhO?I=RkLF(RWAw*iMz&L^vc6`#7j7?NGKDui5IQ*Tg@+VCf{*)@jUo zx!!RsPLy=kh2-cbH{tF!6Hm_V{H{wMzu{7abT^@sH^v8))+ztKRjBWnhZpxNZ$IwG zis`)@+=z)2- zmsk+=chrv_Yx6<>%OvgnBM2di9d>jcm(F?u9cNN?7Mxd}WXwC_h|fAl!Ta#t<#Xfs zIUptX+0cFz0{oSO6!sPWApf)2CFOekPq*2qblveCf62w3hApJOILud0+ zxn~~|{PYORDdzf;z2bxZH5Kq#-+R9t9kBXRro_+xEbYM8_cYabjP(&)DcW5S>NrBWwHQtkh4({w?7<9z z9rF?$N;7s-$t708D?#p(ZZ>e3At36t04gYn;mw0m&%_#`A5_2NyPyC8(UBBLEAFn0 z@MREF&{pLvyUGUbw7esJ=b&DAVCH;hm43fFlSufS8|jk6BxFp8syz?Zu_>@{32qS0 z({xV#cHU#Yua6;Gv z^DRYe`R}wp6+!)O{~(vqFn8fok9(`V{EnUEIg_pat>G088aG#Dr#tC;Wi{f$!IN1d^L!BbsW|XwN_@f)II<$3Pr94!{&RSC;x|J2j$a2w z0GoIm&rZ(*U_ZbofUtt> zA%TANS?|6u3+VN`s+YgZ$HKDv-{j>?Fz26_Y1ZzB{g;f8iyHNYtkpQ;8OAEXk&?iV zFtQ74`R@Oam$?`62>sS6#vKek8`JgI7YAni-4#PeYMUk*%i||_TVK=S`s)CSP#!B$ z$TiOIj%kq*9RFTuFL@?v@L;v>%+YrbrJMEHoQOi#`{eHsE7q@mfE{uy1GeG!gk+KK zwnqMR2RQPB3%yA1p#S2E(>`&5c%Qf?CRB&BK%mq-BGzA}fDeOL4HT`c3(kyy`b?z8TB`LAoq!Qh}#ElS9%N(8O zdr1@d1%Xa=efL^xkG9q0@gOZ?FEfgDkt~ep49n1PpG{z^J~PcJ(oR&b${-!XE|p$} zEC5iCd0c{BV32c(GcN8D$-CQx_G%^sDbHP>ZpRU|DWLRR;|j8iPq5N7P}8w%gHj|Y zwukf19M3bZTr`y!lHLC9oFQ1WM%KR1DyQO+wy;y1oi}5RtU(>m!A30nqF>7`9+UXbMIlvwkzcR!ln4F&;0l zxI*JR2MA9S2!r(3n5Yn_Iow8>#=BxHR;O#ZASZG!o(Jt>AIik1_nv}XyK|odJ3{7OCca!(k}-` zUT(Kd^ef(K$gY_(SFYia?TXuBPtUP$<%2jIk_APmC`{tHk6prj6PplQ{>J&svT#|f zLZY4xaMnr=Uvh#2MNrGYZO~?9kez1&w8j8B@hd7XERxxAtPT6cO-xx9Qu5|9YPCP% zuUk(aU3$?ep3Gpa{Xk=r_RQi-_}7=A{p+ z_5yJic+pdsib*>gmXB}i)W+0tY-?A_4#=fp=poCklxfe)uen#)Z4l@@#3}X?oT~=i zkd@`cK`-q`C~0Oruiyg-FSVx=w8QpTfJPSCZ^m)=-u!#|^73Jr>fpi1*@G<2;b0K# zCLB7#Q%WiL_}IV-W9;2H=sFfh!A-nr5>P+NI^$H?mtmMSQF({(sqH3?gLiuW4Y(v~ z5xX7pj-U4cwv2V6;WNG7R{k0nI?gGEM4h#A(;x;YuH2VF!JXJ~SHUcslu35pz9;-& zQRy4V6T4h<8x4`r`IA4k_F4c(IeG9IxPo7gtCnnK&4}1U*Z+4sABafPBiW#^=_12> zuPD&+d$uXXh!Gci+td#-SM!eZNb6NNq)%m=HY;vhlLnsiO>4no$y?^wI6yQ#9I3TViapD{C_9()sD!&vT>F{6i(htg0`8Iy*{S?FGL@NT6?qh z$^|~}#4@HE$-=6oa%ym2M=ggdxfoAYy|ol5q~=qA&zvMBr|N# zmrr=KpZe)UxEu4pn0&3#Px^KixzL~?M$Dwibl4EN<(PVDs$AXp#I;#TZw9=@mWIjV zjkNpnOEb8!mJGT$FY6JsQhDu~mWpf^B6!(DkmVjf(7EX+Fa=X15Ly>eY$=e?S_f}z`wS1{*}Wb5o? z8lh2e6#P_)L^-T|G%IHe2g(8C4#)R}!Pv7*G}=@g96Bp~Qs(#O+wOyr*XS z@9YeQU@!(!h=zc;3gY0;W7c3BFP9l6!{vO3nL3Cz(vi)Cl_v4D1g@AnDGmX|W_m?f z4f5?-WZ7L^A^pjKwn*$_LsJP{!T?Rvjad%s_EU>V-DJ#a1%)%g%8hgci%Nn0=w6lh z=k?_1Vi2aE;)%x~1oQP!hYERmq27GW<-4v;>$HqyNN4}$x`!QC&AMFNiF2H5;=Fsy zey>Aa^|I@>v3ZC&zj0@}Z4NdURhA2>UduL;xeq5b6k``w`uIi`HJ)OPMBP;0jIBKY zzuyYVA!Bon{k!at-L`(Mlb8;oyl?4hY`V}+G>E-Wg4yk8Ox`fn*34}eu6);LwGK<_ z2vEtL>{k`EH-V$B$3HwxkdxGTu`Bz~oAX2nQvLyHpM!abaY#H{2lrGk!=SsCdC}tI zEl5KKwyDvj=h|5TXVig*@LdHJHH7Bnc;gGyTw5*8}RdidV>DV<~ zdV$udQ-_<;aB5taiAu&UQ!c)8G(&kr!#?Skk!4=su2DK4m(K1l4I#=y#L^;8xSCty z;9?eja&lWTf}hzV!(-m$Rw3Fp@#LLXx=!KlB0Q zYgHyU7#>DF; zL4udes#}eFmD+_bb~(vTEHRgo(gPV~Mmw=L@}#pbI`*j#ymf0UTWrTRti%YG675`OC+dU=xbhAeT)a-%HcP z#twenx?|Tlj0xAYgDEh)RPf%A%#AE$l!1I^6%)?8=dxO49zm%nX)l?npHhtjk~#N$ zM<%rbW#bN&N-4WAWul|U>z6>DWFE7xaZO1a@cIYTms{0f=HoSPvFrP1J1pnvHtIzs zj#MGt+6>AD7qj_eSWFGPAk}!w#a^|OUbBAX1nBfBGngP5F0B}(J$=YO{5vZRwrCth z76g7a_>OKL3=_`PF5Q@;1_JcQrVP%JvD}%brt;D*n6)vRJeOtvdYewY_6t0e{{E(=ESJ>ep@o}y6?{+90mK^72Ly(PxWH|A#*t6R*tFo7czb( zW?ye^`{SEvYu*2OikrF)G&@`y0RYw0A^N)0w%pqGO!9Uc$uvl^eiJ+;Fx8k^hKhq+KgD~rrsfH;zv0PrNY;h@vIkiVF(gvL@6t+7Rn#c)ptLuF^QS(NEh8{b2{62_3W&F8V&MAduc}|QYbmzdB4%>pH~#sUp!f53#Bqa~NbF)TCNyQE z9S)!G7l|>yFixug1))~g>_hY!z*nM~u%jIoQOu{`UWPL#Bu*2fSj}=xiGE=vlt{A8 z=;K#S#}}h21QZocSRl&?HaOWv9?C^|k?vI64AmP`+wUj=(Vm9Mxm>iXbypL<Q>bR8oBLW^WaT^qg6BDpA?w`CgmIF z#zXtZ8i9(DZ0qzIHG3@#@ipC%hP-b!Fc=8etP(8dKC|e_>8#bV_zVCpbyjflBi2M4 z=5M64Qtx;}AdJ&ETQsgOVZ`=luc~b=*iBZMx4>G>T*?Mw%$vOSqHH0|wj-4Z;+|=g zZnjnn#8r0c7;Lw&tDnECVP+9XaUX+9x%=tWtIK=KNQsa_QS0<0o$x zh7)wlH`az@SssTOlgkQV`(%aAtgvJX;3`w@z6%Iio~N+X&wt)2E3ES zqf2jlsTvaeJ85yoA zY_m?k>+R)yJ9KNu8J|kx;9u~Qb}4lxqNIl0+E7$}B)kvAA{l_51&Npn96&+Ria^sk z0U0Dz{W9%s{pszz8etAFCG0O$Taf6DXYTFVvgZO;TZ{MAY~QeEr#GxIp$0IaE81-J zK-$|l!8id(NUN5Q_3QxKjMZj3Vh;29_izFQHHR&AkYv8yR~GfVdvdx8lfGB-kWtXE z4tiefz3KgR*;yz`dyTseokLwBMk6_NAhxpcd*bb0Gk*W)B=u|J?Ksj8iXy*0`TEp^ zfJbcm7oYZ<`C*`J?%A*D*qiUxvfhS6p7z|A7+)jN{}cn^)dKO*i!<2em+ZjIUsHN) zut?)IN$+Et`LR5W(e)y%_MxGt5DJ(Wx)vRQB*YfQ+b9)>hI}zX7a@7jZfe9)pjTCk z8Ld%hac%6gUl!Mmzope-uNzsO>#17BoQ-!SRE(4S$ANbnxBujL--dYE{~Im$lwdDd z#M|?NE9a`8pe^L#+uBwfsV&IKx_v?T51wGY)^8K*j0Gg0y@+C_Fx;FSpB>Ah`5;!3~kOf_pO9Pb=LNZ>o#)b{hB zD`-8>sn-8fzHzX3N*yG(QRI4COUy_RoQjk8@cA}?m{>70+ zpg{6GDE31I2g+?UO8Z6Yhe?euL?|3yvWvhYY~k)?@=PvVaX-(w@WON8F{{Q}H%qxN z&B5?4`?6;EsPEv$Ku@Q)vR%hcB5n)&tdyTTgs$tOV4~mmx`87Qj8IASx1xtSS!uk2 zLoXLwLOvu|m`tWkze*}44?!_csvZk+237)hl9*MDCs+z-m4r76c-(IOl<651;dg0N@l3QLgSAXg#AgSigJ3LYD0Aa%$63UD;g$+2bM*88z{VMxFpG8@dt0|{|{thn7_UlvS04sd#VhqE{$1ga*! zNNlv5xE$zCT5fkbHZZltXKNQq+k0DP^Bf@3>@ZBEIZS>T-(zhlf8HcAO^xL1vs7v>d!}wizRv2ttAP4t z#P-qI;PgP0Ye<%m<1d#!sN!oq&;o79R~8)H|1vW%MX-CH7Ust*Yy`1d zO96PK=Zk5C#rKe#=532!w7Xfk?{3aJS($Ek$$o)I>|S2hwgA(t!?)$Bz~zXoJ;E)A zW=h6CnIc@%Q~I*+26H<*8#KNz$fd-{oTQ>Rj)0OH;fh@om3ou}aKoGSR5;NaI)P)_ zY^|?&=6Q=`^b1NbIue;bQ#b4J%>jRD5*BWOf( z2Vpii;h%_2c5MsnOC)XT1)y1Y>)ai?EhlxD}&+)y0vk4OK^e(cXtU8 zAh^4`yR%qu3+@u!T^Dzk;I??sUEJ;Feea*|R()0dr{|oR?y9Mpo>S+M9xJXB&pRcL z5tHQ>0aW$y8}~J6#JtqdJOdlu0YB`ZocbT9X9x^Dmhr>!E0`O8Sk9wD{G44i=s725 z=d$n}u@lUt7p1Fv^U`|m4sg)|6DdVZe<{*bc+iW_QvvhB?l8LF4nhsZRL0pTbTAt3 z6sV0=aN`kl{=%96Zr1PcOFBVlyR}&x>l!3;BX!kVD5uF?4&>5u0xfTe$QP6T2&Ujx zhSA?_!VrNiBwf~6TK~n`^_x_jT~4i^!OBppFV?dM*7C@{I@E>#3V$y@T-Cw-S>)z= zxNz5n+X~QjtRe^9#0WHRQ(MA-o?_VoW#}8%Z~~=$`_7S6st93B!EdKntOO;^Jrl7Y z`&nn!&jYSA?+h$o73EkhqQDjKMtt%5yXHyfJDtr$T-?M&MHvD@E=$kNDi2E>xShd; z4D%&|-?~dCTGw)P7NYC#d4$6$44Efc&fF@aN54-!mY;_GFo z?rHY~mO#eh5}#Tc@5Q)n40!1^#CUIb=Ehv+6<|O8^4&o{YQ!~1n-{Vm_as165mb(Q zrJw;`#gTQ9i3yQG=*!cL=G;7fbsgwpyz}VGkrDi<*SOFDFCr|6MWV2%j4G|!7(H~x z#R0N@+_seN+7u)U-|q*%BaUv}aLFG7zNQ^#Kr7-j3W&gFv^5+xQ3>;cukbU6|E~wo9`T zTbQ|XwWmiTajdBhKVTD%L$G)kPj7fv+nWCLtgcb$z1S3pNVRYXq2pixzc(Jhio;O2 z(b~iF?09@Z`Qdm!F@o)@?3UkbWJi>T0D?R_NS%u?)me?I;+7%lW|NNKJ z_ByJObfaLdI$ZYUEr=KT$ZoBgl=~rKtA;8xUvH<}PM-EI<^t*+8t)pd`u#x9ju<>Q zo9$O6jd35kM!2x( z)9|mytkKrFd^85yeh%ZLH@Ln0<9{Ayv;4i%fHssc+d1RHTIDJu+hTR>J~D2-!0Ho0 z&-s88Q>;ownThki^?mcF-=50Pk(v4$Qfj}BFWBX|K12HezOe-e!@H631mvbWH$rAa z1IE9+GhsRZguwk1rp#7oaB)g=5UROWyU!6bBdgy=Ji&RWZXnseS;Cj9XaLma=P2c* zAKpppSWwZvZjxSl?jvBvHtt*KW<7`j8wQN!(6eB}0-?WlU)bP>oVz6|amme!452~e zuj|)7$|o+z@guX2*iB8gh?>U#6rbBLqMO4gvx)8dAo{EA8zs`F928lcUsWg;Npr1l zbX7uz5=18pHzMABDcJBLk_p(#)owaG+JkdN8_!~(F+74 zoZl&(7|!x$?r6Cv!ji#FC~fuMD&+{f{*Qf z#O`%HZV6(@7t`%}t`5VX%U2sE4)r?q3~L&&p~beKcz*c$Fe-bBd>b z0>iFvdDv&jZHR#&z^)avdFPH%SEq|>O4+x}XRP=}can+CEW!MN)x?Ogn!qM_i#p}# z?$P+KDM zO4KKEttx^$UNFHOGmCj=yQ!)Vh9)#$TYK&;n>-W~+yYkqtq+|k8@}p{CE28j3t6x! zYM)=zePHm>SBr3uoCIs`d2t_5EYX(=9g^)MKd|lT5#;h?feqnfANYj2C^pw1SWAfN zn?zrnG8Cz%Ph~>-F?<5?vN$`mu_HL&F2ycx8hdvi{AxXMA~yuh%{y-=KBpWBbbfY+ z#*W6~3tIs|B#Zd}sPx#24LaBeu>FiJ_&BM&rI<#(=i+Npnn` zN4Ih>>D_pEOS2I_G5PbPV(mmkPsIvP%Q1W722F0kHzLm*2{2yI)Y(d*XGA~CPuKxR zIass%#T9PN%qBfqpj6; z2}6Jcm`}}%bH=pM3}W%vM@q@%@~v1kfd+ht!*uq0KZBx;yvb=S(xj|x`o44ZlNkW{ z(~^!_h!rf}>Vv}K(Gu^s;=IIfvxM=ri0&umd)l2a=4brt*C+rZC`CVbCw}emp5zcuvu? zhca?NnuF8yFArx;JpB&x=*#}y$*Lj&%^DnYT(=(!|Kv;EX9kGEiRK;0qA2Gadh9t} zy)g0ojGSeeUJ$rXy4Fnv^s+h!a^7zd5=&2CAc<%V1j<@Ic$o7BR=;)sBE>4Y01S$* zlG-`)cf9Vz4bM0P=ZQe#g$oOozW_zU;NYgyCkvF3`POg~W;mG)R3KSUf0(-PedZI3 znpN9(vi4kS^On~tYmttnYfZ|RyH6;5y>u*j=SZveJDim`uAH6jjLW<*Ytni2_T0gK zCPxSa>$xq1q@QX>WNX=HYa3*C0gQj?8O8moXZZ<~)E2~awNofmowkTjwGM)(Fgo=$ zvj1#;*JX@r4vSW63`km=XYN=BaY!Et@5Hp=d0e>J&G}V)LLemns+Yh{WE7{k5R#1N#CEjWvbt&d|&wsMe>A%Dmasr}&F03o8kmFakCj zx)BGRi)SNGJ5^Zx0hyo6&_Gg-2$l9zJ#!yNuM9-7xrsXVh;7J%sOrL)^1bw#D(=Ilr7e59A;i6yO2NvSk`;}{Ep?i+L$g$-&HAW*mHzv73Nwy#NNZrmeRka% zh6E;tN#^}u>OV2)3S4Tb=e}C!UfAb5ig+#|)~STiFI6u!1S`*~n>nm6#WjAk9vzV1 zUjYY1*H*)y8!FJs5gP>$+`?8&JceT)XGb=;uirNf9v(&+wvg$Llkm~fYFT*aXf{Gv z*0_CzF||nD$01jsf(PW|B;hExbo-hrj1>J+4a4Q~=W^L8hMz%u-dZ%x`@7D+mcWA{ ztZzR-wv>CzrN1V9e6H}m;5LHm=jo3-cLDQk?K^GVN59+P+^G~{HRRndUfj&gN_B?l zhXr{JbvHX!ai7&nx_%;KyI*>^eY>(!{?etEV$Gu=569ht0jXUzy^}-dbDzgu}rDo z3vs0&<-|?^&JOWkWzULFl#~?S>EQsPFnBL_1szhcRC{5~aReoe#wGdGYSc>ergEYx z^QLUR(T%OVO7r~+In7X$E%W6xCswlv3-9=YjJPc735$&(1nc5e@h_q0n%xauvx+)8 zPFZJmW#`~=`ZF<0MF)&Qs6Svfx1)68s;lFr;m~y&JKP$kAa_AQe&H~OoNPdI3owas z6-r_9fkgza5tVtaW7r4U*V3!ib;`^iS03dc_35OV`g5|q3YI=$4cUwZvU%Eo_<3?k z1m1f?DHt{(#PE|${38u4X%$7k6Sc4%V+Dvc^%dGTdHTg6flO7v@sI#h@oYxIV`y-e zzGW+15Dn{S-7yP+E8_I?KmX-y^Ex@$k2Hyla4*-{QurjET@g*d@YCTc$Mc6w2ulYkxak%iFYx^;xFTQF$RE;t_6sDMlb;+ zWdP@1D!{8`@Pz_6$ZhV=34O@7Jnf-Lo6VH=<=fmuTx zEW6J<(rxx1RYJwQvNAB+ngPFwYfH)(%6)BQN^luv`@e1kG?j9dwF5 zRb;lvQV$8LExQdrJOGfcMuEKeIqX#2u@2(}9E6SN?IQ}+y5v^$NpMo1Lf3PSesfC0 zkOiKBhhN8q(8Z1#08Rj^ihGok`kso|dg5 z5tj|4{X4EiGcIv4O1I>V)zWfJs9Am>dJ}HO5Ea?---5!>Ns%u61WhSj2clEBEW(^a zDDq;#NXiW@8u>cE&ya(=Fz-4^p#5~7E1-qim2Uy2JVH=vV)3b7OUI!4RzWVl2%CGMp@#z zL)p##5PGuZ?3zjJ^%v>9kxhYVND2|mW%`{9asEEHMIy|`Sc2UB585KkUSWBFva)xZ zwlu*{5dh9BdI%Z&-o&a+6smSh3(Kgn%pEOoJ11?TU#~0+QDU)G8487MCzCPSHDm4X zuYEEXQmRc?s!ENl9S1)FCb7H0b!L2sE3?U6Bk^%44Laj48Cr2Q>Hf`6A#yR`<(?yL z*;!4t)>GcEbsM^6OQoRRir@4Jh<~W$wF``3YXImC#4j$*4cI2*{oW zO4;~{rcb+RhEZ_H&;I3&n3DcwPi%F4($4+mtLkOV#5^9l>7%~86>8acaVer(@5`+$ z7CaGk%ta3V;7C^HWN?WEG#krpo-rVkJznR@2G~}mUPR{|Vj|9;tPiANeDk)+c%xLQ3WK(`BeFs!% z0E4bt3o@fulNr?+nrsT39pPF!aNMgPrnhjsZQ$QX^td5okVY?T`rf0wzC3HMB``&W zl|Ujx``pxBV%o-8u8=bi5bPn8Oy@wU!pFddophBGTMgmw= zXx^F(025YvyCUK+e-4?;IvXq^(V(#3t97F1UWw*r?=>6rz$`q=NpzAR#0yg~WI@Sf zNh4*6WGS$SvB3$|FOD&56L+?fk*PVSxx0I6!@5))jFnU{Cq0LmD~$eaZNs61Wj)DE zoLkjXZG93(Qrv&Q13u@Cv1>Ah4YNjGub&1zVm(}I6Uekc=#5PmtYCHLD+}nCMb;Xw zo>;nxK&o?dz^)o{@lv|*KOn;hH{~Zixnzs3%w{YLc@VOw7-#>Qcahy_vJin|BuU^R z7T4sKyiS^(e)+14fjJx?^8kWHHP59h@+dw8zN};JHjQ8lOP)ymUJ~?UJaeTH9{X+l z53HPv8!LGeEw45EiB6=nzU-?+N4S&nrO24xN* zHg7&Mk)*MfAW89jfX`VlABtt_ah22BY8g#VnUc}n6=RpGXkd3>Yl_{^PxdHePRwUT zjQCtfQ|V>Fo3^@g3IP1HhZMD^u5}}=GesT0{jqc!|EF%|my^pugd;x^C2ye4ST`0Mr%8K}G>q06fa1*wOd#T8o0qt25>fw4-~egIhP&06Jcf8_%@kEQoj3r(v2<7&l-g?_FfSM73JG!Xugit&%# z7Mc~C!}D|<#d77FaCf`Q=k~Z4`76I(?uy>#Uf9ef(LnT2yjQ|D7ICKK z{KNDBY*29TJ-Jw*OcLMwintG7HyjPVk;ZsbvRp0GX+^{RBS6;7;Y8C>zrzA1&z(GV zS@rYJKo5x3DRBH%KvNLo;}M@m*}a1#U(AWm`WH=f=tl4nZg3pC&klV|A~k%i&rTlO zo9ig+2xu1$J=9SrDe!9Uefz`dFtMb)l5^@VJIlTJ7T)l^uokJG+Mu^J+40mJ(+&402_;N2 zf>;~{JYRcaO-Hq+yX8cQJ!Ic1%VWx)&=(CP3cgd`NtQEKLQRS9oapM{2O=46tgL?D z~BzT^*?xVzkPH^9=CiaSPdh zVA+D`_1{}uP9R_WsF60t3*(3tCEdoAyZu68gxfhT^kfp^KJbbzmcR3a3@c<*tKi9r#uzq>~P2pT6QAA;6jOLnd}As6U( z@h4)RHf+l5Kr0^vi)VkmouKYG7-$o4O3k75*PZJQB7`I48CPIHoc*h!h&%MZk30)5 z?mG4M#jXzRPZ;H*EiffockL`I6}6lr1PkNf%B@DO~z3I}pS=!4<7w{R)^SEv%yvBBh8(`ePh6A!|vRIX#D_5!vR$H5JCdZinSf zMfqcHk5NZwbPKzaK)r&idMA#igI(^)k&wkc#tilE<3k){#x{}3xM zwWzRi=dky|(=x+T9HN`{bm`bnojDT##?7TnPYm>I`UyiU<%7Qn5wLi<3&S(`{0JV7 zhcz2FWd2=gQ1}{n;uHoQb(@5xn>dIhHCf&P8VMki4gUD1p*>sFaiKq3%K_+eJnnzZ zbp&+JGUgYpzHrGplx;Vp0*HAOmeBnH@fU)qnAm9v})z30dcFX z1x@M_!I0=CFmraTR{a)bIvTR<<7QaW;WU4CTX#092IF5s1P|1zk`w2agT#WgD;r~N zO)dWl3&eJ16DHW@RT_A4ZM6~r0-nLu4M@XLL>5N+)7DSdxa}blZxfZIj;s`P@|zpV z5~_6mUsVbm=v_Bf8sRkttd-7xI|=Pi5OyW4|CsU3@vN6Jo;fSS5Uz9dsQJcGQr9cA z&4)BIR?^%Ctjl}BUVw6%=D;%4Q`kvGhKJH7|d2g1U9MmPGT3Rgyh}ZP8845B? zXgXm5=4LedyK@^f+?apf8PT7)ZtpIjKmr&J2oq~Nx#xvi0VmibWFGyv`sR^a`z%(vAYLHc5>ESxbHiVbglkW|XvwAXA$|FjwTaO1SXQs4 zd~!+jV^-|QVpirUrQkFpQRz=3MJufQwq-T3M^4EhM}pJPxu~_ zgJ#0D7#2!k@#LE!LoVaS!PkW*anDkaOs(PJqD4srL11qmFwR#GvE6g3&DICniuH2q zwZdy@R-S5DHrA;HN~EcclSU0Sx9>2I3nN9x#k5zkL#i!y_vREvRqn!O$}VOnu66Ax zDuCnJZyy5CS1yHxpA!?9P!hB)3pUm=UuQ2I2}okK@797xGdct>^nGpT>iIV6isoz* z_fM7GX^*pl&mY8j6WuS&N<-R98K&g??z6M#IJs9 zAz;MgMftTsZj^kM6!(QktluUyS$OySsN^M*!1V|~Wf;7DPK78omC^bVwqU$3p?G;UaB?Nh=BrVG#^C2UZ_{NNIK&R+)G6F zihKpY%!TpAx{yo95c+_T?gJV~ReW^fmJgcp;g5#kRmaU;)QoU&XGioN>G@9$cZB+f zbe?J`ce&`(t20(Ar;pLPJ1|6Zx2`wGXdmcR|M2R9sM!4`7$OY!QXO*-><7JKKRh7# z<)#n-YeXS0Z$hgZa)_{^XVEF)`cqC2%O${}{?N2*Iv(9F9awpm-G|WDmoGrnxu+L~ zIhV9m*8QjWx4Ai4F61!2U@vXAS`>-#`;85WRLx^kNr% zKRkC`k8p7Nb?d%V;IMBZ)vC&7Pr!^f-R#e#_+Wpw7F*@VLn7l-|I&pRx1<*+ob3sS z5*Qe>fZL99rPUM^T~OJ!v{l0@#y z;|>*mbV(}a2zfNj-)|8Spy@HJg(OH7CzL&b)7AF!+koiPDpHUI(5<%oh6wMUX!nNl zW<8xCY28p!p024bu0MN{I~7t=>?MGN7lc9gY(qK(BGPl|n5k54j|7{YmP0lVStF`> z1B#$7HdECsM0Z?P!NGf+#7$4(Kb6w=MYH$oqlZ%JVNKS$1*<05nMWy$14UJRD@EKz zqxjZ`;Mp$$k~eDpKuk;rpqp2#CVORK2iwP7s$LC2?ey;oU~~L#6yKcRh6Nz)9)U#9 zR5vO0gn^jY#tKj_VQ3#iT~j+Ju5vD7K)Sx`%OP>oB`I9g56yVPliRiZEF&co9ay88 z4cy6O*yFkS+Xef$SMtkK*CMFSK1&Bg){xR6Pw?kw)n+aOYn1pu(mnY#wHe;!TwGl9 z-s*R|$p|deW&}Q ztc;NjWwr);?~nA7asd`F={J=#(pvgj=xAkepPX&6>pTI_q=xG5i#9v}w zF{2DVP$h=HFVm-_+AuwSVu(kF=lxQqy!}oei~#Md$UqWYfE}qB0DlWGo+6pyq%eyS z^l%}t@u|>kSv`x4@la0Xe;}#-QzhA|0#8(5ASuB9q(}7 zB*-LGwaL|tp>m>_6N&gvI&{$?=p9LX(Y(R6Md0z&Y7o?;>l)y@qu4)pV)31Hsjl{i z&pq?yjX7q1U0-WwJ~BF>M!MW_(TcgzrUyJZ8ayvv7j{OEiR+|AiuH-mo+zr(paS-US2PlVWkHg}^|acc1A?_X~3>|)zy5Xy}M zcn|_6jtMUKqdUD@Mk!iC%4s{|NC#JZ&0q)DG_Lf}O3Q*xBEy#edn9iv<-FHjHamLP z`T4=V`!|k6k5=N{zm61OKbZbEk`I3;oyUv*+Ef4iMT_)kB8 zU=bE}AzkC$vAk`3rMR_NCTGH*o0jz*yWGn=!q<%mbl&xbS-K57(cGIDh$$5W0_RIS zVP#O1*X<3?!ux-=-iMm9!Mog*&v;G>bkYQOr(H~oLZ5cC2VcnEJ1HG!X+&>;$ptvqb&!%&a76>c99zy(+Y~zD7ejAA9 z)IA5?jeJ^QT6r;gZ~J)f{iy2=;w`U3x$C(M=Qu4vI!z*KeoQarubN zel*ZJy>34H6$$>`n^^R`mi8y_tiq%&3vqvSX8W|&Fy>Xj?TLOS5J(2dkXV~|NR?<7 zN1Mxi3xm`i)2kexOcz-+kT&~c^xg!bbO2%f@Uvwj7&2lY@957p|l`?0ptKG2ILB7(W;@bVuzjo8p8yB84Pd zP4&V@phsR@5N2U{MVG2H34gTMA=en9^_L8ZXNI>|EB^CS0N%+8J;|%zU^7f?E9TjnHIRsai8T3ay2hcB)E)+}2~!i`62VDNT-^%X6}ha^ z9Q_9vYkh|z)5N4cxRd>fJaNAnw1uP61+1pmaHHHIOPcyev}%UVpB$`oo*RLWLy2fv zhZ{C+Pq9KNhWn#u;jva!;Jp-_poiINnzv~}_A^-*FqSBTU%kR;Bk-;MjP!?ad>p#) z@ctT0H}EIGL1fo^VOQ(hEW(7N8=s+sq4ZkMTw}xT9v=9o!9?wrBWX^_#wJTv zn4XdZ`Q2{cCx4oQ%g)G14}b|NVd|R)%S=WhV#-dF?r8v~8BQCUk#N1t!P)&6)q|} zR6F=}ibM-W(<>L~(RQ!zV2pQF|+|M5Gc}?_Yh=d-$HyP^&WWBROoYR&Kgd*{3TG zCtEslF7Uiet@{?5-Lz=&lVDVet&Ga~I9X9EXA{~0aII;bRR`ije=Ncd*Mb^HyC}Y2 zDYLeE+360fTC_)UIjBX(7YZT$nX?pQY}Km$VFI>E-xPRfSrRU6B7^NDD5y_&0QB587xpp(49H&by9V8LMhz3-adISxL6TxY8(%4dMCF8>ka&5|F2?{I>JP(4K5 zC4iMb`Py~F>y5v`siSVyX*c1wyu^zshGl>u>(~ZZd*QkY$9Op~J|Mb3awwkO@2y6F zg^;!yudV$4-ebBv!J}sM(p#9d^|Pk(oU+|1#GeZ{H_9Sd)O~DL1DeLLT}zQL$=Tb4 z5njNvHuMIger~puvL&>U^>C4<$W8X@MXN_7xdd*4s*INLc(pR)C6FITl#gASLnDFNe8OI#AKJ4dp!@;*Kz0XI1B!8q%gNvWbz`H)joM}zaXJ$E9BX$LY#Hmp#S>k!rd(7-ZklCz z{G1`s)D!;w_{E~xG4Q~h6kxV%{aRIi{x#JT3GKB;lpq4}mh=Mw4Wp2bWHfyelLL4p z30iA-sRQQ(*x`0@w$GnGv(yl8|CAoM&uWR=>u3vnXQ_EXnH^1^w+HD7 z-W^G(?d1*MU}HFV|1K}(MFADAhkCHX(&w@PZ|BPes?%|vQ&|wq29%|8Tar3WNrziK z!TFA8()?8$lI;?klipy7rzmucDAK8gv9l+2=dDH4XXS}uj#6cgQESLM8&vEY|!k4A^1SZ|N6vs+3=XZv;cR<^%1$#9ejIdZvSc<}eT4+~DkM+MZuNEuMS2J%NoEFX6+* z0$CgL*n;S<#xW%-cR2R@qgJh}gE7qaUmC<0pq%O{nkkmigaO7o)-#yt!pJf?&7 zZbZX|6~eS^1lpssr4q(qESNmOVSHd^UBY9}+IC%)ZnRULI#L=Q{tNZQsT}}Cvwd=J zC>)m%ZL7_q3lP1rWaC6f&rbf?Dt)*WbV<2?t;jlgMl2S)=xROlN7_9CHQV)Xl+kuu zAs`YTo}=cuuuyYUgr{%-BOUT1!=M9U_eUkZlKdFf6+b+4xi4JPjNzxJ!-5HlZ2Otc z3NqDfG zt>I&^Y-PP?BbzNL=S%lmuC0#aeBQQwvu6zA7v}*Yd)HYa$}RyiG0Wf%ZkC(At_{Jg zSF!foAA7#6XZ&b%By6R5Imvh(UcP;kRNi8(BX1-m{Wp=+n4Q*DWNBm@ip6e-%6uNE zbR;B-@_;ehI14Rz`^BJvr&j}PZ%T+5>%~AbX9m_)FtkbhBQ2}N9NpyaPzz`IrH*sA z$xr$PjBZp7)CpY~bgNv-ZbWO9>!^Ovc#gn!k9kNrugmau3D|btDLvMC3+8L9dhY6P zLSlMq(?XxXMaLnx8I6C&T3%5y@PVAjexLSRjStpG^z114EcGD6=Cb*^0)oB zU9vTS1m~Nq@PKleX2egq$!);ghTY8l`!5U(p6aqv7*?ykKYiqCar~No3AL^o(f6VZ zCh5D-nL7wMIq{`M$V*^l|MSTZ4a1OQ{nXTAD`0vvimW@!x;AdfTf@OupCdNlZvS*T zX%6`Cjj!3S`!|MvL0G&TT$KL=P~)FA)3aKDQJiS*u%tejcZpE-;^3mwxhJ9>FXwPdHwkq5GD zIFblJ57<2WWBmI-cSVzTXsqN`6t1~+fzuoRcbkfrPlQH+)CWf6=^kEJGGBT%V^MEZ zTDO{2mY-$*v;A}-P+Jpt=&Rm&GW@;h@BO=rs9mfK34qx7oDuw>2}S>2{vtIh(sqK} z?nq?kSNcty%K|Hv4U((j>C`4D#Xy#yMRY`)nBR93Y3^LxSZ#Lch)A~k97A?;eddr8w37$f-9^|T7=%$oF_cecGUFSN3zWe2yMNYA1g(wC4RMKc z*M=mX3yRqW@YfQ8k0kGX^_DV!-eln*GueU5VjDVkelA)&6){G$cOz63%*QYW+cL9*#4cx#alca_=9!v%J%$-2RARYw= zul9XYyUI`PMoC8*D2)V<_(k9=xdDHg2)7Ym=b_&;t|G%R@{1ryfID!pfSy3x3|81f zC}XtS+C(mRK4DGMvw__@K5eVV`9-<_iB^s^0`>3t?zB^@>NvY);! zWD{&`!XlULq=dgp5Xwm9gsY_U{dV(!m_N z$KNN=m_v{2b$EU|g4wfsh%f^p29V;BwgP6*u1W#W)sypU6#wqt-xLZ4;mn7t(C~JA%q>(Hek7BBb^EU|J4gI&V0DKxj`p z*9U00QnOlVfUBKbD1rN0iM9r+jM27jHv`Z$sg1}=x&;UTi zM*bz`F7>Vy$MI0lFLaUkuvE<3}i;@p7-P6-vU8Y_}DP!u-vqm5k< zrPiZI2t^d~z655N@|WH!O>HgRbosiDr?MBSM4Y*ZALDD1O?py#2SdcwfZJE)I&Fv2l2vD*ib)4t+XFRM61y zOfCDdN6Qe`Wp00fSMQKuXm%w{Y1y=3DDkg(t-I)bbZNZ1nH|@U%GQO2zX}L#4Hvnd zZwrK*r^~;~GW!oN&>-Z!(nYygwtx>k4!#g5`XIm;dJ^frKCb84M8JRwTkuB#j$?J0 zw}dki$~PCao=<$GZz=uLL+Gn2`MxwG0?2TqmM9U5>@iK1V0pZFu^=*x{zy#Q_Oh<~ zk9WW;;5|fiP3L1dsokj3)c@7^GAJS8hS#7n-;v1N_g5fYDP2`3_Q2ltr1v3tucl27 zm#8)i`{J1!cLXpP0zjWrWIvTSLwLO;@4a3)JaG#7{K~Z>jyl-Bcyz`pmc=b>5R~Af z9wTk#Wk1r9BBrNnw6F4mC{&Yl&WN+-ugpWO=t~jp_btD>h_Z+y8Y{>hIhj_9$CsDW5mtAi}*K zkG}q<<6CrkpB%2)yM4|-!a+RuU_aBox*QrCAr4uo-zXlw^Mb?khs`7+=^nAXk(n07 z&JNCExTGYZ0c`HzbGE5Xue`xXq_Pf80-)Yk~KER({73ZA+p0a=mo|G3(Rrc$^ zUV5a!eIoixkwQw%3sP~*U@xxe)<=!1T&hlk7qN_=+q0+Ot^nfziCuHIBO`rkfwn_gs(Rp73-SnYbqkXXgIXL7y3db( znrzjV{(u+*-XFY0g!WX!aQe)ONH3P_eEYuCz_4Je(5DW8h^%AL`I_AWhe|hXyK862 z8AoH>uvm`JQE_uC@H5&U)Jnl>kq!$DmMwX3X4>$+vlG*B@)V*z42|JAtA!DS>G4`Q zXfIz|8??^Hq;3c%C1!~n#KCMz3LDUa;E12H0Ur1xWINncbB3@8H)97p?ECC|=C4Ol zNooBJI%%6EJSkDyEwai_$^NvN`=69}v{0J7WbyUmVkTBV4K4=1MQV$IYvqqx%o{NU ze86=~NBRI9ADKtuD^HjT4&8|3JXfD&6xFDHvd)h0o?^_m9xdeW{cRpsNV<4++RdMt zi`N=|i8YPcfF|w)dJbX~LbFNekY-HE!?~2Hh@{x4LuCYAGsJ0U;8VWcvg;oV?ANO~ zWn-N)p66yc-Mr4Ts=hTO9eXan&40n}qz1Gpcmf?qLCe?9my^wZeMW^sYV;ZBZynu{E zm_0mCCUGQqEhD(d@A4EURf943|G@5=k*+PUSaKqttQfT(unHVM8_!SZh^-?ath(w- z><;k|$daI8k3FakKs&$@j?PaR7_^NJfxm}Bv%3&VlNT~}MUYJ?=MQ%?=M95Y5CKwa zMEh)y$biT*8)H{a^=g^6VcJ4O6oA1k1h#`DUfCCfxaojOIz&OUHA-m~@}s)hqxYYH zJT?8+6fc%@hNy(dlIwFkgVOr=L304bFLS%BoMh8a-gZ;p)(T^gO`06R45$V1bsl7P z61at8-JI%9J-4Mo%)5_{ukM+9iFvr&rGf#)3_g0_Zv0;w?oEh}qqbMxE&;+VmP+${AXz5KCJjiu<(obO6Nv=(-PtKa}E^3S?^_sbb`5}E*3t0JsNHR9_EC=oOF(Np{L^N_ zjB@_4eFbOt0l>));;&C#(@F#Kk0F~~kAx=yaATI%ck>B`Oog0Jw$Hqf$1tD>v_39c zW+7?0bq4I_9N|Pj7hCN`#6>P!Mru^qIulsN8o2b_$8Y-ni8ZDlEQM zF(H1<^xj`}q5FYFeRYN>ha-kmr%q&~GET~3;-#bufc%w7{Q4%PHXya;bZTJKgH-R0 zr-ZD+i`SY|2NAa7LvAKEtsLujjv8JY?`so3EoJHC#VJYSrap{p^QtJ=Y7}A&Z;1`b z|6oH+#NVj+n8+Czvk+9F_d?BU#mnIhPF$OnhO0)hmgD&gR7SqjU5*)mab{G{)tM%7 z7UEL?XxS6oT_@}O(k#)@Li&^4axeT5TboaC4!mQq0zNg7th(u4e5({X&OY{=n z5Qx_AM)au#yq1YFc|QBreTJ6Va?{)Ordc8t(PCK3{q z{dXw;*$KlLn49|<RWX@`k7*Vu~G$nOZYRECGCaHpy2{XAm3~^Ui$06=`JOInSs`584Zw& zNrkY!Z|cuJO#zMIwpNJi9KqgUAU{M7@Lme^I(GbqJ;Xwaq@j!ucK)kXCuM;l8=je< ze5!=t$QP>uIw!*9b1}Lgo*;I(d34zptf|&?gGEfm#GM?9S}J3{kvQtf7K&JERodp7 ze<0d)wiAm57u7&O5j6fvy&v_GTwML5D&b3aW9>oX8BbLK--g1{z)xAPNfFCIfL=0h zeDzr8p~(4QXOI0+l3dDXLh?_bI8NZ?iygJow}f$JBZ-rY#CdU5c7kRR`{~t{cJ4^` zA0{=#v91l;a@BN`^Q|2N1&b=$Gq%mw9Bm>w4Z_&hKliJbpm8(Af6t%6P`?OODZ7!QstR0^s}nHIv&D|B=EEz61$bLX#8m_mA*s{rN{4Td28{ zGD+`~8PN($VwWP^BD)0puKI)<_)l>RvbYsW5P`Bp~dpIj3SzO zdXroK!`E8|#np6eqxj$u+@0VOf=hs4!QBG{cX!=L@Swrn-Q7JvaCdii8T@eH@AG{1 zesxZrA5%TmYp=Ce?;o?frY|WBRGF@U(BI~_d;I+>VKQe61~kf}yvyWOD`0{YfsbQP zyPXEK{x4C0d&#}zaW8GvV>?l&igL%@(aO)+S?eBW`}AQ7A<2`p&X;$n{pvJ*+1n*U zbhGdF%h`Qm+!^k`6pOGH*Pc@!pRS>9g>^=s&c?gE=%3f#MizIwY3ow-1D`2QtX@UW zn<%|W>aUQ=050l#=BKtEGLo}Qs3!$H5dirv2IeuR9=a76W-&k2{ju%^YgYXQtRoSz zHkjWf{)};y%Ni&8DHcY1^GLS`cz%3)!ewiF#YmsNg3qYJ+Pyvz7OMMF!c58f zq@oK_q9{zZdCH@Dvip6xr?>5Vo@KkY$O7Y_Cg=lv<;Xk-cbTod>5=6-m351nY^Fy}#rFtDEFZ$7bK_Pk)q-EuQF>E_;c zz0LvcCqJSRXU8N?i5`6H-x3JQY>ur#zk`p<#y2fcC`yVoY%JQ=e@}nOf}hG`M(4i8 zN~N&6$1P)T)7QHbBQwyX&^?mde^zj;TuevOh8K|5D$M*zkJ)hC${4bD2u~cUO+b|U zhrO!k*t1Hl%tMxV%PpBU48b%=TiBxUw2=tdu4>~NmAWAvUKWcvQe`I^*0=vs zS-B?}?BsR+^-19Skow$$RUBbu$r0n7#qhOKew~CAMM5oVk=HR)25v8G;j->h-13d+ zbWYQEoPh4XiB~l-fwc{dc-03Y@U8V*z@&i3!nkF%^9O-b5-pX3S#{P!|vNMfrgv6$TPyRW)&1x3m^w&X75-)4n*x zwX7tX!(EW3fB97MohPc4>+eGf#HJD1eyjDbaB<1fV`|?cW$)b|CtB&S^u686iU99- zLPKU-2(bz!ynrPw%>{KicI@T`Uc@PM%FHIo_>r?Ysm&U)lnR_PRP{dt(9mJuGYQBw zY8plr$M&lO_?YwyT0X*KpU8?GQ^vyNqig)Rd7$RQExa0nx%Vb)CeEavr$W@<`3M?} z-}O^YtG)XGFOoZKth9`TI*_DKkOX}EnpSi~CWU_RV=%d$n1D4)CN97waps#;P#(xG zGfOZ}shm7&MvJX4aLH? zCL!h<#~vYqOUR#4ymZhmB~r=X_s_@VuV$a$|Hp9_fN?|bJgW0z#sdRo+8f3A1_bbr z5xPhJC*DVD9h3yuQ4tKz9Yvq+n!iN{>fSF3;b$WV;FQ&kzaX^=N)i;8__T`KxaL^5 zG=GXLzg4xrrpjsuWn%FX*7frJb6?%ih82-n>TA|5p>ab-lQ(l8nD-5YbnO6H`p9ng zI$6hc@zDtQjvyh;N3jtF6(sQG>ylU04Bo{mIOW@0LY-?siZ-;MdCubS-Zhlwy z&Agv8tr@3SbS19_P(uZ!l8qqu`Tp@POFj>Du4HXV|^Gk~Yn`9Glsp z$+ZF0!amc})02TTWanSDlv+mhe#X6c@)~}+;d;iDCE`R_&tSKQe_U2Mx-g1@?Ig5) z*@}ie&%}ZUKlhRG`D{I7W-oQp$PRz%z&G(*`JM?jWFO^Sb3da$6w4r14dQc!6-f+F zT5RBs87q@Q9=jKj{wclM#YkFLqoY9ZGxii9)$iXLszNk!%b&h=Af(bSghbMkwkNdF z%eWVTsJW*U{vm*jcXU+CpPT;(KO~?i+gcp-qc6UKV|;N40DA>sfrXLLg> zR6TXA(;6f@Y-`dMg%DneoVgXHDHPBn9GcvFqaD&+;rWd?B%C;!2~2fj{`(s9>LdeO@2Yrm=n3)13laxL z6WL9>$b8BlDqQn6#qFBVQ}$u&EScR}#))>+#?0vA@-)Wy>RSHFeq=<^#b9k;a%n(z zr9alRIsX_wY)=}Cib-1prER6o5$f&1eyS6dj4|aB!J8A~(XMW*EN@1#Z*)ODC|Xhdl)O*CuD~H$ zfRyr?>D4Z!xWb!vS@SH@ctU^>FdK*B@xU3(4gwa}>{Kx{6>{@XIJ%pX5zp$0)H$y7=N798RO$D5;(08Akf&IY;mVT<&z5O1& zvpEcRLLj#Ht9*Fk=q&DwPoZ{vt?;dRe8lkOh;pB>_&Jn|qB=7^;fsDRun4L`)xVyo zs7e0rK@3OTIYi%#NI-+NYTucw9vsYwZ+y78F#kuQrm;_quvpGPWjo+*Mlp!r&UYK@7*1?_j{dN65q2&yd_@0mEo;sjyi4#yKqoGf|% zwBqk&Q5YyiRh0=%TVP43z+H?GNy_q|JR|MCESu_!grFN`vJQ-^S|oPsZ9Wmj*S3f; z2u!E;%|In#Z)pgemytdw6mi4X`mkf>z(dC$nNjTxzm%&D8EoYN)H7s-|BQ4^2aVha zKa#5n@0#Nbc)PF)prl2zWOm35#Z=NBbx;?i!ttuTfpx`J8~dE5h5m2OU%3DayQ4tf z?wtn>TH2_MC-FFy)Kfx|4MCAjj$oYBy_O6Y%E}tgxsM&`mdUQt@tE<%lrU>rcqEdU zFaY6#@`RLD7OD85WF2E#7CI3wJYpGU9@1Lh*XoENrOY<;u)wbcL%E8n`>rvk^s!{d)dXRLy^!*@^J35Vs5VD)oOQy;eUIfYyVc~ zVQOovQ;`SK#QKE*smM$_hyTCWb7+9{``W&H8{q=2Vy-^q0{VH_uy}XN1})}4XvuDC zS5B6lyhuN)5*`RHl~p4h9B7#1c-EXHz zD5ta1nRCE#oe`0RZVO>No9a`F*?{$^zkd`~u?50vrF=DKza(2CB1QQKwAUKkbO2Pl?|OEj=np*K_;d z^w>M(F*cM+`}K@pSys=>k+hV=pKLT_<%icx9}1S{8 z+WwtSKnP*u7=Yv{$T%=lYd^FSk8<{WmB7n9K&q4GzQFx@+ahPOS17Tm(|)h6ADdZn zKk><=f_Zv_wDYymhYI{J39ODJLJ)ReOlYSo%J}Nthqm%%A&f8Q56xK!1!iDcHD$yb zARg7}nZH6=fHu}iXN0Wwt1a)vzVTvTr-^F?qMO&z61Li){Zx{5Uh7nzFQ#2AX{JIK zs^1~=d()r;WX_++fdRR$p>!cqn_okzM(#*us2Ju;TcUJa4tsEVNO8yNynla#oJ<3c zMquIz#HI*w9PKxKSsPT0@|6npX@viL2B0l(IeHMCDIajW6Q2&B+5HWsksQ9G~vwLr3Z;4*6<;H~!>%b3^pyjjRk(e1Ct{CN7 zhPJKMk7P!1$_%V(){VL49HVUR-5Z!V6LRf4gZcC-{PewMK!cE;{u=cpsrJusB=B%A zeOEM$dR`poXB~geC^Un&0TLg%UV<8}AZ*flq#o%dASwyI`yml#f5JiL*!BmMcU*YHrGED^0@FJ3bSeGu8w!#n05lTf)R} z6N@hdByfE9vqV;Bg_%+3FDZ|7m2ha%yEO9K>GG6qELE+K_)~#FZ1CaxwOrDJk8P-G zkY}=YG|pzOZ3QnjwFI-?03gw~OL|O{rzuWExzY%O;6UFC34hyQdRT+3Zf$PWPDQSv z4*6A8Bsnmdk$4_vf^4p(J20oLCBBB|?o?CDx-yXV@;FWKLS4vGCy{Vun_4rFre<{~ zqG@58;fl7PkQf=3*=KBz`qwhjWCo0w8SB#^NsR<*s2wp6+h2^qYiT=6B6<% zpHGFbL8~0P(v}7Jz>|(gk(IGTdX|_hD92G-xDEdG+j{FwT|8POi;8~ycY#PLXjFne z&+~oMRYHqQ^8G$$B)~3clQ~7TBKDE8l|TOs;n-?AelF(|AGtPLzLfF`|AqeFM_pPl z%pp~7m2F41+bN|ds}aXfYe8T^eU zgHU;nqmhH|>?;swyk#l^)5)j7y#wO^e@Eu?;3SfIb3PkU`Mu!8>CY-Eo$%O#yP?xv z_FXF6&-zo-^_p6DHxXZ6JD*|beU{kyP=LPc#@}rF!sF6BE?>P+u?zhw-L|H?9x5t3 zd^SQhg5Tc>MD#vY*~bi&zvNg-pQ-;{7!Bc{6u6H1^Q-rB1M8~ly?jTR=9d(adv}D= zsO+uG+|#GVs_lkOE;6e%hSxu6rFsI$K;G?kAcRcXCd;`DTyZpzPY_M*2ZaV)EPT80 z)SPLhE$Iy{msu~Mw0V$BLsWV-I{~@V%PMq5@%!-;aT|70xjd&8P_TxiX4XYws=vU= ziFFxEPE+|plWxxZZ9*Uk0j$#==fuIaKaK{}7F{K-!aLo@M7><8q}9=Jgek#sYpmV@ zEQQzd^H0V)5MBHRZBv;Q{yb0J};e@Ye~f|u6|X7-+5*Sj<73~yec&eOSJ>Z5*lL`2)p1{21N zA|&EwGq0-9i(gH zzTC1QUXw<&E|B=LjYa@eaxK!#qSh^O{$bFi$-N(9@%;Fhn|~Xi#5Nu{NBVIZeAF~a zb2+VRt*~9CtkdjM7=cb5qnQ((l**2ujw)UWmjeaEa)a;tt9|{6kg@Iy{7PQo!D2+L zd^4raFg40d$DCG5J7r@b?+03t&IG^EGlNP4L>{}`RH@T#d?o=ftQ#J8Eu(vf=mXU! zlfrotC83rL1ix~ljilRb61h=?DWoxbNd!&|E`LU&q(|}}=0~3xqG_8V;g7_vE9YVz=QGze zju(U}rRh#qeQHRJiM=A$FIX}DX65lpFrR!a!(0uVp$`H7DTJN3^c#IG<1X)D@CRY( zqFL5h-5rXIHHr&7^{nn@B_ym@RtfxGPhp ztL0T+B*C+FzU<|)G8~{;X0O&u6&}kMqf`v7_&rcOOBAz*=ol^>U$b%B`HAxI2gRrl zE0ku)o-{!1G0lXlu9%fxhLtmME50*?W%YK5K#gHupp9Tr{sAT<%E>^mLmlZl*b{a9 zZd;~(6GfRjI2K-BdS2_`Z{5)Qrkc3|lCjmucE&Pq6?ewG$+7$owZ_MagnG$`LWzb? z3H>&1wB5SATz3ttj2o792Wdg;cy}hL&RKD;1cN}u&2`R%TV>e<%$oh;C)b)8lPJEq zO5u2x7U47vSO% z6bJ%F{y!t~&~HVs5A{!O1YilK!OGQvcPf;ba7J7G_&?dEa95;tWKk^r2yi7B@33HB zJYdWp8ITj#%~&0{#t8fIwvVO}JwQ#wvK=~Vz7c2mm`v|jKkkbS0ck5)I-AG(ob#XJ z97qluHne*~kfb2#$O|__UXnLBx3mn#!F@%6N3SJk-QC2dxJIVIw4@@?ezxtrC(OF`A8D)pcSK3_FA z)=O5%b8JHl)i(^W1VgG#%%7)T3&2wBR=sjm&!KM0oHE%}yVa5v1v`ao#scB5*WCS zhlwcLEU0`wHJiT%5xTG=yWv#=S$TEe{b7VnX{)inS|hUf)KygK+|PI1)emp+)W|k@ z&QHC_FJ7RdQZQniCir)viZ&SQmp1h#J7NAyh;sW6A*$oU);>hG)=W`Uc02p=o`b+4F*_;dK~OJdaf1wW z?H$%p$kDuw6}0Z2j|rB^RNRmlLZ!N+qT%jTAKzJbrY2GnaW039g)|fbDVlEw|7$Y} z_nwe~!u;7-Of?X3Pb1NxTk5MSM%7s(qgkE^3#f={Hv6)L55FY&l_aL&k$~=|(nTla zrR%b*5u5CslQ;E@>mAP3Md}+_>M#cQ4?g^53I803ukS5VGPZtIsN60;FXk>oPdVyN z3{7tFEo*&p>;M@_X?eX-=J>_=_c5D$F9XE#n|CTeN>@{p-^6ln8FgdNS_3;4yLG zAW!&H_gBF1Yq-cXbmhTbM}r!n>9j3pw@&cEf|Z#5uxE{@gzrSd&%kc2`7HUxucju* zf)vav__zwNQ`G1nO6Sdq`P+tiS2{C%(?()1&P8bEniqQO>KuJK)zQ+yU|}+oCEW?o zCKWQF2BM(jy&T^;nla4u5`o&WC@t5evnMS-Qa8XhWkMMDu3=D@AFZY2+N~kxQr`y> z`A+#Vdf8+E3NRt<*D=egGW9SJA^B#tJyb}KPOI?ycC#S|Mt}0%A9a8vkxu&4$Gc1Y zMtfh}-yLg10UThBdvqR!;u?ROz0+=VIu6_{1tsfikj!nqgq_>WAEDZmclYJ#mRdMs zY(60Nyp8b8H2l^l9IBFLNCmer%n)SUFp@>S5}-O`)|`vtsP%Q?;%UL3Em~6kS&H+g z{CV>B)84QcUS+!lvT<@$gx?T*^t0oqn?N8y-n;DbHZM97<&bZ^C>ShhTn#f5~y8CoE|GMS73}joiatT+oyz$7P$8(1F z*>~B2c|Wf?Z>(=g^r&7QE32FFRKbbPy&R?gCY{-+R^)|$U$=3Yt7u~42iP2(mM+vE zvuYL}C5F5U{njnOFEI}5=2E9nOhdl=htt|=fhq0v_gs-Jr?6DqtJt=i!d*fN*&$H1D=tI?i;^lla6$G zvh_HgBdJOBTvd;!s{l0U%(B^O`E@g}ccirYI~f*3{&SQ^zt!O|{dk%6I^2PSo!s3^ zz4&$RthZz1jyYs^N(ZuvILxECC%zl<1C1p4KN0~6s5S%q5{N!ZXW>)qFO>^$SLz=< zu%LXW^@_J~HIxql#7XEa-maaFAVfh458K0*j^UDLkuBa|0F2x&^-HnxgO1ib^y!p# z>IMVZd9c^eIs7^CCZy$~rNVvWg)cS#tzSm-%S$G6xd{A~p~8Jh<9%vL%cbM-x$IHf zpK5ga$I)ph5brrWIcu78p1%OeF>%-Uho6*|N-JXC8gmh;s5 zW#ncUglB+(*Qyad3y-BAf737K6^+SJ8L8`#Z#U{`xgVLQ{tN~|j)JtQc(rWQo5t8D z%6Y*J>fY^JyxHxSmhD-nP=d4v6YJKJMx)fKJ;+|G9v>Koj0 zpbh|3((;P_&U$yc;}ph5HB(elz@Eq|*sPIAuW{O-l)YtO~{x7F4j?n2V$m!FmJ;pq>vEiBcY;PR5z*l;3#moq? z9#S4_jSw`aF*sL2k=L6=#_bR7Q_FC^^vthDwt%?q7b^7aPD6V1UN|9XqSFD zHDW$&N1ALsBOj!lm2$xtN{UQ^R@YrNb9Hy_c##pw2TTZE9n^V-iN1P_7m!a>5P*{P z@Kv^z)o-{j%w`{5cbm@3_B7%PbB%4!q<0 z394(0VkTFH?1i=9=Tj1s8wzMIG`w_cmrn8B8~DsE{mvS3w#0mP;0Vtxx^`kIdqMwm z(gc&}&-$d;Fq%UJ&7G*qy?!qdT|)ezBzGV%eM@TuE)EkT=X! zQzy}1#(ZC732w@@!Y%&2x7?l@PnOg6Zt_Sw!*LhQ!OY*M^Y5L~(d?mbf!su2-}SI0 zHG?PgY!M%jdm+mSh5XmE%Tj@5mw}BE>cL8oT4M}pcdo!3^e5N%fCxMyAyd;rXGNWj z&5h6xixKE2m;8a{lV+bU)LdWm zTL6iCVt=5ZE;URdG1{UWwJ8j7rv*HztZuyg8_)-r_U=2Y;lktyOl~j81UuQgXzu(C6QImuo!*!qd`6 z>t0!{&>=UDtLcLn9D8kZtD!=!67{Hl;KI^LhlBp=$QCMD=xwS{sK7x1fp)YL@ml!q z$#3p7Wh6M6z#*Z(@dA#J(I4jaMy_hMZgccp1kU4bHNGpKMTyi?+QL{U;So77uKYtTD<*PQN?>zfR9unIDJJ|v?ZMnsJ0H|pI9Y;X zigL~62pJA)1W&oB-1m+TKb76`1qTr5oeGC(s~(NF4t@s(I+;gt;-28)=v;(kx7PSL z5cn-G0;wsUZex;`x4)CD*cP>j7}h@7Z2BYw&A{t^d)DFB58uB1h}fcxoL>_3!o(=H z?34CYVOL+wMn9Uo2y_r_C!kR3EIIErO`+n$tyr!1jv}5K1*PHbSW9P=|9+V?PC28` zjAX0j#*m0+rAzzs>a>m%58G1np@iZDL~D#H2ds#hu`nPSitWjrsxP48o!Ep}%a&Tf zsGBfiWV;NQJ#6H3K$j2X_-2H(=gpZ1-_$jVr z8lycnpWRRmaUG+??i?qyLF06V1nbi>_!ISb()1z^kz5Pt5dJ|?R0y%qSv|1NdthdPd@emRzE4R0$&)8F1|>%KSjlO z2T#L?nBVtMwZmC$%JazX_l%36FQL-TE)s|Fp_iBSUZ>r_prVJ{%m>XbGIck=t(lW) zluk>#qY85Zw=6heI zN#`q@*2cRorFUzqD!5`MRZgWn5aNwas{Jzl?df7=&mJ{*&lQXE%V-a!58>pRWAz15 zJlC>iXjFSW7Ce{OL?_oeQbjclTrTDzUweHNG!Ok9H-=ns62DYZY?9mI(aUMsux^8t z44~bsYU;SUG*Ktw1_8xN(Ii;Wn&>r|S?P@?_H?qYXm{;TrGPW2D`8@mG( zCd%2C#+IM+@Eg3p>IlbEKodA6k}wKXpH9bojkBz^a!a8LwT_Jf#@ZnYRdGPC)w|}< zDH>f8B(2z^unbH@!}n^zlgl-Pq%Zqb_~+E7CT5Y}9WxWqVH;SiNU?J=R$-5z{sJeP zsskWt4L=XNJA>~iPbT~17DUXUapV;+o)pM;6#GT3>z<(1zcrezRo+(G`zcx0waWa5 zS&$utRezL{z3azzu`W`YkhMOK?yfXLEZg;-GNrJ%Y(kS~tukLn@vb&Wv?n96sP&kv zh8#`SHn7TkQySK=F)&l5K=AgaA_0!eXA5plyVo!i?_C2L`Vo8;DpT7tH*%VBaopiO zu|TzFjJe+tv$nT?*m9TgSa}%cma(uBk%st3D=si)gWWt18-wK;=q8xp1 zmkor1*N-0LT!A~cwAz#9=Ali)_k}=5@Ikyw9zM zI=ty=08;z@81|0XyhQPsEvhk*hPaC|N4wSv3;%)9;!mhs?i{SB+U1!q5(Z~wY`UUS z42P?rwtFU1SZCA;_PcBna#S;FwX^86ae)FHwdRXOo3K4D)@t>3>cm6zVTaWFG?m@V^XfQPYx%=AZ_j+=IY3>=1x%{^Ek9fQ7 z$ay}o`|Sm;Kf3qIpW7DXDR`oXy34znd+<6hq005nYufkRH$IYPziZa$NrO9vt~K1y zD$NYSo+bu5x%#ia=;+#FP4K)>Y(8<0|NgS+ety*68RikyQ$*+U!s34@L<4iH3MAeA zjz%R{jAncjA<;sVV7)3n$L;+FqXHglvmQg*euT5?)q`k#Zp((^_Dhrx>@>VSZ)7EI zpkgIsAlFm6G?BU21tTS$FKcg(=Qy5wcfOsyf7aiQ-yS;OGGF)KUf;l(UE$Z$1?%?? zx)7McISWoll=Sq1Fi_x2_7FYbyVSj2L7M9W;cN9WPPY#s{;DGni;$i6IM z+X~iqO9U%B^?{7Usx`iwO_V;Xl}9Lvr8SFI@@`{dV~jtxxJDaVg|}v*uF@_%It>x) zw4o*PV1D^F&7UAK-_b8L+tx>hC5TQJdltvy8zlE)*G9?1W28q_m+LRn6ny3`QX%0B zG}W-Lu1DEB()}$wc!vb=1n1QLdV1N=l_`WsW!blKIO&w#|3CW zG+J%?*I>rcc34tWe*6=H)?^l8VyU2Pe;8Vt%aF6s>B4jBj13InGA-_&?V@n@w@Ter ziL+7Nu2{*BcbFG0A3_?o{i;t4*V}_-^5bZn6J6>`4_*-AHnB$c0N)93rGrCg1-YN3 z3E@Dz1M)t6(69b#s@$<=#sCf*4^w_xE{- z1zG8Zkd@w&+?){r?a2mImh`v;+mBniMY;ny8KrD6@kx8^-8~ca>ehC?^XtnM@*TvxF>!#M%k$&asEN0V>?Ol_wDfEmKGe-FM zSVUZV2GSeMve2rj4oL1E?hzpr2(1!Kk6JYGbtA|bGG<7bs?4D!J<}LrM3RF@w+e=z z#KMHULZLT-WqJTT!ngW(kZ&==+g8X0;_XM=^{(z!jpO_=rou8T?;0BiQ}({Im1Oc~ z!!n_UELle`>!X6t`vD(KyE<)3R&~@hBx(D~>+DgF_PQW)9fc<~++sr#q(iXc*()O8 z2#Tk2QwTy`a|@|&tb6`6{MGOJ{9u=`paq-GT&#!!^lV2uYHqW+wy#iqkX$>D_hrOf zA)g2qJ@?ghLig5Gh7Tr>dWyLDc`J{b&0mRnT%Z!38ZNA$%v{7hWc6q0-6KYaX-T_( z4y9&9mDCJLeN8WJGeZ$aD93Y23~{~Wus5_*ztJ4wa<_RtPi-zFwv2KytSCU86l0(P zOSp#uVDSqzZV90Fa+f-hifd!*xI^0Y612y1)Hv{;UwU$65EQzaX1}1FZ4Eymm04?B zuo7)esF;M%V{u7kni)mm&_nAWFdla_|MQF|=h7l?VZHWi{n2Im5C255hVY{QfX4Lu zX@9GA$%6OcX>G)H%h{G^3Uh(qe^s{t=%4lf$ZmBx>I!nkhj&!8f-?%j&9g+Zqkpj7 z4_6E=hQw}AWD!Ly3C?3AR* zrP}AV5@Uo^SQRd#tpF z^P`RH%iVu(5%Z!!^s6*~ap#D{ni}^YOI1$I(?j*Y{r&ilELMP0iqmySqEywF^mvqm zVRs$ZO95Hj>8|dhgx6Ka80manT9Z^Y4Gb$7D7u8%17&P9Ix|Dx-U0x{{r}m=4ewP*b=H~??^kD6Bk6Q`w73ScY(kRWx6*0l-Jh% zhIfVL$!}iE=6GE{a-;2E!#BotpV!q*S+|ZjH(MZjUnzo25cAO|aGulwMdloKsn=R9 z&qV2~fh^iEKlYvvLJ;I17dBuX7{5Mag?+(K_9L&Muo>|7F+bQtsEY?^znvs{xAL>d{ zBec0vv?0@=eYl4p)?-0HWKY*W5?X|5U-0~gPNyu9D+17hcxJZ3Yq|l6eb%t{$&zrd zteAHQJa|=E5p=tJ@Y&}QjfE}+3KETUIk<2l)ztt-7+|G#^fFJFw>= zsr!O2*FfDr3a%)zf>P7lKGUl&+Nxm=_o*}D(b(U< ze1FvTIJK!U__inFU(i*Aqmoz=xq+9HIyTk0@uNdEKM7*J0`Jn8<&Dl_|JMES$joLm z@2rq|hjSP+#xJRTYCJ+t>g20zc&$CZUC*OSDBDs^YG5lMSrmOfc!=5#Dqoz_< zq<z7bI<9j8KKEG$mgu$m#LeDY*Y5Ur!x!TiXDVA zadJ%jz(3Y^8*!HP65OJ7Puj&lW7#F#huzOf%nxhEb7JRqIX|@J84mZU1;ODza-4E) zUb!uzdj$e{>KHB7(DygojjjSFQs0*Gb2@{|JR;N@7Zp8}TK9ftVDg1VS{_A9O({0* zA0G=eeejwK9=y%kx3MT=R_7o<{usL~M!2_YeBi5xGJO8h@3M&@f8_;NQ_T1M&__+<6WVZKFi`P{3{`i>;8~<&;6>@SPUN z@c|0e!blFj>o*ZAk_g&R6h%tE?1f%0&BimD5|NQ2d4MCU;*j&Pu30nroCc+nxV8th3<1r{6UV{cF`+Jm`$6Yh#!3=10d zIw`BJK*fzje}Q(^E@OpF8TX~;7bjWkxtXo!q;33W*cr)tFNV{i>s*c(yxuA4?vjLf z4D)&h7S`EsSs&)P4T8{y+@kUX%5>ywBq@Fa-%26Aiubl=4ZhBd5dJw+!}XnY5{bh* z6JHSMHX)MuTy9bKE^9Cd9g{$4FC0CA+V2aSiie6q`s7=e;aRDDo3&0ka3!p<`E(dx z)6Tt5ti6K7lpPG)f>$4M-}?b-l&DYqa!|zAhJb}a<);Eur$STk(fX(he364BTf?z4 z04^414&R9!F(u&S*Kbw%p;Q8SWZf_TH`BZj{js{5m_c~SqLgqExin}AJ^Nk=_d|PX zeV^@(r;IfGnpP&u?}NQ$-8OrAkq34uySDA?(*dk*^DG)4;O{`A*PrPwQo09lLghOm zg_4?d{R&$i8pzw(*6!Fc--wFy@)}kL-tjFlu~D`UVTFEzN>`UmdY9}MQKASwM+_No zuiyStCF+r?gHkG**pM3>bUQ))Y#z43et{;6;F5WSUg&2?Gaw=Tu%{VRnE3RYH;NRW zL>?{j);?@wxT`Yr7{c|{?%`sz4RrbIOW{ki`9^KP>#fgP6T~_uHMkf+eMd`99%^b$`_B!)@J_!xeGA&K?W^7o#`Ih5A_7kw`&#z+5vZ+OI{ zX`we+cw+5l$b$KHnbMfR2ZN(WVx~Sr;XhntM3P-X4M18NVgp0|($FZyucVrRTG8d{&qVXUHyS8YLz>o+yZ z4R426I&L(-UsG+H$a!w#e?N2vT&s{V<{-Qc?|cY?EN*R5P16P5u5Vr(*x&_U^5}-v zKWs^AgVQj+b>NU}!Q2tTihEJ<6AAu#4K+JYd<)Ble-wQ6JVGl@Pb)LszZhZCb$RO$ z0^dNJkwfT^{txhQS$1s$(MPZjm34cGzr3tk)}Jj1V+<;TER=W09?hJIMD8ZGgv9=o zdgOMj5ZMUo@JMBByYsY{YJq8InT_-U#^f1LEG z-stg6;BVh=t;23+MMb8y!a0htim5*=p7R{f!SZ_`#NaT$95C9-QzKjHLwR4 zB$-K()B<5LwLAXk({h&6*2EpFLZKf+ZHby#m}7}xgz#&pexRP<0E;|j6f9%<^%3Nr z^ZBB%U*E{)=uy*|OYPOkJ`v6kau9#Bfn5yo)4Np@n@`$1&K99j{b=idO3eQNYx9ZL z^W8pv5SZ|byA(fVCOcqKD-yTAesx>R|9A`?qDW|6|5JE*AUP%{+@bn-MPOp(UABg@ zPNPZWM~OER`9N()hA~3ykvWdpPQ0N4(({5@PaJa7Dnc0#HT0Uwp-=Dpw-UyvWnNFP z-?o454^L$Q(G$0}1je)m26>5+X{+{Hmcm`S3Se|qbAB4EfM#O!)1)}tFMNYbk&05*bsai+MbEu!7 z1^_SnI9m~h=4(;OMh8XpaQB(p2W#gcU5L{1gemfFqEB+NE=zx~Z9Nkl@>a={ChIK< zV%(wKBOHXo=V{NXJ}xfp*JnElLC_6lDVltsrGo20S%qU}O5`R*P2_N43rp%=RUT%_ zMW*0!1UL%HR~jvqG25J(NEo92qD54qSOa!zt`QxMc9QIzU!7)GN=d9YTq^e+oaL6E z{;=LyWj@f3)O@m7u?<3auA3HuRWEMWh<>yNadne(|B2U0KWC3z+w~wUmgKtg7AjeQ z9BhF;hji=BB`d-ZYKe4`XD6Q&{>2^Ud{}M1AwFDUN#5uA;Y=Zt_qMQJrLwsu_W|J7 zUG*w`e5<`@X^%9tOeMQhhbj!Br#f%6%7mg)Y73#Di_M`b(PwwVWuc&3%g^2M$(~fHcn{ZcOG*ThlNnr<{E`--WUv|A^VAU(hoHtUueY`Ng zabd$~zgAGKC6cYGT-<-W?0`8e@bBaby{CQ;J-17?u?V+3;Q7>8U3p%80sdd1;tkSl zJRck+`FCwpjC1K|8+xz+s_%H>2RvtpICzESkKoeeQzl)JqYm7>R4sU4rcLF%GfyF2 zHl>Uv$M-JQWBZWqG)P@Ny+)Y4V2eHB4s}sy*P^EOtOb>j1;Yai{X5h9q?Z(fy0$li zodDuEPuM(9jQ86?(tP%8#z5%js@(Cu$@Fy+#O@VD7C?2&dK2pR!4i(v>l^RDOzst` zJ59_V%>3is1`F@4b8*H6=?EVPEffniry>~BY%2e4U)IQmUx{++0W+Bpt^27i^3d0) z`SSC8?%Qx{=1JS36PQnUFG+Fh2`WY85|E^PzU^9Z!+aWm+wdTwT?N7#b&P-zjD9LV-v@b382XguieaXgWT>wNzo zy1pqovtS7~`eWOki9HkBnbs?^A!?*YD|O!XC7~Gad0ye(XJLW2l7#(up+SFUR#B^ym4@}Z+UkQ^jj4s1Y-tE}n9PcS@_eyN;uUKI37ShFiy$;%q21XMx#;s*W zIw+YT=|%R-F0Eg)i)lDm(u}Z5Z)h&cNNOIX#@8t9#GCz${bPqt(s1L~sOqra(jJ(H zc($=^)Z?VwyG`okJeU_omP?r32vHeg8-(2ef}}w~*=D~7-rXbZ`m?lZOM{#561WWg z@O`?QzESxUOS{3J@TDwoDK70nq&g4o)QCwaZO?ojU>q~8 zOV%o)?x}276Ujo>X@z)v(A~IvjwOZE#uo!dk+B@OiEXO5Hp&4y%fB$r z5U{@ttJD=uobvbZBw8?@3(N;0hiQTp1P3E5Ya$cab(~l810a5qR#B4Qi`q|6vTa;@ z=9(OlCP66jyoTEm$Z_xX^NBLbA5HI%3o@NH_2T5Olp((jl?B7>4Al>%8P6$OMiUF( ziepL+FjP}E5MN%i1?txN@f-uTg6GE}T2U#^14KOfG&$wv+p*M^60>S~Mz?j4(db`} z2l<5?&^JT+-yKlW&@WZp;9hThC2(=|QlHLgB{0b}+Z&-Fl(n5>YMh%GiQ9{8?%UkL zlu3?EV^>p!$^{?HP_5_c>j}>0Z%<6F{G_8A;KtkVVnq9N$PN)%p158C(4yyGhYo4gHR|`jWfu8#EK{eHY++;=G@h zsjQ0dKU{cUEBb*%bgoZhw$Oip_lMxBv3RrawrQg$E%m=VXVWNw48f*MverxBDgpCp zkNM0>un8?D72w`eeqNOrZBh>S^DwfTUw&qZJ_OpYE1BU z(QU8Cz;2Mvj3p6`$eZ~t3OTBZv|zDs+K-v}w)Yl$5y-y;CG~(TJLJf&3aZxeaq7!6&>BcqZUngNuQSZFBUN&tgeyM}c z9K@nmOf=ik%U`v47}3Bm($$48fHDHCHyInX)2D~a>#)O8BNuGFt~J~3GLFPb+!lKV>| z+X6$kJEBWF-jzoY6B~>&WV7bC{9=mO(eg$)Rm)|DakM;>17XzWAboc3`VQ3`wG%3) ze?mdlN)B4u3!*U>XnzV70$ak`XGX?rfswPnl+pj(!4Dm`&(%(64lU49&v7aD>dE3t zK09-)EM29*RBx%8_E!~?Fe~yk_^$1j=k(ia_>01#G?<-gfaEj;^+xPx$s)!Bj!_ZT zBhaj=t-vhcrF7$-P2qUoT$Q3r_+DdwM1JA=(*&kP21Qvzv&(INSb5|p&%lco1DudI zZl{b^V7=xEp|Zz*o82q2J?bhOKVo1vq0A4Bu$_^BZ`*5hkeEh1@Ge!S?b!6%JUqZC zL7)#y?ujZ$?DKbiU)e%*7sV5k*D5eOSC%31tp)dUO#saf}@ zX)yov>osSlsg~C0t57q}>KJ%iGvFNXJGGZ~p+y9|aG6~nKD9q)-ijj9`r%u@LmHF| zQJ78>1Fnt#v!FiXyeH{Ywv@S);oJVhfZ7AkW+_ax&|B_hxua;- z4`)RDQ@gL)ISG3eb8wol$qpyr`i?eOJL8uC*`B#qO?R6>mHY*cDMMxG4L%BY#n}Hi9sZ|e&9v&Hc%+OFN!i-fFqf@S zVk3Tm;9&SHQ7+r8rdIJofiA76z;@wocerJDH|2g}#sc zdXDxv^0gATq@PFgHFD=H6VT5Uef3qjgAW!Ky1;j8A^BOB;dPPb^x=~L(dZbHhnTkt zbk5q*79A2xfa~p(7#?$AStqZsT3{TOlyU58UtnrE&6FYXMS-7YdoTf`E#gDz?1aQDW_wXbd~o zRRraZ;?3GKoXdwMc6$`UOpALQ*-xolw2i~l2Z93MYm2@IrTz1W%+%*LrpMKY13>@r z(P#Jap}v>|XZyQ~ENH6u2jBeTT7j=}m-+yslX51{7m|TkedEu~5el^GMn@OQ2X%J< zuPmc29l`kb!9v8$*^oC|59N-XuIIrkYcTrFR46TI^G|gtQAevspsdyy@9aW1f$FlC zZ7Ky;LliR393{n*x0N zPcvK-pOrD6ldR5PQ*b&3T3~m~nuq?}RoqPBbv$)NwnMwo3C?*ZKydKV&VckKy!ZxHn6L4c5I=|{W*gyzfm z!_L>+*XOGT#6W3c&ln6$LFO?fTaxEL%gF9m9sRjz?;0Cgl9uNj3fvX<#blY5B73V| z;;D?0Fci>gYg27DOD(m=bFwR-s@d3j@9WvdHx>9ic}lQ-Kl8wf62pCmPr%qDIh4MX z{%-M1eZJloQoBml6!3Gw=`3pm5D~azDYECpqyOFo_PZ|~?1P~;H`i01`G0#!{S~U- ziFYbDu=4i@qSHb}UcxL+H=M{Qg73|J8SX_)zoLM0YMTDA(HEL-ONQb7DtU*c%z?RO zBbUZZQm`ws3L$S9LGwD@7*zcSQ}tGLvi5UAeXC zm0=Kbt#E-yekZAlb<>ZHVn?gqjniVOQh1y!thY0F&DTjS78GP>HX_NFmI6dQKp=9aj8@ku`&877e;L9(Zb?|1KGYXax=|tlLN*GGwJ%&D zaE#1}+QMan1Kq97fBpHr?Ig-lBdzv_tg8}psx7}=QyUO}ui=c-0y%2!rKi=Lw7F4) zI%15RVxuIO*ImUvBPW?QB*D3ihZc#U&=7et1)o^v!zm-+WH(lE01a!w%n__xVdq_f zsDG8ksio%Yj2jtTAi&!O>n^RM$dF%_j{`Ka)Rv8_czYouFEH%KCR?Q0YYy3irgG8m z{N$(js)7bOodw_9mSInft*=TKQ?a8$7`?J-pd!oYkXER-RuMa;^SgP@b6?8HOYbc0 z>ez1fM?W1nHCT`ez!`7LMa5q|>xtSNCSBPD`sBo2qkj%QvE8J7 zHJjUUPlSp=gOynORvwU^n_x*9!huU(<63Ly30{|6v8|B_AftS(gNMMRE-PLZIyRV0 zsH%qZ0J1bKW?AngePopInIWO3vBwUnJB|T!#cAF_xqpn@z!WkmifBirre^Bt@5Q}@OXbS2 z{u$z2qeug!KrdsSV@|G6JNw|y6ExqM$|V-~n;rK?o2e%U)@dl`(m*5>cC%6`7f(Cw zxU}L~!{N`ufazqA{$lLe4`egPGxZBC?LtWVFhGjTS^Wda{h zw|zLbwM?OoJ7_8JzA-mz60>b<#Vd{7uCt#jG<@#)E~`dQv%p(b9)VD)pU7)@ujAdt z^V$vS>}^Nb7^>3l#libr@^@!Pspp&AI&oN~L3`=U+ph+R?oQsLq5X3L4=)2VmJ}F> zoF(UZO2H$R@%+CQhcgxQcAIv7YDGMWCB1gW(^&Gx>MhQiawa~W*bZ$?1 zTElaI!^$PZbfo*Q+Po2;6(67yg5ABI)ZCW`lb8s=d3_GMq|NNikPGx#rugT3)pp|d zWXN@Q-~}f5`d4|R;~YMWn*P|lHr>bz)ZS51MhT1FHq91SA%vg@DG&uF=s{KMw7pDU zh_+nUL=kjBmHIWChO5^#QIPN+NvXdWJ6V$UHf5FZreGt>yC>)g3-S-Ea_3-vYe!m{ zhDwResvU_XpS!Zq;#ln~{gKpfF3Ji{;&4jlDvTA=lv&@7L!4*SOfU2r`_(+g#TpJ`Bp^OURjJnl8~3ZrVH2(=ri4yQ^~-q6&`kKiJZl#vz8cM8|-vcoK^MsSZ2 z@@TFVi2f1<>yp!{T95w4F#U52KfJ+rmh{JF11a|qb<357a)6M(14P1OO80FH{Iwhj z(&6j$tF@Tajg%bO(v5dLqoGA@=dz(Vcd*+AElyJdH2;1$D|1#g_knlW&@NhITR3Tx zl^${)u(?cQ5Lerw=x*r>v8NTu#^ug0o(|5oSb`fI6Rn6RCwbz_XF)4dmRZ&;tmG%H zy+3ZRn(}*1RRM7QY*e@?cR&858MMxL;Z~U7oH~kxF+xqw38^|9uh#SS)bo*FT;v~J zvt55>Acu~lTrWyvpG=prkP;K?T+LGAZE`DcVN63|k59{M*9 zbpGae1rLbz@saVAQD+w8(7UcIgWAZkv8;d69oX6xt4R$R9q%RQ7v2q=^=q6NmPDfE z#lb&zb@|$mzW@G151m(H)QcA9QbY|dQi0lHGjDt~gzfq&Rimq@U)N)FZo1r5Ag$YC z_RuKPZ3}+D#XGq=EK{-4)?UCoth(5f!5R}$*9EwFMVbXWve5^93Cl!vT@k|=7|UTr zSl=$dc1`nM4)=eC4eyP>#_sEMRqU&qs4S?Y7(sj z_K}OXnox61H_1aPCu?Cq7@fUaOM;Mif~6hVGLI$cr%UX}L4R!8>+7K`$Q*6$!uW^} z;}+Nt0KlX#lCwTtlN1`B6HslR{>QHW34OpOth~6D<`xQzfRdnKzUS^y|*455E&mbV9&pe@!`c+mNWxs*~odaO_LB>-iDDRE=Tx9xK})MIE7^!66*C|P#kJzX4&bGGB#uY~_b zGoItcFmA*}NWL27g=*fly`%KV(XVMx{(xzo&EKc_%@5U$V256Y!~|UfvqY3OqPu0e zh6p;=ZM?i9*b{}%ne-w}eBYsFKnajXglR2dB4xU-8tuKI7)yXt2hupyBjcJwO5Lz^ zrt7_&#Wn|K)&<>_y>a8&Sg{ z>38*n!1Kb+Wyp{bD;qXMX7sDnAX8H!%4EH8HO`D+Jtg_B@?9-hLu**lF<(nU4(RHY zowZTb78)EDNRK*~#sJ|%@ZJU&##DkT__ELrF__RRx~lp-KcJ9?B`;rkGO*($ybzzV zThdSF^R4a~AxWw)Ux2MtZc9ZvCA^7fNtMOVG1G;oST?|GGwVNWERLj+E88M-*L4IZ zga*#e_`}g)-(gvy_1BTCVM`Jq1sV9wkYW7QI@PhIl90ALV70y4 z%z`;wDp=+@(1W7IINn-ESgZE!zY(Xlqg@oTiT=LnZ229XE6ymVj>iB;Fk*#je78{x zVieiDrDyK5yhzwl7tgY%iQ(CRKK}`OVSp|2_HbXRK&A?is*nFbpxVF$YEbUV)#4?M z7}o|WC7JVD$&1iDtnOA4z9rbpE|P8}AL4)AiIwfx&eKz7uhxjr)QtN@_`EIsd0vwc z&=5SSTJ_nqT%BaXns$HuH4_L`?6vAEB90;2FCSgfbor3Jd)G;67;U;2n5?|5>9t|5 z%7Lm5|L=iMTIs?xsSW?tD|QIhef_MzLJm?SiwWw=vWZvw;;l`{bMHyp{~?1}bFLQaACzlVu>!GYk-MM*gV0V8jBI5nIR z`bDfP#z#{u6FCewf85?FkSJ;nlrTjvN`9~yUWDis6S>jG&?ALI<>|AmB!R^c+XhM( zbEO&2?|<#IygPgwC_=@_-XQi9p}{<@-7cM8rdHiMTbWQ%e@Ie@YC8b@?3$u|V^;#E z{$^G#>4xTMxCy!i9@Cwv--|=1ruBX9vwR<;tnxd&ka9|Z@`utNA!J`1?76w0og=gX z8RJD((Ee}a+5a#O;-4>q%P(}b`!fGF_v@+7iY>lwW2qOxir9Ax`zStTAw$Sd43}I6 zG(#W!^Kck8;PuZ84%`7SDiOYJCdqo~1uBdxE}y@02hH8-CiU%YX@qcz z+I!V;_NjGx3wjW# z9>RW2XBWxn@A*Ty25LW;a(8IC)^%#7j;Sf@I-?s?xU_LpgU|~4xdFT^g(CJS$+KZ~ zT~Baym}NGovl~81!!QK{7kRBj^51ZsxTSAqNa&iWIYM~WJJku6Dp5h0ugMnVyUamh z+N(cTlBfa^C9Q!qu85`$!ste75Gzsu*ktHAZYwSZG~4QpQNW|dU7WwiOh5u6p^Bi^T@!MBtWAr&&3?IDm7o#Q%6M|z3cFu!HvTuLiy5N=r zy#$U_%Tj230%!2q4068T!pRj}?)pub;b zlBXC9JHzu;%RPHJsjJPBscnL<3Kb&>J&nN$4IVKErzL?5$FS*~Z-Ww3r}TG;$TwGw zGp`N|fKZ%PGBK2iOljMuq>m`cb9A>X4Dc>cww1EvO1r;e$ z>(8Z$Qao6ODtd7)}hY8u{T29 zQgU9go~X%jzUZf1#_cj4K3?H$u6skiVsy0uV`)ee8bEKf0K@5c*zAkLHbIddg7OL4 z9K!iaU)b@_sDD#SO4qA5=xPhaEto#)jj5#?UNeo3mvD7M^BZkXjh5Y5yE;TC4&Mv2lu_?5Wd*`G!3q?+;@Je#^;9LaaghaNv zj)`sNa6m*Y&x8Uf9xo{}@r%2o&}Qwx&#cuu+jJ};?sn|#Zl{Nq^Dtp`M>hy;Wj2}$ zmm*7d-g;8lEn!YQ`+V?;}<$sRYC<=HqdJm)eN z;VY=oNanE%L~uO0_~F=^+m%0c-$i@!_#M!Q3_%*u(LRCP-SJW|B2){P;o@a`9esUzC6pDr{9W1tzISu^&z9%%=?F~3$=6EYI0kDI_h(T!9Ej2}pu zwb5uA%;htsCvEbyaWw$1gE1aSPeFdC4KT&r+Rk;Za#GERHiX_&P46_pL&~pXBeyOl ztj#wY>`|h1^rAtFYpx0rH(acM$-qRe}QpEqG%lHg& zfrz!{75%{ATG8mj&T-ip(^Pm(yjPZyM_PEraq#B*yGcQ@zc@JC#8_UYjgY&UeiwfB4S3r`4e$U-7u+Ot z)2+so8&-$8yNbYR-@41_KL+cxzie2ySP6_EcBLG@ZU#@1SP_25@4AEQK6J|*Sl$TN zFT}NWw2w1Eb`D)6ssWE{4_Q7lEU!Pi&G$XUlUU?@P?kA}dKySOE`(kR0_=o*1!O7IkL z+N&4GmREKVD1K6aPk(136R%@2dn3@eor)$p{%&d6YWMs6j`Sr{(u%yV;ZE%-()OcAgVVTjva4F4;E z_fX*J;-gT1<81_Z$z0!(2kuBx`!ujNFVP-P>o^<nF2fB z_cmVDd)yV@)R7?8OH#d{*C9Ddhw!)5?d9pJ>*4eo;6)YpXRP(1-az1$+ws-7_HZ

uu1(YMqPTzQzrcYCHEg*`hU(_Vykrteb76Sr=p;C?SNNNWbvgm0v4#MT zRv#{uQrYueC6FB;Hc5HaX>EUMvMN>TC-jTT%et4G8wBSH{u&yhnMUCYm=|C(DzNZg zVD2wBFCvZgC^JG{v{Eb)O<_DOU%eECe_ESvP-HMjXl0H)nT5Q7J_E~+mJ$gaq96=QjS zm#QBb`mot0!ZL3Y*J|@2&k?mLj(OxVAo`+F#9Fx~o{jmBhQ?GRwqU4-CG*Xk_Tn%5 zv*|9)Abex_g5&1Z*yaEg3nq&kum>&x1}2qH;9j$|^Y*i22%nwi{wY}HCYs!@WYM#9 zYoB!V3g};-*6=wd)zIk^n;5`ZX`(|$XBs+1giXClfT9}9Uo4~FfR-XPT|Z9{3U^Cs zvid?>r8dK|N`jnv)`wP--F7JAZon7$*EQKmCi!)L!}i4F5;@-`A}vW*kBz1^^`HHm zkcEB2eW;*F*VbVUALqla0WIuqExV+^*9GA^EdauG3tF=@eG#|D*Dh!9Y=TaO#7~-s zr5eGb(=p!mWUeaExNn^0Qy|%+aZ~xg!8@U{Fdc|1QrsvA#*r zIG!`g5yp~}P=qux%(Ify{>v74PNg#t@$|w<>t=DlfX1avqh5X%6m_BRY7LJ~r@w57 z1e$Nh4WW1a0@Aj(O0^??9&jnWGgt000yru@d$gVS!5suI!)7XmE^S^vBTDaM&_U+8 z*0D&HSb6s+BId=UH@ReM9{xG@D@s#MCSC@+W9+)sp$b)eMqwO!&eQBvnj1@|M_3#L zgsTL%uxbj`%?nHHwZSrkjT}K!cC5-jOvVG#!-s{a^$6&d+t>nQ6AkBg>M$r$2MYc+6-5fOTs*C zGw5{aMr4o5i<~Yh9({9Jq<_5P8ZpH2Snj*rKX0obQrOz(iFkgUv0?9l!Y=EUP8p@o0z{T zUA)ZIJCRq>Vp|loi%EG$MsZ^09mDoTB{0+W{Zm)%(8bD$-z#KhO|nCRONMX9r+YD* z?@bgDE(jQF)@=Wad0qA&eZkTiH^TTqJM`SKRmPjnHh(#ILG9oh_~@(v7VnvEiyhzP z+VP?456EH*``#70Qt*X{|LRk-axmDr%b_CY)YcQKRVI*lwcQGw{b$!lRTyAw(l3#X zN$&DR2AO~!UfTYaAXB|dU-_sHHUP(Vuy`ioS_)eqfXOoa4@`k>* z4}yQaq``Y!GDm$1CPwSTLw=>_G->X63ls)i@sVRuLI9f$JJuqrxRbo~_Amv0_P?IN zU-{F1z>&#`v@BOBOSb+5o64dV&jtGz4$jgd;DsaDr*J|p_O75BqbuZItua~SFY7f4zG1I_8vC-?z zw0o%JH>Tc63Q?}7-nUje3xtHqwD5in^M*zFi3@NaSQ$&vLLfNz3C{2?yZm)%)umnP zyS01plhmZIy-gRxLpGDFP8W!l=vidE#Y^+v9SI&$;L8}{x+r9I5Lmw2qqp1-zuV>H zAr^idH*i4lhH)FRthj~QB0XNSjr7z-W`zA{j@$bVOr|y^V$t9!rEs!KTh~?8!$+kd zGroVx>qKU4S8^I*ik`1z%>xpuKAC0^E!{8YrK zg(C4ET^>XkS=MWa9Cdq$b`l}d-6&>;W=&brp3?adZ~mtU(sR;My?oq;p_$alv&@I;1!MW!#~z3?3qJbELj94-!P=+SO7TC zIGMt+?gT8X=yiMk8#xN_l9}oV4ca@Sc=p(C3&~!Nc*wrRjLyT-aV!BaMtE2C=D}@( z$IoPPDdgBHwQ&{Re|w2=G+C;hTAodyBZ=$WPDoo>G|{t%zbDll{#mj}$Zb^r#_gp& zCai{ClY1UNw3)T^k21WDSqsm4jtE#~ja#ZWXzbVEW6ssq@Jn_-n`ck=oX;OC)Q$eb z?aX7#Q~{3Iu8AEzz_tZZfOEy@zwkwYpn)D%5&Vb@+@OD2xFu%U=SQEd_b}{KWrW&v zy4b6bZ% z`(T9p){75P+~f6CB$jr|A3IMjPA{7`*rpN^9G}_QfxdR%yy(`GPmAfv2pY%i?3j#I}{-2r`L>@@k4VB9VgZ90!Z*5Bs zJ#5hIpRz)J0X__)iS0rEoAIpP>3tej?Gt?H&d7<}%kO!}r0?T?1vkp!dx*E?MLf-S z##+e;milIkPtNS049_3b!qV-%99Gp1ed7a&U|+5Z*FQq-zq|G zTHO#~Jq19-wgR+Fu|kH3Zw|em-LeRW6i5YjS2hPbbbVn1enZJ9a`wDJQ3^b;z2cEx zvkC4FV=o>0JRzHWm64Ztwu$ExK>D}s3B{i}0#6VBDtfP1_|z71s<_LP%dyE;{g4X4 zk*ti!v}br4)@iq+8G{7@jPlh?0XNfr($>4y zi-c$TRZbeFD;uwg^wLVUYupy|8Wkp>OB*w*{by;YolaEnXk4>^@T3X>bfw5^A8T|~ zWF#Ircp|grVE_X(aAu8(DH(8U%^9FhW-N}If{HJ zshg^)n8J}~AS{EN3x&AtQ#6I}x$3Tnc$LzBtwarkY9b+WvUB^XKUuFK?zd&3@mOwG zdq!@}3?cEhh&>$CR#6zB^a(C?BKZbmD3l>3tK5d?cC_9fBizPOt95`}-ePK%^<{!L z7GZNIIPgKWuUL;%=pAnnJfjrgOTaqityzJ0N#*+jN!4ZJqX+LfNV3XTxo1_bhG(5S z-#TLruaR%x#BEENv5(h*Y_&~0>FWdQ#vlo8i>yH}!vJ;F8C^TrNML1yVR%WVTyLxT z+&TQVS8a(BRrl=+Zjc*qWl&@Kj!5Z(G3%wJ3^egn8^~D(KYgM6#FrK*sw?B3Y+=>5 zQOzhL4MFC%4-xs-rIM zTN~SJ9H!7&iHAu^6uZ^*xZ1TkBA&f4jFXo=Kdh0IItx95wXfc%e=x-2C$0A{kAYw2 zcQ?jI3!=8f%}I{Rn2%Jzx~|%(aQezBQ}SH*NnP9#J6MQ8XDWu8Fsb7nyJ>CTrk#$C zsHwwRFmn1A8XgP~iT5I9Xu25f!3jh6+1ZxXo|WL2Agc}tGIHY6$hl=V3bv~X|5laX zmJ=%A1}s`bYn+l2au`fg$+EpKr3}Q?QLQH1R@?;;kaCnM%9TQZpfN3T!|cM+A9!mA zXSl`yX3<-SlQk20uSsq?t3M~lqmM z7gB{Amzl=~Z{YrC{o0krbNJc4H3`Ysc%rtgPHR1c@40b8v@MS~wRp3^@j(yr|3?~T7jMej zTzwAMScfjV|4wyY{*~I=x27%U8#?;tO-Q`L!}9j>3%y-@#Y^9wzL^lb=|4BjcCh0% z!r`dY&-^-$q5j!LcyZyX!x?yywg+kJ?X(unPt5BY ztck<;&(Br)~)d+aGau*8l zMFFeIuFaB}ayvK+vsA?Ho3$Sc9mAbCBe>5HN-BO**r*}_lUZ5EpSG?gX3@^>bSh@` z-OY}lf4N5B^rR2r`fJg?-J-nw7)jMZW{3X9;WA0p(5A_o+sF0C>xcI&VE63F1KtbFcNcg6?ofCjzdEI7?%V=zOm{K1DFXER;EQKq4}=_G4XCl| zJF@?La&zb}4+_WIEC^`K1FiL#oLNy_*+Vh_Q#r2C1OKef2g8_5lS6-fK5etG3pP@Z z%KFEJ4lpDgFCt~Ig9!^m4VbZx9@OIr7B}IonlMi{aNI@{xt^xR6Xa@@b zeP*;NE(F(Myvq!31lNE;^u)XCcJYJ76qWJZk=)+6z>=pmJ8u32nDWiVYm9g}3ChOC z@_r%i3Dsu`jd{UD>!tv*$16PB<5kEL%8$iEVo&wrnSjnx77zKg^h9X>NOu)_SW(^- zE0UxxiAhBgI0A9QHQ1%?9EfpppQsW5H>14g=Jct@j-akX$jDb`S|hfBf${-=xWHvB%M#Mho>(6xC-=DSZgTkddth;M%wJ@P#WEpyYRifVIVP&n_ zEZD9|3$`RUK3fuv%-zv0C{B~W0(klE*Cmm}#*&D!kbh;GmMU=e-+Z;3I{OBCyy!D| z_8gIJ{Ce|zaKz@gII?b=we>;XCu!p-4E))naYnKyIVQtz*17D~bm)-XtjYLXJG*%H z-pr_bso@s+QTB@!fd4N`VTkp{~VM3>-cH3_%tJa%JLn<%sBJeg74sWxoUTUan# z|JVe5Q{xFQZN*^z(tX{$TH|DK6&-_cvAT;-X-9otOnb=tn8tGRb|+ z$ksN;?>KxI)l=6DcZLe{C}1-(AK0!Gh9}G56wwG#P||w1FQx+hB$ELthv<}Bf##c0 ze$eYCN?$Z4RAqM+`K%qDybG?aAQNLt(so0{Gr9fsM0>H6h22u5S5%#!pD?=|KvYul z4!er=!X&dLVzf*Fa}|lUX*-)2SaE=CWo`I;Rm-ge(kBiC%IV&=0%!hX(|m(E2S(Nl zo^2gpl@aVF{j#9XA+xc)F-C}^{$MZ%Zj8iCA-=zMBkDc>#(RBIW^<=p^0tQlaPL9X z10BU`rdAxXF$c=G4Bi+#e5 z*&x@cIr__Py_4?H20(DQhszQoHyk0`x0*OBj$Ca)O)OLgU^Jnd<=8z-l(xBm|06W5 zQ6wf$Y}PFt5oZpQ@K>vD-%nM^#|c?;;7$PJMrzrh^dgh`>oS9);z+I@WES1I{=DqK63|hAvA(Q% zb@yx2(jO71XaEmEQ8?8F9l`J?5~-3Mi*Fkux=)4O9aNM%p}|28NzmR|Bp`HgJj|z@ z@l&3+S_Q;DphM@8P13!#T0)}y4~(d)F*TKBJ_&eZ1w^m_=L!YllWz-0`k5hwv3&^C zyqSQ|mb}o`#4~uI8F$jn394E=m5=7!*rEJ~t@rgphYA=N$O>t^Lf_QzA}a42`@eNr z6*dk}*P%?*1@qh&Jngr`vgaM7)UCfrnF^YR#)Pibzze}j;+{Av#DXK3Pp)#HK=G0L z4g?kJ$MN=K*Q$7I1K2C9#4YCHl|aKb90W9IU^rKC>t$IUlp(-{<5A9+=<)mt1NQXR zpL?|xDR8sge}g}CqYvGbalw%R8&H8Y*r~_&w)b>Hfyo;%mwWf@9yQnT?mYiNmUcG~ z`ICJf_;~owAE)ADji=IH)$e;SZYeIm$NmEBV@BEr2xp^+^_BhORi8O4+iNQ^cyfm4 zV(lh5F)p1mT-H{LM9ek%p;7=XKi#oUF_w;B@5_!7js03$I{(3e9(Zqj4F+{YEc2^f zVdf56c(>tg6T6;)ykP!eIqq zIMnsxVZX<_l{hx$I@h!lA%@E2)NjeOnCP7Jrj0Arix&K}atExBf)q|%IhiLnoyM{w zq&BF%4zZ}pUll?!kgT=-#+pE^;luAPWO!EeHhZJ|t^C7h^&~%f+OEHh&odtjl7C;GJY$ zqN=q#r@x44FQXMWy)>6FJ!7jK85t{*wkeA#x~qHD_aHhry84v0A+VfWm%U9dvm$j}q>OvSS9LOEg zR=;3kjg%<`*_%cu_E)=;c)u*`meKguLC{2q6f+_?piLckrEc-)H4cp6vdgu4s6vX# z@6zRy9JPy2`MyX7AVL0d32Oy9)F0j~@9)$D!bI2!)(44V%_`dmf~(gS?lXRnKm!Tm zZJMyXdNym)Zr=&hI*w+^;UD;d9DBjK=jzXQtl{qF2L2CW?-*W5 z^tOA(wvCRtW7{3uwr%Yg9dWubI!SD=9+I+wV$e5yFRSFYdydF zzOUsaS^Lbw?H;{STAB%uiZrU7N`BJ_G;r~^J|kE^y?#kO;4@AwWpJBp_03ZG(QR&NEz1s2;)B=i0utg#L9-j&~U zAETyP9~i>n(mvIW9*eGyj=!)Tc=AH`XU@1Ogbw%92)hN>7I^d`?@6T7g5iGIf#@`N7e@<36K$X z2RymcwZ-+1TJ^vMC1_VGowV||g?S0IzewEN4?gUhqmXP(p8I)J20C9oaS7AERA<65 z`h2!*HRWVE>AwcW0EXR4VpF(nrXbyJ8lh`)IK7p(6D{ly7o}%@+G8tGL+7BxXXLIz zMteXuluHF`=PRedXpvFN$+G~nSb%*JC$RSRXZbKE{18g~Tt28Yb}AaX^3e?!>{58@ zpVbps9sKaB(bn6_%j-vr!XxOB+YCg~8>;Tk{Im_!=*$2M`8KlM>_r43YmMFl*|o6p zI$Y}&)xke5C9}rj2_2Nc)(0(AsSI1UB=vc{z62ayWR&sZzekjl-j=`~k}0%G8YS#~ zkbbE8!Xk1^dY-1_dz2QLaC0Av&}0jUft5WYP=-;a03(M$l_gSou+YJ@KQfs5D>X+$ zbPXEIJ(nfj&TffTetWZTd?t`3YDc7w_%KpgS+7e(1U9v`A#z#9<#CvPbq#(?^jc4< z5=nJShocRUCM}HViMJ33n z<_lXtl+7pdgO`UHhkX=(Lpk}V{kX2j~t4z&P;KG$Rky4v;ZJj!8XpCbKXvCOX*ei4{{XzrTLnd zd3>9#y6#lzXD5puEd~Y7*f+a(HL+t&yjHyQnQ-$A*3E5Ns83f%u^K^)S`%@1#_I6- zO+U=}UYj1_J~n~D|8j`VDO!nxo*5j=DmU9g9Uh2Ui{$kmYpfQtCt^r{1BmXeSi6}Y z#=~W+yw)T!QW z^ZeKQl2otiqSd9Ic$}sqnUfTsx+WM0pu81_%6LElh6bPlq~0X4P8gU+@9?3)Wuitn znag3xmYLnGR>j(mlkJulG6Dl6r59uS{Bba10#pb^PAq?gKoQc1n>A!=*(WN|^MWTX z_`zXMuxvsZ;U zwMk*+;h(& z?hPi8gVd|A*|2u>kGz#C6d3Je?Bd+J(h(WsF(rul^szF?`|}hfC*7*`?bEZwM6YTO z_L@8}W7Q3Z13I8t&SYyZGy|u(m1S|CIzQYN=jjK+Y}nguoV{^rhD9ik(B3Hv4)9#F zp71?TpYiulr1GJD8mZiL)Ec5M${DyLI=B*OL&mD!GA7U!eM8fzy^RUpfNQ5|w%fqY zGsY+JA!+FS)f6gJ^OCiu15CrZPRaI_ zo0E&!#4o*uSHPaRy^I!PO@&&Ft7sgO#7sIy%l6=v#@|q43;Irsv zzzU67PwswevL9YWn^PZ<09z?_E8vo&W6Z|*m63||RpF<+QWGz2(l68BtMl7>>5$sI zWsmibCRqpUk(FGr(jTU4V^iJ&GaW05Ub^jyhLe*XQ8cP$=?G>(u3U|wa2#Gynojbv z*3sN`Gk(^gI66!8SMtkaG;ULIKrvu-s7%ksTUA2Go1tLYZDelJ19PtfCrd@G9u|`3ZFfy(ZeH3IYhZEN9z>)-gs^ow>BH0)RuF$V zLa4i`7oe22I_;nLRaPvWB8{fb?NV-b(f%FKW=?H0l)Gw~ymFle416i$db%X?TirN* zUS(fh%v;mLUo9et0lChC0?&<`LHs%(We*is?2*NwtlIPr(nQ<&rZSH{X=FXGq?V^2 zTiHIVym}{nMpG;-TviqCjT}SZ%yacTg<~`MvyR(s7>Hr zZ-VtRYaWjx4WR|}MuTD#Kn7MCniIkey;|OtjSTEz^6Q8#0yC|K&ONn3anP;RSQrrW z^TyWQ5g?)F>K2$Glt3jJO=ljzx&xmP~0UAbX}xRvJk?^C()8`d`7DJ zB^}qD1L>AZLQAi&51VRZl|BobI>CN5TiO>}h9}9^UviM&6<;tKb!EE^ zO{>Ivv>exW8L{_*1z;@Rq5xO49fU-yx%V6;&38MpS)pC@!$f1m;V>IeAz#e?6WwzEpkwb+YwG0r{Uzaho|S6keMJ@>U zgdx0Ipe>=)^TbVrwq2;L^6G-oF|+MEZ)3c-+?I_%5~+@`U8g~M7rS25iO zusP11y&+vYB9V%RylvwTjW6geH&n1~aqi=6clIY|)uMo555)1cJ}^r! zo_`uUX7uo}!m`(f!_ZC0m<5V&djB^bM1#*k^RN)ADvu(r>LEr7fn5bCrsN;nnM-$y zMOdY%2KR!KRm&uk;?9H*yhQU~J4uBtH5pmw@}e0n@q`&MIpDUq0Arf<&RB#svnHQE zzv&a?+w<@VhC-=u=Q(*b*TVJ?RK!L3dul#KO549h%5^iZ9%~QGOuJLZlfx;6&e97A zRF}ZcbPOcTcRn_C<|hCy<_WoV|h zpR$CwJ$#P1@B*I$Np0CJP?4x=&Tl+qAJz~h>)jZnS^AwhIL88+{Cy9{g*Dv&G zf$)&Im3-<|v2CveR~n*@r%EaHWAHMBv`qxCr6wiJpk0M3VgN00N`CnyMCLJf;KAah zulywo*c|7;ptV?7OnM|T%v~-T=*@##hVC66pygyvsBSa|<(f%r5`th<^1!w*0|WiX zZloBuE8YVXz>A)^IZm@@P#tE#5)F(+1Z{WO%Eho4=DLCcu?3SiNMj2I7-QaC&k{$X zz%bhlT`EO1PaHLtZgun`24qDKf_-qwmQ0y@9l=+JykB}7PX9P5-_t=@ouF^%3)kpyR`)SDHyn&TmwUodgimk)44AD5*x6_zZqvg#M9_~KGb?-YuVUY@4Im9Ce89_+k^Iq!tmaIi11w+7(z)!a!m>yxAf+^UMB*7^g~>o z@BjbE;b1*YN;SL!kO`vr=@(oexwJ?vw^&+$xKD`dAv_Dzn)+Z1K%2 zLS)&(_znKQBymVAn#oNludMTa51&KQV*N-buiV2Q zJco`vVUpibP@AK@|Mr9@-|l}tQb}waS)O1)(p#wm`M|04iKRzk#FasA#-wz@L zjFPUPy?n5si~+jsWriY_r63u@N(@9O;>QdNKBD7vL3qDg)O+lHn!v7v$PHu8vCBf8 zoP7QQ=fpK5iz-S@!W1Vk=m@ZDXE0vA~{2BKyK$xumn;WzM zV$oCzWTav{SaEWHWJ77o=YW+#Aec$C?daL4z}%aDAv`_v^aF5c4idP%_`B_2lKn8v z;WxYEIPD~xGBlBxEt?^R&=7B1wS5AQ7=~S`Z!Br0v(T<|(ZDL?d#;B>UHx1|*FWbO zZBnj&kdC3d*mrg+=Ji;2*g6EL)Z3)EMb8BT~Oxv31i>Q!u-ucf%JIB+X-I*pOz27g_$~ydAdU}3jQVRG$wz? zD}UwrdOeN7O^%m~mC>JZPS zc&2_Ncln|n`otN6Z*~Q}P7REV?1pXjk#SN$L5OC>d9^aVD3pfU@Uo^-mG_F|?{=>4 zt4?3do%>i$jf!9C0n<7zvKlw|4mvgBeFTW({@wL3Qqs$U>a6^65-IFAMdBC@{0Xx; zE{U&uyi%e}pcvk5Q}NQEys}#Hs~sl8pmQG%(+CD;T@l%}I2S3`F8Y56=ss-k_Y+Cd zj1uIY-M9roI}C${(rb587 zJ)W^tL*|lyNNEyxgq_%(!xq&y$DbXLL!mYKoL%#x74K ze;i@yhRyh_-ZGzZgUnP0{X{YGpdb>VYYzZv94sscX91>RpZQtm(V`_fyR7^QfkhDm z>2pkRiHjk(uX3*eHDZyTRRbp4_l=i4NyayHUSpj5>+2(I1MX$uq5BQ@&6RCfXI!!f zC%@VSTx={W$c4r3WbW5#Qm(*G8a+hYv`7mFt9@u=(P|kDJK33}*eC9nxl>0JD^ZSJ z1?jTn^MNHpiy{?Wd#-k+K|SJo_u6OgpQr8ZGT)Zk9oo>NWePzHfrTOBIh>8&S~ir8 zdN3Jey4yZB9Xpw7m@bS(yVb`wYqoS|Fh5nl4FFBwajH4*6$AfTg6b)T##(Q@la|M8 zDxZ=v3wHwk=zWHz$@xlaT?MW0S;eO};xtGd$^}WX98cjzrgFVR4Z$tuk zE%rddH|=61U0s5k81QtP=_w*XTb_tcp0er3F`4?fGO4SJ0)LJ)PGnTXYb*(*(d7a)N=xFvTkHDfoVa;?2AN6lQT5WH7&$!Bb*nI(ECm40$jMeG+)XDYXs% zhT^%SEY?{NF-`s#LHr+p7!=y**5>mf$~rk9gM}rWe#D^_6Z7R zw?>QA%)D&6+}#{^JrmJN4--+x^HdGYb)CLVwt`O9IDp~q|giuL^rq)q{*9|phm z-Z$%4jBSpwVsla@^=A|>C4q(~6MO6Lzt?piaiRSbn6lvPl?v{a;>&&Nb71rS*z`#z zd})M}E73$n__QKpLd4m-_HacnR`gb?-gNuU4V>5(~p!0zScn>N+yob16ROvovu6`5K!R*Kf$@Y zswr-!EAC+w59+C*VU6V2^L`WC>Fu094`=p<_XFPeBYwS2bRdYy2OE4i>Q0nUlX-NK z_`3vB@58+b-1@XQwZGQO8rir_V`C3&HB<)eoOJ#Iu?eUn|pY7zT3k4k&PxIiEQZG zrcJuvzIkr8Gmc3tX}+1eVXavcoYugFV%%`fxOiy11cia6Sr1ehb0_o8wl$b93LgDr zxpUJOT}674LDCnmQPF7UdhqgESiVa4_+h9GEPWC0!3;t(~# zCdN;%psez17O6{ULc{#m>>IT^Cq4?P#s&bL^!c9I72mCGdmpyykJ|CI?MVA2D5KLV z&ReM9ru4z43AuY|7D_#{!jA3j7Ej&4DC=sq$EWnAl0NX7bW=Sy4K>vk`*`RUArk;Q zNq;!Ju`lX#0JGrC0kYeW0Pb(xNEpoZc#{C*H4Z3rKZE(;I9ptCbip$3hfCF$upDn? zMXi70zS`D{-5BZ}!NylKt9-A02sRfd%CDNyHU<)x5}r_{g%DFQZ}**$0=U_byjjv? z_omuldx0N!KQ@t>#v1&`w+j#zOr#33uajJK0w*g{#H28H=oKDe8^k@-^m*sh>in^@ zW_`_|RD{JiE{sw34xi$|m|M?;$Zf=7I1<^VijDuMK^Yheg~-MU1ngEXEpa9L4znjt z4WJB)!SmYEs;I?%Sznn6_CUg3qWhoOPR~t+=K|5|b5BtU3IyyBEW&fzH^t)_YXPE4 z#%o5LgHjZBpmjE!^mN~*r%Eoc^K2HfY-pH>X7#FiI~Ng1{j{5U<@|K`^(ao<^^YwZ z#dB7XYW&Rj301wiRp3a*-SQyb4dnIRU}ksz2ksw9+3sryq}-s6cU=@WjhGzW(?12o z-hg}c3QGq|BzY8?kW0kKb9*(-y0#u;D1|qa;^*lLr^_$}lKcI$TKnN;yI2yX5DAp& zMY)w6eW7ek6jy0deu74zbyiP9Al|W$WDst~y_uo8^fZJAx^AyA4e+=#^q&%>NbD{{ zLYBWF=}j-se~WbNI_`frtbRwxkn1wkYy$sWQC8rS!fqa+VQ>-_ond)zVx0JD5z2vV zIm?Q;g4JMJN6Il^1W0_@dyzm-{zMO*XM{Ok8Uf!gw`o~(85*N(0Vgk#kd*w<_1zv{ zXKR$hA96ZaP2~SII1?t6oXtuW%kP(af3&?}5$?f6j_m4^0(%O69>dQSra`0gjt4}& z=L|&OvqffQy57?Wg?-XQY3qm++gE|_8614WL%62!{Z<=ppRgCbtQda3IdqimerwqD z`#n_pcB1yWLax6ppRosgUW@oJeSh}8NBca-{J8x;Y8VW9|F>cTkwR{A z>G`!DS4q&Wzpo&1I5fy@PyYtG?Z@8j-VpkKMjB)G<~;eVgR?F3Vo%HUHZ0I`MTX$O zd4v6{Gj`%vzzxhgJ0qO{e>QWcLPB(LkO5Hn7obfLdf@%HRKkv6*=KNSlpu$4#J4n@ zvfsQE@WXp25@Vlj$`>`zS1sfdEdT93UL?d22aT%F^`!*rol5y7B}dAr0TSeNx(q}V zbJs>sksa>^)f}?dII6?~=;c9EK4Nnnmjmsqdb82fiQnfHumFZ@f(f$uNI_QPH3l55 z(EmE3(m?h_{q(Qi{zLEm;}o=v?T%Rnd2ly+bWZ~;^g!>77@rzL<+||=tLdRaC{MSt z2adYZ@+|(^1946I6$S$gzypFIO{Pd~9Zeu7WF#pw|JX}<>Ssm+hx5w-1p*fDcy-1X z*s|OLSfM4qcIp4?HwmbnLXseN?8d z*eO0U!MSPo+@*a&3(>69Vt30j^&f23;02-s4UkakL_e`DRDopgcmJec`v6ddYU8GO z>+Axtp)h?BC0`sSwv1D3h0bbnb~xck8&=B_xu^4%pQZ{|n)Jq{iA$m2erS$xY2N-& zF9dReLnB8=lf!P^elamzmf|qJo&SUH&(pkqoA#O0z}s^b5#a8u7Dg4+K_dx#hcO_4 z1yeOPe}%CoCg$?bk6%_qA6h`GxoR?v)*M=Kk<3s84HB7P01~Q*TM^2N4%m=zvqUJ$?D3HJM7=3wOV^8C@Ft=x&9Ub#id|-+}pNq|JgIr-gC^k&K4*vErHzswzimbG?>(Ka;kca zU3b>i2{OGYBVihw-0x3Fjx)U%!bE4fc#7309vkGR$QTy|zMA5H|9?>sg~W^4-3J8y`FM+b(-=zdx$2B3dq> zdv$H*@N0#pt98f#HWa)6VxB5(S33$GzQ{57%2dBbKl??V zJfo2l2nu2n{Qe~fMow_s_lom{l)obr?>Gqkoy3s@^!lRsU%TP|Resx7w%ff$-;;9k zOf&MW@%D-E2MG705@&u-ng4IKI_?QOaA>hFyQ(*8d}nkK{vT36An1P%_#yxWr6L4e zKE7vZXmX4npZro>`@t%Gf^h#C%C|+oGVmegpvwUiR?^pz_QkrS^8C?i%paGWfYnc6 z@8!Gq5L-v7|i%nUCzz_cK{6~pANN)rouptsi1 zV@A)z*-_IJWxC=gh>pVC0JXrst(rv6;H@w6tbK!?KtbDa?p=kTh;?F$LjqFjj~Q5; zenZ8V42%_YPGntdm2vLr+!GzrV-j0q3}Y}$m=K&ms({W=v=`Pq^w66$V08j!LXd{R0 z#=fS&!T!i7k#&vF`K;nT0m=Ww*%Jri?s$TEqW;CU9`v!G0CIo@mjF_8$yv8|zc2z) za)<;2P&&@X2lNQ-O1kHf&>Lvw4eI!oazr*pHSm@ab<}k`CNd_2{yiCWg<$u3*u0Yi z)HY-Dur>ZI9(9*0ri?JAzyhmyXd0-vSG#B%t!RqZ`4nxFTGf6oZVOA33&43;#P`+l zbwKy?*fZ`e05854VWR$qrJutbhd!YN(`QOpuoVCukt6qS3COPc-*VNeyP(7TiCO?l zY?n0OcdR8h%>b2(t@0ncLX_wHMf|mI92p-*z}C%lLISLgARuIoQUyy}$mfZq zS&Zo~hiIXZpT$}QXYVi%FWg{VK;ppZqbl#a0sfR0R1a&liLG{g%w_i(iAW7mz(Uw` z)iN*PPgxeYrw~(~PViSYWe5bhXLHPBh;1WOsRyV!p_Pp$?JDG~JjfDPm=5w&d0W~7 zDX-L6AgPbR`T%3M&j6^WL3KS1R_XA`gR5~=6%&Tg$|Ui$#k7|rxqEm%pLn`{2= zC}V1$g(EiCAnvPKi2~#jn9L=eI6(p4u9MOrz~=NS%pAlUeT|nk0`do8OA3g`g0vlU zGoU`nC||o-*iZW|j+Tjw<0NwGi}~F%sdxJU*uDV0%R7P}Ln!>ouyJB^h?l-x9?t5q z5>73DRSRl7%Zd_QJ$fO0!Q`SNOiGK!fLLK8z{|XEmK|-NA|-_jm{Gq?LgGLP6UIO% zqP`bnz_QWec=aQae$Cg~?Jt)=4?N}#+zW${A#eIi0~M>|dRo7&p9UJ^cSb=WL~CXO zM7`TKlH%|hpwNrkumsA<)w+9H6HScF1L{>&4xfKKkZPB6ZtZyr7C9wLIE!;(=@`6v z(Lglu;_))q;lgmY?~L z@2tC*-Od(+#LQ`8sa;I^eMP1;^X~(s@I7PAEq;nZ`$C!y#61qvr*9XHwj%!tJ+cb{ zC%kL1Tx*i-FM6@|m_+cnhv6RED9}j-53=xRqpWC&|D-log2d0Y zPG#A^#OF2n;Bc{j#YC*z_P@4OZ+vV4JI)QYA2#{M}95gG!qHOnhRlobtlN1#L+ zGQ1Y_{cE=&<6bu^j|Rq7Ho-{%$oWolS<|OPvO1sw;zg+TibNn;)+K6tLtOq@p` z0jn-4b`<0V?-{}D@^hlk#0kv5E+O1L_>T${RMK%tK8FJyh%-DR^CpoYPK_YKg4K2a z!VWt>J0W0M2V1NgjWR`0ax;j8`4NVkP|o-VY#K&3y)8jpzZiYO?(~hlVW32Ovwbnf zo;SLHp{Jy5a4O^iq``s*4g%;_1BOr`U@WUDg7FyqPXikP`k0up^_Ny^M<%yVI0yn}YZvADQJ=YQX;$D^ApYj-oe5UK z$`5}NURV~O{Af-kA`K#tg@_P^x^I`@>EpnF63vr2k%yl)N8b0mi;vwya!$xBb`Q+T zMw5+!tW6umo8}!DA+x7@tWx#A-Gwure7DN(ORvj|`5Ji%Rf3$yG2q;LaW9{^hRmy1 zw}cnUq6*PBt5|Vr;Kah<BNpjZ#!<&C$#_cCMzBeAI3ClL%(s0xA@ zh&8jjWutw5qSe#LHI=#GN3e|oov6#RGN&46*6Y#lLa^|=)O3k_Y&nOk4&D2N(U##t@z;go1ltVKby-0NZFjZE(FCf?xqvp6(-QLw%9dFv|xx_EHB z(E-yPu9p{aQ8E%8QM@7om08Y?C%;-JNKI;G6E{A=FE8O45aBzp9Ze;H=%2EK`{}W8 z+#o7&yj{V zp{PPt;B5p}kd4IK=S5f<44X&u_q1Z|AdMo;jKrN)53;0B{3_t#7+ff!22ZU)(^l=y zF&e$}O%r{!S1c$pJaF%UMw_+2my-yoz|=D$wJ;|c!%%aD3{qfbtixjMUg`M+qRHG_Wg(5)S`AZxz8Ofc=t`gZ5~Alf zCsQ~eJ{cKuo^3Pn83$PEy8=Ch3JMJQJ~Ury*JlzAz)xY6`@p@P$Y^^MG`N6p*v zf2PS*^%r0udpACl*1VC_5DlWEzqe52@!bbTH2H;gf6{7$aNtGi%+Su^BX{i+oGbokGhE$>^Qc|VK&;59S;N-;oo4McvlmAw+N20u5 zT-}?6W3grv&sO=ig+OURQWViOQk343*woDJHhU|U?-3O~&ykb`@{9of-$1Yy7F%$5 zP%kZbs>}Zg1j{p!d&qq`p0biyZI}WpDjE~6z9FDp?*K&(3Qo?v2l#pVz7-rdQY5;w zObP~yvdeWlhGSCu6r`yqBoIxDFw&sC^Ba&4nX&%|68yZ5eO>X(TnBNVRApu|Eb5ULSR&v z0au)OiHE-}@rQ763mgvI=%IaSgW975)pjn)X4=-U+#~RaEER*Suc|tmc<%@EEfK~4Q#DS%DA#huKPc)Nhh-diSjshLh zf%Q`>@5-WrhPo$lT-LNZjC_pT2*1Vr0H)U`_D~=HU0?C<@Cm?z#qr#{L73VKGq=C zpDYMH*88w@ty^c+u=OBlNrS5|Fgr}}ufElnVvO0{lm({C>P?>aw3 z8L+L}B z$UpRPcLERTgd{`AQNc8&j0GRJYfid^1$WtUi9aC-LAUNKjyQG)!2LfQ_A^Y-exEM} z;+P&P1h}A0|AXK%0Og{&z;+d*Hvr507G8QDN0z-X_rhL$gJ}EkAuiofUy-&$K)Dc= z(?T|zV&N|Yh%RiZE{+eqf{rZ6Km--_o4|C|eqex6k#(ap4EV4jYM!qtT>n|%w*zAi z_840b;egBl1iD7LI^--(E_Si!4yUNYon_;SO*de98L|wK08_%Zfl%?ZonYD%V8EEd zhFVnK&MaDvH4y!4wt-vkE04&pjc3UT#WZVviX!s^H!kWO;Bbf1!1Mm8w!9>(=5;p0pKcRn~ z_+hB5m6%gsfkIph79p&!5+Ue{80n_L%$dk`a zm@}JNTNgxy$|p=a`FU+{S!<9t2zRvt%&~Nby17dA&#A)&mBg0`?Y|3|f39F$7+*7_ zUZ8iu@FoU@nc>W&kkxPqtojp|F{1v=gUMsXw0!Xa!YCa0kSfVE+C|S;0(RR?(1DKN zy(EK8S=*-f#ZZRQz!aU-n&D0y)9I+T7XBbU#^TUvlt3#R8qw-F9r^Bsy(9Vt>bcqd z-_3xlQ`5We>{(>0Y6Cm%=L8U#QtYa2N$xtb{)1TRV953|4ELCveB7&zDnqkeaG7|$ z1MvPbnsYXLP1A6brK0{>Z?hfg4`4u(fNPZ3uRrgQ%VI9_2<}FD*5E8&ou|@P>se07 z05@$Zk_C<%ZmHcfx!+i^MCAIxD-6yNoFok!)}~+XoWFxzC#Io`4~0`-Y00>~TrBOw z-Rx=yRBukcZEfhzAx2~fY4{C6B7KTzlKBU5p%iMzWr&Qx_ zN!R^D81pJVxPe1JvI#UZ9e|4rIWfOh^xTXj9VPMd@e?+&y!I-f#}gy)Rq-kYTwm%WYN*sH6YCrI+liE3Ey| zPH+buTmO6U{~XzY*}Zxx0)&W}z*0JJEXtXdD;p|DKtF7p4_8@Vp9RTa2sIG%(`KP=k&?`z8e#!E;iHbp>U zzOya(*ss^(okLUv=hAympv}KOlFNy56!*9C3*i&$Vuxv(g$zcL zHy|f(=h`1HGHB!e&zCQGz|7q}@Sotv#J{(lE^q_2o*gMyxX*4uvSybPPJSr(u3pF6 z6l0f*6lOHvl*fQ)rwu?T9J%fuCaclg`+iB0%M{ffmEqH*hS*8$SusI;sS=xZ)qLljz#s+`7Iq& zlsv|+-8D4?1G&^8w>B`L>LH;%BX~{CWWI%Ku%yYSEoC4clCoMunRd2Z?tLpsn`xD? z#yQ6A5kQ^)P}3q_4o;EFz2k8mVNEm+6Bia|$Msw5rdB@3$_!75@v9V7%$I&vlDgc^ z9`WuJr0fB#FgleebMClSCuhjSYYEN|$Zi6#R`{8jXRaz$KD@9+TJ^Y;m5yEv37}kv zJsO*!s{`&39PRl^_{&{9SBNbY$h{4~<7j9~#*1Rys_)EqyE#2GHvpQOG#2%7F={C@ z!a-xH@@X?*82KLW+T5V03wSBrK-h*P+M+S~wxbaQtgV#99)yL;G{RTxPx{dsGpuBT=EX$?HiAUwC2g~fuT$6mw zgMEcVrQG&_wBqkDf?@| z=7D?B2HqvQcw)9LF`*q_5iC=`W@iUlyU+yRs@(cc4uA9rHF_$PzSSNfQ<+yRbii|m z3vZoPbXD7kUtHxyKq|sCu5;PpkXLD9!Ohv~yADxe);3-t=8f|tG$oDpd$CUdG`oVf@AaWIOKPQM~P8GG4BmBEZ!Ll zH9-$gr7dM`?y}Z&Zr2T9x0K>Thy&i|a=Fxj?!&^DfnE=^6Cvbk?UXb&KwbzMsDE+VLedta~zrLz=?(kjY#dacjWtQ>d@X>1iq>&{-`&-)EQC&0;#87eak!l zcqc)>^wzBou<&aH{J{)bW^mEzE@A;EWTss3{(t*ZaH_zNV)8tw&wwW><2 z2T&n5gi=?|f08)N0Q-e5LS>$l$3L_T1-=~;&kB(CT*Bo4&S(WZp z$n~RvLrcBdc0f}C==x)Jl+y&^zkg*U)B9v)Ii3`^Jx)bx+`_-9N zbtKI8!s8SF^43P6qC$d2GOY&R7;!5 zs?VH?>Jc~V_Ww~L&j9K@W1o)NO(%rJDAj@pUsHAd0(w!n3*rE*y`^DzD0`24q zYONO!337BSt`36U4P>Rf?Z06&9~M$SX15Qb1xED=f?&K(bQDJ1x3|T)rz|)OkNJL^ z974Kt2;_bQoQk7!9yp8`VDy-WrgWeCLo#;&KV^1Dc4xTUU@0k*76u`uuCr8)$frLV|L;t`=XXDi7?T-Eu{`s(Q0VMWJNEPH2&F|?YhB$=bUSJgrIv?Ix7v#`= zh9PfB+iS;VeL-9XIKkk>M*fif&REHfR8o@Gyn_kC$@|1wg6f!P z{Uab9Uzq15_(0WE*wq^MuL#nyB%)<@Ak57y_+xkP+y)_L#0y-@l1-r7zPK(W0dQ;c zB)a2KtubrZkF)@-*KRgG$UozSK7x*8Qe4fH6Gnw=hJcNhc@#b+_xwb-_!3WC=&Z$g z3I!Y;5Yc5L1aosGeet55+GYy#W?9G%1~SH1i^N#i)sQ3+MO4xFD;T3^ecYFo>ystn6VTBLK#>YS+}5tVF3!UG2> z=9>fi(2O-mIO|%sind3>C|lA-SxhE&jxam`)>8ZpuNi$ zf=Ooqi?!tHq%n$~k_3cSFn>?G{?0%w!WZ)&#Bk=L6ZlhJeF$zu6V70wSQ(0?2iMZL*x)=62n2x<7UBuC5Eq(7R6#e}nPfgxa5RH1NJ z4Y{RDFOBUHwIQ6hIhT^_0k?6>&BhF;?3hx-|6`hd<9*?JT0zDXcA*)*qZsbom93Ss zS*^*@%$U{02ySdB*~Z8vfKhk=8VryWEiIbYT=l>vw7nJ%1aWehDx|X}-6qDc+%t5n zo`NFH2Hkt^oG7L!UzBIQt2a5`u=KxIq%(2Q`x_oNAp{iOX885N%o4RT&dKf* zWLo$rZ!Y1p{Jppb-VtqEZ8y%VJ0nW86{aj7RPp+IfwVcuyuF&yo)E-&>*8;L$H)~r zM-ZKc9l>QeKK_ug1GYw>8kQ~lq(5=|MBlA+BrvW1U4Qw7V=UJOp0`Im7L@63?QV$j zXg?=WlI5!zPH?OpW#Y=|HZ|Gl>v&PnSumO2LAJ7yWj_xAG{M&|uT&7DOsvPA;ZG;c zZDCC`hxP_e>VZ65BzgGUI6=~NUcq+o=ffv4+CSmxQJGNy8)AiTBl!G_lkMO}V|1t_ z$e;rEA70xFQ1!-!{lI_>I|t6c%KXFT@4iakT+uxl_a%P%ZHwv%;BeoiuVyhC7^CY; z`_hztTk|_g0kTJ(^^4v4n{!&R9`2D~6u|t@o_Zr3Iq!j#&4P74=T* zzw1H|c5vTzmZN(l0*G2ZXUEfhXkTDA|1ZM6IXIB0`!Y5r*2J3FnAo;$+fF*>#GW{r z*tRBiGO=yj$>#fhyZ>y})>ic&U9ayw?^RcKSKn9Xp7RlE<^yazy-&e1`}p0z?X((j zk=RVNKg~#18Pp1d3_14AW4FBH{bwF~>%rwDf&PE7AcM_)LuHBT_fO&*mlug&i{jh{ zUS-W;WNv6h08y5z4;-iKZaS66*ptt2W74j>0+F`2h>utV8K3mxM;xs%kWIlj@Z0Ra zkVtc<7VDY79#~J?V>~?!)J|V_ib7Z}s|*Q|`)l#H*L519GkLG=De`}LXv3+E>V;RE zvYtx*>#!Yg0z=>u<$h2P2kN4juRKI~(H^_<{KJ&CclCsOGU-tK8NK*RB!rzxLya+Y z*&Co*R#)S6Z?9Ee>KI!)po`MFUOqbW{6Wo!yR3vjR&mh6B2f}zW)R9SYIpy}4_4qm zPR`Z!3tm1SvYvD~H~Sw~Tjz^!-^ClwVST(ulJGje_uBIbZ4742HcFp4T49Z4`-q}U(Lvs3ZP*dcu_Z;y-JGA;oO44Cr5?T<9o zIWhpkgxrFWnU>o-SLdzY9Cs`a5@#O6ohVnO+N!aum??H|Rb;DXeg>{R{GX0}=c5rQ zkAe{5MXI8(f}fBKHyuVk(gU-G@{;Y!Wj&bftE{7#rz(~Dne=;-sO%L{bcH-j7VsS3 zkoSU@jw}yM5a}C`C)t)WP6xJADn|P`wHg6$8EZ)MOX`{Z9{_)3E!NsU>*3m`__@`f z@z;|Ou&r4IDT_gW8B^IX^OvdJa8HO}I4{>C#-LDw?31RClwc#H&lZM>#OmNROp_DatCtkhlZdvbnt2eqv@~Z z)$HFEy>mhwupQ=58qWVCGl$sAnAun9W8O6SMV#p4UdCgc&t}Mm-{%M+zXO( zboTENK~LV|GqawNm;=KwR;8Dw1@DbT zqSHfy84n^g&@QUcmQc(FQ*SnYSD4-{ZHIG}tIQbd8{d6yV0xrhSUJg4F0KVw=ho53 zP`!S@fpPH^uR9&@w;7QJU>j@FV}zU5F5_+86oNNmp-FMqt|78cc2~Y&P?FPNkheiYtO3+K|;Co^yX=z{Bq-b6@29EBNY|q zQU%VUO}Al#^NH_yp6Jaia_9JMDr(or9OZ=s<`|mpOYTkQ(dD96e9CQV-q^H)%Dzz< zV*1u6owFEXfrm~I>og^y-E<84s9`M2FLxrUOZW7UZ-RK7@nuOxGnW|Pc(ck`?3@tm!ue5dco-A0=7RCd+YHq|mJ8_cX z^%SCyhs^f#S!VVFJFK7*ZRZR27*woHuFKyfaTzl@9I|;V{O6^Sx;K!Dm)b~`T)`WH~E^!4m*Cvs55?au40-VsA}Qeo4)11+vN+QbFOD2lu_ z#M|Qnj z-IeTv0_r9fl~{1A$DBhtm`vK&BKtiu82gu>oG$={FlcUhE$zpbFn|sA23pmKCEI)% zFonFe>)VP6W28kbK;sEv$`$EM+NE$)f0uea$?x~xht?@F*bgxUIBV%>+Q`)(CV{PK?ZOy@NO5nj3Gx)wl96(pdA$V&~fe|O! z5eKI9vi7?R?rcW9QDGxC2hCQC_YUI2o?4|iKV;rJRsY7_%4Ljs@|3=EC12gTY1y|z z9Hq0(#==w-Fn(??u4vTf`IAu zXGquHaW6#;`-9N_6{1dM%2}3c-=vL7Fap-VwWn}({PSHyZ(zT~=vC&=JFt?J4#!CSrCa;^laTizWeT|9 zSlIHK+U%1iOivEP`gRYQ2zShj*Ow6z`*z0LQ zb5p@MpunjmO0tov(LS)E+OyGM>nyV)d-v^0jx--l(7u+H`+C`RF{hA4M;5XqX()Dyy!a&eoajWfGp zg;>X~UF`H;3ufAoI4`v{cUf62K`6Wp)Mljb1*J+YGtg);(r1pc;6}P6UkCvGAx-pX zy5%$Zt@IB`pY;BwZZc$LmuOAPA(sQ8i8Hk0+D~cBC(8cS_3Qhmq>2tj5?bFlx;iRn zImE{C7`vY1@CE#zKN=^nf-eS@`OkaQHl{CQ!c_DXU(TkKZNXTHkiFF}R})MPTRJ7% zX``pl;&RBIP@liGZ3%AOw;2MDbcxY$hOqiavlZX$!j=1<;_JxV-z$1iWQ5i{EpLeg zhB;~Hr$j`i&9!7j`Uf!nxV}(2D#4tl!fn?Ym{eK!YYS-IS#r<`Bz+DW{BizcCeaAb1p#|AZfor3>8D)OS5s>XRs^-lX)FZn~_z5D6p263CLn7bR$ukn^ zW^cC2zgthghEisJaA5#sHg?wMJ6m#h>Jrl&DxC<;k8hzK7{fum`;ouW5T+2Yf@bEY zTgUr2tCTWoih0sVVUX+A^T4kQ4Ni05+=7K7Au9sUO$wuoq{h}aSgsAHH1odLJ)C=8 z2zWHbYTxwBf1foYVbH2QHlck^hjL@E4jP|Ftq%Y3eR%FLI)VgXn)v@M9z4oJPVuq~ zva1~0pAGm{BDzyQb#}H?H*SBCqnfcE8`;;s$WaeFT?=0bWILCq|G${G4ZXF+6^Ab+ z$Hl1jrP%JKoaQg6tl5W~GpYoxjoL_BMp7~phcaczx_i%Ko{?%&fmS=1M{QD1NdH7X5+G=TY9kZ3F{zJmq zs8^tRCipeN?=f9@UtD*>?*{RTf99I|G?sy~Y;@h(qx<9Edv>tE}qwQKZ%Rzm-oRmOOu8(o--rAm9TknAz)yrw*v}N__6#nhAu3&w?v>t5_XrtuM z5viwUePQF!%kDS+&+dZneC}29BvWtZm_B?mAM#AK-8}#H9v%5XS6%d8wxs^t1MmE3 z-S0PS&R6wS{xeQ@44?O(ADbVkpYPpYHg(mXyTEJpm#XkJ@cu=+{rotwdbS)w#|FUO z)13~PGCh@_KR1XWBTYBtQeOJvz%&>Mu|YYJc=)C&KLEZz{=~GfC7>WEAYBj7#`?I5 z0w}2FjtP1EL|`AQ2xH!aN+7~;)zu+{Y=5o@ej@Yq?vC`r+h2`szQ&rPh2 z{M+6}N8^wlNS670vU$aNK~TTCoq>_uV9xaqI^Hq!xVEagtsVQ?xWh4Zhfl zNo7HFKC#C;e@w2dz1X^ncHjmyZB(yc1W$KlFep4 zs_*8fFDCS1ZrWH9%Ya};LyH-QA!D_u3)r7_YUa#$Im+9{* z&2*Aa9lZAJ?!ie3rfDRCaHpITLZD5DsWjxwC%g@XJ>iHM3_ykJb`&k_+vu)EzXDZH zbp-*@mih)s35@la$!6gcPY|O4D2uV}dHXGSK4i8ghNBs01#oNEs+W3Q#`S#mtPr=@ z?~{onsx@-LW%#f2mqbR@8un_kZg^hgc+6I!eIxIgDOGn&bkslwls5$?a$^PNqC*B9 zDSRBb2h#aj2~coH2V)`B5C8!x>x#|G&N<5kMeJ41SwHNyVsl~rZJO0XoK5#}WI=H?0#U$5 zZ6T!Xg#ef@cyj|zPnm!W?41rD`ShzX*gNSZb~8A^E|55@?pef;2z5#*E0qYDc20X|oxrPk zbuji@OTz+T?Y;$!8CQ?`EJRTtKXriLA6OYk zKn3hw0zgZH`zV2UiKk%1cvFPEBb7Cvekwpc693(!awSea9m^U}x)m#xOK1tE+)J1& z!2j?6M)(5oV+zm{?^)_ur2KC@5ohD`89Ne$UklDI?;Fj3GMmwk<{hbnEOW0sd#(_F z_wbAnQkWIR@$mzhgF;2n_GHszxS2>VhCZtjXdcv0@|4p6r)fI8pVJ1j{5slUfO7BC zD9v2Kmw0|+JjE5y7_bWQl5_I%==*KA&wrr%gJ`fj3?(CHwMTB3*23~blL!kNvZuPh z_tw3Kel9Tg=5X-odOMi;O|BMaX|X$ATsp9Ul95fGOa;h#GwZNq0_$; zwEay9sO%fVXqlaQJ&TM`S58O)@6F!5kekpwb^|;$1E74&RK+JC!)3`=8$B?QU)yu{ zGS4bgr3Y>?-%QnCIHlN~#^GbUTn8>9Q^r=$gY*6B+_+a8*N?$W1g?xqYX-%R$vbNZ zn7Rk=l$$n<@&#D4I;C*X3jV!A_PdFDxI$OSBaCE_H()xL<|@iiOk+SYG+S|x;mZm_ z$N--|od34Zdgx{SD}wU#+Dcn=GbawnB0|Mq8&{$uNX*Z_t+SbnqkWlpE*rsSdD>Ij z5POVn;FeQfYGw?=t;SYmEA%hHdtuvKX8Iweds9EJ9bAPaN7}JLl6yoESJptWFa}vy zv6v@~xouW!i27y1dXq^?l26(NH)q4076jy%bZJ1nW25iSxvLQz`imX?V!f9To_s27ZgNKCjC@RyIa3gR< zuWjn=Z0-^%PS_UDW1SReg!#`=nE}7e<)-lO*6X^OMrG8rUP_Sv_iFNT#L{rrxn%+c zvLLH3b4-=dnyK6QWTiXH6y&JU1bSG=^EY870NS;{%(sa4P;CfMyT!>({(roXl}rp5pVx@z)q zux|+g!dQ$%sE1&`1X1K_I%0Fe@5sh`+Ean9Y%w&{{=k(w5Or zeZ>WDLw(tXF|wya>%~rcy3TN>kQBlxkrojx@@imS#gGjJc-sWxNctUjCVp??qi!8{ z_s~gX#)Ig3oDboz-;OsZWjX_WCV?Y%go`o@5n*(;wLd}|hqBCVtcRpJjvyDd2lWCt z))%unv(Frgmlqt^!`%^VqVWQ-0$)^8>)%$F$Z0rE1LM#wdQdaU1$I+XbK6MP9KHM1 zZLG~D9l76#h&TS;oa>OOcAVO7Y&O1>GSJ z!}p0%@HwHZKVV!2RIY{(+Orb4`N4FVFiePoNYs#D#B*ti0#jWxbn@O@olewq zX<+(5Bn~_WWFhgRAc82kZ)owu5}!$qj;6vKirz8baAf!3{Qv@`H`c{t)tqYP=DdCT_2Ow&pTGz20wYy59d)x(wue5(bZqFFiG% zqFKPtbv=#262N%-%92st_8({-f&>oH;TPSluE(iR_E_ z7x)(N74<=N!Ow603m?0SWfp7y0OY|JBgTcp?|OG(`wRSf!G;05pXMde*VoXKgXV%7 z49UaKLuZ$jA{%yVzuz%&?cH+&P+QT(a4(bjs5uo#n!hLTEJW1akOcL8D^Z?4*VUS` zYx&hV4-oBMU!Z01W*sPn2>Rbx>9E#$)uF(-lP+9g2u74}9vr+gVihk!+d zC?SxGES{R=OvMO^*-m0nM~IldbJD9PEwqwz+vkBq{9B8qP%R1R^b)Lsz(9pjP*(|`MI|T5_G3H(ijj3C7JhowB6`!V| z(D)rmzyDI<(Bt#@bG@KCWDkQcp(&*-fE{>#Yn>DYGvuuEbmI~D<~=|6Wu^Q-Q9m-P$h%AS zw^wZ3CVUmC7XKd|c7P{{{A8tw@ig5mpMmhvEr)xwOFRh$^~ilgMAz=v7qFZ?V;C42ML|c@Hgz^m7YDSoGu@&2t)c0KZR#f0 zo=)FM?2j3n1Sl{aM~~7i)^cQ$lT=MEQ;-K)Q+NEUqSe^Ky}frsf>-eZQ*Y{o!JiTB z@E4i4lEF?O->9Km91V23;JbMAP zmTAZxo^;1TcO85~v~+T6XB`#yNN!-;E8hk$P1A8ZGtnF{OBmsVo$*d1DgpxAFeqBf zcnSJ(AKYq<0?(QIT^l+u+?$xo!@07anTTOV)X2lx%2)3V3+lwqYxNp=6PO?kjKZ=JcIEE!K$A8ne^2FLM@D%ggR6-aL-O{%(c=nIOc(ve0@SS5|vz+7G^ud_An%uxu}Tq zh0x8Au)=U@cMc4Pfcl=S(Sd8Cbf3ND!wMFE@cTislWf7g0AwQ&;jGR*BMhlEWsiye zOdHyMEzO{CLurXfNzvCK>qB2J=0QZYc`m(2?HyV(lD7Us-zlO_p%K}r0XB0e?>jBM zU}mpmT<44W6NFD5NFwndx(&}DochjkN_^ooJ@ufhh-Y-|^M_#X|86d=Dl&IT*7I4=V;CK1oxa55PakuNsQt7riV!jBK}nT5_mhu z%zD9IyLT2Xfv&44aL(nU!>aomUr}+HU}5{+ta5P&$^%-FuWwJeOs(%P!uG9QaxINh zJ55tu%Zc`x6!Qb9v}+cX37;FxD4nEDL~XM()?vL3k!~(r=9|iK0sjcCh)_+)qKV8# zzc5r0kZe5HM3?e*z&LGg=_nL1Ahk}G+R-dsqYRK=7>ma(&Aw-uM zo?|ey^}F2$pULBB(M|nH<||JA#78f|6ErUp@C0pM*l)>0q%qBf*Z$f*p?hiVgEWO& zFer=Mg1z+%@4GUoT(aS5iIzTwUx^b@6g-qu7W{tgx{99Nm(`Ld9m8pZ%d$*vg8)xv z&xx*zfn#$<2z*=Ud<_*=YX<$vnVP;w<9TP400xhc&CW!=N!ehMb+7)PMQq&({HA$J zV5lXyHF-h?XS@-ru08=WVzYC{VOrFQ4*ypR75ZOZ{*~yu-UifF0kacNcKHh}SS_e3 zs)L4;ioeUEhR09>fdOZ<4eSOc+dPwjErE0EAvblV$z}cj_R_6?72tn6qYme$r@ta# zi10ta0RtN`I<2@X_^89mPB_JRwR%|J0))xXjyV01gE70&_UlgD@`B?@X%gU*dygQ% zCG;Ep-FdriOr_f2X5?OgKz-;@fC|E@F}nX=7SIoq=SAtrqb{MuI|- zEz4?P309MBB;eN=9hqV<%RGL~FLJW4zCJdHk5vL44>ZxDBJWr>2X7aXzygIY0mee0 z%d5uynkDQn{6K2;I?2%4Hyo&q(OIQOplU(O@Fj-~nabQ?{BTvd7rp*`S&3WaN+c7~ z-$d3Vu&aSR=La5KtyF58HEQaBfIsRnLgyyC{rz3bQVW2rIUdkBYM*_J=E2Blxk;hj z6ISm14tx&|%4!$K`R9TJy?!^w2oP0=k#<~Ge5?5m!40v3?AP^smb<4F_jG zkbV(K*&=R*5az(~Z*ia?J%*c`bN-D$`{P5^m>ff9&$+`-( z49&l6?SJg9Ew>rYYsxd})V{}V#i{@`OmRlu`(XAhLt}qi~#$ka&v=S`e!Ngk4yi@SOKCKh^8oz6=CLW=KtM_ID?<)D^|iuGXuWknH2SF90u!jTD8zmB=B8D!I*HvUtjINaM*E* zgz*Oa7&;ahOR8NRz(dz$B}a3{6l8AJpJ0M9{arNeq(kY|C~T{Gk!hMZfa9s9Ke%WFOg;#Ma8Zd9JOmNEgH{> z)l^gNJ}W*4+Wp-I$@kZIS3@4hjwYl)c(8e%WA$?^9IM^lKfr9Xk7#GJ#WU1E8XSqf ze4HUQnl2Xg0msDCcf#)MQzyHBzOT}cxy8?k3{biqIjlE+FEdP0QSRldJOj$B*K6om zp$0Bnsbn&sp|`X0vATn~rd%*@&hHJJMRL2yyhE3Oz$(w0`A z-FT(g-K2!JHnYax!J``pbMTb^98hL=*xucpD2JjyuO4~5iu}j`WIlxQ&NdSkT6ofI zn;@-#iA6KkJ1LV zNLY!Y24tP-i1}3gKdZu4uZQ=!A00t=Walz$8cFWu{JDFL3I?EfnZ`yRtwCY`X4lz& zn08$ZjR=_YK>TBHtzGqALzQkaQy6>6`vx<`mbGVsWK+{>u-X{^`>Qs+*skkxctP?% z>8L#AD9xhp$Y(gzgwhe$hHRBDQU(PqisR{&Bph%xXOynBs;+0nmOyT2ix@&k)mEPC z`WehRUFC$8*u(}nH2-Au_6E(Km73QeAXCOz%BvA9%Q@^(?-rTFOcNO)c#4~lieFvV z?Ya#}ZLc}2hcZE@tKCo6%<|Q~QSk9@6<)NBGLB>QK2wV=IDw)bgedfuJ;(uB<4<~? z8>q7x=ZZQHgEcMZnr}_EqsXwgxShBlO>rCG$>S`LtepX@v~F5d{l_a~%fi~X`EYs= z>(M`91>3T1dLLp8l#VtkGjNQV7Z**GVAgmJzcOQ%46OGSs$9iA?KJ zYyUpe5x&-;-w`|3N}7z>l+Xig6O8gD)c8^ek1~rlG6|~@(4dF2cUrI^rbZ*gt=!Ft z*>_DG)k$TTggb_vb;3*)CGSuNNKK{i%YL35>b8Vg`DaE%R}nk3kYj%m>Dr)Oop-3S zrm$Hb+#mM4oQbDXyUvQJzQe}kV!0BB;s>sd__I6XUDUt{;$85a)Mx{!l*KKT$G&IE zj>6xK-kfOc9HQndqrSaNjF**L*xA)XB3=;-V!8JVMVTo7j-?SR2(&!5k%iLWVWiLD zw5GXOu;wky4A%Ijp2L3t?j+p6$u$_0$@EX~(*DmS&Mf*$qxkj;T;N5sh}v@8$d-}* z9j#aJ7x{dNFl(A(?Fbd{KC_fi?ciSDF~c~XFG%*1C$mZAyiE5%#tk#)1Q{Jo(SlkX zP%vM-M`8t~A+OBb?%dqGAm16=-#XGS&6QPd0m)sh#k-VdUTOYeq1;OoeNEbSEv|r9 z95^OtFYdA%o69Z-S!*L1eKbfYXq#F5Z7d6A{fV?B`fF1VJyWW}^&iOHw@mtOt+83-u|C&~k&4I0zG0%w)AZ7bSp=3oQ{CxfKJK&Iy&qG*H z8~7fQuyc-F|CaLWVeaRv6VaV3q%Fbh)(%ulcEGPeef{Ja%(dt8(&#B=jjp5_KSu@> z&f8+f%$KQxWmp~krta9ZB7J6uURZk4ptCgmFak*i{; z=g)P>*&`YEPGl}(vHmdg4e!MA2X|2g5Ljv4+qc-jdJ?O(^2Bn(G5?Q1fm$oogU9uit9jY_ zJ@1|b{5`KWUN;DQu>jf;=(4}u0c1+;G3v^=lV+yot@InXBYGQm+jOr#NZEhKu$61K z4HuBFsB|rm+rqMKjPBYfjwa?81^G+cCQ%3H4#RL>5xgHQ6U9kY`zwO7ac= zIHDpg)6+MDg|{3Fa*8Tt2B*gLz4wVh=YnR~;kC5S(t)!5#pQ=`sQJ){0D!Yn=*YnQ z!o{Q=w)bnm)#2Fta3NDRlJv65pQR>c7eujde$+*}Olc{QAW>0{;^J{G;52xSVQeO8 z6Zu0A9z&va5PVa87gbph6WjWJ#JQ>`o_;6yTP!*y=8tTIHcetnYP7<`&T`LsIGs|6`1^13B z#y?iEMB8LK3=aC*+DhgWlM3J6)z-t!H?=1YYQ(5fzFnb21Ix$r*LE+UhBu=zE&jfs zk{Gr)uV;=CH{6&u^iq3z_%)3(tlTVkmTq_%^L9(7s;E0>VXIq0c>cq8z8x|gZx=U9 zlmkE4#qgA6ABCI*akE6zXz9~d3ti`7_{liK{;0VA)L=`R`>{ud!+^45%_6Oz+;9aB zj;8c37<@5<3P^WtV4b$WSxg15CL<94YvZ5Wo9BTbxmj{~BNYxl+W6grV;(qsuL927 z1=W#f9+ahAzge)G(Uf!;qV-zsxHJt@A9VY4!|Vn;LwI)VEQCrD^Jnn**za5 zJ>G#g`O?{ZdSNNGdzprx8aiD(n7Z6tQy(e*&v^6B`3A|VEMzx^{UheG9kqs?)+2Q) zPB7%^1ByF=g$9M-poqP|qAX5Y5W?!IZ;F{+py)G~ZwE^?UhD4n}6`ahE$5fY?} z3%tIl!Cx~usbUAJyLhLlnz!nUHK`?Ca|Ih2x6jbh(foIP?hwlOH-X`oX>gQ6F=A;8 zwiiKE>k|}OPTp*c3s5q2p>G0;*1!&3-TD{9%)h3VLbM@T%K=M>e^8rEzCMna_12E; z4-P6TebWo1e-{v~-Wjy}0d6Nx*0|r|)ZMZ(*d!VN{(H(Rd;d5wv%_9(wo@MX}h@Be&o}=<~FDz8kbG@xT+cYuO(b?ZZ=<0mqlK z>T5xg2Jeevf7l_|lmUlZo!vgJnxj7IHTR~st?S>n4qvy<6H;IpBmAee|7#9Sc~Yte zU3qYoXGxP+jtiPXMIf^uAbG+IV1Wtkwj_IQYiW?19WVhaG2heOJqXGiO0`KZ7k;M|jup^EA!tWo`5K`$O>pEBX)$ zoJ6#-`{hvMRcIPi!_^4fgKASlYCOWmeKJhMPr)5t@0}pv5-@cbu<`Vk>m0tg4-<)I z?J$?G>PU^k(P5J*K)<-`efub#zZRw)I?BL9iy6ub$C4aku*}oX5}beMi|*kGBjZKx z^WWj%ht&O;J(59$QZZX1k$U6f`_?OgoCbDP@?wFIN#K{3eyw;4MtAwsYp>qDZ+ADg zac~<0|5xQNV}N=0bE<&u*4Lh=>5Z>g?9)b>$4n_h^lvw`(&sCN75~s9Z#rJLjpv)0 zH>uzoJ9SMCOx;lu`VHBL5rl`M8wc~5z47c7y!);P$qg2D9lv03_!&z_O_tnA@-feI zAI_WgJ83SWhB#5LMxfqs7?gY5sezN!ruyGxD$>d1NuVQH%)>=oKn{$>njtk*^N3aJ z;Dbp|6c+)taICUhaVj>BEe&r_SJum71>bsYCBg8j(3j1N=Hgo7fIwZ)_`RUTSzaT& zv7RfqJO(*|%wJTt_WZ3@k5HvUOB?@o+CpiN>a0a+3K5c|G!et|I_aT>!g}M6RW=6! zT%W!|3ve-!JhNrOHo*+lK5bUOv-T?B84|V+9bs91Q$s{D5YjHYSRWUkMdcb+-$|(N zX}G_u;~&g?s2h)meo5az^dvOvUjNq&KZt_V;m;a6LlJ{IEC#)L(;Xq52er|>3MhVw1@6TR{U25&5pl?l&5};Y(14|wScdR zISevRK1|uwgGSo4?Ny<+Zh|cr$-0+KU;xW0YELs;Ff0Cs@?cCP#qiZjik~82CSbjq z%W_qxz5>X!2z}3}fBc76`sAnZ(AWRnSt{ZLcAG}Di_`sDa8+nake^4FoN!+N(;WJh zH2ftZpzBOx<@!wo?C&Min+5NrZe^i@9Z^)>gWmO)TcGrA2BRZ&UV{wv&+n_yu8x2) z)M_=3S+`y6TicAOBmcxrr6=}#)~>_=Ha+TqczV)EYKV?vmBLx~q zrf8F#a!e#{t-sTJH4aK%cYlx8X-+N1BH8dJ2y2P6k@3j*AR52?q^HB|dfreFj+bqC z*85p5j`YX(H9p=n!HukEunuiiyHOA@oweHLLcUwx!|t79c1((L2|C9tu!(17>2hXB z?X(rIz~ufH4|+ZO-S`#rB<6b7tnMyglJs|Rm_0;E*y=}HfUPZybKwGoMqut|rd-d0 zx1BA~pfFK@0Qs^mQMx!i$l<5vG4)~zmtZI=b=^abGX{%)y(iP}N6U-UwreE1 zCIR294)DwLTAxX2FOl{Tc#Qg#)PCYfrRlof`AlSku_*y&yX>YF5i;BP;iFL+hQNq+ zGfp1d%MN~wOm9LNzo{!vNdATj2s~T*^Gw3DugeC#O=UpWQGQSW{lTwhblYx))bN%g zb_l#|ubDOSTYVVxxZBlW-+vx|MD-#*B^n|#g51QwKT$b=0yHC#16PKbE*WF$C!VmhZjfeVKxSM$1f~unNpH?Q+my=`D8}y&G zkjynwOazh6wEDEjwXN_Bt9ke2#ln_&YDBz*l%P-y#PH_g<_ddrRe5`xs=~HSO7jX) zG4iMsiU;-pF@A>UlU?1}#c`WO%_3;Q8xj|DO^GJP?Xx8z7yZL0{%q6|Okon4XN}^i zRY7!(d|wUMV23qfjp|;Qok(AJWV8M-Z9eQs=XU$*L zb0rmce*i@W?d=>p*i7!{rR#HFev|FKX}3W#(dw!5>GCa`?ixF&eo5x%wS9H0dk!p? zwt1z`02Z!3BaU9^Gd@-7o)`7rfjX$qrn;YhQ44Zj%;P5%A&MQ&s^cac@61&vG=D*k z!~Fui`s+Ub{ca6>mM+(g??iv{vh3#-zx*1o@HH&a2v}EpQh{yyLI&Sxdk``Sf%LbR z2)UndJinWBB0__2>fLAz|A&F*`|UDD$?-t&kD8O~Kv{6ekA}K*0B9>PwJ+oc zVK*VnBM_>M?fi9qBR)9l;Znbo&jNyG9EE^BDC*z<_FX}g0;@#jxpo3{8m1#))XLK? z{K=9vx5;it?%?i;Hv1P|H&slfnq3{Km`(vMw7)eheZMz}JRjYwoC%q&jZX-kiq_7rVh3|A&c%Hu0O!IK^` zfjQ@uP%}aWV^Z*~vhFhV!XhXKbvGj2C;7&b4R-fELRh>dyd5!2Ot7p7B&{JX=GaOB z;V>(>M$trzX4Db~a)9>j8fh>bih>OSX$8ZwoA(2K8A)+m`>5ThVoi$nL{}QcA_;7% z-IBHpw`A+ha&)JelMz;NPP@I?!! zL6DQWeGIWaSN4tR77{-Mo6>1a_$9UkMf!v*!ELL#L=iz~H~^yo6?)0KQtSI&)UN&z z1RLW%H+Ts~`W+W!jNe6dA>Sny~9tW7LWrf`h_1zqC%Qdt}h`k?*P% z2l!=!G|Jvy-^)G0|2APV>NVBanyQeDWxMXZkJIE!Us4nu`(ty>B1>Es1i1pfJ7Z(sd;BfcJnKF}ryMxL^) zuG&K}!ZxgKlw{-xB)6e&urUa_3@M)Obpkuv6d3P)T0j7qr@i1p;PT<`bcmav6-VnV zb{amB*wo?gs+h;mS?{M2Ht;j*SEe#N&hPW6Zau&eLdNd%8b|etX0Rq+U1+~Vy<*@Tl|0OBN}YID^QN)>Djt}~Md(E_BPMloHOj$7!47x zfRnDPTn-jjUr$iylGUx;*O9wPFk0*tg#x@Q(o^zqmcU&YFH`JhqbQcBFHB`i|61vV zBD;ZV{bAOVejtb0X1f2WYh?V*Qkc&4#8o6~}qG!}N@00nDJXJBGie%miaH6>YXK#%Bg(v`A zW~XyL{&3KFra?v7tQArE&23rYmbL&#GheuW=c*`X>^l`vRPjGY`7{tx<$?`pwGZ>~ z^wL?wHJToJh;R5)F-~2$=NI}q-cus0qU^pm(h7Ok1D1v3mtH&PW&M;W8rAZq9;<}_ zi2IaiigWL^xliw7PTTdNSQ?Xv^8rvce)$>L3HUj_aARejz2DX=5565yGA8xy42Vtg za{5%}4?cCpkF`$^dEeT`bZR+_-qP|9xJc1nfU=`vmr?MXg5U2CNO|7RnN++U0&O$$T!lOaa|AxSvo& zK{K;Yh>?THxI1a*i46Cx)b3N;?{MgqWF6ot>~aB)q0e8vN6X80%I5VQ_b7Nwp*Q1G zvKmmiWV~ZWcCJW$?-F58L)B;lLLO?vViPuw)m=|Jt-o_oa{wD7ZWZvSJ66t+iBjWk zb#RU{hg;`yPPzi&yRl#4Ie-NipeDd6#?&uA_d6hgHS~W`_7*UaMBlnE?moD~z%aPG zyZZpc;O_2PxXs`;xVyW%(+uwJ?(SUv=j7()yxez_mvpi#)vNbTb*Fk))>_~1>p&)c z9-l{wBcHOf`lpW;L24F*VxK`y(kzxmbeE~&&VWt&k2dF zZ-Z|gChx;iNy7Xi8hS&ccoNW-Bk*hn!W#F$pa+zr`{dRrvC2xbh-{t|pGClsad~L(cCx28i9-Wb7%N?*RnRd-gZt2wo9PrlF`RXVYvmZJvux>#1A1g;g z&fjq%e_agc9-S-x>fyn-3>4S8A)!fH8z7@l(e2Dz&TmIJnA`lLjr8VRy;NmSxaPJ5 zUNSIBvAv+0|C&s#d1neR1Wa@ME+N$wS*LHg{1+MAI-d)k_oB34lvxwhUWvV0@~bCK z!3_Zp>d)G4jnRT{y;d4smMzL)$1cBsR&01jb!iG1#30sur~5^xRuO>%i3&E;E^sOP;aiqw1J3aOp;0z zA>y3I2U`rJUxyzK(3TDrJ}xiZlCegNm{Aj@NF9i+Q3j!@78Z8~GhO#L7d;VJ-F`|1>)dFHJ_;)*?W2=cgYBhhau=WeVG5&8yF&=@nM+~?MK2*0e7+8@P z7oWuG9Yqy*W z3aytW8?hbxSg6v!d8U9^yz|KOlSj|sTfITxyg$_VDdfcc@NpP6UBj0k-o+L5DDsQ3 zvvYLEqP+1M(5tUFL;?6KMQ4SE&q_`B)7U=?D%zbK$N-pETzIIHAZ!X0p4Dj3iuA<2D~8zw*tDyS*ACZQR?dv+Op$`!`Zt=R?w4_^rSAiRag4W(7C=hYo?c%Y`jgJ~g0rCgTrcT#* zQRL=SEBin-CDD)yW|yUU3fB*Oqmb?!GsBY;(r?7D%kOUvqfJYDL`~Nh?DE%)4;ni_ zP=e7RChC(~!u1i~?nOmA&H7zt^-TB`k`V4h@e@kARhMn`d>JHtF{oe@GSJ0s%&;Pt zRH1tKr+5^hUNcBM1)9JCC}2Z%=6S%mE8U8!_6?)t^V(c-&9HGcZO2t#<7f-kmTSY0w(V|yKXf^=ca+XNuX}Zpc(xp>)yY7I)x^a? zQ#O9h=`R{`DnNK%#OKBlozs%_BC40JfWUBrhcmg%VTk}nrfXXREP-h2kmpk;2en+z zGhni>zoa5!tklXkuG*+mVjjJkW|PP87VkfjV}*U)pvB6%>jb+a+E{XJ_OA-6^%^4{ zHEFSx%0SoL!OAPxh5IEc!l<0Bm@M&v6}DiUH}cXXfof#ATaPqH33xU^Gh&5T_+T8B~eVFvyCQvJO& zQ4l@6wC20vQOK_MtAA8IA67?kT8$uiqZ&!y{-BN#8b*j4yo^|+pKfXD;jOIaS1t2r zaK$Ag=r+(vE#Z(&Z)g96heb>9xOH~*4KztOTOb-+h0f|B>S}~iA&*J=p>jC+y4hOF*q@S-U&mK zyM&UEJ?2nytc{o)ypGL7d;k8;vFh(5dUk?>qud(tu@{!R4Z@Y!M!EZyHh(^c_$pfS z4@&t$0J^@b5^`y^qN33MF8)H17J41Qp3+usvs$;;*XRk>Vy~#$K+{+3%uS2cK^4`% zAaH#n{Yz@eP^!xW1pP)pUS0ACk#Dn|RqJBR6rn*iubGtr7&Ua!;4hKT%nr-4>^eoE zoFSf7(tZf_uX_L9?gqPOAwvdq@%uUb?|8A20I0AL+75EwaP+4okXLK3Jv>zpukGh; z4lyWFt#hY9{UOS-ThG{~I_fp#iIfH)%RK#e$}I!Cm}jK`sT?Xx3GNEz;Z{{96BnNahq&|de7*1VS?oG?xFMcLs-JN8u(U( zG$9W0gUG%Vk#JEF0*z_tJq^~Y7W3vyjru!}7&k5+=~C7YW=RYEbV_s#$f#YnkyjlS zAbD&fj~}RInyv{oyHLOSR(_15pV;yb=GCVt!HGT08Ah;BSUvM?z_1kHxuWH4nbW|d4BWXoZisFX<-NKTZQxChR7!aIS{P8d*uMu-0TN*b)iB)I znT-4I9*i<8(xdvTq)^k#gUhqT-X&}_d5A*tAa#<&fm8;1*jM){vLS9$9N6PMgk zPtltFfl1f2HJJS@lN+dAFP4(-zn}iu;7JhcSw!X*Wm+I+Rm!icOC4>$tclR=$EzyH zKbUu;Q7aqyq1Fy5S|c{20S<;Y!TYEGU`EUgNC>bky`a%UbfglS&1~8K%xuT!6fgIp zXa#O)n7Ev93@3$az~XCEX(5T;9$UAae$Ca;)iv_ecV=niEYchgCZPCgVISc6BYb%! zkz=NOGWW5umEDT2C(0`*C%}ludO^anP$97;^!K5Ey9D|?JzB2}0LdZERU=&(@HM-? zv)TCPa`ZQ8R}g&-@%YKwUc08g;o`6RPB8d_1{2s67hZ9-bl7{bN5*R{7H zH=7=v`^_Cb9Lzboz{{xRdbJuI`_D{){ww9uFZd7wr^p$GYrcX(Ln|qfa|+zw`#c9w z4t|~a|MBIcyZU|JMC#5WWwOe=aJ z&#+1lpTN?2m3nNle15FU*xyUSvNHA*4?2@_ojf}2Jy-_k8Hlvl_W>5&$x9??-~W*H z(cGrL@df8P0Qt_@>AZQ4x-f27(!}(#hqRknD5u!hO^N4g$z!9jb_T8#AwJ0wl9eam z#otqxC|<|D!S9kyA`;$593$JGUGBI9|sNWhP9{rqA zZvdYL&)e{~B}MBvi=+j%GQK)#7&%$>Xh4_TCKJB5UzV6PEkB#N=f>05 zF#gd^%a2oJR*1N&HG~JWUoMzECUUcR{-{_dT}bWCN%x`pIU8OlLDB~`$4EWW1~TZQ z5*hTHGRT6;nT?BXo5bwrAbhuTn&^)N)Q%rJZeR;H^-Fx=*GCToNgGQPYl^PSZx^Z@ zA4#AO-~(-%8@YN@FnZ~=sxRSVY?|Ajg$|-JD$H$?^ z06n=GNeuW@rQuhl$P9Vy5O-qZ#F^Y9Xx|?MhtPFW z$oE2RHHccaRk>=^ig=4uxvJG0ZaA=+KkU_d>2*$YX@Mra*5-!i5 z2h&b3&iIlnw+nD&xUIJRyPW7G<(~XJ*~CE_hdmefF)dIS4&} zsn0ivrB5=3!}7H12EiyfW$V%eg~W9`wELG~{kl_g;eR>)r-u@Nc%u-wTHqlg z{h9tc7;f{&1@VN~aR!qny~q+iOy-Y`w|oNPZww-vy6ODAxjYyvr^%Z7%_|kOnrQ`3 zt6;(l|7hm?60mb9XnP49=;ljUMJ)2z--Efuj1lD-M?300U%>(w z>D{afHW7A&ziN!T*^hP3q&fjscV8CbLI)x^BE>Wc+)d3d#|OJ|#5c-f=XU50GF6iv zR_CIKB2JIf;>apcg=zAQjV!>Hz2-(~i9UCARxCLuHi8TKsh(Lr3-lSV;`=Q=tnxIQs*vICbj9`qy+^;B9uzPb)*o4}_XVP%Et|mimuuhR1;eSd zQ!-kN>=Z4@!o{7&`5<<_a>W(xos^!GFf^*rwW4!$Id z#5NqU0#Cy$pCh;_hsb@o4OiWoQIqMqH-NL){*_+Z*bH<;Thpo9qXFMDLE?E`vX9c` zOxv)7Rn;+#8=XEW`K!b=1kGlULDo`|k%=E zT>D3O+G70UmlJ@22U(r?vsL$t)P|GKU%LxrA2e&<7p5>NgM9}GbEUNZR)Z9KIJq}S z#`jl|n2j;)tqHF|t*jj@dlb@St!56gfK@G=ynt=%s)g5<3@$<_MPxc)3jAYH;n)B3 zyF`s_FZmD44V%sk=VTq&@Qbo2?TW-@Y9Q}$S}@2S$Y|?#gdKn<;}T&KgBA!#CktSR z7T%xODa7o_G75_@NPS`?s-UO{Ts^Ds*MN z=xUD?zzZGEL@@MLj?spZfbejV$~8n@X0kucCOJnGj>HzjG4nmuvd|*u{{8qYq22b+ zazKKoMN7|`qm(O7*p^$xlr?!I3>I(8kf^nER@tgo0%^6cM_Wrll9xQd;CP>*n2Js} z{`r_@Sh{Y+N`P>Fp=}}$rAv=Dc-qoC{cD*8fbb?dZ+_ZGa0wdCzV<`B{b|))7fsPB z#GmvhcI{TCu8G!2jRrEq1jO%+s!p7BYpnCjcFrrqucD_jOb(j1sy?@#--3sj3E7mx zt&YN`<5Cw|rAt94>w&=lhCecI6fqK4V+&`27&l&*!FF(ag6m}lb9}C-Yw!_A(@$s$ zIMBJ6E7_gTHD(=tJWphnnIX8eYyBhz8k(I9QZ>g=sZ2QaG%4@spX*|Ji$p3;{4;}| zsC(R|Gdv-#d|t!f7>p!%3P=%Pegkj3y!x;}NW40?vI(3Zy-iNI)8%y#etsv?5ptaUo=vO_DxjwP$wD#Ih#w z>$+>o<+e+2>eZ_9^+ObHA2aw>Y|KQ+tmm+ajAmm*dl2t7%RUt{jfdO87o6wGY5!X8 z*E?p*p8&ULn0NFRxw=nLIEEwM5FUgi)4fyP6R)+$_+9^BW)IhXdf+FbULk!n;5rJA zdfJ#)n%OfpA+#Uvc&$wE3MsPKW;i1m|4pq9BqwDsBzpQ~^9jw4W;IQE4e{pHv(LB2v#lvmaKX}^uL4$ka}x;voAna;-*?afh9{LABUJF*~s4hmOW z86M8H3-N_UYj$Sh+<{)u)dzg|hsb5fP!)a_9^UTU#RcD9)^q?8j1p_LaF9OejWOC` z<%tn1LLUrHPyjK?>99#9-XS2JizrJeK6c|W8pU{<({h($V$wL|4fzE?O8pZhr~-ti zkA6+>hVOcP!0p5Mz}dur{fZ*+*QWYH%_U_(@nJ$!UANR8EEWS-=EQS^bph5}0|dm;T99FAFE>;Fr014cD9|&TwO7!lJuG zV{U?Oz5WHmmv8Yk3+^;G@CMYs9y_Ofoe&HdxlS?x6B#L(X0UZ}@Tc$sY*v4t1Y*TB4VNFtPo(%DTy|8udpf{n|yZP_A zdL&9Nm=@h($6wrxl^WdzKF-cJ(9J5CwWtfUdeak#cZ`!bZwubTkc%B&IHSXIgNAecy20F7G#qb{e!N2`I{NqJ-%EC0iqR z3O>3QIl#){!&`m~30WnzS|M`!oRC~d{#iL?F;#W3^lGdo&eO5QMg>y}%zY+S^F+qVS!?RxO zmvYRZ_1@}j6;BZH81^bV2%x>y7XHH5qVtBqUkt0MLtu9@@{C}6byk|4iluJVT6)m$ zR48?v-nVHF4_A2HoEmE-+hk=#ooY&txKidG7}WyOZr^NElyZ?GDX^6kGZi~jj3f~S z{`oR1_mOC+S$TcG(sx7+L>gJGZ#s{IAgH-%o)gK7=w)EGexx7^j+6zpF*069&GI*Y z3&`C@i*+1d zCRNq`UMAlPwL^o3@p#G#{M?snf1=i@Q(B_(Hm{NN3$u*BUZ?`ROo}U8?!|Ar-y$Cr zA8D?P8{T%ncU<@no<6hE+<)X{4b|v)Cd=)uNIM(ubnN3+&(S4b&?3-E{_RCH_5E-G z==;xWvitu=ZD(}%v!u69p%R5?ji(?){GZ7xr1P^yRz_}W4zZ|n#eo(LMb$jBgfCN$sMKe;wXmE& zld>zTo{tUH%N9w23$@Q;)g^`$+dnB{>fClUc~GdF1Tf%J~i`X8|(pA?j*mI2T#xdXE3cM(Qrx8x30 zsXU0pl=zH2l^@oqjCd|`IOL8P5>*=mPWaXq8)FJcO*Stc<9wnwDaIoFks^NbcPpo* z486(-``YJ#x$I&|V_RSy$-85@9QINqx-P%^KU`rS8>Q|kfAh&9>!e8#Jd;(#&t=M7 zZ?D}h47gc-K|^{x5dAvwa`Zi);c-iq;ri1RzTigf`!lEnlXoXC>V+-nI(KvBnCbCy zXk`e1t+RY49OcULiM;SS)4q^xkG^`-6Y**9R0)b&A^z>2VE^yL-B$V!`~J#|j4}`D zV`sp#d*+_twZNl04+8}JeW+!1*E@?&WZ8cLS6s%9-ttC|__d(#9U~dQrQ=pcsQr{|OJusa?DhV5_;OWy_3MUy zW$r<5>^*c6RyvN%mspe@?dSJb#wl24h=C7y{}?a>hlwT24RSP=ZW>{f3qQnjA~-fp7HGH}9ZNL(&} zRFj4rkSA21_Zqr@btscp(d@2LOQd*Dg z!jXGUr@ia!VY)E+R7ATUzh4&IwV@-`S`i6tPkk0^u1!0hkL=VUqLl6^X96eGzHzQN zN0p-@fdD2T*11(x3lz5y^|y4Sd%YaZ`$I=JjdrqP-7ck{E((wG=DYUQRHq`K&eZLz zo1_V(n|fT#y-7nUq+;gsj#Bxgn@l$LUmH)+ydL+i;x+{Tj_4v|^O<+Eu*-kFI;7~& zyKD${-*^^B2PGQ2-bj0N6-L>+3EyhaY2fMV#BGCJ8%kI~{G89j+DddfxNhEv(zKkx z^u;gU=Q+9EEDpw7Z+2;6?b`xmvQ)6Oz~9RU3q=Bkx4zEv%7-iToBl3JKxCNMYW}rG z5{o&uj2+|=CzW|L$6dn~d*!@fXjIF}$~eA;aTDvF0B1lwl{Wy*g^i9_pTnBwGqDcZ z>DyR8L!&uGkqSC)Uoxi0))=brs>5~zxed?R3YOz~{nJ``WuOL;ms|jxvTLRWJJsMn zDPN^A7#r)TVN~dVK#vu$9=Uy{HuAOz9jZa zImM>zC^zQr2U1qoTe||zcDTL=SM!~lcO5V?A-hx;8ksXF6PXovb92b4x-WiVuv>R~ zY2d488xwi9n9LT7vNLH3;BL%)gTaF#OR%Fla}B7vFTs#W(VaB>?i!2qh|c9|bQ|@l z>paIXi{lYYpC_yK!QNb8V@WoR2tcYv%l296?$8m^vOFx1^X35rqCyAJIdOm;{8;hD zcbIwcKinQTSJQH;VGImjLI|B!R2ZxNC4?{?PY$(-#~o!~ETwVZ>}%&sdQH-@y&qvs zzsNd(^kPR_79jU`lp4(&eM^_#f5dD}uT^ucWY`zouAQSh$d2Qy3!iCP)Fk?~TWiyl z97TuA98oIk@i_q&vegn;qJ#(2Vx1#&iL>oL%aZJD2`Usesv6UT+$7fI9<+KBj3X55YTmJ4$@7 zN9qyyShBgL;twtD=!F2(?EY>DV(~p}B=z5`!>zO@Y1F8tmC2*<4Sl!PQR_TY+ZmfN zMkCWn!~(p8(u9+z4Y^3z3KljH3_i_wPhcH)xxKmmnkkBq`%#qOH~xH-7vn|Z8aqvv zFHK}d)$aQ209*f0C=bWlZM$3ip;#%g4^_i&nO0rDo_7d(6HKIWHa8|1vXe-O94Z;# z-xf@t(By?P0K3+vPZ`9LsM+f25OAry6*XHJYWlrBiCgMtr;MQRDvn zF?Qachf2KXRQMM>GG)wW3A0?@mA8Q`1kdaHme2igPy4iGH&l`6t*uw|PX5n)1 z{I$q&X~B?j^>6t%MI#9$$EOKb5mWBe57yG;P1Nq`_w@2#0r}l(XA^Pf92~%E9R>Vq z#?ys|x`nXP)7_zHDshMqQ72FY*gIbH<9Jq_uWZ?VBKy&vJH<)F(Dk{VzWB!!`uoJ> zNSa=@3Ba*oXMcc)uH?P%z2>9FVa8OOL6Ql}l^(STJXWGYKr4BvK!03SqAG+oYNn@q zrzKBAtIyIlfB1(9ydi|!#sTi<+{8fg^(7KY<=I6Rs~pfQ@c9Q4jnabyBVy{kA8sHc zCp5!I05_yp($ypswz=&H@(mPvl!V;Es5i%F2QW%R*fkI>BhgH*ri8+%jR!CU&Nu(X z`&UaBJfY@y)z6DCouKFNpT&`c?l@*&IkZWhBC8ASy+kfK49k-0SMNG%EZDIZ!OAYv^Vh-2-l_nc*fkm=p! z2bM_7y9nAbtr|17q|+oaW>QZX)uwHvP{tI?%5ggY$9wbJNCj7F_QmQ=7D?=_wNEP? zCR$F-r_>UB&20^hg2vd5%U%p1{N6Y)NKuhiN~~h!o7M9L?14fDdPux7frb~%;JY{- z!8;?I)~r^9ndb+s?*!g@nSWKz8_V7*|1@aT%PA0|(S{9e4H6}L%`(31x{g;PIwWBz zgiO-_mwU()3!Jo>(7lj~6b=N8*nKwa`lU~#{lo0b^|)>XVKY2l$4Mkjw-#~xs~jnRAx@wHrF0Qm}g$L zO9yK3l9X3a3Mvn#RN~^a6Vpx*7AS|YBY0f_jSSoSjNVTDAB0>Clh3v}#?Cso%lkjX zcIQl}r5?(Bx}t!nXi10uR^2UZ-ncCB(W2TiYU9&kXrn|4=X}GgqY~k~oLE~^6^5YeoUok% z2CnLUUebT-E!jNedsY6gk>Y=k?XRR?KJ6czG2XxbXWS^quCi3Da-Vu16XU`n%m@-3 z{lARfbD0lV-$Wc{F$J|8ZdhLR!QX7ZklkC8ry~fY_!dQ7;;0X4hy!m$9q%J*R63D3 z|5+QC_?~Yi3x(dV$=B8EYHSEL>n~hUKo(+oR_29IS-3sTBcBVSX>u}+b4Hzz=F;MD5skVsRsjieu(nwBI zr{s<}TsSOby8tABNAWc~Gs}xbB8fa~u(bPN^_Vc^B`qsJv2g1Xqd%G1{HX(>^VC`` z`^*_u7QWw32y!g1`&PkR9>H&gpx->GLvs4Ay%Mqta2{tHT`qIQlc@XyRKyc{>@lCh z3FEl}#o|clu3CyH6KyqzK4K0U|R>}VN1rq-K+xmZ&(qBtG^I`m1<&my)P#7 zlqyFQz$bxy2&jsgwd=pXc&x~DKf54K7#MF!-x%eI@OQx=tZ3wGwR8-z<7`Pw5 zxRhBWAkT*%F$6o53Dr;S!?(=E?=Sih5mAiv?BmT{O_#o z{31GA4uFqiN|uyeE)EP>?gGQZq`MWYmD1B80utGHZt#R>?uv*Ooj9*Qnb6Lf6ZHQk z^oMXrpk}yy9WANe7hCx7hKD>9&UpnNDck*?GI@bk!Lp;w34L!9U4glO9gjB}ITVL3 z8Bv^B^&x?F9yDC)!~|l3v%WN!;1b+KHJMh?p%thXSx`r$U?_K}Boc)UH^J~}f_xWP zn_p%)1M@CJQ58cs77!>{g`HmapWY@AOU}Ol>p#}hDuK~LtH~d46P!BHUhfytW+~3E z)E@v55^@KoLduB6Q-0cZS1bu{mGW`ZRnH{=0SEDM#T%xQ1&qC8Z2d^L{mjjB4HrFg zp0#(LNW!l9iax7yy67?rAGol&=fM z8ZC?angjn11U>HK#CYr>TpqDiYHYU|%x_o+1@r`@o=xuJu;_6R3vV?qo({NGg6lE> zO<@3rd5^6f_`ndsY6+x87L8YA`!c%&OVUcDrgGm@S7veU#*|z157rB$v!vOKJ;j70 z|AFqb+IDIl-bOPG(gaUx5v1iwU0`*whj-^MGTs&08};D0XcCi>N6u@XJT#2rkkHwp zg&PB4b|}kBfyY4XJb{7Aifyw&-&eVsL!*U&S>23KWL2*-%i{&7c z*ok@D-8|A%Q#pXfcFQ1JblRoz#qCxDBx8BLVZ{P>GunA_2Z2;!7DcnTBB+ ze=IYReF@yzGv-z0A8QyLY&(rgnUNT&WiQF2T381ekENWio08Uw@1J;42-YdC@p#xx z%?Lj;>Z~Sdcso-p^hY!j*j{nDCn-XNH1M~jY`q5EY(xl6+xit7BET-gnl}1h+A_*i zvZ%M# z>Sa!MU>UPvC)6xCnX;*Zx504+aEBG^JlXO5A!Kf{il9kdt*i5CF`>OovLt9UQgpFV z;_W#JqHxl=wC{B(4S>;_urq{JgMM2g%J+(M0U_{?FXdQVAnEE9GgaZlWDg|eH>A`#pHf&e_<^~b#$Vr$IA%vehf9}& zzyN@KieAjwu?U&%^Nf33^cR4_L!YnR*C{&OSg+_{AT!s!AHby~7+uy<;wRi6yxQAT zLjf9q`kxX1*MKWdha8>Y5>i~P+s+^opZSY*bsWiwYi}zuRjBe~#u7q4j6|A#ChvaV%jFp1LaDt2QR+W8Gh>e0-?BhI(0f5OvC2VM@ zLCriP>HP_Io`n9v5NW>>uU1$wop5*(R;Bft@p>dr;wrTC+aSZg8B2t zE60hLFC#V?xZy8%&n|jR48lsZemqenx0^bKOEuqP>Buew`orw&wp5256 z{ucpq9JvxAGyBdZ+$wvRy*l7O-xS~xd*Nlp4H^&9+yLn%BG?N)yR_tJe)2V?8Ef@F ze<@&5NI!GQMCmNilBXLv#L97&9x~Vb(*i7_;k??nV=Cs<(=^JA4C-La?u)-2jFXm* zGG}NMzT_v9HfbFRM66f}RB0q0*4&)1C!JLpa3P(kIFhL{+6CZxz*;m1+^M>>5Y=KV zn=x!G`2uPrIL4F$VPUqMqJ&d9<1Gu3yc5@!ZcDd)1M*F>4o4AO+OggiXRIx4*^7|)2}o*9U^q#zzg2UcAg0@9=pe~AA|z&)Ym=@Zbh)ii z$mro2CQ3C?m0gkDa?uE4fFu{mz45}Ir)w~F@&K29cTn|N$R-v;soir#W?Da*#4rTZ zucbCZHlE&6ojyLL%p!cqr4O@8KUP-{0iXv`0q;>i%=ch*9;f6s_C zNd>l;bI|v3owznw&sTHxs#hH?yNkizw zg1RZs^Qj2p!1AVr+t-wQ`2}zDX}gFvRu^^OfU(RMYzNiDcVezbn)B@{&3B+Fse zc-p;?Btqun?vTT`lQmZrCif*G+Dl|rs`z>=aTOEg7;*J&Tt+uz#IG_GSfczQq#KU zYxluLmR3Q||(h9l+7+6*-+}0iVYtDOEKR_T@U@6{uHm}0ME@?HgPVdz-!poW4-N}$X=;wcF99Wn3gZh0#G{=N z@1>_3R{$Tn8{kD?JK+4QF#4?f522rbS=s&`i@oc?(5@UL$(Mrb9K5oy?8*mxli!%I z*J753?TrccI*fI)rUc+!n%G8}!&9YZXQZsSgMH3#_VWJCIBv)OLeet0+EcXzU&k{L z%Qd5CGI`jM4|$^|lvlD6ChJ4;48%dXw2HE=gcec{+yJHUX-7m){#l`|grGZE!I3^Z zC45Em9Qr59`sbvb2QpDDYvI|Yll!s`tKkA9?ivmEHBBhJdhjny*(LTuO;dFlueJ0h zrZI+`N*FFeHFstXdfrKH$A|48em+Zm=nz{9 zGO0ew6&oR3TMOE&N`nVc=(WvT(fQgp#cp8I8WKgUp9d3v^(!nSHAxB2ziSC*a@!7r zo5<#-+8vkRb=3_%!oLDB&9wL}<6pI#TVOo{z5?rNqikHr)j?Wc*kYo1THrX$38!-; z#&Q?8{dml$)n0=~Y6FjR27MafJRAdHzFEyOf63j7`&S5=rmfLG3co_{QUE8jHkDo& z*Ky`>N%Q5)u?PK2L|ti=rdY}~Stl_#TTIA&z9yU3nj)KYj1(e!l8mwS-an!sGD6rK zOj{sI_+{}LVj8>E6*=3#K~86(PW~Ke+xDDTR}%K4^*5V?xj~o>7#muEA)Yh>7_xRX zk{`_AEvdby`*l2IJC~N)DuNI%cCYam)|Dooycy(Nhmm8imNkj}wDdGbq*RwF=}|6C zi#|y$VuDu+WSqG1=CM{>=bE6Uq?ivIdK>^dK+IjCO_{)O3r5W)o0aD2Wf3J(y@B8x zbRq}ICXT(?cHZp?s}!W^W0?Onk4s?*!AqDg>@3h+N8|7z$))X?iv3uc2QIsBn@z8- z!OOSo1=JBY)LLrqrC!Oh?W(oTp|D!$(IO}lE5?zMbWLRzS%Bj)^iwG_Tphupp9W~J z4Q|*upR2Lnr(S)y%Y<1;>`OwCaMnjimd!%ae%|BLd7mfQg}_`@z|q7}n{)yBU9YgOJP&jYPfo81e( zegPJ=H)!DY;HrsobRDy=JiWk`NeT2a%M$N>@w>!EdbjA?h+Cx5IuSV+{@DyxdnCV5 zX=sRcmft-t(x63nm~SuI6(|ZWHu}(wKg0|9Vo`oGV{-gp!rS%j=pXclwAE@+-1?78 zueuDq_}jvOjkL4Z)cnt!{JQnQ0!4=hUVy@&^rT0_$}MPg(&~Rl0{@55Ppe1M|4jOc zxZ_;$V9NkMT}70(qj~gTd8o5HwW@H)E@z&Hxjy9kc_$J88`e1>TeXN&mm%mrkfi$P z48~`6L)s%~6-iKZ{v>Cp3sStAV^k1KlH`uCH}gJelJZpTF~eEeMy+e>4|oA+Kvnuz zh;xrV@mj!Z9BLgXGNw2BfcukpKs3Vwh-4nE#Mm^t9HBV8_Or&%5s-Im?G8cYiwB( zG?S8z#ff_HYtHR2w4@PlA%9TKW=RkK4h%{%_77YopE0820I8pK-^?kdE0&BdpMvJF z#JXmw^lVy>okk%B(p;vFpug=hLfxS$Rn9?PJRbkayUrxt3cw4gi|5ChjdE{% zsb79o;uunH z>bq{eJB6+KscyOjNVG2042Tlc61k$t%0-%=ET^-@$@rU%){kR4*jOI*>z!glzU5va zMXsnHF=+?jONF-LBcGu+-S4^nPTm*S*b2;NLqO<8Y2t?`VYTw+gn<255$HJ2))9+gz+#3oO!*uV~pKW5In(nhCyOV z;Op60-E=Ic$0zn*(4%16g`qEDl%N0N=fjD(%@{H&eY=~?R+z?BP-WIl;`+U=C&R|N zxy0il{>)AT)giRzbSssB)yUL;(cFF(qw1B% zP!!>Myn6KZ>3`vD`s7sSMF%b4v7y5jA9gpOxpuJ^tZ@OQq`_ibRsyGyKTF&o&88hc zR70jYvkdK7727EWChtS?1gPUvv@=s7&v+JE9Ru{*r1$VrQB()2g6QH_RpAC zH|95EgBk^EoEp1T@PWOG_+s3~t^(}%(d~P6Vj-AOpdQI+46?DiK${LFP3oBOa=Vs; z%+r9cF|{ywu8@;>Vb}iCCo@Fh+WElL5ZxUY%&~_FuGGEy@fX)OD%Z7tYbj}^YfMFH zXuks5{4Fvl$+-MttrTSRzmBTQ%kz#@ijX5+!Zaa~!IuA`VHBB54`YTum#nPNN!ysm_ucJc#JEQ1B;@CDW}TRam@9P z!wI~r>im2z%SxG5KEYdYe@8tM&CM{Phj|-I8c!QwOE+MoQguwVpzWA2?50)h7xo;6iZJYPPbb8Tz!|0X^to6rw)e6hYOWND}(FGOr9q zfFRJ+#HQh5TykGmu$A5Zhb@_+QKiPlMj6pMcgk0+Rl{O;H=qGQhy%;ov02GzznbHM zdL?^Vu5-N#j^UA2dy_4gl-s-JC*F>47x;%R6o&hClL?9kXBL{Weq0x?SGSEo;#!Gg^#;Gze5yzVu4bL&3`&|PT%uTMEIv4ZPuX1dPL znyh`(_)ap@^Z~c+rPfX425s*JaU~C35;&l8yKC2qUbU0E@hc`3ZU4x!6D4 z*TVLPj9PpcaIs@{0RB_3i4@6SKg+3&lO63yRPXSbG)3VG+`CQ>8CoU|4WZi_Ev8U6 z-VDG`U^HPq~W+K;5=JPfj;-cg_6|$cm%b3WaPvG#1CD&${pXADitr zs^6g+CjWxE=AmD$`5kRZcg)I=Gl%s<#6m`w34&>-&|z`niq0OdYd-K`I9-MRw98_3 z#rKasCUd1X%iB_0UuUe8&ZOe*Qip`fU;x#m72M2mH@5Dhv2CL6Mc`|t`^BLPtt1FY zM?CK6+qIYgD{&44+-~?uW7OWr_@n8NbZtB;>*@WD%8NNUa**Z-2-@uA@m5%Yz*9@0qkHswUA%7{ z{@HNFct|q?w?0qned7-4Ee-s+GcdSK>k@!Ls!#|p>!#b{ar0n)qF4GJBf{QvA0^v7WtE5 z>{zE^X4sIK;R&LW99L1je)pqutl_2gV6uQv=k{KBn+?rRfG^Y3k@c)ejMTf;HwKphNyXm@*yGE!r;xAV@My7W=$|0%6tyyJP~hXXJIXy;`Vh9x_q{MaQkn zkD3uzsDOZPTli**8ct)-VI`FnI`uB6G#Q0J3shLY8-zr^a=GVyXc46hJ9V0luX#)& zMEwG8I;F4##VM~5?j0z*ySQB|L(<4mAe6syIMW<=X9@DiAe5{P{ z`ksb9EIFi_MbZmXi|}k0&J~&G2|XPmE=%iCwtvXE=W5i4R|L_=`xg`symqNdbc;yv zTh4_nz}PKQ&Pg|@udX;MAAVZ2;Z~CZ17!_Smbabd`3XJ{KJ0NV-E<0!Wr@GC9KQ25 zK|lBmgnGB=G0nyH<&TmG1@b$%()5i_*aBzd`P2loQ+%6+A{;N zN(t6PTK(+ZUG`lED<%^udpn{3XNLbbaL}+X`d|ItTFkp zi2p4l&c#5xqUOl+3Bo$&WcJj<^UMf)g^4$J-DQQmIBF8bp)4kV4mD7*H7;Xp=hj$S}d|sT@54d6cL6GpL zw4hI-g{X?`@z9DiZimlSJKY2U3N*;#wyFD8%8&>C))5=+@0Z8za!-ECx-b$Z+xxs3 zj{t9m>o}tOXzX*2g;efo?Xu^|7P+#??-B!eFtCQ~Uw~QBQmgcNNd{-5_>zvHV zL)BZ(B+$WlZaad9l@VO?p>;xihP5?mqv8Ij7E1EzSyMl+u(jw0w`SgN`!&4Qb{1_7 zYbE-0XuOE1G(NvlQMg9;!FxTC%wE;Qa)5;6BJf3g4)1|dD*?24t|JIRzZy1`b`3nI zV_D-tAK@m^YmT;FWh91^s{WYc#b(pBz}*m~f4)$hE+%>oJvT3^RV@8+O7qzh_@8bp zviO+dc}dozo7vmT4dr-6SlJ&(j`0S191RC3Db1F4T-oeTP=5FIrrye9{m_Tstby{) zS~w~s9Vly6{Js|I+iKq29Q2XXaUD9A`jPQ5+P3kGEVa*VA<+KWrZGY-d$qCd)gU4# zC(!yfh16FE>I)Drn^_uMX#_=mL27fS=zGJ=$%CVh$O}JCuA;dOs(z#a*9P2;ssG*zAnYLqe!&pK++FeS&38 zw`Q--VH|^bM9QxbC&`FNajt?PVdp6#*1v9_y8nkW1tizp(sgSqqH4jQ0k9z}o?!ns z1O80nAeGqRpcT^sPvOx%g-t@M3zgichGRJ^yIX}dDIR)HFg8)5--7;CPSC0{KplMq zgKI-&G3`Q4K(PaoZdaHOGqj$G#?Wf7Bu-N~6cDYZ#-pzWDlObso=Xlu=+C5ZSS zOcH$VL4AVV9;}HMLM%~T04%L*O|u%97gv>RXP1d5Qx5xhgW2^-yEGYS)l=so!+6AI zRF)@@uDaLFc+9b4c4eld?&lWbSo#d%o&}I@RwRVd#;_nj-8A1&MJhkS@aw3xD>|Z%IHA)_w{rm z8sXngp4yff(p4_dJRw`Z>;%UDeY>l>V!%V1PW!urGXNHnVIAqdE*{Msri`T2q;5JL z%`^09waoVvZTgiVj|I5=b=M%!jLApQeIy{TcuhTpXJ{mTT;^QwV_u zj^_&H9Q@sE-cU^yS-1KSiD&kO z1h_x^_@SArK3_f1Yn%JY@A>)fl%uuE-B6D#mUXUVf}7Hm6Okw!jZ6{6HkYE*0L=~a z676zsIN%}$^s(7f-gjFPaa1htTi*8Wh1~4W5J1>RKhmJOrYa&PCbsaW;}In$HZJLI zQCe|l|B>(WFsD))ZAVTfUdm+rrMx??tg!GAItu}gvfkz~f^6W?3Yo2$y`ryfCr2&b z5^ACITDe#4efs*mbO-#=ruo8unS{@-alHDaIT1HZgl>;54(BvVBg9EfR>VYa zi;1>(EkpVZb^7*C=|#<-1(7L#*a&Aw9GPIy8L9k=t@#-EC38(sL?T|hPZ*dP9X%9# z!iGOJ`Ha7kFOumzk$z*#K-O8)rhAkqddaS3P_UV>dRu=FfuyYTg$7~6!rx|T30yU>;Dl4j*+3%BL}pZs#(yL;xOgZxOt_$RZi9+Zwzl|wwk)*)G-s= z3may}S4Ux%?6}?BG@S}wUW*K@D4~UGj17r zJP=l)V`{|pBjz6q>qkQ93K=yY(sy_3+`Nybp-2>l#Am&-TfWHSh;`Cnyqy{d>8nV@ zvV{3#4I?Uh+a@3dHg_uYLgbgVEA;-8ySebT-Z+m!`IwOJCA-1A$y?AAfF*z4STyK8 z=D2^1f>qNWeG!s7jNJSKOAUr8Eu1h0%G6>aXa>PD8d9VEBYFpXx|emD5g|(7T}E|2_DsMg~w(Ker#{?{0iW zTG!yNB4O)PY}%&n?fh18hC9+%RB)Ag{loaPL4#4jmnxw6v zdb=F_IpI5K{d?Vy8#Dhp zXE|^rwnkJ$Ve(hVp$Ly__>iKU_`6iN1cvRlF>I?PG3HSf`6`FRjFY) zc3WXY2Nh7irUXxj>7tWv9L{q}E>PF#WLM7CX0)g#%tmMFV0UsC+h zg=P(#oYfYOioNzbncgUwjdaK4iMK;W<4vlgs(VE5JY_{<94~Ng0&A?00MaU%rZv)2 z6sJXu@p2^fhrERZ(ynmAcXoG>wdxhc4%aiJo5(6xMRrt~VVizvW8F2jmDGyiXH*N- zbw+1=M00B46CJ(AOG~SY@LifG0|RCsyk)}y+i~@&bCYJFLD(H03AJ1rdN6Omu%-=7ZE&DR zYKT4Ak~QutueH47gVJl!s)P9xaeyl|i zU*tn?ez1tQ%6i%R%CCtpcIt3zzvA3Es-0>Cv=Y+_1u5!)!xEI&hnvJ>G*Zh^vD|6? z3+l@mkOAOEdZ^gVj{TJ6QP7j%_=sEUOc6M8DnXX46>cX%bq{<8GRN->`zl;J@pyaI zV?%$5{HA2WC|v3`jhA;*ZI*o2!7eWJBX|VQ-@p=XOGMWa7fH0qe;a71;zG)=UE;EV z(|(0Y?x^CoJCFCRtPMYn(G?7+{9fr(;5i1mqz=IRB8k?1>EyJ&&|2hjovTlz4-sdh zxcW%V=ZJF;hGT5IGv=2i|2gvQc5;3YiRjoS{r(CU@!dAf$UO2dQhlg>_aa3BM#wu0^Lg6#1XdM;hvq$)`=-yC58@Z%TaGl!e4~ zYd~#xdjDFoBmN&Y%7m;YrLa2-nAP5jzqTm82)7zs=w|O`Ya3MX*i;;KOQ}Sg>P|yT zdI))48Q6F9;z6?@ptF}8O9-3>gwkLB!>>?y-hyN4>Y~ku(-xc#R1~Tup1a9;<(u|fgd#H7MRpJu$xjfoqzt1Kle#|16nS`n*zA(7geQi~I$+__d=x zuC=e+{kQL1Ag>Nwn_LkyQ@@U1Ww7u#_1rm^@@lVip=`%P?@q7|9pOmlAtKOVW8HLQft)YIac#?t%;m zccrQY4EDsIY7ua4$d$U<_WlDOgw#>+!!EzTY^pyPhhvChXsVI5fi4*S$F3 zazdZ*gX48NDl6Nd)R#c#g9EFV`+2f#Y)GPS3cCzqUux7bTxe9)pU zCqc@gk?wJU`+0{$3|91pex#M%0rX_d;I5m(uc^qc+>_*{vs*%vSFhjvsd-bMv!5(4 z^nh#7Lp*t}Czy5MhyDp9*=96HQT6iP9e7^gwZLQ1c;|RyAuthnD;31v&aG2Br36L4 zxLs9N2asVG*P#b*w{O=UO)HZjvb(B?q?31BiMo;&thRa|r==}){7RmO->P`7_AO^R z2(3Rjzs;R0FZg-KBD_w)pp{dL4ir%uBPG)Yak348L&^A0I%}^(7&j3nowv4GVuMgmwsTVXMtzN)wNi3s2c)(;!*}jWF0@%166ImT?icT1%H~D<(s{XMUgpiA5 z7RkyfePUY;fz0R->n{qar6U@_Ngg4@7(RpEufIk5sJsNylJ>n@)se%%6=xh@hOY!X zRUJ|OWK1X4yD|#b^yyEn=2 z0`zKFA`*jNzTHd=nctRdc|IS+aW=n&JRgXF-b}RY56+$xK8FA8G1dWJm8|iSp7rFc zEcMhUD&vbs5I3ZPG5u9LktY>g7iRQ65wy>^$)m&|$gOL`$1}Y&{oS5KJknD_Nj=r(uzUNq$2=-@3siJEMv#nHx_&>nF^utD&!DbbT3gKbWRui4 zmKt>ahyPbgRrjf%b%Iy)8m$F)%N*HVd*aAUJhRDRu`*g)x%&lOVs{`)*zW^qvc-{ArYGy6EX>%jO5>QQ(b05co$$_8gVn9^+ zpc4De%y}i7hSNI&YMNWo`GsJ!H;;O5d*NZ5WyJ&3U>ptPedhLT0y(}YK1@*+ityMh zm-1?PbjrJZUlLNson}g|pJnpy#TIpErNyciUJ+$-R8xBZC1w|t5?$H1zmTDb@%H^2 z+#0g|w28*<>5Dm2e1WJkA>9^DRY2oQubDF60vJArW4%>|h?ZVECz^kdOKYTaLbac~ zTQRI&1aE>)-y1lcoCi$(tP_J=Wo)^?Yh%iNe%v1dh@x%;)e>9|ze#E$&heFCr`W8( zJRAFO+w5adOW;Uae=D5i^oRfE(rG*ESSKxEr(s}UqUTe(XNPVUtn{@W<^oN$62e@V zTBzK3$_WQC_-bpGts-=XcPD%Bx}}J`E;bmA-HoR-4hYnbnWQ~ubK6SDRYQzpb~a#GY za;>UGg1&OolX+|ba1K>Z&;UK|;7^%8(%`MiMG8b$T1m6DC0bbu3pjmf@NpU>casrD zLjG!5Ui=B;i;OS&q?Jt73iU6{uq7IdsP%%1i5R8bQPliasS^l3r(pJQ?bsz7%>73 z2uE1@fUJzM)Fab}o92F#sdAyeeK0|GAax8(VypMV^plJgiK#c2uWn&_%oAv*E0)Mbkh``-;USbHq3II zIQZVae5_-ps@2}HES(^QfdBa`Sk6dodG_4G-nDD!)ajfj!%mjf=iRyV!?n2kqo?w# z1mZiG-`VEb$JM&P8ULL2#Aa`=?A3mV$>dxdSZMb{H(D?-b}$K18^0FD>)L7c-CgOj zwjtTqT_BsH2_-u%QL{>>+|bKVsF>cgiyu@Lru&rPgL_tms4dI+fu5i{jY$r8Uml77 zIdRa`6@LKCxb5Ql-F87UxCN?Yoq{|;u%k-jhz(iH%uIpzm_v9I4-pQTPNZXxH+O(f z{_yi{0{aAX1mg8J9yxa+ks(6iv^pv8^*Wg@-EI%r`W{IpZBsP#f4vwm;oQrnZvtcE z9%JJ#1u*y^kB7`D{Fpz$m7*UhZn{FuycCV`mn7c>4xY+z(Wiyj)AX6WKcWhA!tPh~*cylI;<4UmI+xq?GR;~M+9p{77 zJ_wEgf1^*u`at%-(Wkho+z|)(Hy6MAeu;SAHC0y-wpL8h?^=J19TZL+<1Or3S*O0U zwh7Rn{*aO6Z;PNlGywSxAC^%A6}8y?Q>1tP1fj~09pu}OKA)yL$$v^{&X{CFe5LLI z_>d2Pt7bjZz?6(}>rOLL1$L%f4vHi9=2>2b{Uq<`+-YPeswIa>pAl(jrO1JX$HB<1 za5G5pO0}liOzfu}Ub)Q!dxT`#ZTXMR=FT%6S`pX1j#poWS9{nT=2TP0J{_E%!zSe^ zUO3*nS}(+1EhUqNrEhJ5dIJbGffP3TcAfG-A_Md6UN7MuJOnVU_#qPij9+O^=Q~F2 z-hP+5YoS*#0&Sc>!t7)PKAg}RL&LaAX_%0>6H&`8LCxHa_Mq%%M{R;gnB0=Bv_#C2 zOF^Ud$705pQO8=%(uOyY58Ck8X$Cu5w@pS_$Vy3J#Z_mqV&C+nQ;v_K!oEVg$O zS;E9sN|gqXKuWa)x2%_cG0FocOOiA0uhwu=iOyLj#tNAGKNOyX!-i@K(@B9%WZLqcdTA6K6) zZMF-UgIl6o+}LL8-N|mv&!|d1?lJzhrHyKI@5}4b(8O2eC9#~;ELS6qH^5F+Mp`R1 z>Z*BBmCn}Grj6bfgahAjpbdQyeJrt8$fMkr3qhi$y-R!ShRr-Ss!~Dt60=qMavK0U3c$6nKVdJW z;%#h?B&N1}kmmFh9t3qg^EToy&cNP2bka!9Bp0AbHcSrjR$vus+fmzqRiA~mNL9Omxqh@YDptI5T0OE=PJs_~k|s{_q(8 z=oqiv;W{`-Xp#TqRjd8*Ymvq7>QDB@7GTZ{^qQwPg7Y5S|F&PwXcWQJ$q2&j$L2K4 zUwZJJlC9TY!P!Set*meL^Yp9y|?1c#zIG$;J0&k&yzOw)puk}c8UKEcO%>cGu zTyH!bl2S7_IOFUEddY`Cq%3oiZn3;sIN#UHj+>$q*C7Y7V=5+}9v_*PCtj20b$b0I zQu?gdq)ZvL?!J;+3*L|K0%X}$nG50}TV0WerdjbBC0CaHaIK+x=Z&%AwmO$yS|@?KXK*e}y_J@o8XC_%9fbP`mQ}**oR&PleN!0A)Y^wB zms0rj#_lU5Om`M)HGA&gTe&LAA+y7zR8pNBxed7m>IFGEjxYc19|w0c#-d=aqIg1x zq=mU`ZK~r!jqW)}YoTvLngd+%n=ssM$WFyH|8~P5f34u=(tM8zo;zvN>9dj_-3i?$ zc_gjY=R~sqQ&G;+IL=nWT?1vCi!Ncn=j@v}zDm3*6E-+5 zy?GZezAI_2mn$zKvM4{AS+$9^uucO;RMdaolTQ$0(4-P@(fhYe859V-a7uET*A}*S zmoj&0vPeBSKo<_B@wJL9l(Hzt4W-mcr-RGlu8FTj5>K9jWZBo;}b>~>{ zgeJQ+ggsvmD%*6~-nQo>cBe3OuU*Mo#31z;N09EMi+U~WHrrXaob$($DzoiXR$*^` zl7IMS4M%;4)eu~=5fAJau;F2DoIdjLq9&h@fZ%IA@NHBTzaj(#RIIo(I*ix2;pC*) zz_J$066DsW=_E!xNE*rR6Yy$?Yad9Cp}C%jEus!-Uiee+MRPnStO%q(QSc_}u;Y_t z1}k#oe^H4*|Gf!}e=QBVs=zQyv}T5G;ml;md`e=%-DSw{3;@p0h21V59?>D0wq)@G zYel*QqQS`6^6OQgeg75tKS;qW=LOCp4nGoG3Z_AecRM-=ujsVRGj{1#yiSxrntp+I z9YD-+XerC>;kIq~;q}mVCa4HYf;Co}!FD-Gv6mwSNx$ALfktFH+J{aJDFuqr=?P+lHuBr&Hp~u_I^s``AaGnTv#L{T_7Bl~BPYQziCxc<+ zf`t=dB3}zaCA_b{+U+-y#oIY_=>%^NUlJND9OAgL&TVeX0KM;DvC{?rxKWL8D3=p8 z_DNO(Xmg-Lhs)2C<&~J$LK8|^Llz_20>AP0Z8f6zy6((USWXtR^B4SG8`qH7@GvSH@^Bk+r87kpla%bDDl%h%D*j)^Dn{3U)ic5;IoXt@Xvy9ZNJm#($z>^6J`mudSR0P~F)42Vyb?;|dIR`tE@ zl3F`H?@!D^8&;dR{w_ngje_SQON z#rgXz05(QP5LwTmUF82E?Bj-Dch{Zju|?rUo(oACg#_nykTdH|A7=XrNJbiJ?zyU31X9V}i?St7LB z$sW-hMUVXub@7{dAib;%{W)rM~4~vkF$4#uEu(I3Q6I zv~3Bgg`4NBE$TgopPvY z2FAM*3UcBsGuNIL^pKFQ zZd>m0_%6HpW&YY`90Om^PnIPf!qD(lN;VMRE~={zpQ^{tjc%~klOZb16QqNfVls?t z91v@!tD;qW5?TYd@d;@qZ3##>?nvnh0W|Z5dL61*sIlyB^P6cw*rEMghevswF}4m) z!0JU>$ERKHOy%RCu;P_`)2a|Dw+>eP%s|+?AmB9u5BWf%BS4rg6=(A3;Jt7cG5&EC zE#xUJZP=I#u5b3PV*?_Hc>NAy*Z#|Ax7+qrSENPQwBKDI%-?)zpjsx;bS=?W087lh zdl?G%sMVo7?*?^2kRF@Ep09orHDW8&SFw3qLSe^8?9?pG>%*MqpT(uC@GP#T=043J z>@QP-jxPQOxJQg%+0JbDb?#yf8x^AU$LP{&wXL+84t4OLgKv_f&JWeei{Nsp#(8+j zA?lNhKcMguv)RoF)(6;h^o!|Ef#q;+5$g5`NBW1zdfILOU|#nw{kVxvj~;Rh*bl*7AUv9c}g4)1;;&0I>uOPR4`O z*sgHPZh27=e4IsgTXKQD>C)c=0g!cPi5Wr}TKXncViUP0Ax=Y}@h~i7A@`Li>Gu^i zj5EBt!**0KIKcAHRclUprDIicO7SW)>6pTYe#f z?lbP$IA%kOM?iZopS7<>-sc!IzzEk?dN~9W^_YOdBha%Ki&X+>u4@EID>u_Z+kW5g z#19bDShQ87sC%2C%APDdzw@{_)2@KBvzp*+zXzYY1R+{`K&EP&@WnV+2gI!rC$>DKkNLR>9xoz)3l zT^S)}!Rs+$^m_~_ZO1LqUYXk~v)$Jt(0k1P4!6?ETJQ#%n{CH&t0=Z-CLYCy`1)S0 z;noY@8ijpR!uOrxzq<%x9}JiV@x{@v#I`%(?#zh}VLuhxk7AS!Sc9*bmOd~U!x(WM z`_py=Xo4%<`KmpGxQ)6&zq&yiB<c&?WX@R2rLiloL@69IMZdyv>C9PB!Q;PfZ?H_IkN z+p{F7bE78P)K{b1O3~hPA9R+sl>}8&H|s4|i>M|FzgyhvF)^_sU=FD$`+GM+hD23R zWU02*u4}JSB?j4wO13JLD;Hz-ZpK>5)!y+%zP>+b28B+=RR|d&Z}Hre>Yl37?_OLK z!Es;xYQFSc1I4s50c%|{@%t~#+glh+0SCUaiFF0*PLO8p<~iExH>~*sg0HEnyp?t+ zOGo_Ti7JJ?R8>m`#NjyzRAB+-C};mrFPv=~RJ5cvGOiQ>C`*_*+BFT5hwdnOHQ^2j zRbY{vZYpP_yT5wW;pqC@5O7&CKy(psjb6z;{AL&o&P#vO0%FlGyXSvgaU*lxIOwu~ zMG#Jf#lQfYJcPsoD)23Nbv4A=3g)kgf=~&IUl|In1dbh-Luh;x6v25ldz77Y&ElA= zVwxP}{w@WR&S~C}^SWQ#6v}K8l|Bf6I4297 z62r}|zT>q0N4n$_H?5{F6RaS@LS5b1AzrS1f{=xwB;frU`TbyqNi#AVD;#xcNQ~2# zfcER5U!J$synRg9=er3@A@FH3DuT*xIY^|1nejF{v^{%cK1+Xtf4IMTOFSFCPT#vs z%OVxBxmYV1abef9qtwI5=o*~zdu@y|J1Jdpyx#84j%|r-3tf_hq;3k&u|6)Rr4Fb` z%`bKVikGszL{*4>(WCvR-mgHCIAnAGRvmdGe{E1-|*fRaRU_ze;&_e`XBeUpo?;~wJD{TN>g zG#Px`+>zbUNWtXO?QF)=T}%B>^1n*ae^ENRfWseV#U62YJiWH7jODB?YGWpz5dC&( zb68ODKjK(ws9&61_~=F+ntOunr}ACH@A|hTN)gp1ZqMyl8Eh%C(3nMevj^0Rd0DQO zJ#t{bht}y@_ZiEsw43Q?mCOB$xlvz5i8&zK{Y;j)k1A|la$PRA?XW}!7d19g1dj{^ zfya}HHn$&*+)aY=ni_v149c0B28Ec7c8#RRHrZmUl@y73D|gCd9XSp~VLQ~dg$2Xd0}J>QCo%W z+PB+B@WNg_`$U5+8b%RBB7i=nqyIUsSJ;Z7MPnio!c%V;)_L$d;u#Ha>Obt2w0V%s zC=EGH{q}=uvv&+R>o7*gd_$hCN!xHZrQEdN&KPEZX2tqY2@PUIeS{}&S5+we4(KKk zFh|rxj$B{SqfaXG*G)-25%`BC{XMsea`Jn!?HD{bxBV9>{VLc%6PSnW`%J~aM|TAz zcNm?WmA&hX&#yK&5{d>!?HjF~wE_4RbChXoy9n)Qq)9`)qviTx7iTp(%~+ARL41Y= zSi86u=D)r2iXNy&A`?N@!T8x?K|sM@`LKu5{xqeyeF7>3s;X;|j9YSqnbg;EWIfT) zZPNLBnuMSGn+P7f^-h7XB>!HX$aEBa{z!Q$VmF>CNVXFDPfVCDBAy#qg_e0}V9MHP zV2Lb(F-F;8zsf^tdK$npny&vMwq@t=#6Xf)nB!9cLz` zyOjA3c5L|VcU8I?fqZUrMtORwNZg%J*@lI`rNcfcUupf<4EkGA@$giN?^iDs z8P$#B&n=~%uL=}=m@^e`OfTZbK0-#&EI1!&<-J2ilCRq_3i>lA>QzZL#tvGeg$bst z`c@v<8}iqTzLHj)C^yHR5V$k?2)`j1A37d@osj!h`DGm&pzJ`yi>N#(mUxc->pKOR zRg0P|C%YAYKQ_yQwFD}|wyO6K2P*yOACsx#H*P#wRQaL|qvT!h z-wdU&b=!lfw|!#YLj915*DHUusQ&@ECSa=leeSAjXaT=q(AwbhD_t~>O+@5|0;L0W zHKh2uY}Wd;Pq?y_;bwx{K7sY-J%zQ@!ack%XM!NB-91%ImHtaz^?sw&a+yj{p3n`& zcxAx|sIEW+vjN^Yf!4=cxu$ln_J_Bp7d?RB%evg|*?JYf+T$QqM;0Jeh$V^BGh_^j zlnL+B!vXqD0r)8K`lNq&1x8ZQuzCa5&sbWIFP>hw+&fPLmbAek5Gn`dAb}T8J5Xr& zS8tu}9v`3DHy^pQD7ltcIhUV51g7dBIRL(ni|b3lvzo=v8;7MAZt^jjnwscQxAQB{ z;o8ApqrZpcQv>rF57#dSz_r8WJBxSdNDGdodTDeFX6E|CbUc+^dg+q;f2Z_`YMwOB zOzt5>yZj6}Jp%2#gGD(}%|Ws}>(rl`XWU%JAk$PXy8q>N1M)a6f?6EI?0As@?FM*9 zRcBND}CMpq?ku@IBTtr!S#+2~Tr^Q|xzVk@u;kX*6o}ucO_P ztz}B$;PH34W0ZKkNA=4{(=-RZ(P|*yegcq94u`-9ilzq`5e)Woa)J~dv>+eriw!Az@Zi-FehI0{vBcK zE6YfFCy7n8fG9$%_QRS&*askh6JonV-38s@3^si7@j z+7VRc^nbZeDdsZOONJ~08S6GSB{W(E*{8PTzfaRGt1sBk6G=7?jmiMF{ZSm|(YF_w z#ZXR?TW=yMA*2jJLv}8Vb_{>PV*a=%PezQ>QbPVPj*BGAcEw4qf z)f{k}w_Y!7UA(N_YZS@AX=-De?NskL*ym`O5!l5+xoY++hdCXrk;Cr;(p?D(h? z2KF6vYlo&~cw!b?xU3r`4AwlZjFjoqDzx$d^8*2pQhTTeCTY4ell$Sql#6jW!Z0 ziYI(7ukM)Y+Ww2Jm}KQfNy~p4M&WRtf__n>yzwkD&&nI#JxQM;nOhL;X{TrCOcgu2 zmbgFJxoK*?XMgAD>A+I^09bl>lR%q_qH1x$t2V!mDu~O=lUCh@LT2$%p|r=}iwl@1 zA2DhpYm#e?EM^?H2*Sd)HfX)>V<*d&p1w zDw}Zn>}LBN3l*@_DoTxM%SRR7Ll_L-{VUx}SppPylvc-J0trIAQp`M9-%g#Yg)9^h z@9y}nkMtkWm-t?k4VonUz2?fwvW)u+G0eS?=+JYY`R#M^p zvDHFS)yp+rr$>Y9rIfnjsbdc-q|0w=xRl@HWoS63S3Co>=?@x?Mb}`l;!Ayq&_D^n z_x-r;P6g$Ub^qhudAaB7GU+%?!I9eY$@0#P(${^dQwBBXB1ET$0TQ)j!l#jnYjb~n zeTxp6#hEJ>5T9GMZxG(8k1n=b+@rgebY*05RyO~R)1OXy$ZGF9gJScqj*#PVzzK}Z zEdbQN+G_>ivWD)ETV-G@6>U@yZCR@_p*sVcWJJopWZ3$BlpN!-g#6wjGO6NWgcwNd z8)5QBvOxYDLuvg&)w)m0MmOWerM_f+ei7+=C&~%>dIbgI7_3iDjaCEYoD3%HziHO_ z@NG|0=V~{z+WeN+IcHq?aa25#kT~-b91@p-+#hEEwD->o(3Ubn8@Vc3E4ORkR+o;= zf2X)(&Iuuzmd;J`9@Dg|R*E#K3U=q_pr*Jsx_dgkKb}os!P=6_YG|vK_|%U}$jXy? z4Zf>#v9XEQ?!Ew*{kPBQbv$LS&p+xbxh`PzB%n4Fno`-Um8mNrT8%oYS%QVN3fH9w>X;fmQ4d4({8Uv#{~i4TTQOley%@AMtu~ z;=NgHHx?b@X$6M?i3;eJfz*FT(Zp-c>u59x>XJyL&TD2)@`5s#ECN^8=>&RQo7?SN z?8HNc6qrQh5=eEMa*aaD!vC&9MvA25YNw+CPgkRV4VwQ*W;YErveI{sj-|sT>o7f5 zOGg%6CWcUltGP&@b`<(LyNI`0i(1_`cwQ09P77mV4cZSZawG3O(+cGY6>K|**=l*> zuREJKQ8n{&q6Z4v&GDqJp9<RqxuV)fDCbx^y?dcdA|0H6S1CH`b5uEb9u?vVL#?eL}y(4BIZV-Munn=)` z5?{@!h-@Iq{I(A+xb3&_j$DGLgZU*QT%LvA71G@(k}XMlF=Q}?uY_?g(8WJQ;A_n4 zTB+z>&V@N{6>Mf}{(k>!a4FKvH;?`|z~h_E*x?bQeI)Lg$a$-3ssj{QrFJWhql?q; zRbcH=$VMw-HKyd>D}r?HVgRaa;RYkPOp5OFB>v1<-&}jw(Wb8`{;XK$!1mFs=MTdV zac+CmG--x0|9Q}vcbWGn(nxC?2Xk>@)MrSuDfcMnZwSIC7|7e#Ya7qe-|RaDA{5Wk zeIv$nH~{OH?i~aN_gx#)J}zpOZk735Xd1tAiD0x<{U%q(I^BWCf~ZX!YKd>Qc?KCE2gIh6OsJT@>=MpCpi)NC_v&8VU3;(EtNZgjU+5>tV9fVYgx7_Lo5LlhVdL^K62u}FDVIBq zoURab##zwLyezBHn}4X(Iwpgf1G=sVqV-I_*;e(iD!&%*M#7hsBhXxd_&v?iB5pgUk{_?}IX9*|0=o9LC)Sp%LG9hfAdpjo!juCnlzK5cqi%{}^+I$>|!+Bl0 zOht}de@MR*87wV}Ea7K_kU3jT-(?X(@r5-n~kkg;K@nBcWd$7 zr?&9PhoKMZaVk7SSGEjC<8??GRu8xr8E!6bB_?Wd?RUnSz`WKf8U6p@Y9Fe$_mHzk zpc{S!RRdA}?Kp=4JaqqWWbKEce;%ze8hw4<&dBjw7ReEL?uL+XI%!4ksnBTUJH;`;#%c=>T`Egd2 zfaKr8&?KoC-*D9K*f0FWZDlK3QiTz^A+JZoGUyfBZV_-S~N}wp#`pWA%~t(r{8RaSdTH`kFL)BQ(y3(9A}g@iG{mF%ES-) z+Kl!?NpdQwJ=9t3hU(oq-%I!a3L%FxD+Kcw!)_^_VForSis1k%klfv!+j_iBm}1Y%&s$)?{-F2|3+1TSwD0zuq8y~S&Y|P>KJ*2dW7eT!_%7DD2$GMN z?paFBWQzYKvQ>w`sBlh>*JbZOx9+`$#xEQ72{WXlyCMBAcujkE#a+LVFbgv~o!9NZ z_*y^m@-B2S!yJqrpKBVO0Fw>7QoH=&lUVL^MH{QSOpo><5Cx{&p(oqPf2#(jo@~Qf zR!I%^O64oNeOWm9_FR07hNdkP%+?b8)uu+SFNP00X4-``d6iD}Prbk1!_72ZGT_rS zjRZyjNe8Nr(sxMhk&l=9!{BZ0jWW3J#p+PS^F#ixqIXav=cAMU?D>4c$2W{Gpf z*EA#zwd4R^0Zoc+DfW8H%RxrB$YLP;4|w&*-KBtkp>^1&M5z_EEQ4R{nY>->`+Izo zS=#o<+#lDNt-$K~7z$Y9z(l=bivokpU_WwH@?kSIxUQ7Xhn$aM;9c*tTHsy8eAVYB zp=Md`B=>sLy@SI)XZ;ZX^S;t&=rW{vE!=w3?+3j6s{DvEa-gy z5zSQK$a!DQOM|S+w48h-ariUu^5h{4EjCo+rf`j_OhZ#c(sOVlJ{6=Vvov{4pF*ES zf7BW-Z`y4k`@KqC8Kqln-O8PC2yQJ2c3!7^N`KB>o$+!*dibS<#vE@#hc`d>B0QS= zJ_Gy;9Z}+q0;uP*@5D!+*VU3w$-{LE8^=E{PSI^+jy26D742FON^X(9^(SDX4_~?I z-v>&|kt8>8d7!4=(_1QH#)x|MJv@G+)hU?UH9j4OI?$GGom-M)d?=rUS`#CdEk!c7 z6v2I#+FPd|2>Pm^Bwk)dp2yP|oF`RVtPBX#P~`KJ+QSjvPBN^Xe68E!|MKnmG(#gL z{@S{|{zXfpJUS3DY?=rEgcW?Do`ly(CH+_geN<>F*^vf5n1=%Th7NhG!YvQq``fbA~?_U{6 zER<#`sGo(w21cV5N0ZW4+FbI!wF7_UgPanCGMcws(qAl%-450ETPVAf&Jg?}vAZ>% z3)^X{$w(xaB|TRWp^G+xETxgZwGlwb$M(+6Z{qPJW~Li#64gz}87Wzf41yS%+@u%U zo(;c7#PVjFh_ech#8LLJ&eFvg>q`)CAo*OCVt@%NNn9k2oO_WrJc@i-EJ% zmMIKkpQBkW_vr1wta_UYVfB??C0l~m3tS)2BBpb3v~dSfc2Fs>=`mCOjs=pU;|$fN zOOsbr)}sOP`u8h2ZsywLG7MC@ol~%lGja@e8k-zn+SF5(dI-@Irp6Oy@KM>F1r={_ zT5${VK0dO<_E^IgMiMTGl>Sxjo&V!3){`;?rGW`^W-}^=1EL1K$m*JpYMZ3pax&gI zMRm@t$N0jqAj#oICrs~!xd>$tu9e#y;TjM&aazOfsjQKMs;VcIk_Q;bN1oYc73hQT z$WRUjw}J32+{kJ*F21;gvEPib8tckj^~TPVFIK0Bg<54a7>s0zQR~n6)k9^0F${u0 zr!>yQgC7hA*Auf)Ir6Bl@jUr2tJHkk1LnF;*Ay6rr-r}9Wv{DneBzV+U^sCh*U6#ID zh#Gp6GXyFdPlm)NLN^L;_@-m}n5Uf%n^?pGQDieK+MC)S$mnvCg>XN$>ol$=u4a#( zvTb(nsa9oM$%_sn9jZc#`2?GG9* zhh2TV{MhkDR{?)mr*4?*_xQr z6z!X={nSIULiYQd56*a59DP`E=<6_9mqBJs;_WXtZ>oen`{jUW>bYf5Z%z0k0>E4b z!aEN#>DT0>wrOKTq<5axb}{se@a{Hqiv(?KOuzG|V4JzY4!+Lbs>*k8!>Dfw!4HdCvXyL#uH>*~_4CGSkha+c%U@0!-# z3qO$lG>$>*s!7p+_aMsC@(_N7WChI232SdJ)FdUrK~ur=FX$FUVnylcI$VTxCcsae zSi8QntmKv7Bv*UM|9!2LA`Hg<#fbI$Vz<_l=Vaxjsq-7V9rEoFHydcos-vZsqj7UP zn9%$xwXNAc<6mdjn3ps^!dRrFi#^SsEmDwzVcPIBnypp)m3Ck>{O(~4U&YYvz_ZqB z7ii09h3L*n&KmN+PfkYVjt?p5(6b&bcyDse@Qr}Afm}kEaA=QOlc)v432>r^1=cXh zwT-5936Wn9$!THD8Ct}#^6<6KJL8N|sNJH5X3${g`mr2F)iK$uS-H086a<;YAE*6* zq9wEur4fPW>>q_`UfyeC@x=iOmNyk01L~jjE2n6evnrlsosfPvd2V||Fq&?ls(F|? zkj4e)8En!%Qr6J_tO`AjLkv7D{iUJfYDeCP6RjY`>&CP7*zdAX9N{=n{m!6U7&z{d zF;|eWlovRUXSBjS3{rN3Q4RU5Mt`1!D5}}ra|3x^-#ef8Jr*CWbs|w9J%k!dC-T2oIK+IRInky|_Nr5F1Zj8G-{^sk!(yj$`(g4$(hkL%=T zUpxSq^AqDui?{sy|86ev5+$Qyp&jS=f^B@hMq|1e@K{`%UO|=ndVhe^Iu$)j_e^(>_4D38mDUOdZz zxQ=XeDkkeACIF`hejx?(QH;U{Mg`c)(*%Pa=B1Uq%OS2`-Z=N$qmP`!;Er%?vD)bY zMSh;v{a&Eeofg|erX5(`8wsHoBDGufT}U%pHIzBJpH=Yp`;!F@I51${cL!;l0j`nN zcS0Y};~8_`$8$8T1n6TyOt$8zrmF!=xM;q(f~&jAednC_0E=xDh*#{(olDo2u4+FK z(}0#om@PCsY%9ZS=rV6pLmrx9&%$6CA3435o?6A)+GdfC5bpO_FAwfK4eI4#!sLq~{0C{Qb^4ngU34LmP{N9;~dDBX`OGn+1`zO(A%+ zw_JQ5XQ9YY$z}%Bkbo+Z->LCDotx~bv)G52q|2_jw-GU)W5G#nhIG5fm zlt&bDTHA#DM&G|&JnvrRKN01D;=eccCD_Zn^B@;6KcsOlgu2Vta`ERi>*7SVQH@7p zaYl6|th3;LSeBMmLKEYq@$pC3vtQ%VutIs{ome(EI{j>MMk?Pg*3yBYf$>Ui4qVIb z(+I6DrN(8m(=Fg=-Qz=X0R7h^gxl<=Mz#jdT)oCB+|pq+oWhAZvzi_Q*po(D#7^6j z9-iXP2_BA6+OdO2k`qUH5-(;2219!s_CCZ1#9#_v^=aGXWq4jFp1$g?MVw*>gJgK}Cs?^h*&sXE3GHSakO+diX>XVokR@|NUndDr zqI81&T4%M=LK6|VaMu_FpuJqX_d^hPT&|2#IF&Ocg#0*BxiwOKbOJcz7$Llq3cVbg z-q)4gt?b)NngeA5pq7$_{i}E^Fgp%&N35O}o7-gFrfsm0#V-8el@IJypSeL}Ih#w$ zxQEPd8oD*g>W@wRCtaku^3_3F$M_hXIb%%@#tZbnUD?yb>y%jl26;%t23=L1T7;ZW zO%wk-^rxHjEnJOyggz&5_X4RNt@*4IL2=`C#)qyOapB~U9si9WJYOf@EcngI6Vvk^ z(LdSX9@}4z!U=8dN4WdDv@?*ic#xhYXl)jba@M zPE6@5ay|RQANq}!prvLIbl~C?=ZN6(lp=qT z(e*dLy@5RwxNNKvZ|5Ff`y31T;V9PWK!Z$$Njk1Do_o3hBaxySxNTSvjOH|$Jbq&; z5>zY;-rBSvSAS4nj=(o2kU*LEEOHhmZ}#-pIjOkaB)ue(OB3oZe}RJ6hz;MW^ZJ+B_$1eu{TB z(=Fi3hhc#LJ;XY@#e?W%F!GNPUd+}ys%wv}Ml?LEn(bqEmdgHSi3``W^97gLrLDMY8dXibZuRk!_hk=hfa3r5=O+e6tdm= z?HoAkEn~j+zw|!$WQ3-wts|Ix+c*f;GmtK1p&!|F3gi`GlUn z3gK8FG|%1W;>m14qwd<(%toUL9c3z8R-t=&CKwv!A<9ADhU&l{>?V89$Rah8$Ltok zvk-dg%PP}<&a#A8@7+s3x?>|25upgVU=b;%s2631A! zH;J^f`pNoZ3d;>vNBC@j!eJm2sl>iRnqzeBpyaaIqB99CHb#Fvfhr?Q&geN%P&&e5 zk(7eScaxsVUv$uU@rM%Q@WT5hB4B~~+xeArbJf`3H)21WwvjBOCoaivC6k5o^Ah}W z9Kk_%5frHJmeHgIP_Uk@Ol>?99dEPGfdY*4Vb2l^yFA3zf#4sYsv7M8lox9CdR-fnS6U(<#vHaa14^U_S~kl)BGqD971>g5G}HK2kk-xq{ysvW(pD~E zFJG;1xJFj2_2>Tl9psKySN+bKq69bJ_lSOmzC%pyk>N;gW1%=2Vn|1_e2oWrn(&Tr zp}0D#0j(MuSC}I?rJvG+9c-M-JlAm^!X8@0nYNJ+EM2*|(oXZr6%=5{!kGE{Y^rt3 zy2QQ{(0fctFRL4Bc29T#`{tv| ze&}WglNhla&#Oy;o%Wg0Kdf{qIiO8~Qhkhy*f{u$n8)h8;Bg}M>LY-zM|mx&aktaw z$=kjSUr>wcts&?MS^yHa>^wD~?dO2V#Z?Ky;G=CV;Oa~a7gt;=5K)5QFtx{*MNzqq@MF_3yCN`GeAKY#Vp-X$t)@6p-vha zh7LyW$HE3p+*&0iQx<{a0~2s3+FbYi($K9R0R5NENXKqKb?EMQ$!Y7Pdj2K@Mwr72 zCiIjFbY@prUAwf6%{i*QJAFlj3N?JTq}|$-Bu{YEO47uSvHLDR1WTr+2*{w6rF~Ka zMiL}x3$&`f@qZw-TA}kQXL4uq*hh&blBNlp<=f~@<-I*=S)?~2-Uxu{{GC! zSxM#&ImRx$b=Kl~VKYqS+Kk@P-g@w2$hH$yv(mweDJP4NNh$&1S2iD2)ENCWdtr52 zhW1%nxoptQxa*|l{RtH3z#{*DOjE0rP&PPs(oqMVj@bb_d`yu;1Oq>JUus!PXMJXbtcXx}+ zW)V=F7m#A^8z+)qkxA$$#6$HeKK@)>;hNHHFd3Mgw6%!JnthQa9 zAD#GlcLU@W^&NyRVrs7Ib#s*N848g%O;tdwwX(Hhzdk{nO{Ya5*J6Y(O1VtaqF1b1 z-G)ZE8Y{9}IqK32`r|c5%}8%}{Xe^tBQ^3uOLZX)C$oF)fp3!?Yn_G{4Y&Q7aGLHW zZcd(eEH0%%o|iD0N7b~0VnqZJroIf(J?zZeIj_G)(c*VYZW!k^pvb_UzzIyAvTMP&;=()%~9p=#NZY!Gi zRsyFgD3(i0vZW!ou<6Y){PFd4Ct9z+iv44(G+ObB%2QxcuDv@?wIBccp|hn#4?61L zLa@SkfbtKM$IAB#aKr~tMH#}fC9_=|8x^F zD?)%~*R`&b`63TIR> zFV8iC05J>ebHTcRZw>W1x0eqY|Luf1rZa~duuW_NAy@KU;&P7%=e@Zcl0J#6czZ@g zI%i^=*;{_jaTR*qqGA8*zpc zkVRz#{V3lfZ{7x<&2YN+T%~tV3VI`;PQi)kFYwNQyXlP&cD+GEB4!AH9>NkS^z9EI z=InWOgTf9M%x`g!2O1liA4|?Zp2x=Ot>&xsSH)WQ`@)_FH%BKYk&2wfb;SN?Q|XuCJB;AwojBP2Ew%}sLh?Cx*k zkGX=IRRT3aGllp-)DkVY zA=s55ab}h3_H`HxUUdBZfvg@@N?aKjaGphsvj3c3ayhGuEW`iMp0k zAGFcd2TJKIAyDd3_sh|YxMIy1VHM1f^yyBPn>~YkQ=D(u1&vV0F1%mvK6w(nQ3M%+ ztsrJs(WR@TifFmL8zoqtSuJS-IID};Q6{4{}>1ltd(km)z(m5d& z=wd|(jdh>~bceCr>?bH{Y0S0ji`4$a7h+OTMJ^&hVZoNazPP% z-0^Ku^FXlO^foHf_K0AUn#D(B02kpmY%8y7^dy1$j>@<=794pFEuR_>Bx*}4-9wt4 z_triMj{m{{pE&1~fsUL}FzVxZeHnqVFCFqEv`QDmpCEx@DchH49MVN1`5X4=Ya_RY z`RLb5u-RmGfq&9ak}9GF(I%XGx%o>7&~YRsTpS1o7BVeJQw{_JA>Tr!b3lL?oT!`r>fwzjR4h^ zz9g#R;9JPzUl4If+itb<-cf6DNJ5ja+IgSG6 zh!Wc0p*{!!<%^B@!#-G8CgIF?*foi4p0F<*Szb2+@Oyx##4Ae&F>Qe?qeknBbH z726EwGo4QEBIHn4mlcPEOom2k#@r@SMWw^pt3pQ_LOY$JF<)`7O`4!UbCzLoxoBzY zANXt$s5G}EUSgcANd_X^LKa4MtuIYik_GbCCvT{JjV>NM=+jP2BN0x-I&EE*KkFN8 z!9_3;hyX&e$3ve1bcbmDJ?n=U5Eyt;O9@%KuN(DyrPN`txp1kCwIk;egcT3bhprDr z(lsvp_u>L#ox)4O5n$uSH>NIaAwp#4SEVIsCE2(-j1jR|tlP=X*YRW91J>0kiKu$D z?7Lw3ZE$#eRv_YYQeYF<5YhxM*OgH9S;NRQ*7WozwC*txz`pIB2=!iOcU0Q@KgkW3=z@OS;%RYR{Eh5)2U?Z6r;yQ=nt*X0(ub! z4@t?s77l;EzqabGly0BuT1HmpI_=&Z%Ev>;p9XXJIZxVS$?))}?jtVKCf{3jc1`GI z-)FeaAbL{|!Gl#-S?r+FGQ(YgeDC#FBZMmhN%1#!nRF!t7rN z?Q=Q$Gwao?7=x731*;;u4Cfi1T5pdrMo|OSO!1M=#Ob0|%$4La&o%*iQz~{vXLk!B zO{h5oxBQ>s*`6%w6G-?<0vlf|E8Ed1w-*qTH-S#>jyIKJ|JQ5rk5TIG_3u3QW6Yo^ z$UfNXZ>)XA{+F^09n9q*n{O8n7rppnSCQ9${E2FKpKI-;j+ncg`BulgDLMXqoim`^ ztB(1&aGU1t#N@cJh)!U3s+UlshfBL{e~$D}r!01Zqq2V=B)~S^ zMJyJDZXg_+z12dhr;YK z-m7kL4$oU4;hN5YR>aK?&qbORD=mL@ADgv*AIG!CSX4mK%{g&G?a@3bXF0Wj@~2Ea zA93kDx|{V?dEc7ZFklWoAn1C6->x@oQ%6H)?!mJ*Y)9w{bNtZnl1>a@EuFS{uP86qd+?~Z5pv_#+u3tyV;I~U$RLQ#32ZsCTOP9<+jnAx zNjo9)gJi|xZ>!|m%7@8d4{qD<+JkZgQn|Gr7d)CG=)BsdKQ+7wNcYHmVZMDblI;9j zR&9&FT+E~ydK4DgEqCi?G%ln)+fTFM-u6);&KR3^eEFFJFp`&Xl=}}F5)^*_*&%QW zLnIeMK#ey1v<8K9evLoxv`djzLAtnDSMbd>){8I~2UT|v6*XPO2WcwMi3Y3C`OGh} zrg~bF7fU-$P^<;QSVNSoOThN(U33MWSiS)dDa=-b7AB0XD&2K{WxTVMbWe2znFrocFG%fub8|7-zOU$6-$6znnQ86H zUU(^%Kx3d$pyuG-m;K)8Eil0Z`S)8|Z>ORxF?AmXu%wlsH$nMj-%&5l6++&Y^dmf& zb6eWn??S-2zR*0@!EXowq@pFdh>=*?b6%kzx4d7Mr4hz!jRw7cZ{gqv#!oIUcrG{n zvPI8OyCn?bXv3Zczr|S{SPyD8UV)UJ<|;xKrtk3*OT;(qM@RIIb1W1|A43_S_?-?y zBQ^CAz^ZEHE$X?T&L8}X@R_4Mk)R>T|Q5LH} z+C=!WvPewpkRo-iU?AL&2V-hhV7WagIHKx*-uC{CxxX+VY=j>n>D58_p$tyUQ6`?+ z-c`zGSWI+%G6GAgE7|sg;byaWW@6ZX@MEG;2Kd$ z5m4lwOr!WV7J8e-L#%Y^96Pi@OicQlhw=}m{PB!!D2m@_KOU)GA3(hRLju7~U(>e9aqcNEBH?R$T3F#Vhtg#M z0}7s)-Lj2Gf}hbAp=S!ZJHLJYAE*noC5OAa!q)xBcN@*_F>8a~92PmtBNP2?jx7-8 z8SD3e9}$}HKR)5m&wU-#OrApBHhKOz^S7B&Dx)4d07v1l zb{6}`X;vP37F9HEpR)$XYu%xtZL%iGKvS?L=0-I^M~8NOfi@9c*}%Qk5(Y{2I&&`! z=L6yT41S)*>Kawga0HQy*f^b`6ZlRx2HXwHi>44&Nvve8C#j~{MqD$CGQne%I(eLL z4F#!6%tGbOq$8obdSKW2Glj=FK+GwS(^{ra;8NO>7VCuGNP3>>awuk0-)deALi6j` zzYUA1y4i*YK^O6c<>y-g za&0;7WuKrW8AYt+K6{n}V| z=Hjs`Df{49=XZ4NQH7fCZ$^9W;AGiIG8|Ycj$HnoDm!K1^o=NuJr;UUim5yXB2hJ5L!Pa2&u5!`celr04UUu5HZUlB}oDF?dz(w zv7IZ>IYt+f}6dNleropyV=YYR^}j6#++6ri=&;V?0RWL_=R>NX7I!wEYg z=YzM8S`Wmb=`>X3%I9R`HbAo0ka5I0tMJG!_p3Hu^Vq1GNQ3WVy9ooxR!<@1SQ#XW zwL{Vjn^jQYSkn8q5 zSeE&nccWwe_5P5iE8g=mrdd_Z`yob7wfmtdPWD}iPw;pVtkZ#-e`U?jY;hOl;4pdD zaazp~=+|zt>2vt=gXyyxcqRH+1KtHbUG)>*PJu_gkMr)gap(xP zm#(OcL+^|hdmRvFkR}^6Q~e?k*@LG^Tq2-E7A(6aoja!+GVb<`06Xjb@Gx8Zz$Z6~ zmvN8BvAsFyJ)Hs1^x}!RM%8aSLVIcp6#?rvl=~~PO+w;WKNyvNYC*rx)XWHAid@nRlZg*{xj+W{h+wLbx^zYBNl)r%V z?doef=x6TM#S-$==S$9~rycQYGw>|``TBX2(>r^<^>GM*iZ@qt>wcoF?cWEz*u4Q) zJ#WaJuT8hSP%N;uYFZ|U(NcM@PCe;n@}FcmEXm)dL-G!n9OkZVeD=MVU%jUy@bz&o zk_28zE|GoKeAbn_j<3K>8`WT!;ea$%Po~8Yrg~k0(#=lT-mtISw5up&`gWV1?!l1m zp9voakyvjQ@2DZqiSbT8PCi^jznw>We|}_wozCO*+(V0zFu9!RkyHtm+5=Y0-5)Z4 znQUJxn*94<(}@lCWVNm}A2F5@u<1Mp6C56_pp|DYmb(%_G(oe!z^_Rs zyvGcpX5M!r_onW4Cy#vzLwR-eYMxfW&G3DdPMrT+Bvk_d%KW>!q@VY7TgINB+85aB z*j{3LlJd_A&q;}fekmG$1>~|Z7X>1*-nzvFYW;IMw{m2%6>gXkvcaet^{O1qc?v0ZMCcY$D_;o z___JEMW+lHQGN103V22z?e5-NxCF5uJB6~7l{UbM!h?D9Sfhx&DSHlO^=i=LYn%L=l+dSmI$B_G^0Y)fxzdo74x(G8^7DUV<&KXUqnhLHbXkT3L?bP9 z`sR9$F^xqunO}m*v<3NhLceG<%nX?SdP1Wuwri zr&8T5(C=l&#D5ej74f(r2+c_iMqq9Mid&2`YqxkFE(!f#LOW_#QJu*xnoJAAxBaT()r58|GudtN7JX zS`5smc2zYl-P)exCz%Ukycn!MC5x7{_+X~quH{fNfowADgoek+ebPgue-N%aSy&kE zTwyGch6&Y{YjKXPLF@wvmS|vj26i+HMVKV zT)CG-cfc7C;T2%uf&3xS8I=J|GHCkensVPO?|O#TB65C^lbwr1eYRm3(g`2VU~8~S znT)4T3YdZ>6lYDt7Y`>@U1;gw?7^nLE0FP&!r7oOv5}W8-_Q8p1v-1rUm5EfbLj}& zh``U;oLED`p52gHwW>9}(dd7xR9npFgn(}4wLBETu_xxgfuagX5u!XQ0NXriXF$Q7 zk6!F=|MlaR^Toy~+4)Al=#iNH(Iy=l^1>uY62PrRka%q)eFZ+^ z1Ut2ya8w(O_*U=Xw`6ggTq9?biF!IR*_mGzNAswEdM)Sp&m_?rr?}(qiKyvAOycYu zDIf)f^|P5$uAEoSDrTv~3ARDf4^auPXn;`Aa#u5SmI7hAJMs2j-^OK)r(>1>Mq8zE zt>A#`i+xe};M0%dqk<5npL;2GYoBoKAU2EoHTLcw1+0?5sXfh+FI0N(~kn z1r8oC~bf}hs7fY4oWLGLg?LSZ8%HkryfP$Q|5;utvSWYAhODfu#k$7 zGS$71sI0f{`jt2iiOt$N)KRJTML@xZmDuGiDPW9y(eV@nY@WY6id}w@#(J42fEHpr zH|Z(J13cIQ_ga4v*N-@wjd2Z#bH6crCLARnz2!te)%^Uw{X1KB?SrE)j3LqTl$xgr zaYHYx|D%To8BGFVJc(PoFlo&{}=K z)(L_-p^dLvrtHl(?`1kvEqE*?&Z}K^tGeMr9ij!nd#uN^L4ey^6nx`kQ;>t~wU~Cf zd;NTR*rQ+-;4>ksyRKh*J&fEe_8((h^4nG<*h-V}i& zFY!93A-6i;j|tsw+t=EmZ&y}sNqxRF8T>__ntMrC4pJOgFS4jZw@3WnLsoa|UnULQ ztkDf5cE^Cp^LGr?p~E|@TbQNi21ke`N}$$`#G^P3Yxi@csr|uK#mc2D3*@ zKkls{_2AP}AFz8dae0Z7N%p_qTDcUXx7Y@|9WX|X6!Rr?OJAb)d4{8wMjJse>1NjY zwmg-4WX^rNcnzihZQJXTdy~JJqzfzASqx_xKCKbl`0Yua=8UtDR$lnAb?%J9%u%e( z`Ev|UD2*IX)qq&6F5QS`*z-Qt_oCq1w(Rf|y^R=8ADFs(EBUh@iH;7Mz`9*;n|wM+ z6a@0vU_lX8;6?bsdhqqO>I4<3bKZyc>TRrb#PQtSAV*iA%lX5ly8|a%;9c6*$9?#2 zRIvQ<=0Gz3QPU5Ce&N4qR9(s2GMuH9to8uy50!)a0U|$>chmSa5MxFyiXM$^X!cdT z&c!=`9oMk);VnaFu_b#;_URpF((aQmXY|B#(ry4jJx7BMZ0@pO4Ilf8Ng#Zae7Ju( zM?wpDvHgxN^jS8W;o*w8B<{#d@TqnbzR=TN;^SAfj$2>Dc<_5FORmi9ND~wrqp=dw zcX&p^V9O!QBm+UJ`b>9=!KlG1YTrJv>Wlw?GNo^bM)T;Y(jA_T3)x`(=3T?`7vU1Z z5OTOL!fjjn;HrGbJQh#`&(7 zE+?H;%NHY3>RBIzv_P;)ij2#R=ec@x8e;qWVxxYGt8(6M2fNSRE+Bbm04t%WPEZf1 zaTk)K)&1#!S!O$_DUq8v*lic-3`W!R1B24WBxpgd(tQ$Fz@_EZZ4oqjS#;XDDc!AL zAO%TKVv*whUeW#w;zG0Uyq9J_plJ>4&DCH+r|dV})Bh-q%YDy!{qpKwZRlQ}XPI2` z)3VnM>q{9ZlaNAM8;^aNh?qwJxEd#dbFgO4XyTWl_qeb1eglxJHY>@C;6f7DE zeu*Zk(yfC|piEh!OqmyLW8i071}pStF}JO|VcS)N5mP3`nTgmE%fXm0yY2|nzg;nzXKE_+zA;K{w8V{Y!j-ZK0 zm1r^P;>dQEoSX+QDEwVwDVqB50V<=!Wrq?bn3_U(jhH30>v@s4bsS^_T`wWxEz2e! zAvrXK;talT^UHnP&b_tUhI9nF{|vUKhKzN%4Xzy7K&*8LFJsJhlQ_4Px97l8Wq5VW z5Dn!%4=#Pv@@DBVfMOxdV9t#JKV~iZa~yvh13V~J_L2B8vleziB^@rGJ{)5CqRq`X zvuoYvcdrX_B;~#4J8`YPcYa%W;JlX8FKz^A)rykMhqbIpOJYV2iZ^KC5#-h26)dYu zx#yk-%df=-@XGh+X%0plqV7U4EJkpmIrX1Bq=3uNC)uB;ujl_US=XPTy9+8alaiGZ z%KwvW1qRRo+NV)DXX&CG(l+_dg&gaJEsnt)c%QwL3KlVr=HPCT|_bRP4OwT`x1QyI0Wl%9g)|;NIn#W_;EAf%w78TGKIi-m3p4 zCSEeQJE)oUAHmjpXZz1+c#e2fd3jify?fv!i_raX0lpl6oZ-*gfAE@mw9B9vb zpPytUBBc~>;H|d>oL6}-$_nHqGM~DxJ`Q1E<8M?3q=IQIAJ1)Xa&Q&Pl0e#>-ziMl&F55839`(^SqUjEBub-YOSN36%SQ8Xu@F4Kksy)&ex; zFVebhI8S&A2}Np%gvp?He4kaO!8}Uzu^hWfP_j5mbWeJ{*YhPr z9P=i6dJ-g1;PvB%;oYF~H5>*P>i(6xQ2}*46to(%V(~UiTww8w2$iDKjW4pvTxOhH$s4=vg1?mAgULCc4g#ZoTh3w?3Yx2rV zV&``ksxN)WThQCiPbl1vz#n9HdYduEg7&_NW^7FUc>qr3GJouCv>6q!<(qb$Zs>>) ziK_>jD*xiIimgx0whW)!#M0UMb3wbST$3#q=_(t&Sr@f(ams@0lrIBRfn}ZJDyP3pk>>dX-AsEX=|OQas)>UT&E)Z zjiYo>nTXi5v=b2UEo=lUubHEBcaer@zAly{An>?WXj883o1i!M%kL%CU^kPLBC@HI383!=bg%nn|q6ZlwJ9fBkkn(SXahx#zo znKc)=NK5LA-`s&vBCeoSNP&fxYc{6VFedi3Cg+{tvaX?gia)~T70yY0w4mVcm zO*C^xMz}Y#AaM<3A_u=L(W3i_D4}F6SFZ3+WWR;EQD;u$z*}Q{g2HB$6Nh;}Uyydw zs=-4Gv(JRb6j0jB(B#r4>NUb83A%m@w(E7+iX8ON+3KWjiJ%?+UxfW-P-el>EePY@ zxVty*?ld&6jk`nR?y_-rZQPy4-QC?AcXxM&_uO;88#7-_OvLk}c4k#p?ms)8tXjF& zt*Cj+0nW{<;c;BZQ)A~w)o~8x_b2p{0;e7-(si>RG<#4QoAwks@{r%Vtu{7658$+h zSoJx+cWbxdjYd%*cY1ae^3+WELb*vUzq)nhjb4C?8z1!z!+HPyYG*5`4Frf{!71Q~ z<4Lx{$;iHLsI!mZ5NW0u{JHkx>snVy0?RI3U76xQTrn)PSLRDt!pm(7lY`n_JVrMo zP4IS37vSuSNuz85p{RM-2eHPND_naB9vb0d%hy4tsk`CFq=S(A0;1Q{TU<~ z3EFU7Fqa&jgOT4VYmZqRLI(T^V-K5Bpz9MF`Ob3IaD{OrH^AE(8ag!T&f|5tJyht0 zf~gn7{ucV@D3(HJx%LNfSIBl{!EualQ7$12X%Xro@?B}w$@Lx-?6L_Mi^*FztWV2^ z>v{u~s1B|jp$1_1S8x=pc4)?EzFUZO5ps7q@{q2@VuGUYgQYHNrGQf^p{a8ttOmGo zCb0~mb21(0Qc&MPB~v|kW<^q+u^Z8&KUFsl_I9$=#U>Aut4Z6G3%@34@SFxJd@ZljF9b|Dh844x?6c?d<6 zWyJaLhI80T5%q1n0mwL~TjJj~&5h?3kzKd?xq+F{{@s$2udxuj9zle0hcJZ)itLRD zL^7g==M;ZBdf z>K50Sh3!ROrgX+omty}ewU$?knG5BsM;g~I@|8?DpGkpp$I*4hu>U&U&kvd8F$Z46 zz-YAo7oc`cxl}qWM&GaM+ZyGHKYrl*v44DhtI<9o8f8ipsbMr?k1Db^p?E#U0JSUjOm?DXm^csF6uDwX-r*UnW~pc|6}++ zFM*LS54;Xs(yzQ%!K800b^FYJf61Mg#Y29o3TFBsMs~A}_=rmlB+}ZGR>+UN7e{$E zl!nlri^&_-3vZA2>bjvkY(F;OdN2X*=2KjBh z-OgVUF9rFP>%Um0r)6D&WO@SRkalnfg|tOa-wFG@u9WRj;7{`~i+W&iF4!Erfji8A z#>3yOHxN6&&ph^HTEAzng#@1Q(n0(i1&%pPo24D^p6M4HV}2oZ(D`&fEh?vy)WBQ} zN?PQI!w(E-?ypcA%ukT9O@4rEYsI?{WbEZNCdY4+scd?umSsmjoKMS>?LD~FD@z3Q zqFWvMX=@=05G5IUcd_C=88>+~@7wu}quI$f>n=V0(xLxn8bVhPqE)OBM=KBx52z!> zN6(dR?OcZ@yNP5gQQSiMYBbTcdw1qUFIWz9YAwd9 zgzt6slLvQTq_b^GhYeM5-b+1DV0Rd;HavU7-&KiB=bK9wuTv!+8#Sr=#nA0?PP(kM zU}rw+L*BNfd|pQbwwEo#^G(2f7QipFw7P)r|L1t)ooJn{cFGF|jd)$+%ynaoTrvjw z&*e`9+6fw&q?h8iTjr0miuBe7dL-k@xW?`!1g@ks3R{q*$aDK<5K`yq{lltKZ z`KoE?x-%rxMeqDsB2(D%ftqpOS5TN0B&3{GTgCg|hfN|5_Y7*5njwlZKow~~ov#hA z79B~~fCOZSN|gEqqV*oCC|^sQ3@1sg`hbg4Z~;L&#&Z26X8%edyey8>1j`IU>&_na%@A*&Wo1_1)gl~OPR zWnr(~JP>LR zsLRFpXp~)+Fv?3Y11t~4{uOzN{&2xUA+b9BDWZ`~2hqesd0cj90DDK4P);MmBWJIe z!=d&}a%V1-`AER@T|l;#&V+CcrL8-6YSM{FY&PP%kXv92g`6icVWt&$`}*1F3ngpc z2Li;Cw2H=wm~yHRGz2ycxo;RAXEjy`yELD}qf0BnHLqRoA2GMnHMrImrPl%5Q_*ad zjJx7<+?>BYG*9NX!24}_a(;KMgM`R&WITTbR8}tqPY!3jBfW+$-xtZP>K9R<^N<4D ztD$OB*~~}l?{nyMA~X-%pC8_<4#@TDa5ajSy`5X0OxETQ(3t9A)QHk3J`e}lH?PN1 z>@a;*gwYJ=P{>C*6KJrnvp-x#QSB?U@J4qP^r}*3Tkw@?fRL#(T+gF4qg%Uv;@=Bj zBuX%wMgNOLDM89){H3BhzPzaDF~mI1n}@1kx^Pn{M<)0XGJMGj1-+fFm;=Zgj@vCXT<{FW*0u1=PK`?UPM>XxSe2 zz`iHg-k&BEl3c!u(*H%E^ndu1l&?0Z9{Ecvx5Al(SvY1Eoq9=s3{|(ufl2bM8m6OD zNJezFMFs0hk15rY*oW<5-wBtH}!v7ZWgU-=k6$Ja?w6w*^5oJfz5M5KiESqwX z!r+N)g=4&`$>q1jG;r9z9%iVdI=8fFryi>>2!^t(?-V$3rX z|35jD=B`tiG*o2{v8OO~s#239wNTb5X+z8dLA=1fM=hMxX)-VF%b#20>D7A@@gx zw*fL?>rIZnmk{%t1x|iUCk$4LhNS#xHuD- zn<%)5{7L?E0QD!%xY}F3^zA0QgzsP9X~C%r)T!1FFo=dP9>)*1jpzGA=55y#&gvC! z6<~_d+h=4M>MCpUg+C$+XJWPIY$1;An8fw)P-wH?44+$|Xynf`-u%>1t=^38o{EOJK7{mlqVUGQaQ$B#f{H^K)eD_2FRo~#GWvW)&5z=6%7^ybJ%x)R$(h#Mc zX<1>`4*f|M6j93D1g*leLW8X7@s>s6zfVl%EQWru+BZZR@co)dn9!0iZ6CEoSD8(f zf`xWM$;& zNfMTAv62k@0V!Vw8c|Q;Q%H%10mU)`!JF@;9I_ih8(vpB-W;Z<3HwrzgL$B)L$C3I zdCkqJtLX-tP>s#0I|?KsT}6K>3kI_6e<~}};j-o>#PLZsNLq$;Z&NME9RRcj;LN_U zSMlmXW!4cx8fD*LddU~WPHw3dpk|gyuy8nosEP2n5FhFT3-M~Tc%F9=nsj%VvUJZ) zWn56q?p+#OAuaTF6-n=h)CT(iQgD4;PyfWlIu8)*aC2 z?Mc&GTsDfZ}wz}8t1^VvqW1P<_bWo#+QOcqgM@TXM zHcLnTl5b=5jFa)jkpNOAv&>jIYm@TG8VlY^i4_+gZy-`JB(93Q8v!SWRS>9BWGra4 zr%Bw*G%m|NR%!}>$?PKE$?8mprxADJf!WU32($@#+^$X6eqIRl*0E3tf(?svf{ zuBXMo1!Vlai+Ia44^W4SEXV3=P1tA$iNFK$>G<9Z+b$*G|6FJj)QBiZ&+;~WL3eTH zCZ+k>LyCRBE}e5JR-5N{Zc)>r$S6iiI_;`gI#~v@Pgg*Bk;otmM`Hkw7&&5_`d0J#`##Qnx}36VydBYu{NdI7&XU*zce`o!Xi4bqi{#@!&oobe z*8r3jTlAvOQ7b>;eY& z-d{`K^cl8Yr;iRdPePN`9GLz)5l6Ht0|iR((OKqy!cFzwx@Sxgd(b?UUJl{fmWKq& zRb|rg>i#$I;qSZhL$+Jrto5wA7~wnRY5Xjd$6_{3#7@DekE(6b8^VUSBf~opgU2Sl zxz0yepzDWGye0sKawzCK{q*SgBgZbNrr4@xa|D*z%8N|G?G-NbIv#A*Hw)}#qasky z{_5#BS-U|mlH_5ikVbjygo5Lb6f*G!pH!<1AE{n+FKF?3ZsCjXj=N?Ph$gvp;$#jMsB@&T3cO>)|(pbz*YxkQ7@9xOjQka~eNuVXf z;6l<3({Y^>mTCdauIz~AJ7Vf2C}T|s12K_oYCygKIXsL?hxFWj@j?HNjGc6d`ti@F zn%)e8)<6Kc-O>fWeD#J}-uBeOs2bCyAd=E>73YBoB2u+X8Dzq&_qj!*yATE(NjZmy zymv0D8^mQr*My6=R5w_nf038>u}*&kYmjuG)%817xt6x$r0R-!V1$EpoyfQN$jSzI zNN{+CDG&ENT(_KnH>eP-mqxA(Vc%sM2B|+~{^Wr2Qj??OYUvm@Oyf!-a(?E{wk8+G zo!TocScMz-)S6FOgy9m+{&~bqaLj9zZzK4u4CHetxX#Om&X3-KI1BU~I+O*KlJ$g+ zLWf7sWTOYg?4Q` z>=_hF+J0~4oG#4^Z)DpG#+x44TpTDB3`q*6Rto*GWa@l~%jV+0WG#SPSx+D{(Z$nf zdKg2qSOyi^s6=)el6H~~9E|3*__d}pB?%hg?IxEmjAp=5UONml2G@`E zd1L1;@xeSauIP}Li=moq4&^F6b+2-OijApsIucgbfQz;^s*Xf2=eA0K-YAo2cgTHV z?C-6K2^fMON=Yr73{!$%ArsE=c0>2Om(~r9ZBk4EtHb3RDX`~h+KYyyv&ovn3E}~| zt~iR$hi4H}I#WD(@{l8_$=@tp>J27KDJS6O+u}2_>44_)g;7bzYKXmV)2`Yu% zSb7D0yg|n0O51?Z%6Wb$^=MOdr#mOE8?Q_*yrjk3?e=_ZlW4#9QAT;X$r9pWAQ4-YLg>ih^TL<-z55$g`!1dR}~Bxn+%&hAZU)E zQJ4ApL}BMvdKpwoTR?149rMdIRO?h)Vxw zx}VUgM{;IiLwxi!Ie{e5?bxHNz1XeX_&5?+g-N^Bm&5-9kJ^plyz;@v*_h<+M{Tdk zLeRpBC^O|bP z`%HOg@&t0yBJ-xP2y{v-CD%e$`1r*F*^z74GqTwnuM;Kr`6p7S{69fJ22wC- z5C89DAO^a>_>8E?-^gkyU36If0PyB%{*s{d$vzB}+s_J@cTynqJV=rI--#V6N*O71d-`lE z_2kb9W~sfl)LpqKfzrKQTwe@$_E;+kSD)*mNN;v+;F0ildY0ZG><{envKHSpy!R5(wioQ>cHS1L{^aa*X`uj!GRGQkGFQ}!U8kVv2`}*X?Ud6Sc?90u4#18G& zHRM*2f#T4{lgh)162b+#@SmmZPquwI*h_D0`pWz7f)HsHO_=E}!7rdv@{?uQ%$J1s zMjBo1z>o}IU&=Q7=e6EP%%=b;WkT+NEeQW}{}m9~Gu!on>ND{hn2%cbbxW$k`HZP) z0KRQFmA&_K?uoA-eBQ`^uIhcP3V!Zqe~x`Vb$uQ)e!c=9W5D|%QrFF={?M-Zhp*oU zsiptP340GJ`HJ6i=jW5)CrITBMDV*r_84FnxIFAuyg7imu+oWv z!{>c(!a*i@q#wzm^7~@7WsNq}!#wo`?NrqcxQ za(S_p?|pQbBRWZum}2P6inx&PGT!n4X@5Qx44X6JaRh|!KZi(*X-_bbGxczV}_BEX}Qz;{-rXB0p4H>Us~7lAzsnXS#vPiA_B}Q%YRV>&s8Or3%Zf?LX&7l zlXzrW`AhZdCH9NF44Y_Oh8!rgDqX?!Wsx{9SgvNnngu2uyI5lRVVuW!G`m%GE1kBy ztr=DRYGhYyQP)~8*0t6SH??Rb64vTuheVB3tGz@*67StM-gj(c0`&5^N^6aU-e+e0bXqkCrPvs2V{#k^JtCz{q{?M)=)(gdMgC=*NwBr0D6NgCNm_TA=sn-**t~1 z1{n4r9fK(}Yd2GHhZ=0-`f6%TB_pikR;zhnFe&^A+@U`9B{fv19`l%L;Y~(4Uj3Ba z3-V&o1hxPaf)VPxo_Y5pseW@u7aM7H&lK;{z8VeA@rYd-9B>0xuzF8s`Zi(YOnl~D zT9gXa?%ph8S*H9KiN{mSfn_|SN77b9=Pw7T~q zJt+}<+!2C6yAG=iy`PY3yG2X%c@d(62f-_q@XpV?30q-^*f6T;ls6`qgK5fG*Twf8Otf8INt7P85R8?R`~@}~l$ z{r1KiDi1gM;Ac^tg$ziCs&wAJ8!UIs(<4hwa&9+Z6A-_P3f_If)}tlte~m-UBzt+! zu~|h9%;;r;#liM_THDvT0RA&A zU9&*z?)ymf-YxVdEZ{S+of*Acg+QDRrbD zSlGFy3@9l6qRaWZ!Y^wc9#3qwM*Rd*a zRABv}Aj(%J&wkiBpOOwoNPxfGQmWr7&xaAb#qKRQa)J_?jryoG z(ZYDYU*vB`nfTlPc>Um|x}Y3bpj^B8-;Oa>gEJ*r`dd;{nDy2)oafSmwUieJCE@q# zk(vWH&x*^4Oi!b*fCbb|4e2i=+A*cScvo4%z0;ueJ<;ffs77^S3r0q!!aH+9uV&G>UXA@nr9}1j}4P5Gs zMoE7aT!q|^2Lp`q?C$kyR z5%T44kE!V$`adE(Rk0Z&$)jtH zyGK_bZR8XB1W!a$61gfoO6Pv24_o}J9 zE-f4BfCH-ErBdOp)2=01|MH@<&{D!>o{+kBi zLKp=RvQTKmfR6F!z$M98Gn*~GPY){yFv7UB(5<{cFeVso!@G2?NrfwqSp80GrUy}P z$*IONab)01K)9pHeX49f@rYW;zX&~5tF>`r!O_Ae_r2X5RC#3oyff{>5b-bq1)qOj z04MzxyytC*B=}L?CsTW9NxpJ-|A+_BwW3_I-;i2w#yk7zL5lMS6Z89aZ6$4B`t{Te z3pO;i`xrXs0M(g2hu>45keHnwQPbNHVwOl9^bQh2|FbMvdq{P;E3--uxt$}w!_t1M z1ckk#tsk08*w>j4GBs>%&}!H-&3MvK|r$g7=?A#R5a4;E7$}wo+jI z55K7{Z$Ue?p%>{=vGXDEIryH3uB&nYyu?UzKCg_jO!3D+ z+KK%G=;93gRVe56kc|;nq7&P1#S}L*G&Dy?CAH@$%lC;*W)IN5j3y3+|&o)Q}#9=gd531PbByF_$U8X+Lb?4=d`Q=K4QgjYUdsq z?ks5bjdZ-Wfhk%T7(r}ziK9V1>%`=pz6c3i-r%G)^Iw6Qkm)AP(@2;=@OC`j$#3c2 zOmCR2xk3E)a}m1>)V3p{Sfh;&_N&!oq=s*>w4>ku$nYhKirTyuA!Xs$S*IrlX3CD; zP@G*+&aPRtum`;!FjP%Vz#3xof|PHuOYBD;Fu8Pkt<~M{;JZ9-9SKFiH%<~st@ON| zt)W?kg?L6&e*qDismYE2naSu~qyQ}iUe}OmHfB5WL=-p}Y5vl0k>4<@-_$zRVAtpN zxNLOx;@74a+8ipXgTLEk9>|R_lfB^1Z@HRxLE>dpESUP;4+a<+6a40k<=U{Cs+;4= zH^Ra1AM9Dcr=>o{L zM}(&ofM=?1xxmteM?1Z^Fr^H=Re5!U$OW@LAxTa< z=u2p^s?6}as#I$}+;jrI3X$r_oZ}tVk=EU^JUyaO=dr;SD81>y`(3d`HTt^}DfX~T zDp9(jXt1PIk&YU_)Dv5)X#NGNl^W7Swp{z5<%jr|v?x(sL7_0`&nvA}&*Ai-A>Vw# zkR);R?}1~4{v;<~lq|5MM-~7zSQ6=SfIL?5Yr^)V@)gGG8~@QY!O8G5#un7S`iA(BYrRQYIPO7uq>u%3Z^hF z*K@}YDNNYNs1mnxj|obsFI_Q)^m*xc;qIDt8Xi_}V0f5?Jx8HXsNjf>#%dtKY&CfY zpZA4|6uZc#(%+-|R}kA`F0t8pk=4^vZs3xyc+8s|_lBx#ro6N>u!T)G^TyRP>FAB zW|BUFz!8*>fu>c~{)2@|f#uqpy*!iJ!;VV+o;7%u`=y7&=%N~#DWB|G{kP4u4zrBg z+mq0Ln#K$Q;MGb!KA<4ShdP%Nik<6|?);-MGKN`isafzoouzD9cY1`Ex^~BGy=W5B z?z#hNdN&i>zlyOuwd3(-Rv>SGK~(5-b*e`R0-L9AQ;@g(9M7kMo;&SXiJXk$2cuID z`!pa+ha8W}S1{;yT4AzT5e^6KHK1~I^!+2wV(z_>pM3Nn$_Jl=8H1m=OG(+oyGSCx zP3&&OZ}P;bF|T|<#?IS9G-e@~QlGWAV}Ad|{;_?RFn}PnlfOPbF7b{Gh@zxHc0og+ z18k58NDgVww;PvUynU6wKb|CGcMLdGq;}-L)kTTobKC;f{j` zgHK*UKqPPlPtc%THpw?DW*adwRvwNt@4Djr`V1sy?4Evw#QRx9{|sw|eue^KlKBWz z-49c)3u5qTvMtGTr|O3QQhwVj-}M;@%uODh@g^kcm4TgU=r@&(C18U~XMQ6l#M6ar z_S>59RAA?MvL6Y*m;z|Bvfhuewi<5SPT#K|Ki`V4m53d{_-+M1OFJ8MF+c=vPc*?9 zc%_hYtXMn#L>2m!ZhZCwp9z-fj1g8&VL0NP`~;7ml%75>kFg#wIhQPdV4fHOaSEa7 zim|x(&+M0(&LhDEs-uO-`iWKuEiAWWb`e-7qtA=uU8r`}+za3XEtD#YB@B4=LMD|W zL!18Nse-Nd+4mOrCn64AL1g&(xN{q_Yf?ub3P)izjhHPm(bWFJFfa>0YgH5yN*~!Q?g*M-CPb z15suXswdwAaV;`*PmEE_aveAit-|#Q$h6cZXBI@1wxtQJxQa#tM1A2rtW%B3vN2qa z^pYFekzF)G)gKG%*Dse@kZ{TlrxI&hzf}-2st0e)2*YrmL&=M{TQWHcJ5Kmbvm4mU zBaR8=JxW7`)%`w=D{`RBBtd%?*SAlt-dJ-GZ!ME@-Sa2AXjaRn&2O_;xbQvdC~`Gr z7b(`QRTXZ=Ygj%5`tGRMJ^w&{&~S|XeHPFyrAVv{#z+h0d?w+?_i|J*aw;U?+HHo} z3N1C@xdFG`pDAB&FRowHzdJV}a!mhLzHQOCJ{fnEgGRb#&a+~;~N?MN$K(^x@m{r-MH0kEBSERR(z!9GxSY>APBa`3d z;p8<~&Ku(g(3bZ28^VOfbz#iYVU|Iyl^v(5?f=}y`mFFZ|5c(7_cEuMO={bcHSgA7 zi9#+;enq!};%*nQ?nJUOf#iKrV5*SNP65dbyvy9@2^ZF47tHx1juNr$G~T9%$Z8=o<0zzv%TUH$#da?F!1A{04AjM9+OtblHT0$u9j=?Y4H5H+u zmMBT<@Wp{`6C^0~4bk20A@AMI4U zDdjO7_)``WwR=Xb{q|o+4w%d!9AjVnuMz$xi~aHBE>XjGbikQrSq!`#J2x4r0Jm#M z+mr@|qq(IcLzt_GFO*pbJZ|7bntW0ITJ2B;swJnWafYA+WCs3j|99>o`&sq{Q_!>Q!e^D;i4u>Ke7j}v788S8QoXXHt1umWeeAk;Ft2d|pY(p7|EV=$$+Tp?l&#EA%U>GE z7wuDQy{kovKoIXcJ+f?QeW(r=&xnH!5C3Ew^Flsj z?s`!-NAzj&xJi35NIHTL^XIK38pOi|Kf-v`@H%%zg;vZUt(n67fN2ItwTCOrisgM< zg*c{rGSVv-AL_=>0YK8hZm$wJpGa(xWxz(F6Gu@RJvm`FBRHOvVmDsj-6A~--+g2c zJ_1IbHD@4p?e7ON%xq30FMVq|mR&&TJ_nj#2DqQUmv9>70Yja$*peTkk+ExEAgS;- zsV*$RN6n0p&J_JlxLFWOV|%e z@+(Mex$M3L`wm_k!nVR+rww3%#}f8qi)ZdM>i;UlBDT->U=8}`ei6|9F%2*v1p=oj zQn$I-L(`cgG@vhTY0or(8^6gub7QH@wP$yT6Mb~G^O<=~#v0o^^2VyY{I zH)+=F)#lZjyelr?Rgu3xeWendNdW1L}WNebs;Sqru1g6rJqW1`HikGSuSPirY7 zQazJgHYTYWecJ}AUU>M?KN$8C5J}el0Bd7~0CLs(xuP%ca9^}1qciEnLBJX%rs)M9 zxZwq~q7YfzzaNtb#`~w4bi_g7)v)$}?|jQxlB}eo7Dx#3KouBWnSD(D&mr~3Vjai@ zEqJ@#c-28HPv39I0#}~`qXd*DgJ+&m_|fA(mE|OD{?vnVOhy}v25Ci%ov2EWd#Jh7 z0ghVF6KndfIxJK_uBc(QcFrfckj6Zy?(!j$tawlc9+9^uk;qyN zev6#u8I$Xp4pa8`wkT!z@mfJg^5=o!@$cFux$kKli)-=-C6=@6uC|-|oSJq8ihBxy zD`mmifB@;cxBbe}98KMrx7(@I0rq3CC+9aBGE0q^%h;`QhLcGIQOtN*K@|g5NdSEi znbGpaNfYfJwPWwddmk5UICmBK_8M6cEmvLCWfrB+lnQ2b;u&#cKMlgQ4I+(r^0B=z&F5LMpG&i0Y6fZ*L*`ONrxrAmQ!f!0J!ARc_`W`oGB7RBw*|4HJ90w|g?* zzGbOhFQjOb6OZj7F_yOj_zhcnJwLq6XF4T?_8z~)1uAt8w)yLj*RlSS&lFk32Mp#; zOd```z#2I4-TNixui+r`8}trpo^L|$hj8p3Rrot4!*&-Y`A8m{Yy$e&MV(`42ue`p z=OV3x^yWRcvRB>#3Tj(OtEMi{l(%Ij$8u?J1GJ@oOt3kDIk#}=A*IUIJj5?=<$xnbj%sKOY2B`^u1^8h+j{wS-7+s;3u3{-~KHBjQu7!z= z_jmf0%HG?-%_HBPRm9gRF&fj>E9WLe;M1WQhPki4Q9!|OK35>V5t&%Mk_)28X9-On z2FT^oc8|9*Hu4tefSP0+-xPk+##vHmvnAGPfx$o681-n8B9o#T0U@@NIVHdM@%tI^ zejLU9(7znC^hLpOxDHc9^Tu zLPE+FwX`ryBYvYyX=d(R|D+|HIKjTUt6dJN;HC_|Es1x-wNp18dtqvq9R+~53c0ah0;TlIxf5a zrFqfB`)lAuwKsZ)-iefW<#5tBcLCJ6mg2l1y1aI8C$(T%=>^9nvW?yXB$mb3$N z@AF~kN@Hq`yKC2HHQ9kS?B*bASYm()P@%Yh!&$Ow((AF{SV6C@t1 z`I-KJHXo%loTu2k18g2S4HdEwo7H&q7ykMrIk|s7ytO6aVpj?JcUA8`vStkoQJHkW zKU@nq0q5QLMjqBtxz68yvuz~om((N2$gJfFK&q@WzMh~ zqd7OA^YP+N5evpfWj!p(JLM$ z;Pr{st;PGXHu{zYJ`(H*L%hWx)?L;MX^$9@>`Q7>B8*LVSBUbpZ(799Cq+MQ>PJym z0%15PX{wReR~ z98sFc9=#Z8z8T59X^1$ev;RVb;DU6@&z@mrKAd?xEB$+q`Flp_S|qvrp7MDEM7f}C zZ9QlhJW@Fl?LTKH*~fT(*aCg5=Z<^{pHL2rx@f{Rde@I`IZsvSPi~kFO5+HVov02m z-|GaCt=~cMDZ{*>P!7Z3Ytk6X^a_NtksSnm`^Y7zQGb)0{_yDPO`^&rAEZSwk*8CI zMn12LW%~Vn^nQH(j9|3u`;+N0veU+J!{C`;7{5Eu-@IE3zm3@++G_wD_;jLZf`EuH zrejT-)=E4RzhF3NdLd)p{&wKIaTLaH_r?x}#rGCQzM1CCV7i_T44;+C(uVEh3zN8| z)ydoO+W zC@tmNMat1{9wQYOP!s?IlyR(Fz`6KJQTbTeSi8}3S~{c^8mG~Wj%jZ{%O)Xoz;?({ zQ~@c-a^g%H{?D}x^MKbR`G{uv$cJK-X#1a2l0U(xVNXN#y2vpKNzUS$-0GH@Qq4Fh z+-Xoym}7++E*m`+EBJ{uqa}ZSu*AKk;<#JAX9+U9a!=Q4CGG3i zxkF2VW#TC#`-l-aD|tK zS;{10TPgDirO&-$PFF>&$mIEs18PM1Et>T>SCvGM&Z~{pKzCTd^4yQ=M+@p1a`{1Y zh@v`<|3=lzppXOgrO*+)vfYoA;luvv;7bjYMlWJc7;a1P*M-5A@uOgprp_ApX%j3I zbM8rV7gV$8FgjaFejODIqo`zfVlLR6H%QPCf^arVp7?VMC5v$}D&Lkz0_7^*|1j6W zRVN}jS0E@B&^x;08pz|KI3s`_wJvPq4py<*rPX6DEw2LHaY^3&a9oW<+mk18n{EU{&^}foS2n2!mY_Im>Lu5N84u()`>wOi&WcLy zG1)ELHmF$Cnb3n>*$137+tbks4hx(T1pnd(_c_k^Il$&&NW9Nb);Qpf)ky1@U**&z z0#}+yAk+dtr5d^bRpJz!;d8^!D2pzqdRo%d&|@2ClV;B8Vue+SbtWdZ=mY2E5&bx- zy$e6N7Ra{ti^Lrn=_u-wY zzOuI8(9~#%7x^~mTHZ!F>Z-eur-^PUAz9?B7cC03T2$ol5?L;#FEoIQhXhpAJ}Y!L zLEC`~Jt~NU^SP&?&!9T$(Advk-5Xum1+Gh?hKWJQm3Lduwh5}bITQ_YkxE*Q?#5|# zvzJ?uWvVJu{d9)wLMLY*#$}c?6Ihk?2|IfJ z@&Kh=M0u!z~{9kC_&64Nr7xN)a-fJ4>m@tZjr5g}*C!mm9;Y zG5rnoe?|V^%m43T|9?^Yf8E<*Vtd&iFkAX4iQ=P3*V2cJ4fF#xAyv4R)+cv%-8z4J>@G1HhKXc8$tOyZQXC94gNDv z9tJVI3kC8xpTqFiF6L7nzF+M0VMnmZY@aaEhh3GSp6!ayyz_S8-}Sd5@5#)YHQr)C zj=S%%rj5QZ=kX9(5v&ZNaS*@_Lb~_w&L=3D5D@qg$-Z~?ZN~0@af96;u)f0Y%JyA_ zJ3h9!R0sd+FOmEX573hIH*W0Q|faVX#0R(090b~%y;?a zn~?fDTVn|+W?NUT-#}mK;j36tY(&ZR3diP&!bV()*FQP}Z|#vUgRcS3?}`FH!=K4) z-d9)Sb_5HT1z}_I?ROx$qJCLDu!DpMg#FFNj@hd^3LTn2UXyTxVALhC+f6+|65et% zrlt$h`@o7c2EmKHX4aUWH^9IViuITP7AYIRm(o#$=Ocrc|+ig2s%43khEQUk46S^5*tr%W% zp7~61rtBgpS0gw>iqj~zNX_uDxk9u;dd!4RolH1DgHlk}cll$lID7Ib?W=UKC+05B z>zn4fBKPUG-F`@J5bR@b6V0j6Tm^s=>%A@4J%SU4^4giMMf3ngl5$Pm_4Fm1Oav8G zm1fjyBy_~?smAR|WYR5R4)r(|O8*$nI%o&^1Wqm5hNK2vK0wf*9>^E)b2;oL+7pMC zHRDU?cPDiG%l}ObhwcrXe+Kg_Hf);D!MsbH2YriUqTHWuZkTgx6oxeJ+DMCQ?n+uU za;+o;&D_YnIN<}5`?~M@iBWwW)R;BpE++?TnWn&t9_kXC zr_F$)DPD{y6@hRNLzV|!Oz_l?r0VsopNVc7{mY%u6GKd3GC-@AP)>&;*$1b&%^mJM z-*QB-Xn_91aBRWlV`VQx#e7IbfADA~$pu!WW^AcsPdlTb=LQ)AXy1M1C2~ zHig!la0DOW4?1yZexB}J&ypYur+##!8foJtGrJZcGk?3LF%w|PUCk|Fl|dUk)>Xn#GB%L1iI~xrZB^+#gNCYFuz0~hHnXZjet&!87M5om zgRlhn4M}m7nM`VSQsR%xzEe@9?l@3~uz}=|v%n4MK!^EeDtld=WJ*Q3Q)a1LozVw7 zkb8?6vVbv+y4259@{Rs<*v4;NzOECmr^;^)MT>sJ^rclHLN*aWVIOnk`5-H$9tEXG zsEpyvVvA``TajA7pzQ)IQg8_g&Ii`e^Ryp;E;TujL@|isTWH<;Ur1VyP$gtXp~^A0 zWr`C4mog)>d$1uVn~-USRrT#Mih zmTu|o4wQK5|94&zk`;EbKM;kr8^RH()YCQie86CO;`(IitQcxid$%9U3+o zkc;CDwh(ttcA`@WFgzw>?LKu{r7`BRD)mh0Z4Yo^W)RAM1rjbtO9uJn>HK{C!M-Wo z=d62|1pIdkp&zGaPq!E#m3oOGd;3OaGq{`|^BNiD{(>yJ+jNVWS0_AXG*AD8?6Xp% zBQ{qfuEpamK0j7hE=Bd;Y8DpA2O~>Vkq4Go^)e`VR8%u&L5T6U0><&eG5ay;0;~|p zK?qZRa*7cflM%Aq1PYam!v9}{y>oCSQUC56+nH!$+qP}n6WdP5#v~I>j7c)FZQGvM zwte!xzjLb2t-5vZU){C3*XnPts@;3{+RyWOT&}33TIuCpWTNe&NvmaG`C_l$Td1IC*_7_064COX4eZbw*>Z^7Tg94|6&Pjiitq z5IEDmF1@EV(_i?5MTbLy8|s{x=r_NdTW#IuiiJyI4Fi*cU5Kx_T(sMWQ7fw`fr^5R zuYdFK`GgwMx@(R{RYInCB8dr_;9%sm=~Ufaz>aZ&`juB{%|7ZMPujzH5bS64aTjgw zu|*|yoIl-Fg=mAvJOUhNzAq=NPNgN)b)w=9F68!sJD_9cM}a)rL*qh-K!=r8OoG7? zUPgNM3%dvSLs}A3mvzn~4OD!&0-{_rzqhRF`Dms~>)AE)a-_23iG=WhLRQ_)yseyE zsBpgk9B}uthHn!>mU+L$rMsJE`kPWkIDToEIA`UBR&?&3qB*wIE7eA|-$ym?ZZ-U} ze|yNyY+;=mjcgVs_iBzRuKTwrbQK-)j=oIu{M-joyLnRnAL9dhB#nl*^M2Cb29-~H zb#X;K8bml-sr{clt9H?=K@>qYgWnY}>LfdWB~KsS7gi3MW<6sgZBwWQX+~j^da(Wp z5AS^{6Saz$b&0KM+y&Bw-n?0ga{`z1I_?dRC%5 z=1#N9x2*<$798Ex9!~Iu{XG}5`pp3tP(JCTs7S04l}&T3<62#TILY{T;C3Q!@Poy@Hut(t#i1 z{K*&xPK1DLknlCOA@}#|PWzF%`dw6g^jNqXqQ z&psl~9)AM)DcusPIC&-;tKE~MDcoajgc%X|o?y_JjK7fR(oEAkokhwFWW4}jKRh5p zUXBirhX_77FpIddNDue7;fWiK4Mn0eF1@3Iejm*|CqTp*3~m*b$~6pJLJ%|*)4D#Q zzOxZsX&8iXDZs&X^!&)I_F5DrAP#E99@jn0s^Z-b2#{9mB=wU5Z<_a&cc(!tr&%CB znQOC3cBw99aG=KiT9G{V{-yyyuG8_Fx-_%@II2PGAG){KBIWgLC>${M8Ax4F__rK~ zeOMEg*Uvq??&8Bc%({NvFZ?&Hy(oYMU3c`Y`H;)4C6 z+n{j_oXmNU*vzSy={iS<_(t#@0gnjqRu(L4`>g8$+$l5o%tqp^&;AN{+5EWK{CH;kd^7wQ`g~Ueo;QKdTf>i2L4XT#^SpT*OP&p| z%jq5`bo6*`sr`(A9=YT={ru-o`QekQuF)Jvc5?Hr+Bs^il z_OeFihcyhv(`9&(m`}xQ%`B9WWb)gBe6YCn4;^Go)AfkyzQwP*K8oYjUstRc$a*qN6wQd);L1fUN7B*WI!}-A+#M3h?)@AW48yHW~rR2`GD(}7gq1E@#+%}%9 zrH`K%rCj_UDNdeXZXFN*AVwz2Z?H1$!nzE`EFgh#&p!9o_0@ro`2%>(*+quxuOB1s z9m(M>+IK&A$AhfBi-?_vQ!<(jD3o$Ou_`&%8`bIz#bH`wepT zW|V*kSmI4RmS8NK+R(K?W52L%)yEweDC4tv|E`wPKpesN!xa)L$}@{!FT zB%6%fwXA~QR)T)_R9TpA45r1dqF)K)&>;k1uB!Wzjy3DR#$ap7uR@!RZim?gE{n{y zd8Vx6QeXKXAtP9poYU+sDJlxjzL zW>gpU*Amhf8yiuoUdpT8&Zz?ky&DtB+8L5gr4z6<2Se#5(nBrl!R*5LDp zNwf-)GJ+L}U0%Z<^oa_*xj*}S-;2Io3;ysDsAhbzBDO&5{7Z*wPvDC z3N=Lr3~87hwzCItb}Nt-Bg|LJfw|1k4rBUkuJN*?YD(6Q9#gA&2yy`rhx-MlxHhuv zWd#b7HTK{1>c_3GH-wtnq4>ao6|G&fa`cJq?W)PFi6^t+C1l}0W+&3nuJCjWG3$Nu z(hVs^{71FPu+dX-w3L^N!~8>fpfUlb&25J05+c(H7UwEbEO~!1Vh|VTOc6`zG}*oa zsXPpv7LkANT-|k6mE`yKrOAa@Q{Ew~6ubObA&7E8|Ni!JH_d1xU>UFuxSH^<%D)C4 zw#g)vX>i>_Dk*M_%wwkhkvEdX9Bhan^eGy|fY|mc;2mY_ooJsPR`N&v;b()eQO7%~ z##E)=1j3yRIi^0JVqjFpl29w5l0kc4aY3cpvyYPcuc6ScXTM>CED^(02)V(IhVxm& zBdKJo&myi=tVPYnIwt))Fn|VwdrB~vLj6D8{@+!U4sMda;r!#V+b#an-<`fy%j8Yn zeQxSM7wRW!8eK8_p2z5QW9unj1fCYO`^<^$ zB~bQN`t)I4pe@Z%835h&KXSx#O@+iwf7L2za2-$%F4{J*UTd_VXX#t!VY(tt= z1i$WAZ+Q=%ATB#6@y%$S@(8Re@6Z-G<8Hv(B~RwAj=!p-Uu++B3B9J&dRpIIkDh8S zaQrHZ*GDf39C5rjD5p{CS;iwNRW_w%%V&xH_9@%+3Yf2o>j57#`Hd*gLpUQGkQfk#fs%^TC(u@w;jWzTJdc|vMKrTpsTU)zSoD%@fh4p6if3IJ_S&EZ zEbD_oZOhnqav)}W)H|oYfStP$&nll!`pFI^E}z)1%*Tvo99)@Q=m7`Pme15zhwdm4 zSG`GQ;P2%EIg?09z^Vf%9@4=8?p2H7TWrBr*GJK#1@uGV<%3;EGa-fzxmIS8KVCV8 zI4 zoKGgf$M{IypDZjLC9*tI^+LJxLcH@b!w2F4+&O(22@YQVd9NVn;5!>=kB@inmo*uj z*_sz;6al8fOoL7%$U>9Hcr0LfD;Q5aQyP1vBOVbaV`y_w zzv1G#__N;)tUvG4kV@fE=DzfbxkccVyMO-@1pHKvZEby7^i~Ji^SI=d2FD?&KFFB> z_JRLPrl?)6nOb~Iy&PQjB~$bU1>^g<=V`X#@?^>5f&(J-bJRDWOyRIv5JmGH6rspwt|$-3APWP_FhKL3b4&f*T~~Xm#Q(&5 zNy;qC9hMube98@OjMMKJ@LB>1lJy1P`Y|!RGtN?@aEwJQ&E;{Nzt~!wDAA`>OI3~3 zwT@8KE`BCcS;%`E6JGWdMX#7;%EaBssU22{)%!5psHW01+Dln;_SP83V1Yk8Y@l+b zA!MtZ_`$tlxZA~iMXczOciG@(!CQRO651g)bI`Ra_-TGhMHKo13FS1@=1I2EUBl$DiALf><9|m>NWhv!KzvPN>L*Gk+j3+n*G|K7hIcOh> zm1|hmNhcNJ9B4Gu>LIU6c`&{l3Gmo&YLLJ5ym^BH8t-Y6`^7u%;T?-RJoH5VkPTzn zTkt@ag8l>h9aV}6G?OtcPELHZmE0BKNkEJz9m?S$88l#BEST&CX}rd5+|4TR+baRAX8YYZ>KrRV;R|TYk9% z*IT*ELO_D;*Vw{YpqhesB-=0kSiun3n-)?%D4PwGSnf1L9#F9v=}z54y_y`3wP8dI zt=H&zh5!}Mv=;G`vBA?A$^YZXQb5{h4nCa-{WhzMt2%~_tSme7oCSlNYbDA>NJ zWhS~I$TlejEbEuG3{_F*4zw?R6;kwGVVG=<;TOx@x7OU_j}^p28KObKgr14DRLKp7 z)~Yd?Jc!smHdjZvk|OV|a-6CMj`x+0KMr{%Ys#JJ>xWgQvW%5GfIaonv)qU!NvLjn zIxW{ya;|K!UOH7fc>NpMFlD^L?)ouOrs!Cm@p@th46(lWXPa@)kl3nP%5za^G5qq} zNUn5Q{TtJrs`KOQ;&EN3Qzg8*TBZKfY1yz!vn_uro&d{DsKOXIRrFXo5J#R=EZv)O z9j^jzYopQ&0Xgax)GD-XSA?re`wO?h4eFcPL{%|qqTARQg}%WEz2yYSNerj*qEfvy zYz#RCIMZ37QXi3QZTGonz%cwou7D~DLE?1NCP4ltzusU=DyC&AN)ot7lL=?rE~LNA z2V&?-O&xWYrbcoedf4(vq94_12tAfov&(^^ZbY*#5a&s9M$lJtZi)&a@UO$Ww{fMk zpfmSW4RBc`n_HXV?SDsrIeyUS%es@HOQo!z9!Aa#8t^vyFn z8_Y2N7?baWXF^~;owq8#FG_kr3C&X4zYMm{_DpXllhVX$T2HW7R?y*7XzcusKu}2t zWQ_J{{78ZM3Y{4r@~yXu8xnQnv22+o_3@7sv_0LEmFmsYTCZ&qpQgA==rOVyYG^Si zdUCX6!j&iyY$M$Z;{w82utCp>$5im6{xqC6pd2u8LCl zzff#WEeF7he%p+>7YkshOT(Aw+H7#ly9dtyksVlQKV8S=*qw13x-L`D6y~x6s4dLI zYex6!C`BFi)ou0HpnvFU4mlo+`^;!;Xy>UJS3I2M?`;Py)#TOjVbap z^4rMQlKBw)Nnu!B-*Uz~9{M(1Q4wwu8(wZoB6=~9At^<3xKFIgG4j60L}$P9az3qZ zp~{(9)mye!?$Ke8fhDYcZb^^^q^-z0C=ttOFEd3VD@bPRY>M8>OyDR))AI2+kipS^ zkxI$vkQ~zMX%ehLIES}OeAmzg+||71I4n0ZvhmcP9Pi@1vcDqjCF>}iGa#9WbopAu z{U)ibE8ihhO3PXvZ@htb&m;$TZi9Fh!U{VH(GstaTJIeF!urDnje|`f$L}m#^7`%a zNBr&ADkGQ?4cEQFpt|pR(s|2zmQXRIqAB8T%OLNkg`@cO4>`Xit+g(J*ekqWA(!o3 z&vMJBb*aA+aaPfPz6EM9@@i!1J$$(rI5&L{wNZ)ANiY0I6BeIIkMCApcLMx2DDvbk0fO#Ebyk$ zc^Dn~pn1g~sEaH+hwzT>`^L47gii@dDUca*8OrbfL+?G?>K?t&MuNwXI9_nQ7Qm`g zrA_bty__YXzP9V4^iG)%1Rp(T9Tf>`7YNd~Z)$t0-brF^oK*p5K2($v?=qdD+{(6% z$6lNLxNM0Lf-Dl34kHBXDDy}kn5x-08}%W#)xjdm%*^E64)Da37#Ya$KOfAj-5}wm z&nPBbBg=+~pcF%5*0h;C9qn{smjA%)P&0jNyg(CV=G1dZ{%hWyDi>hk55vfWaS_v4!Z?=2Q%%OdROWL?>Ru6_u~(f6q!y{6|0^!81gmFr@owBErSwymG^BU5qfh zTLukMPM4yeA@GO3DHtwiia(eK)Zu$Lj&vD+YY;(vZ0a>#aE{X5AV?TV`(Un!wYf7*-cvAs;`Hz|#v|6)QL=9FgTpgd0jb-WQg(zttou*?@O>Xtb84h;K`r}ttj4r2$2RGh07 z)ZHKq9>}IWo}&$Pv|*G9Scd3ycc-hs#t-SP9M%xb*u02bdrj1$qj?Il=6X0oQIuXz zOIA)mHI;yG`**c3oCw{t3><(mS{i+>s+VqSx9=7It5F$}-n8%wd$R29kkEoZ`!lOP zt1LX2(%YbZU-K5`^xmzhYmLevwC|1?bsABqIX@mC7K}!q&V00E>?~y14JU?Cl>s^oROh5SJDGeK3sFx1!K$-dI~= zVlw<_+J${DQI2N~#$}b{esnpEzmBDRvgfkN==(0`w%R!u@rNb3YT8W@9a3`b$y(5BxmsiuM-=FZl@nB@G{4fj;@9Z<(2ow2YPz8ni z!@_;Bd*KOQ$f;aup6ES~Qgf%jU{qT`o{@q8eCQ-(7bx;O+E>pvOujo=rK2w~=hZZ$ zaNZZVszaeN=$&2yh%rsy%mQ*V9wN zc`0qM#X%#=Af87-*qk4@o|Yd11TPml=KY$2|GAN<=lAPr!bss442jw*dCs?l(+6R` z1*)HK%=QIc=*Vt5`-I8q()kcfzR$*Vebn7~Z>Gb)yTI`vTaiORydFupZ*hB+Q~JAu z42wgd*GMx#m4S7b7j%3-aD03VP{{7oHURvQM=3ep6m1EV{XinaOZdAH z?`dmOF{+7F+nfzCI+jOnngFp$V?z4LH}G)s+slS4R?0wm-m{;o^?BIuE7P|M%{+5 z`+E7qYV79xdi`in7#NvPdjK98+bfs) z(l6QxM=K_}I_??av`Z@n{=l9$_G)BZy=fYr?yiV3l*nDhp@tJo4*|X*+e8OKuG`ZS(q1 zUBH8-vgwruvwxf~m`=oMlw{sA*`kU)kV0MoE!d3*)5NeSD5UW(34!}>o?Th zC&3M_a%GGtD7{macAP$0(Za&AVe!om1lY7mZIMfSsu(EJH0jxaZ!m$c`E|eBfK8CW z-jbz>gWlf%57pKLo<$KF5nQ^xl_s=T_lS5F#Vz>U3r!5}U#twKCI1h1=d~(VE?s4} z%C=HmZZFtbLge^o_r-<*aEv|VK1Sz>k;Y{=tIz{SIK=@2ZQG{F$at-#hQ*Nq44`rE zc#%LzF`$GRz5wCXohFzFm;Kr%H!`Pjn<|Eo{hBv7vP(YQv-1aDIi1ie$X261qeX;} z7-ms77mT{=D1HC+*1}ajy^0 zV9y7Grd0Nit@GsM7#Z$lv+|GPHt9<)De*R)a#g#?^Z1I!-nthwxHdOZ4tdY$b$^<_ zbR4g}Y|cV=WwrV{8eG1;0qcI%eK+>~6(A9nI$A7!<8iXD7Mhu^Ke=5dXG(3YXkN9?c^?W+E?{m3EjR$wse=?JQ zQ&URPJGf2v1T>%i(q1Eo`3v!8!F9%%`h#KmKYBjyu%>&O79fop3o@`{=qa?mbZMYZ zx%pAdsrInp@zxAPr%v&8TFAGf@Y-ehc%}!3MybC z;QO#=zXo1)H!mSXKK2U0CcdI3b3hT=VxpeDz11Sx19p0lLcy>i;~<eXi9nEN5OBUWdsbRP|S@}bbI6FGE z1US&GfhIHl4JMhZtEEu@Wx{I-)7VSyc|wHR08;ezCl$MCw7RdI|9Rg#)IAqIuBO#K zjgd!>@jneJkb*V{Mm$4o{C+=EV48q}jKR$|2R9o!f9d$Sl#}jRO`gMcx9efzPUnX@ zPdazkE_G?4{!ym|WQV1aQ?Ls}KznL?jzW5t2`%#R!svayZ*U-4hS8;Uar-+F#GIs- z0w6T*j+tPkE>5E~ApRd=nt@gPo-Xsv@ijFCJMaJ7^qZ=D|FQTg$bP-+?(Y#6XgDc4 zM=cG(-QMXT(*yCQF-Yl{-TJ8kibZI&dUYuHzTfp`_&=WI0CyG8hu!O}&-wTR;m;C@ zK#$=!hBTUKKJObuFwk~YsY}2i8<}doitT#0@^kg-jGjk&S2_J9*}Edv!XoA9*Cv&K zAD;zx?NJrsb8KAkmlD_T9n|&ur~mZ4IhiG$x&OLn!8Lc9n~=eeP`Rh&Dob*&6U*bv4SR(v4R+ZyL*^s#GFkk*#b-YR1T;FdQZ4vrn3|wv?;H*HIC1m116ko_y zI1OBk*;JAC&Jua)bP$i-_j~+d?lIAvp1M&LY@_eG^L90dGLuju@5VXG(WLpC1af~a z;&5QIe$g&#dMxhxs}H}_Z2SRD6ToTTqU)2S~jl#>gM)n z_}6Ap?WO!2-*7Ff(axs8geHmgFm^t=gf2NFce9|mSdbOiut6h{Qr&LI-5oexlv0o9 z@MGU`?ulzc;c&r{|HL)mhO>eNeijcD&&-xbMW$zwZc%i1^$`7^ZyGiD{AS}nFaslt3VlpH~A8WTPDZZkc7v-h+=|4 z4+;GvXiVt4z*Ml_vHNzSS2lFWFPYOX3?qKz$aSM-OUH-4=b=bSb|Vj4(l6u9)>zFT z?)95Q)H9!eu9ON0Pa8oqGaJ!GQ7dWY`VLngt3p!F&$g8h8?gIivSBkJl9nlLfpU8^ zHW1WMUg6gd7rZmSGsuXlgGQtxE;pX2Ai_Q0+vlJci^Cz2_M0Wf@f(>aemO3RWfXB%b zl%(=x%)yIArNXYc=k~rj0?&$iB7XFZvm!e!zGZe1Z*N+24eyOYtL?pwEedi6lM|%@Rbi@lmVF(QD~fI?;douy zflND>?mWb_xxo~IcX22BMaYtv(rUg|j|gmp9^PD99SvHw7<~GWv{%TV<3&N7aVqB$ zkyhGB@6agHlDLhxNsYFFc%QzjGcQ5AQ)rS*(v`A+O{T2|s`)wiv6O+jC8Hsp2KTYO z_~xls$m=h=ML)x=75s-`WcKfo9{$o?%-mA+WCWKPZubGp@7FPdB$5B(tZ?d$3;Vaz zWUz+1tUvHoS4>3=&G}i{-@HwZQn~WxXyU{FS>(M*qKtD|?;T2eDN=os|M!S$&tvF~ zAwUx5ABoO`;cNK+Xg6~4Pr-hXw%-0F@%7c!sq`V+Kh5a$^$YwGe!oi$;T?_g>n-B{ zvw6xzsaiGc#3jGdTJ0YQ0M&?}bhpNv;)r`oy7XYnD2=C{NDRoMnBpGAo9y^mmJTK7T& zG$Ze*p6>z60*yx5yR4L4M;7x_igBb5HI}%2{)HRpcIaIsRqU&C;Z;;|yCo;cf&aHY z_H$`7@i^_QL)IfZeZmmBho8cts!)iO86B8?T?pJ&B6~pjAX4F6&|##4%&Tnd>e>ID zhVA&2fVAQh)FcZQO_m&bj;o&Y`UUBHFkq)s94hQ|`b#S8a){X<2BMd#YtQ~`w&ItO z<130;V7~WeQXL<<4zBm);Auyxn7QSlAGtP7ZkwIP7x(N2AKq9Fh*3@dXB_A_F$s`& ztqz}Sv~#@F@{TIZuc6hhpRbd%=@*qI2FxAGj@EO@YmOK%^~F0^Ve|P9q+AcqG9*bg zZ$K*d-`hJ4uESu#nR$(lC#mmpJ8tHNC2xFyK1Pr|ohtv*5FIy;5 z#T`(k)b=FP7q{zOc8<8OP5fz1xB-S8V8C}z)qPBv_uS`uC8>)t@Cjwag6Uv%@-!(U z_Zd(34J>|P0QTRrQ^=3~o%4F~+HWu7{^Ie@eVk>$78B(hS6{A3?%M|2X@1%&|L=j365iUa2k;6Q<&2 zkwZ^YBS|Z(xs@V4wahXH6MAiwJIg^hGZLQXGmr@3Bj`+gyk0G9fd|$;3RZN8Ms%ZY zpDLw>H-^mC4%-O5xd)0Sjnhr(#JuT@_Mx(S6A-^h4bR*6dx&VJ5s(YzJ%fiXRXG7}M(LhzYK9yi(?fBex9D}$1i81%z7 z-f_Y-tl|96o;ha=7%&5^(3VB+7M`wwsCLlk1-A#Ul0z#yGYMn!LIOzbYW+dR%^9fm zN)Cs~v&`$u3nTbDdHJ5`u@`)i-LwdW`-GklOEl{4<%$HygXccE42h zZ+kiHM+XbF7W?s7Wpc;LK9MFU&+4nSpFYK108YOSw(n5Ypl9yThMYqS&CM>+q*S`q(a$@-ItGvWwZ+L!WZ}F05Zhei< zJO2Loq{l#!F=CLH4!z z!)(e!3Ld&xg?wJMUi>zM@$c*`c~>|aAjGBahyDKQ1mg!}hNMGA9&f^YQ^A&vA!gs4 zJOp<>V#bD+`r8%smAi-V6i=e`Myd3a67q6S_g2H#`6U_S$A^#vxmxJCYB=20WEvB6 zlEe4PHr>u~?Pv$S6sZd|ic_|WHlUe@(ePUdeAnMCSa#>4Bk|y+QWeEE68w0378I+B zH(%_`{o|)TX<7-mh~MsAJBksmB8wlxu)p^K;+x=bo0KP@2lqpA9oKyKkBI0OPahXH zb9QHQh`*k_iZ(Ksj7^-BH@dn*#N6g;C0#SBXhT7QvHJiI)bBG(3lBYpY&3?llooEF z9C5l7vV}}TRe$?u65iC zR3E4q8v#-4VvZc7Je*1`Uy2e3 zomI#V^1aYSaEKysL$P4?M86L)<@HKGdHqg&5X0F*_acpk_*vo zEs-B&1Ws(1+aNY1E&7iFFZUMumr~p#7+{V_%sJImg=RV3<`+Z#3~FO)%!DG^j=0Vj zCJI*JTBfeXofoj6!Z^&8GS~vl5FydldFi>LP}Ix(o3x#%#P6jV{uS74MhJ~ZUeu?H zxUB=A4(tf5b+ZxOu}kjTk&E+zg7Wl@6iD zS$wCMSerrkJAXv-Q2MK|*+^3AFVX5IhgOQI8yP{epMRF$~R6FnrWP80y# zZW;8v_TT0>nj!_Z;qL2Juh!jYnh%I3_ScizRzYEoKxTc5 zq0QsnJ$9M=PI3NZlqu0bQ(FoC6&rf_Q{1hfc7y1Xf^5d{)b!WkXjpz22jKx2t;WSR z1FCE#Xo%)kaj+EBW->gY?2z*QE*S5ZO4=Y_9xVi2ERco_YYP6sB4m9lLJfL<4<7QQ zeLF|lhEbM-G@K3pl!!O#q~3Jl821EtBUXS zGXL7^lKeKw+UG#?#Gmh&jRW|r_FSTd-i}{odYuhR&lgr52Ll+0|_rlGcq=Z<3C zI~fR-mhZl23&mU;;=)KNncv*Oru*qnmT{vcqHW$skQLo-7ft32KYZZVjG4gJ{64rm zsU(#fB2nd zQ0~*fR-YtfbCqQ6OA|aVv|2F9o?)xA1ugDE@X4A>0{3@R4fJKL2|*;EX1+Ivg0V6a z(l)2-ocAGo9k0pPONKSXh7pOZ;WrlFo}weXCaFHDeLip?KRVBFhSNX2@!S&mAG_Ky z1x%@USZQ;V7K^BWJ_FFwOUu-N#7MAMHm+I_-uRst+>z=nws5@-kMztb9{{G4XUO#( zMCM2cXojV;iNoqM46pi*-JcN+4Wm_|B_KffcaVRDmX$z;x^~Pony$6ZmjndjItgW? z^gPryrte;lT?-^t$+0ub(Qk_VJf|EJAUqboI4EQH?#Mx|_i2AuX5P*Td5wtj=^idldq)>T4e+d{~~XGT>v zkNJ|~$_XDP5fjtrhp{L>ktWT5b-Y*KmSTyg;Sl)84F|;OERwx_OhzSL9UO~@7%x;L)iWu^kN`}IgHVTVCtnN(Q8usnSv{lG{XrSG$e(8C$lSMxAl#>wsR}icv zQ2Ck<_nj;xLsi(u*)J=j`O+EtO ztHK0T5W`vJsSAhT57s|=(}Sd9@yFi@<+chU^t8xVoR!Ors2e-CLVQ*>yL-#Ro7M4U zRfC!hzDvS%4x_pI|K$(pd{{9fE>BV1258P=WjyRRFG!>3Q1+d`{x-Er;jvZW@2FTm z5D#&+x_YDJpyzt(drg-J2g2#hu|%>=4PeNn2Wj*j8_AcAuc27zdkqjH;k$J)jEV>A zl{H>tbFW;YYCFzln0S5PBXOz#J=i`rHku_J$>J%TVevIuvaE)la=zCl9Ro9u0i~WFV3_rT$PqQ)~yx?W9C(DR(KhWw((Phl?;d7TGy5BqsL0&~t|BH(Pdy`I2q zm%F3O(DU&A9VT(#t={S^Ebdh@(Tk6H-bM~&GidLsIyJ^1XWQS)w8JVSZpDIUM(6$A z9eT~;=SJN!)_!HBe1GWtBCIW}l8~Y?c#vQFz~scz6USCELhwz`Ai$Mio$$EEAPSJt<{yPB_IUN%I(=Lq&uPT9lE!SuW; zLI)S#q!_Q?im;N(PN}H3yTyloZ$JS&V$b)9yz~hv+pyDp$Rk`C_kr{;e$G8!KYq1r zC^P;5AtR>7mYUcj6vAezWKFGU^uI-ht0np;$O*Eb_JCaQo>E+K>6!rhgMtYTHK&C5 zg+IYoZn@PIi}Ci1ml(|Igt$X1s?ASagZJ8OZDGQpW%Hb67rvDo9*jw4V7(0gIuv=k z}3v~9jY#E_LB;;!v3V zaH<|$+cnPlmyh&cT$*Mx4LHfO0d#Q##uEtxZl3m9Ga$eR7lUEC%2WN?OPQ;W&MxvF zYPYL)5o+b}tF%V^TAZxjyGEf5Lg9a@YR$p|e%$HhZaQhfqm;6=`Hg=Lg*{HA9AJwY z$8Zx2m@y_p(Bzr?XqN3Nk!4$T?0V@vP6pJvXZ)|J?4nd6_;u}@%5FUOGw!Ny*DLvd zzYhScWl5k36oI1k-1!dkt2c7kuWA{(xMl|Z2zk1itfUobxlY&inF%pnX5;CBa#323 z^=7PXGCyC<=!EcbNLEOyKwY?z#KC!3wJQiYxEJvbwf)O4jgUKP`g=}#oOB+S(Lr;z z0|jX2wOcHR)i!#vyXi?>*rFlg9g#82F{Pyi-9#iKlE|GPqd4HAt<`H_R%R63qFlZL`|Ua zkrhh9-EsBHfOt65k^W8n=Ox!L9E7fcK@2a(wTfdoYn)wrk~*~cS?mTA6^($Mg(ICS z)+AdUgr|VO$J?Qm>lVeU0Jr(OiryCz6l!f1s~A%&mmh>6{OuL?Tg#^gr+NZZm#bo& z&sHt|+Ax+jC{q%^DGWB;h3a;vC7=NIBc%hvIgk^;COpcH=zr-ahfW%B2A?X^S6d1of%(g&uU2d8x#Rxq1& zoBX)kd-D?8tQE)iUV3`jBj8lO`HC=+bAH2hTg#-Wr-~;9L4GaJ3L@w-JhORI*(YN< zx}nNmO+6{}Rv7Z{5G;#K>!khZauOo}XQsx}1KtW1+=Z6-kBb}Dc!^-GIxVPt-ESNk z-nA9r9A;Zc$jQ5$cN~dmdnW-I8;zSsU?H=b764r$!KPRTE%dWeFEDZLY{QYn$REwLqEdSx=zwGcR>N;staMzb~%X5`EtZyhROH7Hq7XN zr0S75qIM;L7MYrg&bnNk3#6k?y-+jCiKaT3uBn%~b0359M|WCw+oGQ%kVN0fd0v$G z^_YVvM;$zH3r|5p%Mp(yjR_Ttl(a24Habr!pH*Jm|e3Q;6W#4{9xjMa~@$?S8QWKT8Vh&29Mh--#a zG7TCd4^$9Xrb1Yl;}9K}JFoILJL8+c`SbcTq?cE>wrsrVM}U6rXIsZ zf7iSgB3M#!$v;PA-(wM=2zB-*W_`F8nL!)Qc3(O#foWBtnh)VNcInm z@wW!7!`D0tc70c{oam4N=gT7zV@4mVx{X~g@gA}UBxn?tA9srkB;y-pRC&<8a+SSY zl)I^4colt!znR?M~sl7fH_feDUc0aLLdP55 zH@e$Iu_gyenRJNg2#=Td?jZkF2}59+n3f%95n8sMl?{yeuNUVcZ?qr(Eor)w0fJo{ zMPCQPYHRNij#`_Hi6b8jDQPps5n#n|jl=i*hKiudsVU5FR3h^IROx4(yQ=?x?uAK+ zMKsqtjyZbxubZZB#;NsvZgkM9-+vBG6ME#t2NiFcFHQ2!siwhkwqkZ=H+zLZGw|jO z(~_OLaBaebbv!Z+9oll5hN2?@x&Yy?Le-ay=cR|;~QP2_;qhDQz1*&z5DvWUbXpiDa1Ki09F^9?2sWg z#`TuIku59DiXr9Kgb1R$^mQsUKM(LyZc(J0z#MGGe=E3zkp8d<@$3V^#dnCKuv$H1 z5&SpZb(>9SNMB3w7pOEqrvp87>fHoE(4L5nVH;uAH*se^4ZwNVtfSpM#Ze+-RE_KI z?py1di1$Gr?P3Hlp=xsnQ~vx z_e^YYg{69AeE!9d-|9bPvWzKh9y-i@Q54*5FZRvU7W+69%t}8|>>6kE*U`@>dsohW zRPB94XNgjF0dB?-VimqWpyK-NyK!f4e<%bh*{fD(ap-@2G)4+R)tX6Byb0W=VM45# z_1$&bmbuUJH>4s;Z(73d{7*z!#W>ECKNEAkv<|_up*()KPrnPCMsqFj9(K<5iUhc4 zui`5ZWGkn_kzl=BV||0Cn@*Z^f1G}nxmeFUw7B=q1`@wx=sxlE{=Ps|O_dsCuhtb|?6HjGCFx8r|{H0s9C7wX4jNbK2iD{woH@aT4dVnVA zQ7p$4rP9epdd}1Oqfp<;=NVS2W?l8zopFbtl?`82>T38fk3QldDJSYuY&iTzZdz>P z)2XvQ48WVN<#WEBG*`Q}d-6J?-%Ue#z(72G-Xr$9I^^ayhR%Gbp=`BTpu$bbW?hA& z(^Do0l_rW%t$}UJkZ0qh+zeOS>fET2keCn!T5sAt=4-ufPz|Qx;GVynjxTUqZMpBb z4!c_kL{R=bMC?B;zIShuk$XGBfxZYrLc|Ly0NSWit+FU}HTx$9mz7d^<4lIRHOPbp zaQpukW$zfCS%K8j709Cz?ZYJd&YQ3vI{f&vxyR89H)NaZ{Au!!{G8`&UM~U+(?tS( z7I-?hi5Ti?8ep_n=NO9g=2-?VA0H7C2p1Iw!??lN3qJ0W8Ef9~T!~lPZSbhUCF74S zN9ZAes4KCH0D28;mCZaW8cgR(zLn>Iu+SFkIcTMBlL>ZFTb)`n(;^cdd>PWvXuAInCH~DuM80CUJl(B*Yp?qwHh}J>!}6p-o-a2v{Jfc$4%?P zMB%RfK2T6Pp}_&(CvXw?Zq_Is&XeU~w&mV&?Fm6n0HfAPXAf5+beMmIz{)WHkqkuy zySZc3vjwrMABMoOtOXNUJmH=h`v&Enp5w#I%RVW-opW5c;SI4`H$k^1&W+d91*jGw z*-k{V3iD>RtOrLn=Mhm%9lOlwy>PBUg-Uv|I*$#CP~brK<&Qq%BpXKK07Ns~9Nj~y z?E9uI04X~I*-B?k5kbPe4F|WE3tlXcR>S2oP4$nw%_0^Nh|?s5^0uf*YV!87j*!Qp ziv61ZFZD3Cwt~U984(t@C0pujW#SnVAT^yad8rRj_E-OFx^Nk0K1%2nEp~uZ&XW#I zCvXhwkJv)Pkc?g~muZr-SAS|H#adz-n5?ojAT9AvghUNUPvSJ|a=z7eXo$r>cf;s< zzcGxkvL|18OiZHEQSov&(JvC$OwrWo0&dQPe(SQZ!#dAjlLSJJcnfK;cK7x7@AHFB zc%)L&+J(7&N&YUaWC0<4ks)>3Bluy-9JMQ3N8t7UoVia_Zy@srfcXf82B;i2TlzCs#;|MYD(T8rHs6wDK7BT*Tv;6!L=1(Q@r~lA;|5VfV zxHlNb$FR5;(FcPWeTf)}UBy_P-v$c8FU;j8IVbNO zI@C7-koj4nh=*s#Z2@_ZRX3SCxsgblMKGuEqzBUo_Lw>C)B|G7*A4UkN&rIkO$)Re zU`l3~WvlDC#(ZT#qr0|sea)duMqbFcvQZ?p*cj=2q6jT)I$E_wQXz}D6yD6p?|XvL zi1C=E|Ak2sea?CKzc5K)TT?dli*f9tt&er``;W&+n3Tqj6W z=}yjJEtamGOT{e6@ZeH$ebZ5p0yP)}nm22itIX~k$SfTHi78eNTht$EfcR$3q(o%m zHP^aJ_}A4IvQC5!n{MwLAdD=Fg8$0Na8<|=Tqm)i9de>=N0DNRUhe>=fPO7xoPi^P zc$2<2# zQ+hTHG<0LGo zSEElQ^;LG!mmV76FKSuZ)=;z|!FD4Ha}H*A#JRi2;PwSw9^=}PS~E^)VIBp4rW%Ha zW1=mLgb+j=zaKxmQwQ=I+J0%xIT@{YE^6O%PTq!5Y``1tTfV|-B+^9~{1kCyW9hKn z8X}oz;44lL@` z65-pKHhQEwraaUR4pO3;62*O-z3cI639@cV4E?ncl}n9Kh%G z{kQ~fws`L}P1>-9%Vu_w8R*R)iHzUw;Tf;5JY}1fR8$(Uk-l0Nze>>%L>v3Oz##4F zgxc4M-JrK~A^Jo=8714kZemdtarNt1-d9E^XZ5|iBqsd?pZ)Z(H)0KPMvn&tpI;iQ zZjx$ZK=vQru&{lOM!htawv~cKwb2S6Z{hne*5UK2k7 zR;@DYMKER)#5-kFzjC451f&I0;uqrWly+WD`M=@6LW${6LGTlshdw4XY@Xn(lk<4f zK2Ob!*xW6W`>od`mg5LG05vP_bSnmnH zkpne+?0{8BsNYNht*3MaU#(Eobah6Wtj&Pi*TijSFtlLnYiH}SJV~j}`%B)zLop@7 z=d5E^Gh~@TKqlgU1L(#cJY^Y0fl`_QMrkc&rm%AH`FiLOWx#XBLcTJtl9Cdaxb`(u z6(3fq4)<|WXbo{$ia^%dWP>tzthT{drd*ptH^%LOa;dS}h&&DKN)_=3F^;J^V26Du zuz2kTObWXP=|5Sfh7a$h)2}&W32T)Zw)&f#4hGPAS%dWC06@1Zxmqyzv`CIH4&8_U z=u<$lotU^*F9!_?9Fue^_4=pjw}XWay$y(T5!xp3Gw@&WDOYSY|GH)?*|Z313Pw6V zqyk^pP30Lo6b40*y3z7eLS>e$i7L<~SY@clqcDWHe27Z9!uZp%P7nY9$+rx8=7A!M zk$3C~MY4Vk1Q29mv*PqU|Jz!(X}ahT$)%Y@29zDkq*m_@;W#S$=E*rabw1_g4ovPkrPa0Qm zFgupfMK>tcbavr7GnjV7v2ElwP4s-@7|?ESXc2dKaca$08VrscrJM(vKYJ7$_em7` zC^eG{2RLp%!-8>S(yT3Pxd+opiAd&1T-W{aSbIk5CY+fCg$WA2a3^>z&Vs3n!e=Z;YXAEaf%ra74|rH2rjXRCVaY>i;qB ze=R0_u=)RCh7&d?3pQ!F<@v8k{~t7PfI>9TP&f0}_yjX6;XN8ss{{2ej~3e>c_#m{ zT17sZJ~)xU9p90M&X%hnLxQUzcFoM=C%90Zd}S9slVoM(XFPkb0Yfi z_iYBpHnmyMQ%__;&5#<9uylGjgo&}+!2ahgr&v}HcTDxSf%ruQeT;;rf_z(wG=1U4 z`0&TqW~<%-dWenyiqJ=7$I&+vb|SwUtU+Y>a#jlXu^u6~{8wV7$A6?oz38gL%*n5k zN|@ZTWUDvmXmrI@hD1rZf_ThVylDBw{S7hSFdjpPvxwc@59*P3Lh`U^W{K zHP7AoOF$gXwyDZIT$BEz9D@FiMWaC#umLw}glB(+8ev8rMtI!jywD4;4TtYW8_!!p z?7Iq(k}@N?D+zZ^)&IRGZ-@l_?~M8QuRG~L*&HOuks;AFSf5ISuM4kmto)^i6&`6K zB9{wl%ano?+4f{K+UC;EoW3q}f~3mDK?6y(M||sL%*F^sPp`5!{q&(VO88o{m*IJ2 zhX7pWFFQ8D{V&6<_)c15m zi6SCe5NC4az(VH=)qBbA%Jt9M1nM&p;LNcjPm+er{U!RDu~bUdbZs=1+Ab!PoOn(7 z6ig4i+Mpm@hmy}T8lS-yQ5K(-cSYV~jPh7GN?UbpWlWmIQ{SvrYpk`TQQE~{1uP8Q z(UDhIV++&Zq=7X(j=6D(v^U#fTf?MjV-Y{J|Y;NMcJ z&?k4WO866K@D9g&c+9P@^3&7gx+H zJaDTD+^|fUT?t(996EV>h~c52_BYxp`p$D`ZSmMKtt{k73y0kKTPZJ~M*l=)TBJ2I z->_B_delH+RHJt!Ytcb|4t(ayFUtOBO6wknPYtQ}A z`+^31=Q>UGYtJlJjbDfkk0~Cmh4&u}QVSI%O`zFUB5_$F64l>%5u_EMHL!|&Lw$K< zg~X4q#jN~`_`bv~l`Z4y_mVYAq;5?pCRa_ap}w^e7v=)sdG1rYNYAiV#2 z#D&Ou_TO37$YeAfG3hz=1uKr^;E&v!0#1PkVpOf%V1Lq{eb(j|X}6-lYG!=#v3pl- z^sX$oIO_D~BZs?VRmh#*L9M0sC(2U+Zdw1dHcij1lT!z!&!Hh(-9g%sXmSvVXeb2O z+q^|pekxu0N{tY>FKfgBP-8ryMDXHw@m(;(#U<6$K?Q}KkCxumV`fkSzQeg2^|+74Y`>95 zAU&1H9Wkl&e_~C z@e+x@+_iYDvkFB3aw?MTaK@yQqN!~zD|9>J6}fO^9H%Od65Ib1C*)~Gsj@7PSJ*L% zme(+YW=P9#q2W@?I+1b>d|am8MkFrqKuQSem`_{)!4t}UrlDWOeoxqpMtG{!tSJzXS|$4^j)(D_;CEn2CJi+!l)0 zN=ZpkOHteUsMhb6na`p8QDQ&_nDZC(f%XA^e9{<#hCjj&={s^{>U3R_mmRB`%P`DG z^t3H`?f`dL(v`@>IX#Qy;(QuuxB>?^R8Z+ydaQ2=juo;3>E9PyA~d0M-@_dx{jUTRup96UY^SZdFvL!p0@ zqEq26FNLAr@SUByqg8TI|8wJOYb$`?OW9oiYsELc3d`x+kozCO&p-ZZ$F+DAs!Sp| zF_+WJKkVD59)BKE_xFnfv!}0Cd`8+tkQO)=Ds4R&4tq*AU6wS1gO3vwPYI*JwJ&U{S`6 znuzm{P2g1%Pmfn z+3wKuBYad3B=u21R{eCiCG2%v6-wUCnf|6meYaXGB1}CusRR-+TFv*pQ;sM<)F0v& z=0E)UiV|C+o*`nRIe^4BPRov%Iu-CBl08ej@cXDxr$448_Kg@8FbDa1B(3;E^s%I4 zn>up6aa6 z#8nr28efDmjjAz|>%F>Jv%-8{+}}MYmuMY44Go)^WfHb-#?fpcqQBnv95Z*2MHn4t z^a>P+;NaPjSxGc`pu$M6f_5H*wic?cQCt*|UxH*VkiQ?m0g_jrj3OsZNdM~Np!lUQb^p>4huwqLKKTc8D}MA=5ZEU~9h z5civdTs(6?eo7OIlnw%h*6XY^UIPqXTcdhA{N-TtC!QlnyVYRH-29Bkz66a%S8&kC z{U`-X;t%T%v3V$B{boo*&UYm7=J3Bqu&EG!X@qo#b0Qfj2%mz@E+6NBY*GR0WhYkaq7HcU2) zsd^RZkFJmY*O&0hI*9}{ANr%<2;7HP!=(A%W zVf4R|)<7JyARv5o}c`KwiY066VK$21r4w}FM^ zdEsMm@M0hwNzU?;vuGcS5SEnTN%2|HLe-t6LAC~4*rFbJxh(blJzZjei#E>sJ*crN z%4qg04bPDiDDlBv(~oN?V<*0(WW|^cQr?SbGBAY8bK}d1NHj98H0G`NIK~K=0a|hQd=}xFpKS9Z~8?G5B#fRr9RZstT zs~=4su>(!r^007mVK+>0 zg)Ly*)(c?cT|4Xlqb>Y=Tc^mZa`T=W%LmmIRcTuK{z%PNfANaMNdVqOyh43M^AjvNRij%pO9eb7=ah4#rF0G}iuqig@nwvHzFEf1DPw z-#QG{B_$07u%Hjz*0l~RVHab-1RlK~^94529>vWy)o{6Rpy^j)seNPrtJ9KH; zPp!{^$UWnRF`viO;Y)VdX zXg~LG&bmBi@hJ(pmQPw@m4jZ|b)B>aF46O|8Q(=R$9n;Z4exX=w{JsSCg%^=udi>= zpyQ4eKW%uw(s``ZxP?-30am)yA>ca?20u?DgxL}H45pXgMHV9sX&zi*Pfw~bN#=ep zM()jp-Au1!vr>%lNCKgUZ!Iyebg%n=eLw(* zTRSR&KJJ@ysipZBWuPXUZmXL!kQb;~wbNncBM<~2qP{^vaBwlzMqRRBa>+MU*nTgW z>hAzYGr)kH1L)#0f2m!a|E%MAUzU6+YCBgf;?YbJNiOZv`2<=ZQJn0W33yJjyqC@U z)IRxGvj6_sc``d0$X&Rxt^yi>T>cn|4t#&QpQLXHQ|+3^d4%_L!_eZFQo z$^`HZkHGm|h^2%@*2^DX6$aB2hg zD1}8UO+ku^`c@e^t-V$vJeSZh5C#7r#>$w}V?03*hhr1l{cRrWDs~v=KkUopES7wW z3?YXnPB20T#y&$FC(-R(DsbnT7+4740553c0MjHO#cK(!W#>#2F zHi@MMmnaW&Qt|IfgRcR1=k)aiHq1)EnvY{%IxKgiWE^YSwLSbo-{4eSO&gC5GSAwK zakY*>&T4Wmmw+99e|!}Ab{0wvEs`Yw;f3GM0k45H7fY)0AAcdRR9!F*nCF<=UM4-@~0E!)42nd<#D2w zuC5V`cwXGoT#i~kP4^j6EjVHccQM$?n`GWyqEDQ{zI+02*6n4E`PMRCZXgt(Otn}} zuDIk~y0-ADQBHr&g=X_j1ePPc=;1^DZ-;E8E2Jv>xcO=yNs#jg3NdxEb-;&DQEmod z&s~~^zs|TtyHoL-t;vjpI%Apl?d~R$lKu~u=xYnFb{lE#A>KiU{4F!fxhCAd3awbN zd;zdUuIc4mBgdRb(C*>7E`&D^ukOcL$dniT7t~yzE2EP;%w2#7iO_|U>yh2zz}(mQ@aZRjh93ETy|k+Y zoOhjKfJ{$1m?^+jIjkk_YUx#(*wlKX6Sa&kt>|qxVB;Bq(@d}7cCGK>h18i+#CsvJ zL-UUvMMkzsGRmCNtgJZ_#u69UX@_gEI&w*0G96kC?bp4-3YZpRg+idJMr&oUTSC&D z5tgN(9rCf8uBrPi+(kQ}leQMVw}B{k-e&U3iGUUP$}LVrkZ}ur3Acx-O5S8?UEu23 zdYjw~ly?fHG>laOdhaUnRC5;zmEBdBlANyDVape=udG&t5xBbHEOAzEFSk zOJK*6id8$4W}q890DZ;0zj@h?I9s9&{0Evjgw^U$i>5|42Vyj!Z{rFUEb%N~ygYXI zqEFZmN zl&e#=b_)1R_9qh1){3|&%Uw+GWR{EOX;;l!N&GuH$jhux^MYeth_DNEB$q$l?_@;8 zyAj;PzD|mREIcrHntQK;H=N~vh=O5;j76(r4u9KBuY7<10mC>IaZ&%&y^G~_t`1b! zapV!0{M2GhMO)KfjuaqH1JOcGbz@4hZIW_PTUOBaGiWn4Ja2N;It>~au6Cq+Y&)PA z4hHKOEk9G*Y&Z<1nM`Kd#hK@Qd1M~i@To74z+F}a^Q~fvSSsR18N%XQ820P^ae=Qv z{TtZaaa{NW2q;Q}h0GrKgtcasN=o57H|jJgq?JhhiBUQYZtoR|k1AOx+W9X(xw9-; zoWTVw$!mdI$$Y%dn{ywVkVy2DwrXDwJ!HUcPua30=Ln(V@=eT2qtrF88)0TiY9ZSZNnt?B$hN~Zgybi8EfDZ&wgHEZXUE9~_yqozKVChT% zk-&spD4WV{{2N>Iz@G6aYBxL%T12p3j`_;+$0-U#0sK94MF+Ic>yzj13i9w@AnP=; zr+(K<=Iwje&zlQ#p=b?(tY?F(ju>l;NO(MZkl-{EruBb)7G360`ESc&eTg|WBiMUq zo~MFq0GcYu1~FSJ-G3KhLH!58CjpAc?(m|bd8v$$3b5M}$tMN7MRpzCZQ5E@Nl131 z!MpDsuO~ufC9gsGXH8$xpR-?ZEgjjt1OA4*{9t6&!SjybZd2HGY0=;u%f z5jIHc4R(2t+#hBi>p1eCAv8q7S|~CfxERP(0O>P6#0?mv{QV>qWGG@ngL~^ilcV{e zTNF6zJZ_@DK+qG(aSEBFokI`qXi|(2-yx6hqBci}Tld}2466g&mN$TAf%uMW%6)&~G-E+$(;DnmMiCpaTV`1KJ^5#s4aIkz$ z05Ih1Ucrv*DO8W=m-@|nZDbTmKr>~~Sy#?4FdKwghzFgA)qYHW##+E9Ie_;m&Y;%w z#pC?-_7Mav=sPnG(Z3+z41E<#mRQxdd&>A7b~abYVtuDFA#(QqBFR0(-joAuL>(Ct zhT}UnL>4&!_@y$qTUkjolAm{TzM583*va(7tI?^9X>d$gegn^yk zTX!Uim*CDF%I4BXSZ}>V8ViQ+aw}zW>sT&h`ryI~1xcfU+od0thnR~{f~c2O5!BVrS5YL6arbjdzi7Q z<zSwQ`h@D*# z#&(Gs#&~im%BX3oUs#;FnDk{3(jo-+lqOVDfJKk zibsM%iKdgwzqu(0d4=i?tgv+wx1df%F`8-nzS^Qaed-_POsGny_uA=~Phc&ce_6$J z7T}c6A5Aa&xmtdCbu7mFw6Rg10aRju{#FFUKoO3acZohoy$jYGwzT4HwZ6F8w0$aR z&fB%UsVo?8o496ipB)^)fIe@woy;7r9LXh?ui;JU<@0nu;f&%EHxNzm>7cq%WkX!% z#{v6+E^DSUVN3z>6MrQdh8MQM<`FBm(BBDU%_m8wD49K@2J<&UH>zLlC73PPa%~`hQZs-WIYPu$1Yy)= zx!`!aQF^Ka_alQeRT%;t3*-HP8J*#qT1(IQWb(eI(d1TDRjLYV)XEHyERI&X3G6+Z!r} zh{;Y@5PFoTS+XdAO}y?D{Wxe1&+lBD_O)9#+;GC@=cOXkeZ?{g809lIGniei8IE*X7p3uNM_2cVW1h_=pLq`SP8^7Ifz;Ub1m zvx1*x_z{DWJYu3V8k4NbxQ7IkkJf9fMSZaCg3SmF#X>P>#g#T`OV10;71n8EQ8pY@DC%>uV^-K1%9Fzwaa_Q*`iik@Z z1y-9E3;y~Zlfj8tYJ4U{hMgd8dT%Dk z3nj+^KMI29HjVw&=+xwWwRu-e@%8tNkikcv22LQP9?&@sm}0TP$wWwKUJL-=VVn~m zED7;nWDs1wsIPAta$~PBy%OV*=PxH$xc*PJT1#A z{=rR=Imqp%v4b)E^A`*P0=t15KNB|5BM3@j8`~WDpJHV$-2b-yHe&}ozer;p+zk_h z0M4k7*dpOQ*5ziyb&zz0JyGNxJaiTRt>X&0^o2+#!R0reDj_SQbWfIs`Q|Bnd{3Oe%>%*#rr*12*$oXNW7B1(!GchK_56v zPs;La-m^TEjqP!VA87$T)4pH}ED#80@Xd+^J^BMz^wrWl?_53;!IvB`1wgtXCY)hj z>wvS$QaDiE(D$QX@1yr6hv(i!K%~E6ADtQl0V%eg$xnpOGybKL*15sPks_JCgHG-d zOnPc8Q9ixxj-G9Qmy$9CYuQ#UxjZC(?JxLk;*9e1#P1Zu*D0EUc=Ifb06+EH+0!vZuA?tckD{-UB=h8+85^;A z|5%63^xn!?<4xhoGdb38sV>166=s^2NTx{(Qnnk%(IGm=MgB7nnoc2}w=Gh` zg)4SA$@CV3gU;00tYL%7i`x@c>_4&J=W|{TZPzF{F{3Ya*%vPit%$qGxhS^ zU=)5nwAH%lfvDIj5KQFK-kPu1dq|83$dxNCPif=csSS3sv)u2wL`LqBwN*}E-ZN|d zZ51K9*y(P%5^J*YtQ8kh;tKc+rzySBjn3J6ApNVR{)Z`_2Gd~?lSxYjMgWzGqCCNG z;tQR@bV_!>hU|g(&8>!qGF_2Iu5R&N#cdo5f!KM+A>2Amp1 z*lh{V%!FQvIgj@Dq;%`?>36pX*60FS37KVLcpqZBMKPZjOkc zO4h^xL{gTKq89b`j~AF%2kKSBaM`2l>XC3`alN4fKxC9E^NUL8JuRqzLSG~b9#L@BU7L3x2&SA2oKj zUX`!qwKT(EJV>+?JkOjM1WDw?pXGtu@y27v+Mqwh18{`h>csv7lUhcvpfGj@^T~MNTcz2tM#z(W*l6kS{D31Q}P;V#F zfJF7rMZ7LG$PQt^qA&kgP4-%dj~_kQPz*leiWlu_F`(iH_Zgr1i&zy7Nf z0KznD@P-v80{^YVM0_OUb9c&-Sz}|ZQ~jkKrK<=NpY_Kbq8HvX2lQbh#g+5oeM_*N z{(xe3%r$V{S6Y+{@g0?LD~-Yh*hf77|0?)Ra!W<|T8MUT3%m9G@^W!8NSu=g2Z;ZC zqWs?lfd9K>cAvd~&xfoa3#vy|q(|fDQ)n;}F{R7DzOpnTk8Z!($G5;(y8#`=%stB0bIbSR6pGJEZd!FF|I?Y6g ziZL936gSLoXnjD=$p;P1kiXR-p9rbHZ+^xLEQUg9=To3)I+f%P-1swjzs(oBB2MXP z`%j_&pN?~=)z6YShhy-pn#4MS9^3jEj1f!x3t+FJ zSvnYSFF8Jb2JmGG$x9MFW<(u3qkSCGV=2Z2T?m;u(fq^wdmWuVEC(M#*PCZ9$0Ll5 zLuo0Jpgw5psCz&NM3I#%E8c~#bx&`!reZSVBv=%3tMQmt7jA!D(i*|af7>4KIo{&0 z%ac#GQSMx; zs*+HIdFo=DuL8AYm~nJinrfr1ly!1vPj8Lsx=kO6?%*OoO8j}AE{-ob$IdnyAz>`s zeTND`zdh~I)={7~R{7m<28bq;1|tn-r8jAR<}SBNx}f+}z7vkKGXM=vx@DO^;E-Dn zBcKl642Xh0N4uv}nGZFE7k8mk5cxl$v5c=HSP#OqVHzch4Bwl9 z7z|4nHEU4ifixARaxdaQOyTeYfyZ36=3+zq%3w^uoKRjNiV5Z0x0Dkz=m^grU~z%!&fZ|6C1T-C4FdF zYA??6Zv?)bPa8A}ZgZ3wK?hzDqaPgmTSZq!s6F}Md4jBYAFi(l`T*Hs`(iOuU*@~*5JZe5C6>4zZmQOvJB z03jyOQ>)m<4K8twx6;wkp^R zmxuPS$ll3fhkuGR_c6{qlK~==FGb*y0350uFjJ@&8DceoI#QUZ&1{>9(NJDJ&1net zye*0jD`U-P^7xP*y5PWr4;)*TSvgBE1EkJcnZ;j~d^F8GD)<|WI@^aLt}^h+Nxxht zPF)Z`8qts`a3P`w&*)pIxX{mYX4CTreadV!lk_z(-MU#d)}TJ}B4Hd@q@`qD4{7(81;hn!8x^Opg0BDl z>y@)y<_FLw>fj5q^8V(S9oE*S1yJ5RAe#Hg*l@@)XUp-~&-cY4z5Q~*!k0l$J>$Po zvD~-3W^alqo#2s?s~9dJ!<*9Nkt|!diq8E#b*#EcnW$qE{ZN<^4#_Nao!?&bF>I7= z3EP{T^w^#3(DlK7WAeFnT@*}Ck`3ioxA7>O>;Mt`Px3{f^)iiS4+f?z0I+l3@_|N4 z0J_IMXH&dHECTye`1>D0|Nm+5zw2+jw^|Ge|8HHuKCYLI%qfQ;u~9-Sn>$mm&a;1~ zuu`xlviEdde077=b@$i#!DEf{Zg|{1_uIM??noH`svX?!N`!{g$mm`wJjH!#o=$0oOA8e^sD+y>Hr1x(fZ+ zEA9b#G0KxR_#~0xhPM`!NE0H5rvBuZH1NAEtmLE)+x3WjaZn&a#jBqTygoW$dL(92 zS5`01x2(&w(*e8+cVISut`p~E3Eu?-QDNfse~KP4!bAq^cpSE4OZ zZpd{2dR%emzG0F2I*Wa1$xK*g`R^r>-D*{HTO$j#p8yIo{DgzcIgA z_LWgQdp=726x#IbI;ThbbU0DILQ)@Dxq9Ct0vbSxAQ4|>OSHaAbG)AVWAIm&_44n0 zdQ!$HYyfx$?#hPln0_=sq;o@OZrs+-BuR7xl0rz`j#~Hso(WIrwM-*2cc_4C$du%!V-b2THA16@67@6A$`yM5#3-kgE9(`;GaBru6b}+R zzLqEVA&^oq(j@7PE|2H8o3s6Uw1HmdIA%5WG6^8WXtf~26}qPsx@7m($YG!Tk)fXw z)#@OhNQ^Qq>)W@Iyz#P6@e;5^=tN_e>BSJlc1oE2K{eB!b55PQ^@oyLfX0fMONtp0 zf?+(<_w1Pt_tevl)R%%NMYT@Ri~8DuiZM-L(_kNeAPl+MOZS|N8{eJcl*truS<{?{ zI1B)zP}+`Y=0>ES4eIR!FBCl}Ax$Gv;<&y%s@W#`LU+rjFc)O|!*oIkoB?Q9=vwso;7ey8l$e&;9bS5cHDX1*)>ba|9d!SZ(m&KF=l&euO*m24B%YjBHjQ z@Ye_6rUlhraXYgdeK=!MYqHvaRYx3kmMsQp9p#2mV%F>VtUPde6M$rgcSh*`wjPMg zwzgI?gm`YrK1Mn5$YOC+scz>dR}aT5t862?RQXVHaF}14#m6V_GLo}8;SWCKTMWpW zYa6q~O!AKHagh^X*n3gpurz9I9)I-T`ICZ)>s9RaqR`p)Q%Zj)&7GmwZg(0*WEj(o zlf?H%{echSxnI#QsjZtJbMDegch@o>93spp#`%s#-lj%=_QoPt-=U;VibLy=9&!pf zYrsIWZ#PQI!>JPI8O+d3k#SiJ*$DupW6IR_qSkkE{mw_F{5BkMLI=s)N}>G}W#%ww zciGQA_pSu7f2Z;WZ!ruzYKT9tB3~aK=1#lfS&+sn>A>@%ERSEo4=CE6JfT=KpTzP} ztbHGK`<`D&|vWyOKwLyG=cTB^8ZKM+%6Vjv|?_PArsmc9zIs`?SG@Pk}i9J zzhT+JI$~7EjtJJs$P7E3H-Pr6COesa^%Ik;Wee35=Ah5TA3mP(rX?oPruWG|KxQ11$|@a*{ZF?-b5UHyM(5n>d_8bey|3 zid`$&)i+Jy1qT&`3+c&fHFN4h;8`!T3&J5gW(fJ68)Clw2Y!!ZSpaG>H@Y=`mP6Bc z!Tn1o*KDwxo-1d9onLu_8K(tu<=2@#=uC3HrcP|xVOwLj66tF_HO->5bE3>0} zcIL8-#MLA^(_cfz+EFsT7$^X*n=3pb_y8&R8J(9dRiCtnLmsH5o%_vL|an^E{Au!j&Eq*{YOgs>!pM(Do zzTPo9lc?JojcwbuJGPy4$Lgq~j?Ic~+v?c1)v;~c?wj{~=bZc9KlewCQG3$K#YLhjP23?Q>Ft{R(yzF#+XaDr%K#5KtxIO@i-4&VH zP_JfGojucuCCRH`#{QU-cV_d-#0ZeQ0TXrlwdbuc2KiN?i__~l(ck2 zAra98O$^UC;>E$U{`s6~-8TS%_JjVmzDrn9A}L2H@%RWS}k&08v%{0`|+_8i`?&sHpAp=i`cni zj7s*4*^PvF%7{iB-wFmQH#P_jV1@U(@Pr=qSC$QUmrMNi7!T2r5w3vkhISB^;TGoR z&2hx1iMP%CxN0axskofrsXhsD0F~_gvz_mt6X=nr|y%+bv&P;Z)Wqh*5< z9SBI%aT0ht6XI^aZ3addIw0INlS$Ip{~Z~Q&~FA$GrF7WxgM}V^%Xv;jeG%X3xW-W z!m(T=?BWs+kVLhkzh+DZk^Hw*7!xS79hH6cEKx)r9Uz4`3*Wo6t;8_%r7+!2PnaW3 z9A@mx_Ydd9(@G3f@S#MSGzWE_TJwtf1l*acK+Wq{RE|+!PN6M=lZjL-g z{@IY}{WC5zh%^8%BgaFk#^6tkrHn`0h19eZI63>Pg&-NH_wz@m2yq#@Yim~|pUrFs zd5I9N?dB@^eq5FVj`t$e72+Y8Znl#NJb#@^{Nq~S(Vm(?fRA{`tm`bvU!!4ea2A&1 zum`p8;ZkRi!?~<-=M%=_Q)q8ij=Di%KLYXE>?dgtQi=dff4H@Q_3tF&wcYxVI8ZyN ziYa{c=K;}T%&leEo%?*XUBp#k9TFz&-(tYK!LDIKal#;?IqI37kauRDO)R>tT6=)Y*2>8w+XY}YOSC@1lqT6fF;P%?g49}W2s1jEQ-3|w z$@|g}d%A#ceH2taRdAD08gwkeX&DbVR%Wa9Wl*bb|0|l;n_JT4;HwC6c-*HwvWM=p9Gg30rBC z-pnt?L=GT=GTZLabNH-s!Ekl#NsNUeTZ;s`q5`OT??WlCIJ|vxVGf7!a{X!5t(oj8 zPb&OSYrYlX*?cs^uRj>NwrPi>S!_JAa9ZGbS?q_CK}{B1&GMYJa4L2^8B zdP8uMjk(`dRB~MnF-d(V=W+R^p;Qi~*=_R~AyD6Tunj9EvMv4Y(g+}KwLY!s6eZF+ zMF9{=L%r8ww1ZYHqk|K_{yTV-mGE{1km@!hjiv_T)a7{x?f4ieZSBt>`i|kO)o;q; z$xc6a!=*Nq8!u~!`r7Qlq2}wX6?^0y1TF@_0shN$=S34KMC|Y+*TZQebcVFr{g-H! zF!vD#N6tO?OI;#VO_Y4}t9Abaa2<$?G~gbce0Ax_dt$~3w1>-S^>7PAph z$5}KI8r--FOqEZC00NMeeJnQ{z&5voew!E1{1(xOfX#p{UchM1aWm$q$x* zpPsf`O@s~6Yenpq^54B@<=k9PiU5Vdcge02e-pgtx{!UVv5}`xvJyXLPwB4WNUs>0 zFJ$2#@F(m4ueTJ&7rgN+2&d`3r+D1|2Km3t>@jcRz?1BkpDt?-JwT4lyDa2h6zRnj z`;t!MK*a4cEts`=t<*mC|BhGOs-)U$`s9z-HOKp51p9ClMDXv!Z6}EBwvp!cz-GOk z=60~BH3R}7VkqpcYKV_cn!=0LzqoSdxE2bNLJ559S_x2sgdLCA6Me5BaaU8hB~3X^ z=>%-^X94I_zE~$n&EtrBx*m^DaW!H%QVJ3V0P{OLoI{nc+Q?GsI&z;NO0g2)e2HA& z6$44}^U4@OfWXxI`^CtyC6ocHNbB{IAu$p;4VbRycGo{GEn+Z33Q=JY%=gfWE9!H6 zPdcBmSD(j%NbM0|X@5Wn`7w`$KkQk*A&;ax8u$}__0#(wVn@F}FUIkAwXOS|r>9`= z)ja34SC&gJ>%%ObkF%QUj33?;7-ih$uT`5L_9LL@IziCM>dcwgtz8hFJ6<>~x9MUL zy4RNzVm$&8{%AYlpg}D<-)es}@l{vFl@`Bf!RPrB(99R$h*gT46|_TJg3DNXL-mlY zgah!vp)6sAJDy2V#)r!M&A}eTMAJx8E@F9KMX1G6z!IIB`p;5Mn&&hGw)bWtT2)Ptw=&C_!dY(^im1PT`p)5D8))+E=&SWAtnc?S_Y(FF&w@JIPx3l1iT3V;w>ISAOOc-~6faCgGW*QsEib z{hdz7lazw|spXj&NO?}0S2D%~AQ+ZFEOtbUl(L>QTQ2~T+v06NFe?S+I|5VTB2R-P z=TCOxdnud)vMvq$Z%}?YI`Z6A{PW^+3?w{dI>|^%TSz2o-wlYfR`k=Dn=@2qsGG*u zjK;oGIBlc|D_joI?d6K3tIP}&>!7A#dan@#lD^(h8W!@!8tR>_b+$~$1NPL1Lvb8u zL=E`4*Tq$ozcl+nQ|5E6HTFVM+x!H<+@Mvo7nK8AP@|s~2&uC+e`+Oo38H z)BbMUJkAX7p{FrH=3aVl46Kg5+FQ|dik*kc%gl#3tEMY>CnC7DDkT?kB4oBodH!YQ z8eXlG7}G?>VVko@cn{T-oou}6i!L|_#+Rhsz1_Mi+`nWmbFa!NYWVj%i-XboSRq3KTWz|WtNTJ2GGE=79}Z)d zC^GT|V%oXPE~8;O&VWxqQdrg{16ud@g31N#OTpv|i8H~jdC%L%u>=cP{8Utpm~oLc z1U?%rf&Ez#E;l^j&(pqD67^h#PGOJ^nx-iPYd=n|b$ zv7a5FPKP^KsuHFzphdAwz`P?R|8;*R>nKw>;nmisbHZKtwrpA1bX?rO&q3W=9|TwI zjMwgIaJ|I%z9D+yaedxFWFA^kU3_hU&@ANMd3$bE_^2Alhdkda_UuKA&HQHv;e6pJ zeVbXvNNC>(C=S=%fzkuQSTs`?=m@S@)v~>Co>hFmja_F$xRFJ* zeWQIKBPguCpOX7_0V8OexYSNJC(K0fZ_LT#Qb0zsH=CLI9}XUy)Z+R?15h zQuB7izA*s3?}homKIIV+DTk2v!5sM@ISzmY`*_{{CQU3o34VQ{Q`Uw2x$!bF@T`ydpdafjtC!S0B_o8L{=#sqGN{=at$nX;3t=HDDX*Dn~~3h4{~Q*R?Ld3~%FkO#aKf#(ee4DwzflF@4 zL!lNgHsN1JytcIe8TU@M{Kj@#eT@pWKm%1en^jqDPO<}*S%N>sYoMmCjI*W{D^XEk z(!_jW2s$R_5I}EOIda>v!yejA*h7;g9<3WwDyMdua_NUrS#lT`;v+ejueJlY9O>K5 zYc|ATih6`;W5^;K-Of>lZQnJ4(1HYAI*>X-*8OHV4~J^M+x^lKY~t7GmSlMa(M)@bz1$TYDJu}`ym zp(p2pS?w7mLt(nk$?-B=*hE^jjAhxq>)p2uNRm-XP}vSTS(|_GUV)=`fxo91#$EZh zbkcjKom8vI_)>XmTQPhcUh+!W?Hb-c!v#?wAt^l7Kq)*!6v#=ByMT@>7(X_W1;3IK zL?+q4yQu+05mZ7_JFpnN`;aK_rccE#rOxMsd7QSCPnEFmA<)W>dGoQ#<;a{0_V3!V z_jaeM>*sJ>sdKMzKGw(Lp;9=p=a3tWN$c?bk(=w*j7veK;tttMoJ8t&8#^%y<&Lhu zB?6ZyofU26;Ppag2!WJ1`e)BMG^m*8NeLO-@OCDW(F2E&WM6mCll+BLylWaV3TGtx z4`B<6_=O=C`@4QIXx!&M`9Z-L>n!hu_#OjxR|540y)lo!#sgtFVhnu?J6ai5MxzN-|wB=niecVqQ z#%ZD01DzYzS47-lO3e2X>U!wM$ldOf1J_yWi6D-0_+aO-2*y}FyMm~%N z4(uo7Yb)RS1!;Tx7+j8aCUKVST$N@T#g`Qeav#*9Ve>(qQX9O*y1u||+D!O7Z=chQsj8!VViM!_pbtMMP z3psZN^yM0_)rnpRnzWPJRBf(D?J^;oxreAVIme4fbc|eP5Bz1^HMZ#SZJDfX;tuQo zE`!L~bT1<48!%AhIOgOnW!_T}o)UIBXI3dvJ;z(|+aJ*1y2eQ)_(W;*l({JOd%Y5O zW&ZQET>X^ao-%KP_v|^dA!qruhTM64N!geI^{Malg!U;9zOfZ{sju2@v3(`+|LYGn z0vA zY4~+WQnLqL%&Wcf*@DoAxD8#MZ$j|N93EGx&vuJ@X*f`eH-IpTD42xf{pbea_`mBT9*Iz=y5jGQWjnhUCO)vZ%rQ<1u__jmXM&tj8(wwuY9Jug`UCxM!k zXZefp3CW)vNZ=gzO2z`6CzMYRX)o$MK8-uO{RHlxdf#VIswz(#E~+X4r#BrMu)q&o zV@l-1>9fwi`sG$gHWT>7iR{&VH?uLT+7(8@efxzTlE44UXvP|Q+xQniml_2XF6wx; zI=a?BDKGyJPAw8xtr8oOq}9^4W$6Z|ZRUMRng;d5L=Zxz*;}j0mD9QdC8wKUOHq!% zDl@)@_MfzYzp0~Tw3gh^*_o( zG5)R}T|J(Br?iyt)Hz3NxA4?*y=N45^UTc{y+M)LoFosOU4P6y!|H=BXoagPBo7Jp z=sNLFu9ZzkL-H*Mh|)l9+T3cqkzm;mwMAX7z84?(g^fzi1*|>`(}O8+<3Rx6XF^W& z_?c@=i4`5zLFJ@*n+a8$yHCJh~oMW}nTt zZVwhtDRZqG8xJ9lu7B#uxE*UgGRsfm} z`Yq(z>VI42!oNQ`|0e{1IFDiR_P7)9 z)J6sp-&LGTPD{^Kn!yyBwK?8*UCI*g{P?%Q8>3uGu%z&50MgyiSoM_{HTbEz6bs6_ zd+sS`#^qiIRd2|IE7t`*lf(J{5HTL;kLX+MdD?V)k?qc=fPdI16QmIGpFseGBg_aT z^*@YLE~QVw)5qi;G@K-Z;cahU8)8Vu+(sObh9}rVVIfdI|E$BCh#RHBb(}CEEOM_( zu;;&Cebqmkw-!L&*&mre&aT9y2B-WZ{vbY^abEwky`=behvB$gu#I_@f$3y0J?^*G zMFUe@jNBv?_xJ(X#;|*5Na+qFtn7GCU)B5nH1tk*%za59y{Dn`pl-{nTBF?Ixi8M* zEl2E8AE{9cRD#o=m5_a=3C;Ze4fMMqSfXb62qfqSVu`b0q<<_ByfKb-D1}As^fbAF z=9_@9U_(0z-MQD+*aRiatrNGRrU*Ld3PU0kj?2MyctL#d7s3)CXHPooL@W|p z5lf$#9#Dt~H?k1&a-!^8l4D`qx$S5VC>fQ#Jmz&u*K3VkKv*VTaPEWmanMqAz(yJ; z&>p1n(9@RpvI|zIoX@3jbp}xv;rn}=MJZ`ItOTwyMUkAE8D`s}5BZ>8{cY~@`m$f~ zwtTmvmc5!EZ0W4=^b3Ene(rG~(_Y6J87Yx=#Fcthg|@kVjzWSYI*2&H6or=CK4*CL zhe*nCiDzq4gT>5tjmWrmZO`Shu15=U*mH`JS;M}!&iT;(b0=0Nd^IQ6GiBz~W@BwZ zpY3_)8fA7l`XR=lb%Rzg6P&X#WqqK-TT<0Eo<6aAZG)=fmy9g}T>BChj z%=QJZJGPFqj-}ETZy&I0AN3UIvoTZp9ZyK%O16&+BPg&hZ;oXLNo3|7>j^%cL=fBu z{#j}pvYHYSjH8}AskVlfR=4f!s0{Zbw@5@_7oy9SGRC^i$qFgRuxyYc*5It?;q(gq zspt$7#c10Dl1UEO_F(K0=>65*q*SFroCJco(RWPeT)t3=}%|a!$ZIh=6{YIq&!T9%Rg0do5X8%>g`;EeTm zcmc@sIU~J`C0j<(8E2iXA)yJuV?WHJaN))+hvcd?K}R?R<`8XF!N&R7IzK3nnzg_Awu`t|{tE|R_Sy7JX#>aUM7x&=0 z5;w__k2*lDMeOA;W4nJyiR8*xxeQth+rz~L334;|(F{K%-MyGK^GINH#mNzu; z&|Hio!p!w-t^HT$uhRLAUSC~99vrX*2FFjsEpmYo{HV(f=u;V96^P$8at*`4@~BA`eMKC=58aeq6uoBPkCI_dD(sthqv2B&&lz( zWKeJIzLJ|gq1R_{?M~@@&#DX@p+uqBx@L5mFE#_Bm(9ww0ZQ-FlZG!3y0RDR^&qDb z)WT87^Jsz>ct8E47s1tYUAIvO0uit#{#Z=;-t`&20D6-r$DQ;;d2cHt@qJFYCikxA z2CW?Y_WANNd~WJ9yql(_-|zXjnmi?gAs;|%2`H_`HuhpldBgVO3lCID?X$n7Zt*l@ zztF)yq;7e$aJK%aTkMG;`P&YBHne>XH?{RGmuqXMrt;Em!d?y`H+6q&NdV|0iceJ7 zZxtIibtoIqV3Hz!1o0L2VBzJ_YOS!vlKyo_`MaW*4+-1#% z@#RhSa8G=R)Ez-unA^KZdv@xxUGQS**~`eJjKcl?Z7suY_Js_?vI8X{73V91zecSr z#Kd5`LPF9~pe)k^C z(mF8S5TK)Id4XtSU1MR0(h&(;QZsQ#F=kYg)Op;<=P#a>oXVUiLpu_N$3i*X84v2N z6<7GzWFK#AsGIT}yJwiNG{x!;cjT5ITy%loXd0v@NP z?{nV@$5L1AcU9k75qm3m)&g=@u2Kl1S_U$5&*eGF`$a(A;HW0`m7fZkf)=nRBd=~w zUcr?g-}|O4kE(&=MK9u(8+OwWNN96PJ6h~KqE%OoTw@*aD-0mE_;5;CjTJWDe1J7l zlf6maF#42LCB}YW8#!9|nB?pa(syWR?AW2PFiom!OB3tqo$DEI%XL}ftp2TxnCL}@ zLwGJdP=hdCl}2mTprqpP*qSZ$tgF$Q?zbsT4y(e=Ber66@?6C*$$?qQ0F6mf)}kM# z+nG?4l|3Dp`5h?RkEZMVn;>f|^aJ@%Ri_n^evPxc+^HX5Tf8xM31~z>yk4dm4Dr^| z1EKi5wKfwj`6=9|)6^dd0`gO$bs3Xpv^vnZK!VUxa13tm@KSo_2~HUkk5K|u8O6Dd z(R)LWkynNAB+&36iloVG-Jd1A3IjUxByhhnEwP;`Fgt-(lz zBx<4MfSD2Z#YSkQx?;ca1J>L>6fI63w7An2jl4{#j&n9a&f~Q<2ljc$x~*y6mo)tn zA@rAhF9(`4iv%i9q*<44lqG&o(1hPVik7L65Asw0>WM|85-zGnxNp-si#jb2&W5V; z7>M!hYia?`dgEpi1`hP>c?7((GsXH?4^-Mp;2(=rJyuG3f~@(rs9@LHNK_x|*DqFp zeu$8F)fT?Wld9LZ%6?ng>n-jx-6yRLqLERt~Og-$`589XeJvCzELz;&?G}rNLMwh;w zIDW|a^Tqq`)N(#l&q{y>P{H91byG#Y&4luzCE9qEOks+})e;*;mInB3!G|9IYCp9a z-AEMs#x?cz6Gr3UT+`i=@p?kcI7=-K1Tla4sz1DqEHkd&pIln~gQaU;Ni53}v*Bqs z%{;stqeyN?eP4@aS8|G%XuwCq?mV(P+Z?Sf-wTt=JvtmJ*h|AVO0l7ieA4xSbp7u_ zr9c2E-y1?n90TiUoCan+;hGMGq7{^!Atf5dyS|AR=JI!%@k{B{ zr~ptZ=FPDg$#yy_rRXO8h#1zF9r#hxbn`^`vK@b%P7AGkoYzoaMfnS^Pr^4k+fdaV z^k4JjiFhiA*;r?IE-atYSg5rO8QeF2TN$q~^+8U*Mz-GUu^z^i>XD*3bp>kxBK$?< zKlywm8>>N^EMP@Ihb0U(Ut2~}sMEMJswhI<3iKj$p3Mo6N0ZA@*%x0$!|`V&%Zq$; zbUE9Yz$k*!OciIeTX@k@+tLXGUO3k-CiL2CVzXp;9}ZXbbtXx|^-izuGNR!;3j$^R zd6T&HDS6&6(qmZxZmDvqU_4r+CJ#qs>MNtQzu)%8isLZ@l!u=TJoEE}I` z{{m-p^}ldtr$%PvfA~yCSq05kckd{+u+Gz=9QX&|gR}J9)f^Kr8<)=klawq}%TApe z=rWndhjjj`vIH86{l4QE9X9vehflmcPOxfUJ(E2^3 zlk~;`;*uyZ2lU2J<$S`;Gxzk-8HbnL(p;#T)s6;h#%)@X2~(}d?CR~|~Db-n2`o-9# z^WGJ00s{3w+8JKRYERv%#UldoJ?nR=0aBxegIMFLy$cIIMp9%zUkbPVW=cCvv;?1p zEMz!Jl5j#?NlUNFL39NfAD0;qu06Z3s62U18GV9IG{UCRFU80RHbkfSbjAlyvzZdt z9mz{*hj8C)Rkn7cY5Gpi9M=KWzJ&iOJTS?@cV|vkIPk^!Z ziZ(P0>hfFAM|Se^6UKldIO`wk|LOU&g=X~|rJ?O9QI5WxQapv~4)|5j;%OlefbWRGEtLKFGIcWa&#i877XtEM!{DcB-!aK?^*p(s-^91b zcXkrOsMzZ#R^C`rskmeGLhw)|P!)T2W>3VE&Few`?N!{_&Jt;`d=^XozBg_C5dM$O zZqA&yWN4Rl1PDlsTylEI3{dLgzt>V>C!ce}lM9_|F`FMZTga?HTF<+X{x{>ct+BAh zkHhGx&n?}ibe2u83mkNoe=bNM&$o=d2G7Jn{15MS@dai2?uwvB5JQ=MtR_FlkZ?j2 zj)b(5!*B!{50s2F$A$5o+__@59F%90p=Y4$c<<(^Csx(=PMv(-G)m8V;5ndmzukVm z#FT(^zy+hkwy@{}d|=N{fja`uy^6vpgU1GO8n3(#vR$6>OQaw;KKp(suk;+7uR)wx z95DgN&E2#ge8d61nHfK~r2dutflbEj?7in>SDI%KDj}k`L?~?kOqjEZ@^(il2J8JWS`D&aC+^M0MtntBQNIwxYiyN!Rf}-9{ok49{*P> zO1n0q>0EZOp`ewe-jYe&TIN>W@%CLAyZ^B;wFG{n1X}KJk-`(&N3pUo(hd7zb%l6R zp^QU|Ij%4|YZ*kC6^`iL<)FF#;}*=UV1G(FhR?&d=SI@rK5!iVlmYp@Sn-;&v}~mO z;Dcnm*hq*A@Qe!i-CF5)KjqRI)umowB%BsV*Z*?Oe$D4kwM>$Z{0m&VUv{!4j zn~}ZzE&b=gaapXALe0!PM0@MEXlLS7LPy0h*6b~PcjVL<5!+HXvG^aX_F9`@%4GpT zF=pE`MJ1E4p?3E2ffSLtApr`2&CtPwy6i*DEHF`Z; zAamr?T6QVJyvScYrL%Hl^@8DH2x=iOlKr5m3Fci`1yj|s!Dl$OraYB|C^cq@BYliEN3U6Giyot(cWAPeOWPaPtzo>?h4EaK zTEvf}x#L_6Dr0Quk()U;2}v`ck~=X8j~~Prl@-y8c75N#)$J^Hq?Xv)bVwnl;Oijn zox_u6^W(&l_1bf)woODxP6k=jl-OdRKo&{|=F6ixzWDTpzI@w|g|B*{^G?(a zaHtuJ%IW&*NafM`-}3pU{&SiS*M*rE|$bMoc@*wh7{9_)tV--ZcpW>eB(TDISSm|sFPypp6r%EEp~o>xBgf8E#&H9d=fth5a&Kd zcoKfGI6ztK;`kfBb&`?=#kNtUfX$acm@nGNxi2?&{`6{E;wOy+r{?l-v7_2VhPL>B zj7OB>aQKp}g4|5W@MIt_#VL@I$-^X1NnfEA!Tsz;7Es%628{P$?|X&VPauP-7;ZX! zRxEPKnOtBkTE8Z$W8InoFN^dK{qA!PWvnJeav7(N{wJL&Fgzoy{b&Ptm_lQq+Q0=b z^}iw4{<)gVhx+Nix|f*w5Z}`+9z8$mz9xGi;?d#2P%Li8tA-F(m~C6kq&dqBzYx}0 zB?Y#3iP%Eaw!L?z-uwY)22Wpk)$Uu<2`PE#k3sybFzW;^QanIyo?$QFZ|-mU z7={3!&>R9CjBWNdk|VJndwSg_=^ujK4CqR7H23QQgy3GSUhf4tslQ61ZV7!>j-pgQ zaf?>~iAlXTor|Z&jDLgOFI}4Qu@f5pZe=HDH(Ru+F%%Y|@9;04s2Bvc?{qZpB1t5I zbkkkMg73h@27CZz?~rUnm=`GyloN0T6-&WVqR{KbqTtnHpuroIzV+@No?_r~km!U= zo@FqUU?zn*j3DtBueHZR9@ZU+Nh5kXg~44i;$kliceEUJpR& z_v3E$-zf1oKi@%7GaYCuIGXj5OY32-$dPKw6gJ@dX8)=dn}SVD(2sBHGFspFqSQ}p zXz3rNB<)a9OK7pj?l}NJeyx_Wk|})3cKwQ(8(!T?6etVs4L&tom&mf{2@#vQL){&a z=!9CHkEQKNhvwxpuc(HkBnUt}wc0@|&xP9U=Ue#NPh6O-R`1PuE^X+NZ9IqJiHyPZ zwGR-#N(nLlb-L?TiS#%)bCtO?7=#BWzd{rSA5iyE$C%=o8Izb_v%%CQ3+>X$xPh=q z5NA2_MP`stPs1B5VPkilRSdwV+o`>8jyI+cf}@X8Z3%M2MPTlh-lI4_ z*zOoNS`fu#6#o9;r1dCl=eaLm!(?|i)b300CUT)MNAwO5@K>GBr+Fs+72}d9+U#08 ze9!5*4q}52IfqsTgXm6aL$yMpjMHZJ7(0c#BS@bPdW+9RW5^s@VAXxgZfy61lppY9 zXjotQ;@UXIj671Mk!AjV5@28Rz?RnjZvkj%$?t|GRc|aBjQdWtqBlOG@AG)E<`G-7 zvD(#gm-F**n}$>su-tVe)mB&Y)>)n|!-vi=7$G73E{t0urgY}jgN^DC7sPB{PSL4U zn^&gIE9{Fqzgnk1>1;2@HS2+T75ig4yU-@6z6KqG8U=%n*L(P*I@#Za!a7+aY{rPZr5f$R%w9%dXtJv z9Qx0*qGX?Gm>+2PIv9cs#>A*=^>cfutzFrT9~LsdCov5iC<5&Ky-a~dq#bOd=nW^D z9AdWIo0j^;5N=drfsJe|Q1Y;MT3(p*Ht=*J3cIMY)GahZHn=*J^^MCU8p;5_CzS8% z;`+>g#lT|)a23yLRvp+nzvljUQ?)Ga8{;c}=U(#J+$;=*Hc}#jw?W>(jR9D%l0-G5SmV9G(1@bKL+q8<_ zoAQ+Yrdu|jw5k83oeRb5(9@(#Qq|2Iw4heC<3Q9^9=p*cAko_)5#;T~PI%<}-8zz% zCu=%~MsSI$+YrI@=I7CBwCb!}yGGTh&_4`$8J`nfQ*c}5y4wy|Y&Yq%*4Q6o=Y@>d zly3}D{?dJY))dFmAKdImoph*^Xg96U=Vpy1N}iH2FV%3HbR8-@Dvm>aKP2`z&&)=v^24 zUH*GS#QV~Q*-3{-BGa9(bbv1oWeEiSgBe1P?^Fpj>RR2L&{t+{JA&9>$^4b{AiCSx zqCV#|$W97cN>OOAofX)g_|jR`kGjS4EN^u?zk>w@RIxS ze6Z2#KCO`yWPpKrOTT-`eV4aC!nzt={b=9*D+~Au(9^?h{RDm#?M;$*PY?~)#$|1mB0b&vpfg)g|tG2}D%GwHYfI}7-tj;QZK0T{{Zk7y-P&(@1 zy`;HB^PHij%-1YH<(Y>RhdVJ9e&`d_{yzEO*9>v+g8v+MG z+IVC=TWT_OFMS+_PyWqWJ5fpG^E>ZBP(=}WY#GJL|NBB$&0of#YdE5owveO~(gYoY zl}bjm+~J2kb7sp!!OW764``2j7x*>7!}hl{im_Aq#76n);1a91%50{)JGGvaw|5hh zmjE*NF&I`cAQl6m`^{_W2U;V|x|9G7w#g?LC^dDNUIooI=)Z~Uj=9BGN_N4GAb?M0 zT3Ff@uaqT|8YI2XGBrZewBp8Q)_T_}8w6oOYK?8YNzL3v$}1ukEbinCzH@7u>Mw>9 zY1(@qPB0%j0zplTBDgJb^}~`l&{K4ZXHHj0%&%+@#N9n^RGvEHZo<3=qAiN7*-hKA zJ-PSCznoCT@+B79X`CrNZ}^v$=S?VObV%fC3oY=DrrjzQ1a=I33#HPP^I?(mf#e$j zr+Yy+$-yi`>&x(hQs_-)Oo`##`AwuOFE03_8tK{)3lmNc9!`0TU^k{l-$sL0b01x4 z>vHo0m>m8%2qm7}p)|VFo?D|Z@dkN90a{YCt4VF#5$|;DpH;`{eY^>&^+JH~eV9^6R!8f3|>5-5pj8x5i=d} z0cx5@m2Hnp^7b8X$CH)`=`Cc-(a0&Ds)F#CKV#+_kY@Hy;sYk6IR(nHV3zkDVDxM> zQbziWoqCTS(w|f|LIWGWXa60f<+L$xLL>&EpL;Gs!$zt-<$LzCk7h?a2RFOO-PovI z#xx}GtCQ1dC_Mo0W%V(d%V#^qRQ#6z3xGu&DV+cFJtQnn8CN!KFSB+?w4y5@nfU&5 z{+6JxLsrl3Og-(z!*H6KDPrwc`xHjEYD;5!OH?`f{Xsga)#;*K(E_&;r)L!vcsw7yp)!%bU3@` zdJ>KpQ#ldz9sXXJu7Bx^Ax?smHagqBVZ0Onmy1lmTo29?3M$(pH7D@DmWs&89uEej zp^N+f1O_M(6~SROhRaA(l$HN{{Kxbk3$h#mp(3HOV*BJ*K41^)PRDnYX(pF8wi!?F_a9_gVIRofz)B zIWd?onI|Qu**mmJ*UxK5qr9mUeOxl=LFic69S~p5>l&@HV`*DIq0iOW@zAAT_vq0NHP_ z=h=ucMX_6_aO*>Vm{d&kKM>aGB5d48`FeUaB__GI+uGC&-Vch(w%XQcdfqBMd_9|y zdT?R5{%xH0Mgulo(RkJPQE>$&4qn2k5=5H&HMdB5()pY?l+518lZ*AW4ArhgT> z+1kmh1Qa9w*l$x~2Qo3AB^pcxEFbhAv?f6_2B>y_Q`&U|#TERy^#~wTAei&$IlUi0 z!loaXmHXEPBR#JL{1RS)yaUXkZ5eren+fQI9p}cP!PRwxM+9bJY-B|_h!*(f2ZR}< zAczII%nrX_2uz!_ez}~F1t-E$H3#VW%jd0_9JLznnw4j!^hf^6r6Yp6udS4gwG&)1 z;hWh{ORa4W@iRDW&Wh0V3Dr^>%<|I{dCzHz4fZL_cZN$YSq9gDtc89mCz{@F6T3$3 zkJnV{oF{Ricnl-0wF$$fKdLmAD6u}*snf&f>4ZZ zWManGo0s@i`p4V`sDID3jpzWm<*fF4ru5X;{$*7XKm0T4uL=n-ihd39L+ebDiCMn5 zRzDm3Y{is+1{9uNv~fX%H+x$FNmLY*U1w!@5v~Dt$t?(GMQ3CEPWn@jXISpWB$3CJ zOMQldkLc+M{=9(Dx_YKv&{(0J5?vxnhQfGeW_c}rHGXY15Iqo}rerO?MXc-S92mh> zk(MCUek7Hy@hZV2@)1)@PGO0q#;eMxFIx-Wl#Y@%qSpgQYWj$jXDjf|(ejqu`xE_G zt$9s8c5*kq`?$X;$Yh|awJwr>KS89=^4T{VVPgo?9zhP?!i^GsDdXZQ-jS{q8^Tb} zfYq{!cWKl54QEl9d# zt^)irK((*5ujrh<5z)IlR0<*Fc^*GyFYB>MX=juISN3u$l@vW9$UKZ#YB3OtHQ3HX zJ{)G5q=y9orN1#DU~wePL)W~*XZ0M1_~?|*g=(wR}ban|(QrZ2&$gBlzao9R!8ormL+xmIL# zTHq=Gs(R*u%~sZVb?lLynxb=hT&Y+#<~(FNec4o@i_XZ+JB!x)j)T9~$yAPIzTY>D zJQC`d@sjSKDz{N(dCt8dXL*q+8{8~ic@!_0GWsi8B+u<0@^%NoZ)##pJDLjCvcRXC z|3m0mt*)ERB`9RAbjmlVfoJV zdV%?9`Fhea=9zlNZj;q?YX)uXdV$6|YJ0uwks1ikd!^vJR1 z25l%h!|y@7!-ccqM+A5O5=?$6JIdL;OS{<$Yb~4pmiCp0H{J-*P?1SHazQpJ1v}Hh zS8{g(LRx*;shB9UM;ZL4!d)wueM}41BIK`bYbG7TzuRz`CrgNpt59MJ9I_)@7BZ5r z#pEaXA6|A2_bgM<0Xk%G7Nds6YXk>mrLz@nR#M}b<~1jP-zMv^Xy)IGfg#5~0TjnE z@wf3hL4u-xqD|I`WWIKX<&{rAkwclOLW=d4+K_Wo?6 zNYrN13%-LQzZQ<$M(EF5O~tJo#R)7yp+u<0oLj?lv)AzHh!VZm`&ji~{xc zemHz3xYhig0&HV4Q6m_2_2&E(f->x!DSsoGl-hx+aqRl%vvaVqnQ>E!UAlVPp!C{l zG18X@O&}*O(srXtOR27J6U{@RXnGVcumzk)wB;53URdx{kHN0hvS31ZQ1O4(#Q-CR z`32{Dm+PPm4>_Qr(iJN228-PLmn2wo>`trs{7#Ig8Gsy9{@LtMx;TR3#K(Y#jp4}h z)`R}rEy(?W!Cl+Fp*x89A6rdqB=*9J0#zxc3`P8 zA0w6m0M;(;*CYfHxeN(~WYIDK( z;9VAHR|k$kb8#cCjx}HxiKRh@Yy%ePzsKjf{iJ)i zn9r?2I*JPue1ZL8TViY6pT(q4aip0&q3pq;_s1?h43+I+rzh)H1ufbqMO`QS2K!d; z>F?*OXi0p$CNL~ko)6OtaYc8XJ6eVGfVW>(pTbE#MH2C z!*DnkkEU#u;v>>m0@0xXUQiZDy@H5&I*81$dHD`)wTqp+KfkDDG~nQxmisf4Z6|(i z-Uh@;Tjiot{`Cu?f8?|+ir8V)Y;v>r4pum|T^6j4N-OrFY6z2S3sbAC*|3x-fEKFT zp>A0T*RJI*uxOjt<~j=HV5mQI^fEahZ>BzLcCNekDsBG+@ts%Lxs$-5v%Z;wzjfVi zo|yDIXF3+jERlbD;}sWu4GAq_a+6k%MvdtV;mK2DMb9oa$+^?Ut)Cw^$=Dw)Ap}!T zWKnFzBkgh5U7z9cC$H`&MTRJJfOK@)DYb#$UUcB_Xq6xJ(Ti8%WEuyX3q4mYaF)zj zm3hox*(O+UFKOJ_@UPt+F&yJkp%1T zlcJd91YhwicZ&3VF45|0DEZR^_5GYoR4+N5r-Yj~KifT}$%o{oYuW>EAmOGmP6~Px z&0+Tvbc`f$`oyWtRuPtbxhswZo2!PrTkE@_X zyVkS%61%h5A5H#bTL7yJ1||OEiN&*WB9v#SLBhrx-2tR&o&heR-{6x-B|9tbgf?58 z6%yPoW`nmL8pjU-r81$^?tozX?{^cq_MJ#A(8~M1@OR*(tTi%o^HTE;#(2s=a*pmYLx*jbYk*OM+NE6eWG))55zG zCeI_90uan0)*ecG@iXk-L^U2ZMa-a-)hTnpnx7yKm7wgl&Y%cDVY4rMt~(1x?sLC%MVRLqh~#beN0Q3jT7x%tVoG3+(!(Gl3e zi!`AHCQM;8xZ+MK!pIKHdT2ISz`G`;d9Or|$AzMq_-5aUgAf#=PxWLSnc6q_n94*? z9kkP?KC!mkzDCswDo>iB{ zNSfX>knM&i)tdiJ#GC`Q4@G1;$dm5hwIXr@$+uL`f;N9gdsNM?H9>7mE<507?{m00 zoAc0Q4-jfjaH>MGxGFtj(XwBujXmF9Y_g zt)xUm%1!&f#m+1BS?-8d59~ZxwuYkbcPaBQtbuHDkyyEnEKY~qSM@jq*`F<-TZEy9 zqxii8*Ot1Uh52h0`bpyjiP#AAsHmZJO{n5uCI!ZOGm9k`272&5Vgy|B!{#0t5wcB3 zsOT}yVFFy{Ej0H1CNn^-rPRq1j?iW=FF!!+RcSWy!JWJ$A}&tu=;3p`ocVJ47SHUl zTEHeF?kGFt-E_FdUGc7)48wx3vW_vc^yF`OCbw?=4IP}4w!yz=Z^7)A{A(>qmXr=Q zr;_2qOqSyguoX24&Xe6FtXnL@dtP8j(xGjFJDM7{f(cwb1&ZSi)8<1Jc2LPm#)?X$C=$FaZ=n^z}%3)$)m5!E#uARz$ z?)S*qsXL?DU=sY_tHI<@8x5y87MFk83Zhyl25SB3FumNCNjn=_*Hw#GDpcI-dd+DY zOB`1NFX7hEjyzXd>1(^o{is*)^;N{>IhywkdYVM;px-d8Tq@Tjmk4SjCNza+fA>=pwV`5-rF7RBRB!E#O3+`@Ou zgUrjT0v38cDBCUG!qBnN*?c1u{6g>0)R-pmxhyQV2#+KQWh~s>o zslWT)JbvLpCZfE54}acgGjSxKd&1YbxjUY`%|rgjLSbU?6ei?e8}iga9{G9nF6;C} z(#nK+SGk)o{?q~fuh3RfcSY5+l>kN~#PLljuqSvou`_fW`Cm!>Fj5M3VNEw-Hmoi$ zEePo4NNXBB!Z3lbPa^>(-+H`b(&LPwxB<(p<-OO}ny$&qo-E;PA$n zamE*@<-vC`7ZmBsID0%}Aa1e;E!dAcD<~qqQ9)7hH;gMChuI6! zI1g;gfkmHdk1N*WoYKQ9MsA<~S=u+pYgga~pkX4B0868ieT&0G1^#R-s{-FAw~GlH zbFx9Gv#naxk7`j5bIvc-S8Kifr!~H!up=oBXdl>bnxzoNYA>URTyO!9j8M<;gqgzc z?-E>(xUB04xBfKFTidbZy^CAtWvP<6(~V#xD?Gd*-Y?rvGJXSp^tv-NET%CE!kFjI zE%w)9^!4(SnHi(Y0jbkIg4;x!milky&%Qm9k$N!IRUl0YEWa+M>LumiBQO+^yiZJh zv#5?yc#{R(XA+L_1bn&);ZobgdTADVklAXtyv`K&M0#?~x>ny3ZC^YWZAnBRbRo5O zbr>2JVxio^Bn4gBg>UZ59gg%x8)tl${4DQ=y%;wZkF(wb@KY`f5q@2?pN}IN5y7jJ zavC!8-mUh)Zg%7+FTP1dJV=}~rMY6DgBvPQ`lR0QAYt87X8+gPX8VxCOGvl44gQ&@ zE_!onJ1n1o(uS!!;^Ad#(QYw+m$W7)&tV%Ryo(168AArBZ+TR)L7ll>5O{%@9P*#` zDm$Ix^46mQ${b;WFXL{KPY5Kz3278^Op&Id1?{CCDoh?5)^k#IBwx-7TnK4v(FXn! zHamn$2^5$T5aD5j_a#*RZ^U@jJ@pmOND8so+TXA?K8m6r&ZahBNo<7)?IH!J9*8DX z^KEuZM|PS7K%`rEP_#&BXODG zt!22P@&K0r$V`)hdirmLzlyF#32=lTpDd(B_UYjsR(d&Cx9d6esGCp zocfZOQCMU%%fmqCnr6oYjpcj6Kg0vDu&Y0aX&#HT(sr8h(#5 z&|BfE7eM%a0mpVaVUKcI6y9WITb${MFx|9bDRpk47hR?bCugkVXaxTofJFf`bRjz! zHRQg>pZL;NaxJrOxUIrC{`B;)smiNRLVdDXHH$k}X%js*WoF^85?tdD#lED zBaBk=kWr@j!P~uks-*`f8LiWx@?i!%VCCeieq;ejRA)6Bn-G`sHsrL0<%_Yrd&_6x zGs46^b-qfWDmP4L6~CgTLm;hH0K@ywcZqgR?#jp+dZbq3-Sx8;vIV2G->`H#2T{}d z6-6yHM#iZ8DUUH4ml2-+n%obmcp$jli}kO^wWGuwoaV)Bm^E-X%DGJe+5x^d8qj4( zcu8y3>lS~r-1CMSKa%&{TtJH6{r`eA%*HCU%zazM-O^zzB3!EQQ)E#RC$x@8PT1W8*PE5y>oMi$(6fOO*Wo6%|>1E(u0bP;H-u-@$9FzSj3gc zYTki~mCM~lVBpJX9|AlI#?KNBbCx-A??#?zzj_Ad3EF;H%mssb2*i|Cq5y-UCMXG;3zrjP*wtT4 zOgO`B(2GzQsNCqWPgnA#I8Gkh`4P8zDPyo)zlBzmW?LH4H8J64$xEFzk6>k~ULtM- z5UM12oHk-MXt`aoq(~-6ii`juMO0pyc$*cTPJ>_9Kj!!-R?*SxXUOP!8tE-jOW-?w z;$x97dq@ze*??v?i*L0_t@2#$j>cfy@`UTK>N+Na`rq7eWY;>7L-LP1R8?e9j8g>E z<8QvT6c^W|EZF7nAyW-MV;+rxA7LtD9!0vFpkOpM2HA@pcox*auF)*ILdcfDBC1%I z*EjXycUIM8@pER5oE|o^fK6&($anJK!+vZ)=XYCVbpy-;l^4fMxYgoTEPv;^eejwV zD&v2zQcGKH%aHkLJA?)y{swDqTb{7{f(b1N7ZLfWtI99&D`u?KEOm^W2YXVR&YiZs z858aBP2%}J2EW^T-ilM?`BxD&uZqSInX>(K90tjv>B2)8H7F+()2fQZ(KU_*5sRM` zTPNt`s~9kVYt~pH{XVE52WLGa}-R1wQ=Fh$-33$)!r%2!DrQRh^02!K#fpGIbgtXC*oh{v zv1a~*3NQAepMC7t;NE-@7R`WBK!;+pB9z*AU*V&k?T2fu-PwD4yci3*c@p3_ z6~?DGxF4eDBoW~bF48X2Ze)WbQmk5JBP{~YrjcGTCi+f1KT9ka(Oo7Km3317r67{x zr)+08dKhIY5;!5-7?AmMddwKa6>ODZH=!K~xC8(9oh|Jn5Z?}cb!Kry<&PP8?_G8+= zX0rnul`M{*e4U9&U`uQ5L8ff;`&^t#w8JY#)5&tnol$}#s8%8mnP(Uj4;5}1X)A%y z>~6|0Xd)l08CD>dLMy9JNbgaq;^X6Y8t{LZu7@Z>!e!eh4sNi<@W>Fyt>Rc{B{fioHaK4|82o8*=Bns?$9rxcSB9S zw?>4YaV_iZR*V*^ksFq;-T~7-OU%$~`V*I`GdnB0T=iU^)TONd&~--O>CBrPR6Q zjH7{Si6=kVzki|ckPYb|wxC+3f$6VBqpdjSsXjeoR$JJ~Z#Ura;*loz!4)NzDDz-= zZj}*xJg(xz&4w{svV~bPYETU0w~MgwA44M)4JeF*K^CTvh=>YtuKxO7*z5AWXj_{Z ztuF|N{s5!+(IS;GjvjzG+vm-O`L=yJWo@gDtTqnwR>8>+3gIN315EHh8;R+P`F8;4Lmdc|Yhdcz&bo(uBK(MyQb`k`nQ=$~{7-67+rJ$P}=7nZu}pJ;lmvJ*I4` zEPdy##LabS!7lt~CGF}t(w0@b6mZZPF;%I5TiO{cSg9v{Z~WJ5VE0cz!O+c}@c0vp`9i$7F8WXc{2CiCl0F;GSe-qA~UV2 zs36lRNzHRpUqXFG$F7|lKF6if>;H_R;btPYK=_yB5#lOyPW%4FTCOCQ9C-L&K@;~v zCjVsz$%JAgS6QdxI_8IHtk1NS7e(%;NU8L&_PJFLU-e5d>f z{(}`Z7vjaGZ$i$)Y!(setCIfI$iho9)WuHs)PlQ9vHWLL`PS{MHzsMPZE_B*FpDX) zG=Xxz>CiE|@{MTYQSVK+hAk0kiWT1jdS5^!DT|MZ(;SAMnJ!KoP>`BCx8wDtC*zx+ zxG%ST;z3oM5~cT8k;4j>u}O8e5=MKh+{^fGH(Qj(e>T?n=!OtO;8_iRBjGAJ*yyYn9iJGCgviV50V`Sjsu&Kol%#ng6;Rs_sykkUoS3|pQ zrA}O2)OrAc9%_>$zh=5RA-w0SsmOel*!gZv(@BEg5n{RhUb!!2FJCqXFBgy0j+I0` zi2AP?KgK?Sl{sO4HN3w`>#uD#ZM8kMY<`7|wJ+T#Q41zPq`1xhB6cy(%9|J=RN0_b;;DK%z33+TE4a=85mZYou(t>6PpoOk)U1z zX=jNy)4F#;Jas9->!M{PQ$_#LJkvZkycE79 zk3MsGfqUEMG z;={-4?1S^6Nw6}8$}gX(axmK)g1ZMXOyLfLk^L@C3co4Eqg;6Bva3Hy4zu-P1*2%? zrSyA?qG)CnT-)PFHg3fZfX4M{23S#1S;cCVZ4RXjJKc4QryEhGsCqyrLa>pU`wDdY zQeLaulLEA%;kCTZ%OHnLe=5WvpahN_D?V00WmpGc)oznIH;nic!L zHzuAXSJ|BXnA1e9=@Cv+h)OvE1ddk&m)7CgF^td32+dOB9Rhi>BJU^z054q4kI7py z-yP8X>#%9cYT3r{lVXJC%)@ujbNKh3)XvM8B z3nQPBeZ%)Fg;b-|imuvP`?hin{j=6{ zc;y*j-y^^J<-HaEOe*K{B0U~a;J}|_Z8K~bw&IC~^v2%EQ&?uVK$#5ZQGK0-s?GoJ z5Lq=58$@tI`|Op_!If_WdS|X=cLr)dKUi0%eL=7x4$?hg#?PMyfTmBEaxW^~c3a1# z#*rhC7d#P#@-7B%0QL8Qc~kMbNOz5`ta~S-;TFIVxMdK7ke_lWy=laOLOmP}48Eu?W17X6qNN|lQyoHdWzqS#fZ>9|E~_6^ep?#L6e z9DHLzfbZLafG|`ZP|qfQGi}>$pIPp%p;$S~|20pa#83|cMXR1&+*mDyp&|Io;t?hm zLZpQJ3L;`4YnTKm&Dh@qrMqfB(6u@eKk5fzkD9g77RR>+7ba(l(0}qwi}Fo7InCLW z_zD6Tmc*h=aDK`JJw2n3@;leZhB`|dour0-%yiXJF~<<00E?pA1xGQ%ZX%E8SM@hL zXAS~aYq32ZfxIMEqLunnWYfjdU`hb`T8kK)J9tt%wB&qwn>v+K#~`H6h0O1J9!p50 zj&trn?RQ~f#V&@5r1%iX?&!?bp<-AazK(p8%2hYXcSh>^X(SzX`3I{x&4;+$Z=xBj zXX4r#`3w6!fXwuMQ~pf->e+(=)(FEB*TuDT?6O64F{EpP|Ekj`^O`ZSE!nQHWKOMk z$vRi|)GFi_IqnA-WIa!1$s*SIru+Cvh2_2*lw)fW*u#vj14H-#JT%h{VbZ^a03jr^ zwc?173?FBl*yvGxtA)u5S^~Kpz3@Xy9Cj`g+OLGr0JC3*l|Z`JrO`0XT2tBa@aRJe z{vUnVpIo=mjecI8y}GV#Wm{Gb;NoZLR#$Fxs^C!m7O>m!AsbquU<_joR+SGNUOR-* ztdmRvh|s-|g4TIj(LQK1S9QObuhAXe7-fvJL&{o9D-d7^D(n&VDJImS7B?1P<8kqB z3kk!20q|4mV`rKyW?~2Wy}y#=Q)&po(nHTD0JpthIPbm_7IK zg67tM<#0{tAP@X}95iP4!1PiW=gPz0R@t_;uFb^bon3!_1f(nOrb$NSMqv?;LFy+j zJn<{27e@@o%>Kr|4f*4zCUJF18b)Sc^!0EB5y871=v{kY*Ux)JMxM zk8WNYpCs>fc8(?bAsVWtc#KK;o8Bm10BF!wB1u~%KVa(@|3<1*!zoEFx|J0 zO5HdAqz&%)_8dt#%VUsPfB{7?UCb6H;pLE4Fw1WPe>6YXXf(rEk@fN1aoDU2fF<}6 zQtVNS<@F!BpKQqM0OhOcIPSo?#0n!|a687~d&89Fi{NL#zIG7xfO?PRe~909<~`^G z@WrC#2^XXPt{2|q=M)RoZs^Yu37)f`@8Xv5P{&}+`vAY_c+d>?fDfcki2F-~y7pXG zzkYHD8Cm0(O*FjO{71Bh*jrv1z$`;s;@J*)He^JZl<;f=ziL8hzRpK!OJMMflKjCo z#axtwvW+fr?1ry1~lRO%r?0HcZ@nvdBh< zMwk9}j0d-MV`>1C6|o=0ew{Xb_QN_2V>A1^H?K&0k6M66%NxRKm3$`@utHMh=~0!l zq#yi<`Sp^(W^>hwh1IeZzLo>-3d_3mudUMLUT;3(t%Fa`7pS67#DQAo>^eW%_H>9; zoDIKd@C4}BOB>pD`2z`G)xv-`%aI3FwZ*Tw7)nqgNb`r7KFjr_{!gy)+btK35s(LC zy^)vn>ZO|^af20@XuCHY z`7hB;Oc4|xm~6A5!^4Y6DKx_$Knv9%Q*92v(e_~on>DSpIJSoPr9b`khL_IMXdzjk zTMMW9-}0v2y`S;YjPaJqLLOJ~iyA`S$p5HAXfrD)a;&)r1)N)2fa3LOdvxY6MmwQp zu$Ecid&Teto(t;GLopj6tWnd@qWw+ipPs_Gh+a-V@hgn8ubMS_wu()YNm%T-jP8yQ zb=(kb+f5Lw26+>bs_onRaeJ3wp0j#ZM`ExIRXf8N*zpGR69%O66A$mr zXhvTBR!sk>Uiq5P01p$QE4IWI11`lUErGMe4U%rqSgs7!UFk^Z7f*%vEHM4hZ?4?`&F$Q{AyJ2rwyXUy7R!;OR3G>2|Td$kC?j1h{C$K2N0Kw>3N=a3gt4VN^@<| zC*eg}J6ccJ^!E}eB=?(-;UBlnUO_^F5LbKhQ|b5#0*>cB`5yX^nH`Qtu8rQ?m>kZt z0H?Oacz2{l2t+Wv$1A;t9YeMJK_lwpi|5geR0=K%>m@@$J&dR(OAzK!S3i@1UO9LP zzql_F`o^MuK0q4I9j^R>Md2gx_mn1eN;Kf**mFl69%0hd>f9806y|-aX_l$CTgod^ zl=Nro;}MSj&Oha~Moi-KjPhaFD!nmv?|S(W99G;&v}>F^6PcHOvd#3O5QOIjyZ6b# zxOvoV5sQI#dXENTS7-+TWjCT8*kLr(Ed1TmcAQ;XhlpQ2&x?uW+ zLV7Fj3s80weH@3}MWVMuC!oYQ9~HLx4VprZ2Q_!)n69}Q)aX`?SeGe>`q*n%J2R~p z7M6e<$VGf9d)F4+Iz!i=!>#A{=|MG=OxAU0a*l(fVT`RM{sHz?v0Mk=y#-M5b=la< zkaSgAjPRh}$ry6pdU5Rw(>L|nu&S2=(`afl1}f`>U8OMo{(jkA&SF0NwMN>>DV~M+ z?%GJJBxFPh=_ib~#p)fWo zDtqsVLh;!)8i&B8Xk%C6bIP8@ZQo7iNFee6Ruc|^M}|kuX7YG&(QlMNRhtkkKyV_! zfq&@Rwf5vuG{%zVF0lv3mv91nOqd`PTkRBwMs_WB^Lfvdy8uw&rj+qW+sp%eSU~$vI;kuW8uLv_ZatKMn%Vo%sy9Z1&oYcmcV* zCG`z|KDRf5PQg8kDd?;>mxWYBKYohGoj(dm`gS*T|0I0(Ee#r%B}bYM-m)iAR2E0Ki4;5&jahgB#?4bD*%=77+>g?k}^-XZ`kU*ZfWh z_Qd7Eu4sa7`*+^{Im{gxZq~7TfI3o{<;ooUw^R=_EY8zjU!WAcxoGt zD!vWvf+Cd=<$}F3R`;h1fOOglL}eFQx+=qc&lC+uv?34&w+)*YP&^Ol-OaQ}DFL-bv7J3EQGF$POJAk^9_^T}aS66! zZ@b!_?z7(?Hl;mY<&a;Sl_5V)qQTgn5i?QAajUy<3uB*YuLq$ewnOkA$=!o;1M)G# zgyAxa&qqLLp{_eO|xCA%N32_$ouw$pSsv(0MCba3X~7@%Q9|h4`1T=-&hEPTn7v$4tfgexs-_~SgJ`(O z+q84IlRV&wMvJKBfIa1&dnVX{UKNY^p4wZDpL)y+{PtEPM2ppr#+jbmiE^oGKYj9( zOrCfTPd6b{w?)`Vkn(ag`=A|nRW$Sj?3iWz7_l4J2{fP_jH6l>gTy^4bS?XJd% zkxhcz)?QmXYv!9-E7S0POU=u#FVgTw7qFYrEoamZ?TJIUB%5U}b6+f)+a#Mi1?@?7 z>Nd9b6!nzw+uBm1)`PjQ>F$7Ek>6o*qo$>$*6+6BT8^Uw5{?P9LEAS64YS~ zO>n3GaCXG!0E3)A+4osHHgR)~#^)p@d=NW@pDN6o!_7?iB&ELtk1z}8$ed*$@Y`;f z?Opmzk<3ZO=7SoDx%-a;L*mjFv&8^z8NiaM3 z%iU5uX4r~Q@Kz1OyaKM_UJEf{fxMD`hIj)5 zmmc2M0hDUEii#(l9owyri&BdGrruw-bFH!iuzz$r^f3llVg4+IJ>gkNc&flr4Yb!G z480IT6%U{L9U_sf;=1<*6|umZv+GDN`>Q>p=TjNNrPIRnsN2H#lqt)6^A6`4xN66e zzc`{1nyqW8K6?|flJ#q|_p}j*C5FTQ20h1u0{j6G0e^kcBSw$=v@|J4m9qv;}uK ziwCnswlLdPi^F1X`$W z9N^qT8gZBk!#Z}hV9WyLzYY7@l-q0^66+y)^5t{;?#?iXlCe48Urq1kj#V zF`3yO{;YvE>?C&Bv+DLf9gN;_-aXjT^Yme{LU|0S%vjDwkT~(aS-@TY<7;2PGF6V> zv)F;WYeU!RW5;1v9IKOEV2<^Vqq(|^<6b%l3pV)m#V{7k9};iVphrOhFRIWF$y;Je zM&?azO(F`MZrOfwL;)%<1>lUDhU)egR$-yM;jVan+g#nbG=~TkK1uCLuHt#8nB;n z)2sOtFkbUTBwqmVBp~lJ>*K-Aq*q$BwQn>)@HxJC)b_4p@bUg=0FDA1x@?hHa^5SW zH=9z0@pWT2xw2XMFR+KZ^*em7uiuw~8i>-5=-$LcK5*a;4`j_nO5QJC$QAR%yM+C` zJO5;i4~B0QZ>f!Nh`nNFnM_`=63{x{O4$tVnV+#haRM*GtXQHSMcLt%yEZYS0xkxI z!@}1R0!o1gcP#~5Ksd|?W{qC{(mtCCmWOdho<0iQ`HuA8f%p*cBzNQK*>?$AD@95e zn|W2IkgaT6K>_RaO_E-|sz|kU;(JInNIpnr868v+K8a=B=8-0dDVaOFZarIc0aAW3 zSZNgV?aYW|zG}D11qg|=weXX^9^sJ})nr7~tAC#%x|I8n0E{FlkGiujR#iubx!!{D z`J||O?3qB_23I*@D2fa~5?v52E?8*Dh0x$HsI1;Z1ipSggAy<=mT8bttsqct=Mo@S}t%u_!P5&DMGKPY*oaSBJuO z-$77S^_;-9XLeke_e<+ZZqB^$F;(Y>k%sAa&4JBFcEX z$iWfJGqyG&7$DLlvxVhacXXE!nX64VMiSuP5TSC2OKX?}4~#MN-;ClEhC?Kpv2>=FHf zuJ4N;*Y8|jJceHfi$pO@n;)*o&DGT?b*C{oCrHJc2#w9~+5n?JrHKM5!H&t$r#q%Mi``f)cFd@ z_xQ4624?Ve<043(`oX%qkbFvEz?lFd;wu>sH3cH0)E%FGCzogPii{`}#@Z}(q?!s0 z&`AjWkIm>jo7HQsq6(CGp+Mfh{6+&6Xq?hMDBE8$gqNTh-L^#5?rC!9QX2rpMrGTy zbals!9|vysgF%OP*^giSZfBVCx@f}&YL}=NHozuH^QbC4xA5^<9j4nKORQ>-mk690 z?Cgfxls3lxX~wlxRy>*(^ZsY78u2hYU`b+&o6)ngf?+~BgZ;OTSd~wXzQ1b7#a7Mo z7?%zR%L!C!%1tu&BA=`bbrTBvz5IdpMrvaZJ{uhvWMgIdI^hg{>I}44_;gM~cs}($6MthA!%4XuH$(RdQfS?#f z@%vM7zvp;V0Gl%jB!)gt5a922L)t|x>0|%La|3EVK;ut@;fHr7DDPsW68R4<(_<-k zwIT~vmw8CW`=Zk7z{hjg#Q+(6x1B7SjWWnq*WV(*lVs&XXhO{_evzU(9ZQ?kL~E{q zrPTie5W$AJr9ZWYS|Ue+6afGD|W0_J;PVzu>u#Z@R6_Q=A{V3Z59pbP6yLLwko6}wI%W>Om zpaJ{0Nfk);Z{ZAS4eAD73TR}X^&058%Z0{{3JUkN z?XZiGt@9yI@}$9m7&1kk(LQM!uPt2%>uKxqctfSGhQ&7@5*N4W>uHm+?RLxirp@lF zI}s3Wyu|l`@?Bf%#>WxeuhdsilL`AM0Y9px!2})h40Byg1Eb>ie>KJbfcjyApgjmb zvak_@7wZ9nb)^`Ropw*>$((wEuU_(%6%G1mn8e+@Kss0f!pNXF>fZi_R8frj6mp=e zA}is;WvD29z4%G`TeGfO5M$$XpvBOALMTS+W^`k382dgYfV@bM6H0_wz=hV)eP&?+ zVjawZ>CP>lv6dg-pcc)=OF$hh)O6IiF)&)U8Ixo7;xLIG1#i*D?l07A;x>^SYPRdT zR#DBY!j@tS@BFg9%# zd_V>EdiD4D?nGE{VF}t^W;&)6-0(Pvy5@fS*+D>CqH3%J#*pi1uFpis3geB8IUk_o z;^o(1Y^IYmbdEoX+4FT3sreN_^S8Elttuff0bEp`Ru={0nAn-1k-7KRv0 z3xy06Zo8kXZ_FK`Xg^=h%c*~G@9bz$v`@H&e=oM--sRZ8X~x3m_eD9s!AUv%yq+*1 zJis1){qA;}2Lk)ZNx%_M=mLtMr`R{Uf}&Es9d*S=;X-?sV?8OrozdF9gF!t7(d!3) z(r;d|Gx}Il-{Yy`xGm1TP1*f)*yF7Cz3qNjI`Nuw_PV{na5mCX321o z4u8|Fxk|@c)flSu=2t0iJD5ocmkEg8q{*9Cu$Ap|wU+qhL!&}s{tWqtBt%yi7}INI zgZ(aj@1&;@#N(voZ4{<5yQleL&7@fOYYkpRFrJ$AcaHAFmg~PBi8JQfd{|{`nCH^ABz^oJbL8L{z5_fuh5?N?EuvX}=!^cRzqJ>*(ch8~2ML zNQFiAG-A?AF87>4-tSH@`r9T0fN|LXdjERzSkeGl79Vc=k@sP6%|(8|Z%=BXz>MU& zh~}bGcdWiUNq!#NdO9v%=uU{dQV~gic8T(EG%tZRM|UG99YS{nHn^{ds0-QC?`c;5Nu&(zfXJJr>v zyZ5d-+H0*QCFxSNj)bwYy=Hzab4l<%iOrfhn5RO<>Q+Y{5A zQv=LS65Q=_{#@dtJ|Ogv|F!hH?Z>@Z^F09z5zt`N_vj~1Tchzf%Sai|#f#A>D83p( z>_IY|_h%~|EQ6{OAf#J!?s|MoSW|AF+=;TxE3mMzyaM|fti}14zb|1Dmf081&^0#_ zA+k(SrUtrXO?_>sU;uUd=e|Crq^U|9RQ{vH4Pv)nuMt1-zDzB-W<@+m(rYT3gdAby z9EgrN8dmnwk+4WDRw17s{$zRrcC=$XqL(#YFl%nXwI7Zmm`pA8Tgl15Al&>$`juwr zDB(Is*7UfdP0;Uk%BsBh-^)R&$Fm3875oAxhnMSB?Q-yM_j;Bt-(Y{TefdcI%nqZ} zjPo|;uE3IuIfdz#XnmTBK0SN4bOSC1Lx8|BLXEc6UeXwBY!vyyx-65s4?H+$|mC4zpeYAiRhZ=_3+6E{**-)wbR*_!*BNP6AP_PV*)fb zuV4BR!87U;QybbdA?Ve~Ci@lAkk2>JI>jWOgK?_V^hG(?*Z!(aIqxXrEh)ZcCnnIN z-sZFys(JUSEM6R_{*r#{3PW#gJUo@#o zzYoW0xmdOx`sFz2AI!G{seTtJ)tBH5&qqh?nEKH@$mZI3w`s+^NG|@qbO%_+AYmu{ zI?L_?E*9T|TCZZ%@dPV{uU(reBRrBdEOM@6ob8A6DQ4%-ziMp!LcMlC)B4vu2oVsE z|1xY-dU~5$ZRd0)!{sMZ<`SenVq04r(o-N(8jM1r?Gk2EqV=78T{a%;#Pab=M12qtrGq7P#>hfCQ zHuTLa2?qOIV(3PbfQo(tw_uv{SKG=0_n$0ct9@PcMcYyrIhYCVwcb|mW)c!K$NHP| zDQdNCb{1m-kwZ5w%4@vBDm~zGJ+ho#J70q#ECNlAXWwb;gmfuI2SozG{HRS{RPL1Yy0Z6DNi(T5{yRal?Uucj`k_~rH?wPr8|}!#IJdeCCHj3 z?WYyI7r1NqBYwH9xKON3INDaK;IpNcXX(~w1D4@+pkqF^Lhy(gzvw@h32VIOvcUENRy$|;s7wLt zJUOo5WtMef-YYKu_3O#k-2mF3cdZ+^+K9{W-`Fm%sjGo(zNro6u<}h!qn0z^2Iew)~R5nIOiFp!NhK zw+=3xZpJSRlE+S@m_Rps!7fZN!`X>XY!~8!e86b5kM`21keWo)MEv5y&S|0&X^u7D zcp+#8?CW$%e9w~e^IuLyqKn=$MkhEPNTNW2^Tk*xE#i9)jU4%aevT#NW7V{DTPEE9 zmlKH)+kpkTKY^`!V6YHT_g@Q=>8Ncq2sKgupL?7Jw>38RBslFmOY9}**^y2*6M+hB z3+vtUKME*_0h7$6KNR7Xo}a?Ax`mmKEB6O~pq6|tt4;vRarPli?mOW-E!ne9EN|&y z`l5QFHrYG1+9vi{?2a)B*&n<~=9Eq6@3!Zo0DbrPy^XXz`fg1F`e?rt)4j*DRc+rU zhS!iLj^x}&9-cfbJVA{|_v4Hx)>6>khL{XpJ*AV&8GBl1MykS4!e*+@!Gw9e12T>w zka)Fi*m-I)-8{E-#h@QYweFU}uj@K6Z?YmU`b_LBY}n-=#VrV@eW z^vCl_hWg6}oJcBPf2V{?Q;I*H$ZD2?q>9`_I)y5nCkmQdXg7v*tn@;$X|0C2lr(M_ zL!hszUQLW&rg3P4u``_ON9bFR#DbmCfMs+U>F6JQ;Tv-5h3D^htGZumnzoXRG>nC?t$IwFgRNP|MI z`TG}ibm&$TppG^=S!v79(~Tc`)0Srw&}z5C0w~sy7bis+bf)5X@_BFt3AcUm0Ht#m z!P9;cV~Y+E71++eW<9mF9Ht&#-^M(tXps~C76y%srBw+aD)XQ|Xn`=9G+O1D+P{d& zf|DVZHmzMG+Ddw%FjD;Q@ajKj6$QQ+mcWey&KuvdO5qKit%43S#}ScICzu7?dzwIt zn1Keh2K%Jj2T$7#3q;~kcQ;Zjz^sbBPXjgyVzr}x9K3=fae918NYupSIB`WCGy9r& zh}Nm*_?yk@uqI|g8t>9t@N-br#89(g$OYz_@oX>`ci)sfGYRA7H+`JYpCn#(?#GDk zc9Q%I+kmJOgXA!dlY7W1N8= zw_0@J9$sM{7TxF#Y>(|IYi!olcmC)GX)5kGxOV0Mx%bJBVO0gryn0x?56fS;T&mg1 zig8FmOZjepO2TwxECw8I9o#Pd42(4i}E zS+}>Hw~HE1vAyvwxHA{!%I{qypE{wnRrV1ABW?D~DPNNE!UP}+ipp=-^wu1gC2X2> zI)6qKpK;h6nCHVN;xiBwEc7P?&(~bg z1-oTS+8%4Qr~zVt=@cf8Pu_m?Xb(P{($}F&rqz3$-C(Cr`y`>L=|W)*+$XyS$V3b` zuc)>ei}IJRo`ObDE5AJ5=8ixxURB&jf z$aXHsm~P&&n+|_n^9^3x9235nY5i@QMQld^edlTA9FqH-4X-k5&{3zTJ8;&40LW!N zgC$=BDBkWCexSdC1jl1!Et8aiAW370>}4O2giie`EB|*J-OJ`$VC>l`&JaMB9PhAv zD^Sj_E4(8#%ffm?FuOFN!z5}@_Q{hUSKgLLZHtH0j+O{HxUlcX{E{gf9B5@J;&+ok z@mZ;3rls`$@r2iM_*G*I!J#%UZ+Kfpu}?Iif?i7eQDV32{NOm5=yIOBUmG!!9b**u zyj7VNG8HO$Y}lE=3X?#3mJ+h?^4Cig?2{-rw|4)}7cHB{YLofRPzp1yR6{9_ z=}vR-b1%k8{0dqP2vhvt4-Z=5Ky%i0;OEQ&1f$#_%vD zYIo=7$D(?3Q3DubexGpK%An`nm^SbNMIst^js5DrrSKiw@ZLh3mH&)+!QKlWl+KbC z8xh^CX*`j`*IDu5=R$i0m=PS7DYR#2NxNM6ZjSe`RNP(1Y=b^Fp9V697XN5L=V`qA zvYJHR<$OE2$VGdNx~0{!7{bnQiMzPuZy%q-0rljr0mC9SGoCfl=P#7D*+k2uxk!nk zHI0{pO{?p&OR}{kGjqw^jzfTTQ??)7Mp@$@m!_E8*lVNYbfHiTU`wo~kF%lPG?Q%- zEmT`ju~lGXnBmU}nnVIp>e4FyKl+@nvCr=Lr>k=?oVxnJC$%?WcD;1KNR>VPeIVQL z8vDl#$g4%Vrx9nWo?s z0EsDCP>p`!l+nGQ)PvQJU}Fm=!-KjVUHtjcyV|oCyS|r>S14=fKvsvZ*V>VyFXtAYtHaNCHKB831w@P=f@FGKPAZGlCQ^3x?!V0&i~ z)hGyU5HS}RV8?{-nsI95bmwT|W#x=!7Mz%4YTw0{#iT=~90e?zAm{NgS~Q%pth~Is zs-rz5x@O5<$p@>XKSkG0azr2oFPy!-hz1-ozLI}N@i{wk^@F@%#$8}_%Q`)Qp=S_0 z`Net{F`frDXdBL8r@(oybt?GRnEn}@%g=PllX5G2XusrFV$DoIZyNIB%bSGAdKp$1 zR#vuq*VhZJf_AbJ1Vgug#&$k6V+1(%y&xe7yg8eogD#U!5 zotO_)uwDgWO<3B2T~lE?!&lnWls@&HfQg3{mtwh4uXjqT!75i79KRqvfRJTt@ zSO@HlBc>>xQsKj3nunlRFSl$6&fI9bi*rYN*`ps$`fGHKyzla%Z>65~h(;rWUeQ`p^pw!#Sc-gK(l&EE;_UG`i4VB)COB4xG1RbtCbCOp*DaZQ)uUg4k+qjcX^i z=-(VT+Nx>WGjau&AaeloSBUSnsXQe7kEg9uxTE0e4lsz z=@Cu3M+f_wih@b`5hgd{yEEupA{_!x*Q7XU3T|wa&-$&-KMZBf;A!6z3rLQyJ^M&m z@yOpIn%r9fa;E(461)BDCcjyGa2Uh+kPbJ$cVfv(R^Zy>C|ws^5@x$fYNzLFXE{u{UkT3i>ph2sy?x+Zk`%o9T5 zqqS8YrZr*jsUs3Nm-Z1QxAy`SstHfIVdwJp^PiArl1)+y%x+o9ouoDP{xFW*$hI6t zIYXtgei^2CeC5uS3L2pg06je`)OQ^-c^Wki63D#M*^4L1V!-$_zS$~QbGxxpaZ9E; z_usRd)7Q5F3nbRL2#KUkwxI+5ppdJ>FfhO0?9iZbR&OksaKzCDltKhVI4k=B740KZ z1g_|dT(^Sm=d6A+#BJES>V#i(9~J(%l_@wE2sP$G6yXI(O>PtWd7kM+&Ioxs=Cm$* zEg@%irt?H;K{`3Xdr5+zwa7!6lgSa{#ldMQ)=@oxs1K#A{xQXVwn$ z_1bR<3Jr6@y_X8fYc~Ej-|f99PE8g4Ec1{mAzrmNWhuXAU)p7KUHD(-C?mO+i{;J#lEzDxw~As|D^Zv!{)gUuUU<)$ zgCyc4ARI|f?y+PA&=AM1zWiq;gLa&C^vvt!!tsF5l0eFR{m-~AfX?`uhknG^!jGFF z#mCafLaq*O;%vj;|Xn9n(?~d&Dpc~sRYyK>oMkNQ6 zwH34BHMM=NHiU9K;>Z8Q2qFb5eHfv%DEyL-E{`z&?e;T3R&d}+kW+lB>vc7}dvhb+SQ1j-lXK-?2m*OWhdw!A!1 z7F{9YempAJd7*f-X}L0ZD=Oqlb3wVrZZ@nIoa`;}Qikg#jdf#(Y z{_Thw7p*wH{>NBB7xl*Gg&4}YWimEg)0E4F2^4PSU9a+VXjx5h!P>7#eGLJJD$6Lg)Kki znpoLx1GUH+643i6=moR?RrjQO(6yhj?$00+S1e*qw#~b8P}MFKr7l)RC!uhWyqho? zYvn4!=6S9aixca*5+@RBZYj1O%tP^||&y8xXJXPP|Vgu9^~k z;aL2a1swk4PBWd^%SO~x9HxA(3*s~M06~pl)+i&fT(hRT;*$V(glvz@Y);p^{X*p*M=M)B$algt)>s!$Z)R%=m>!XG)ugu?^L6 zJm*)gaPz2MV4T>!#5H|VJDk{=fCPEr*lcalxRCv*2|AagVGWu?^I0rak8Wk|d$wY& zS}QZ-&WS-bO64f}IK{e#&nz0%NSz z=Ht=KC$_a!_`S(9Uu^&GeLm!YDX93LyExIf8{{PKRE# z{N*}45i8gz=fhHAqLUV2<9WAUiGWGvHe#M#5j(J3K@ujmD)<3+1S-EhbnVg4@tdJ*X9(so za0In*;5JIl^gyO)R4K<03y|`^4rnGBl=4>`#vC;@M6M)WFI@m1r1sioN&N!aNGvuA zX7E@&mbgMpF0WNJIsdk&>I{}2pdtpLE8t;7YRT`CXRNO}U2tRgrKFchvBE3pPD@Q# zvA3_edSx!hBP=6<<*BQr1u$hd-H0`Xm~r9f`i7fUhMBlciz}f;#*8A*U-UsV`PV-} zuIWNDt*8t9x(|WBj7mLZT2hON46pJ`9rtjMEZ=O6ABx?fkCK_% zNG~#Ka$w+ZQ{~?(&;i2{5kZf)P>?XaZYb1!6RPM0QH(i`Hn4ab!kMdNhqK&=ysb|} zBTOr|)ZGGTD-GAfzRm@$8l=pk-b3j{xT>8Vv`4;+GC-XmO`|kPa37Mpyfys;-wr5wLB}8~qORT` znG|I2^a&td#qsiu&m#S|(JvCpL3)GeAYq`=L<+UO8z8NfaJwVSXchMp+Adp=w3CHv z7Wgm3*G1FMf|{`sX#di(X1|H^vb}@6C+vy#0xUaayHkyw)Oi|iRrP=VTl7OX{$Gh8 zNq}A5gPPwrbE`?6mTdn|bUI`_BB;`zW(^?WydYJa#EssPy@!2YW&6PM6JBsSoa&i9 z(HJ7^6OrFj)4ER3bnA~qQl1mS|2CyfVTk;^)i`RqXaje?g6nu! zvzP6C4$EBwSQ1^i;W7Eb*FI@DjTW7J$S`3Z2-MgeV(-B*zrP2H@5z^*Ma$ml0tVhA(fmJJ z-~s-RrzW(n9t_kB)+0F9T^^5k8&z_7W&Im9#R11ImObTh7XFE{}zg$Yl9!5 z+jm7KV%@>|itQ4|VDarbwT3JhUC2-Qn3iD1euU>4whO(0vQi0fKE5gCj&}V3gThuH z7iuI-1V>ermCjE$jbwO0%8ktZ{%cm0ABpXO6ut~R+y>?_lU9+QJ7Wba35jb6YT)zJ z##fU2c5v)D&qQ!P6!*xkKI!`4M%fi*ju_D#~4|MS{eY>$|jMp$eo{9W%Y}BYl9O4 zqmob^r7b#KJCA+w=`Dk2nwM5!%_dz~Mr1l;j+B%G4X;X(rR=wv)$guEI&p2cH4Lm0 zpLNHtcgdl+E}Km(^&GG32{#HuNYM9XYnq$aS+%+ScB0iexa%k>3O#wPs5Op12tn@# zIqIxUZk7P76|q=y~qqn{!a~cv1s|+;zYrOuALciZq~+Y zl>02AbY8zSor4e^&rrbjv5iBp)P)oSb2vF@tN2&Vr#Qs#2GsN#>dG@yrT2C9*ARq* zin)|OC4JXrS=#mu0-p=586buPR3>qIQLz1eS} z^%hDBc$k`*{S$5zQvdeU(jr)r1s=ZWYrqh&4k&Ay_CLTlhGQ`TDb&oA2TToA$jE)w zZ(KB7(AtsyBtyM~0E4&cGoLU&()@-Y$4c6x(LK&?lKD1XJ2$uREPxwX3D-IbF62z< z(HmX;?1t#eI&a2&U+$btisG6I@nu}ukq*=Yb_3Sr+#V(klbhFr;@aMy^<1ReM_tTL zU3R})pDn6JbkB7Tm_-PV*>RuMTSj933)zu)dYSj`^2wgYn`_04-%eOlr#<5{%TM}N z#OtTBtt69soRKTDmXTK81!R{$AF>_TaeU0$$G`>wDedp9zoMtY@@?^(z$*#_S0ELl z7+qZ1`oeenR`Z~f7()^$$I=)Rptl>49cV)ubGQ1#bEKity3yUUsp>}LzslPiYzdk` zf37@T4PyI^=3EZyD2f55d1~0w!EEq*c?J|F?ecC$A-G@9)_CT3_V#LlxWDeG0^nbN zkC21PRzEQuHh>&T-C_eDd1Qd_Z*-d?lwRO2+T_7sFNO7mVya%0jUCxTWD+Z1r~SyvM?>ihln-^&J=>+wcmbzlwP$ z&P!S3zF_5`PPv~w;rX5!1raq1Ibe1oa9sZi??h1ebgub`K-m_Mu`I=Fx@CJE-LPly zL@p?eG59-5^PxMq_{)#i5dT?+7y4|^i#6BcSRuVvP{ihzEQQWLo9vgId=N#A~e!6ps1%^IcQ zhr6P?IaI@yVOrP?=kp4&ge$T^GR$zTcWbviyjS zI9jHhh$c_wx4$s6i8)ssLg*Mr#udB3Qus`0MJhm+pbwh%-vwe=yMqG}sOl`U!7~_P z8u-Wq-ANHMkj6jzxB`juNGPtR;=I?v2a*@U!EeTBwlVKh48KzbniJ-rg{x2RHpSUp zF~@L5WvZXfP_cbF>Zxj9QKQ>Z(jDJ|e{vLf8uF2BNC71;r8|GlR=J=XkCGbJNNKs* z%IkCubmZXB-~}eY9x_7wZ3-zQ2q5*}#pQ z5yZO2p(Y|(4T$Leiw!3yTG$>8usi59WGPh-^SHxE8_8(#4xZc&Z@XnEF1ueL^&4B(2eMO@=kdcQ**^qu zty{Jhkbr%-ne12L@6gYyQsEAJxjr^T%kf2Zw$th}vX(VgJ!-q)pTidky30s~lN?s} zNN1qb?@E*_6u%@X;5vg%J7Ed86G)B(V8z*shi}2W(s93p1N^2}>SKrh)Z&DlQxHt3 ze^c|EiNZK^>%p-^x|jJDt;BqgRXCqO!L>YiDFlGnn7men30vJciM-nU(GPl|MbDTd zd*jDwVX$O!opH&~R!xr<2aOe+GFNX-aS8u?j+oDAy+d`Pg$pf(LOgCcaqJ;wq5z9J zjcNy(9;Tm%YVa>63k_ZgmA6>r+0}meMrvg|v+%lYdLL>C-7J2^rd$2fIF~1pfS1u- zsuA$f9{DET=t_8eAs}67kEB-omS0QA>E1xSSjW&>SVW0&`$;5@(y1YOkZ!H!YbwOC zG<~L)=VO?E=AM?kZD~VnXk=XX%Wpc+X|peAr>)TnUS^N`@6`2@BaCV#eowZ&%WlBb z@7t{H=y|&rP$(c)CqljFCii* zNl%W9$85y+l(SxAv1tCeVKM!aJ1;Z7Uo5K00UBj9<`n0I9OsNF{M#mxG8;dWCBnM4 z7x|oFUF8?KlHm#1l2LGvwm{LBeeE{a&2VlPzu=0oN<|T@B6i$_crM}m;Oxh5tH7LJ zAj(r=k7CXLLb@+?(J_#oW_U|N^*vGjSQb7)-T7Z6zRT)gGZg$>(w{NZs&S-B=(yiM zy5DQ7Q0vkJHifIT{z&)fju+sj?n{A0iV63w-e2)s5T0ejFB(;vv~JHm3rePlzrB#Z zm(2@L<}*2b(wg%6<)9u^4eKGuU))7Ng|8*P1=9PSo~Kr-AyYeYj6MtRTR3%zr) zn5GzTRCn;dO4be%+y*#4Kk3)E;)rT?AiujPzWwI$+oLYO`mnvGpT3>W+@i0E+rQbMSn5YFLW#o-xK7a% zl||}RN!9Znzv93Y9KGGSXhF;9q&s@AH-sfF2VlxkHL?3aPZ=o2>ZTN!`njk=)TKTiFo|QtNyTl zO<>Lji7I<9l4t7ep?6I!lg9FTmQM}c^`#guNb$u10oI!GeS&hZ*cTS?gqfp8=X?;m&+{Boy!d$wWekhmG}{OH;nRBH1s-6V( zhAVJZzsu`WzIs4ujY8Aw{;O}wW6M{wRkP7Z=W_mYpPXqQE9RnlB*2UENf#jrYd;XU z4iDjjhLOrJm;2PZM_8WariFo)`6ywF11MgmEvP3+Zm@dG9?Ed2@qpz;D1$_u*>?Vq zhEw4`0XU%pxLo7@`WZ(7oZi)LoEmuL-A5_vm1#w&PD3+Gp)q)XQTZ z#%YT%cR3-{_P6h@CuC)~a!T`n;2rs&_kr}5W>4{4jpvi@FF#_L@Q*+My0A)9LD-S; zUg}SiL^&N36NeSn3T&(wlymq*`9Ub`^A^38;IhTDta%temY?h8%p+{b(m&xa z*VF>VdlP3}+GitX!{m|t0uimwkUuk6(tCrjBtWRHV_F3Q7eqn|u(@QwnKAti)VK4U z2$arGKEEp#D3iq}Re2qMsP8itR_KfC(p!5MgHiVS zW8)DJU8PvEdez0J| zRPfQ@Dbv7GXjhqK43dckbh0yJ$ldwA{0x*6;_DHI;&m@JV)|hwf;dZDg0A~p^dKz^ z(TWOd{PXS2_b0=8A+?RdRSekC9L#HK8xLlSnq%poBa5H6FMoeDQCZ3sV64eI-w1=F z$_=zyq+T zNCV^GYGc)~lQw)Ijr6y+SeD>0j)$yzcE9uXS$bFPuuF>2d+kN`9RD|Hco7uX2QaEH zgec#_Q0o;Y*flgd^G5bQ{G$G6ma*@}aM_ian z1y8=w2z|cRciJxX!BZcs105jIZW1Q`?WgI>yD#?*mKN!pmk3nUjkqU7eObM~O<<2Q)es$sBH%Dwq~ zra^7aqRo5>g4c^B zFQl1~$+<2%>L}^7@>{BABZ&8{_^0x66YAy}?9WGj!yXU}KiE$yx|P}dCA1Xa?5y4mD3fcBh642? z7a2}5Se;&ae4G&w(M)5=Pp0BOo|cNZ(GlJMtKO$`>cG+6qs>cA*hPE-Gc4kW-uUU~ zQge>SLf~jroR3VQDnK&$g3@t)NPY_F9jM1`we&_gwQ!@FPk2Szkn1liin4@f8JXkW zX35wHHpV%f3&|S@-n6JKgbltd&fe^9w~n{Sch4w>XIs-aKQG1*;t~~ew7cRhIXCWO zoLx&B+@M3>`%e%TDm;q@q9Hcx;NW{F;?k}6xgTG~C;d?57~cLaUVe}>C4&H9%Xi?L z6tRS1Ka2)0t#ZI%9UaC`%zFHW(RG_3_!3quajI zrxWRkNen|o8BHs<(n^O{!#a$sNY#}*)--ODP&C?=4IqS&7x$w#0jwLK+LPUdk^zDKymY&fJDUylHU=&ZZL%)Xxiz$$F%KbJ-Ht5Jvj*VOtI3}ibRrzaV}KBF zYSs1j9?5p2m3>V-q%wapi&;dZ`@KBh&5V0QqpKITF~=yc9XLhTK+^w`N14aXDGhY~7rTar>k3qaB|K9S5Kmax3obca&{vK~1IxqZnpz|95y}0uPQl9wzR~ju! zvawS%vTh*Tl!m#wwo-0~6qgz1mMqE##pn4)BYA+4UAhm7m#NHpScnPo6`WA}mmnO) zywYpISVO7m*3y$@k(u@HPj~hnhmF!%E9qxA`$;O0_Os9$4_ts z%f$DCD-&SusPSmXWBIs(|Fk6<`;WZZ=@A1e3^Bk;3y7lTHrw{6xFmXS1sY0cCF%61 z^#^?|+zPbr`7?5R5W~v>BeG%XFZyHwL)>>n#@N$UxRuW!7z$eiQVeA{pZ7B6Bmcvn z3d$DJcK-{v-Jj*rR^V)=QV_#F_7z?08I`4{_r>Pkr@_-&?n=idpk00~TdC$SK$=qBct&b>FP5@nZ=AOG7f~(IYeh;D? zBDLQ2zMt{{h(#S-;fleqT`z9JRbE|u^7=Y%j6}jS?K9N9w-QL`ZT2NSH$xj{^hn2q zKnCfG_i~JV?+>;us!(x%cs$P%@r|=O2H*+PuX})+KUl$m)9`48R25z{c6!@yly1#D zPtxKtp&auCRRWIx9?2=JZDfqN9v&dEG~98UCl~-tqV0402UuOZ+q2;=)}PYi4AOsl zvhr#ejYLeBoRF>K0{&F?$zb{It(|JFUWX1yH}DZp1bkmnGNFZMA0jJT){8Oa0K!A2 zd2wyanxFMZq>q%Nh5Kd4Q1w9d+yg~N{msAHq$=gv%^4&pz1jrULhD_5FJ1=!nKH!> zUO;iAi)yfJC^{7{+ds_2>!4BU|4lz)R*32Ch7uoUMCtlitB)T2u;2b;Xgafs>mxxd z;aqRyP}Cw+e*8z?kA-m)*vux{bd#A9}RYQ#$7G=O$ z1|g_cgsnU*D*iuOg}{a2fIFk(?IOiC_UgjEO<_UE;dagjcBjzw1|NG=p8xWOm|)h1 zgC^|N&=mhsm}`=vNmXGEwlhU<(Kc2-%P=Eaeb^e=@t{rhv7>i}hEYq8F^k_UHrDBn zG)i|2H;2nXg@Vv4W~_qj^%(Tq0co%IsVFV>2i$FBGw&KE=ztb65oNMitmb&?wEJeX zvw$!@#a~roBNIC}ma#hd6{9n2+jCu3w{vVcx-gaDeJ%;e-RRX`_!l)BuLX;B+=o<2 zTPUlh5%U#Z^yy$luN%{lI;k@D%_`g`nq>74N{@ZI=nd#QxkG^mp`EYj1&TVb--8$N zCaUHvf*PyAJwU1UnHTm9y9G)pQW$VKGMesb-KNqF4O+rC!lYULo!{80bu~3v_FW_=Yds2c}=me#%YG ztr`r%ni}?pTbbq%%R)t-IZnQM!h+rsq<-6<7+Bv~?$%;@(CVIUoE}@l-+CB z#%Y;qRI#-cmHLu;*LR_QEhT(lY`;eO!g8hiNOJDTjHj#qHyqio*1xs8_!09%yZq+p z%rB%yQtmTYITgNNwe!;~q=Gj%KF7L$w^&y8@HAbQY{sJm?U%8q5*@^0aL3M|SoQ+a znri=U!`>)mcXI=jnh^va*Gsf8mU3D6)Jbde;~u^LS2HUgM%uQP{6A~Ns(qDivR7q= z0iiYpC6Egx%K-DKtN+V?3sXiq6OLG(uXQdBdL1mF{`e?0Nt_zOVVqSIXI6#cXVmTH zm+bT@dWYt zE&`nIqaiiI{Ov@jlRtmshj2ZuCGU5v{YakI$r<&w2)t+ zoKu14qz@M_l9*f_>ZrO^+xN?0Q~?P_U2>pvr{LQY_LO&GisAJ zln{<}K*^KA7t|*j94y{1L}N9&CdxYiV5Lcb_#*@HtS)i6AC?4K4iMAxp-h}}g^lr` zZKu?BaJdoN-JM`ZoH>uz_DXN;*2P})$_6?RxtquR@HZF1Y$py+&tT;MgI%*vfMwXB zhewr7A$r!qK)dV9jb}TWIz+BjX!(r;B=9;e`%p;qby0dvN9f_zGEaDBan| zvjL~^Ym#f&j;Q1{l@HxrF^}xfU_rxqW(PGxt-gh(2Wa+kJ$CCOVmKLZo@kZA ztcF|C=jCu%s)?pe>KlpdOYV-;oeIsyXfFnR7+vG#+9>0y@uAB;-?9%(O%Vh0b@^T( zm3P&id4#YUd)CqS`G4~fp>t-_gBOK*(i%JAPD|L*17BcVaM9J2 zatjQbZd}|K3kk!bg8>4+U!P#R8xonYg^2e&TaJjYdPyG^06BtKL#Ml?!-Zs}$!HR# z^-vG`z0kx5uM{-g%7h%OsRJB}gJH8{Y&DnY!^v3JfUkbQI%%vlY6Sh_h)!%-VC@f-$T=0+h%QYG<2{t?ESg!U!9@aaeg>{D<&JiaZjh1K}mB32FelepWOq(AxG$R zwx2q_iHfpcvQf|+9tG9A#K6AjstuA&-}OW z&<}hrkj}OP^3&*>g_NcQyjhy+x3e+tO~PE@)^-D!49Y(ZU#V^r$?%G`nmbFo;`9=` zd*P-(U@Ud{ui+;Skn9kmrW8EJR~@_5nn7b8fFUWPyLo&W6XDg~Hr&PdBxid!u&POf zMjZk7Sm=Ye6o@C1A1D?`{pj~_6m^G0AO-KVg-AqTYmPU`sVke!=$T-^k@=p3CemO_ za~urx2VGdbMmTj<{?ZeHQT;y#qW4?)L<*~KlnEd1Gd@;-rNhT}&Vxz!JvBvx{rh3| zo)Hibs(|$4zcc|(^MlfzYmRrHQ~oc$-Z8q9plkPzZF^$dwrx9;iEaL4O>9qW+qP}n zHc#&7JnQIP>;2NJRlB;sbamC<*Y!hz6df1X`w8pTAqK!LYUslK>D_mUv*s2Mx*iJo z@2o<=pXya*X#0H?@KZWOB08?YeZZ5&jHvaKhKemSnHNvc-U3|!CCUW*73Eq9sN#0UeBtn4~1Z;x| zbx#0*hdNfu`$?qZSYOW;UxopiWMX+h%0MVr*h86J$%oelCQ1PZm=LTnKs4ap%z3~l zEFyM>E+$4w0rG-WH|SZhW2LB!cbLl9bgzrw39(~#HH3f*<_fe*MB$pd@Tzy%sE=Ur zE<4EZxDjHo?^MRuI9WV!hVIb;ix*gtkynb#ZM5(PmUrjpqu!R5$Y6jPP%ONm_bYnc zL5gGnc^U72+j*#BOw$>#pT;7+w;JxVQK4Z)Vv+gS3G!hCeybF(#8vceOHtQUspMCj zag_H#J(2p{Eh@_SzY@Z3v%8Y8qs(*J&-!&7JJOdp+g_m))7U)ZA*BurDVq)#Y?k1>x^^UfU0b4zHj`7bL!?X=A1`5hC8l z4zB=48U3YLBou~wIs_AKx$4pxOQt4)=vM>+_AU-E&(7!qfsFxL#7#Awl*mjU%oU{{ z-9*cj=9q5r;c%Jm>?DknHz3u}BXr}m$DF~KIhO)udkGSKs+K(9GDknQ1|hvGW9J`1 z6em}uu0-%`tM_|*rdrJx+e{?^`AROQNtH57NV-}yI zl;JO#lCngXqnszxz}}25^p;p*hkrU;x;y)koUgc&#ON5SjO3!R+jo;pi4?Da(A9Du zA!jQKa;xJ5nJ6oyg8p&NdqhJR@IFgoyAR7>6LI6N>l#f9H@NGROdqZQ>)pN6*5Ly@ zVNIdOg{s07nsT%ozEmYj$ewFNx18_uJL|1ff{|v!j`d=V4on{H%e7EBekxIX8UPcAtB^4j?6e0CFx9PtPevq-M;-ul%Lzhg!f-ti_V=60DLHSWLK(~*5ehwgDN|Ch z)G3!Ee^q~u`{o0ybG(bE4ggXaxvuXRNbkDEQZr+A|IZ!pgZF1)Vi{D<%hdU*$0S(d*0xl{$hkZy}e_9zmtp29D7 zM(VyC!C&8U4S;(JBUO-|lIe{JO(=99D-FJAK}vYC-qtJh z?WHNaO;e`A4iOkHikIkqikh?2>45mHSNOM9Z^Ur<{{l({USy{}-U`c(AO)vk(Oyox zk@(9k+7mFmx%lP4gzZzSK>l5wSX~xQjK3Gl zrGN)ENA23NS+Bm>{C!R6U3{_Ge`WsA_lLV!9H(Ho{)cvwfPI`e#9S%(;kf^i!OSi6 zdkP?+YzE-I2LOI5;kOO!=T}`&i7*--NNCZ&DQ=PLe{{F9S-(%`W%j=@w)wtqd88*& z3?n~aXBW1=5aGmTzV8iA>!IsCKf^`LoHaK`)9xSZ98ph)fd$GsvZH1_KXacTXSNI)t8xZkBwbB9z9k%#}235Ok zug}ZK)5cc&6z?^WhD<^S&`X`Dv+wj0FQTe6I`g?Bi$m=d?>;|ocZ7PH!x5enW_LeE zHBV<3YyG4Myj2I3@@r`pgX>6k%RRDds6qQ3E+!kz?;xE!y^v=8-QgG%vNK+){`M9K zG5~OL1Tl@$@0HYoU&)s;=?sFon^CVfU38n*{&3>_tabA)a6f3G_j(zR^!LE=5Ndj@A!=>zSmtF%JRQmPGIS39l4s09pv!2IS#l5-?rv1GjB2kVB_plp1Eeoi3 zWZ1_xnH%uzVMZHiVUPt4l~YVH!U?p?II=loS^{o&0tX4=u0B;DB>Z$edBkJ9`^a)9 zA1gGJ%%%!VlKYBBrU|4+kdKBpJ4U|No<@yTRbg+(@v@ab<=Hq))%tZFTiWDxvYP=M z5BBw>INa$I;fLq8Wx6&l>~gnED-S?|H*$l?CGr^;z4XNdK5X2tM1z|lr0W`-wJN>w z+##@wch^apei))!kh>u8Sto}a)*qO%xSb&8ubDZhIe0zT(E%jf{iO2S zoOH)EvbAB=L4H5WrY4=uw6)3q%8!%&^cD2b>k^@u9dR{*;00E^<+^rs=Dm-pIG~DK zZkGmIm|7HTgpb21k=!7bGi)uqeoSW$DYp(Q2_>3M7N61f(>mZ+hY4bt*1xjQRi6eY zqG(Ymgj=<0#Ax(gL4DjvqGupIeHJq4^cpM$eSC>mfrYA%%pusqMNg8^nb#Lt)wXiFyA zD`0|wWo;WR`mK|b*?;}~F{zTtxiDI(>kD|m2rv^#2D#a>jmwPP3jR=BlHLMQWSoS~ zmAJJXTPi)xe#4UeRCJ=KzGnyKpws=Itce@kIJK0*Fhc*(qLL|&G7n^lcoYL2JC2AZ)6wkK8n{i6`TTu-u%Pyb)ogcGdJ5h0{3 zr-!NN;vz&SUQn9Le{d5If0Q;8T!^#BUXE_@UVJxiay8Pjo7XPlazeQc3Ck}OHseIA z4(6yvYkBl$&|3v&0N1Hl-Pe8QebUz(jc^~Bx=*Y2?bKVM<{3IC|52KuA<hai!LoOU^=1CJ~Y|ChQ;CkLzd5; z_*oPHdt!y`yTrpCwc;w~kk&Ps)t%u1>OTr7iDNQiJeetSf!3f&08gghk=<$X3*r3S z@c*4MXwH6uw{x}=V76j@*SQ;Vy7=0Z1{>fOfV-{$a$WtnHGr3S8n(?|aF7zIOU~q?U5*+VH?ZLmlU29X|E`(%< z7iYSjznvsBEB$aN_M=I8%Vu~{T>x4>JpBXwcVg1UbK6$a@4Qva@af46YVx?21p+WM z1?b$u({>ar#y*r`JW0fB^ZE;$MNkRcT->!@`5m{r3d`q&fcbg%_*0#+&Dwpo2MCWM z4J0Dee!Uj<1JmVrW4Mb85+a>!4ofm1c0-FY1ft4DB1UqR^HanDV(^wJ`$YKz`jB|? zV8P-Vio`n7tHu6-1B&8LmELE8Hv{<4$BO-SKxW^LSyuwWDCECRvIBDKR<`oh?fx83 zzqQNthIp|)W!Q@Rr~BicK?iCDbXgBZqy9ZEBk1ziulNtvLq_fbOTZJhueguJ){DYj zAR~_dx0KI~E!cwSk;+FT2#E~XC+uxKfXv>N52@piE5I-7QF(k!~t?>8s4i4h52{N9_xvphE zOKB$Z%ir7nGby%q_j+|%h1>T~|S3SP#AZM!w)etAIYIs~NLSfmM!6{Pey zQXgG#-{pQQj5;pwU5}yi5x)|Hlr-{Y%oJF5DF7&YvYmGpMc@x9zYRe5dZ!;!oH%90 zg_Q{<0odb;+=kW7(3K8qOw%lEpLSC(;#C`c{KPj9aM4GVbkxXOjr0OMqtr)$(ru-PXxY=iPqpSYA7Q#aDB0% zXdE{ZFU~Yl0FP1zNjHFCMlX**QmaI;0uJN@m*K}78vGRxz6rPL{Y7~jzYN!s9{9pTD@mfz$&kgqST75Rzx7b)i zpUtPBcK&<|T83Ddw4(gWn!&C4X54-z@HnmYE1&&l{ALJ7u6V!;H-l5wQgJvcDneX# zd6bVtX@DP57_D+u9xs8k8 z<&(n-ICJ}7ld}p&oJ}A`_^TJ(8Z{T}6wtKo%Om6a!!K`1iSn88iN2(RT7LG;c&i|A zu&@ye-0eRhUUHkwQN!0ia0so_Rrz019`)=!oT?q3?2g>Dez)8u}5Hz6+tfdG?j&&CzDmkWI<9!+_Fm zaf9i)2!dcA$%ux#iUJaV{*IE=;59~3Fomq~(|#4g#2az}LNr;eK!lN>D^Mt{iLb2zA9}BKvHe&D+|HGpcuZ z>ji~uLXKe(1#mer2*orJ2E$h`pmkmQwgviTyL{_y(3(l`&1=!sE=a>4GdzZ|C%&Jn zH(p9j*T5@3LW93`K8QW+m>;?U?`oMxJU~sYJAmiB|1_fm??yF!C-AeOf9a%Le+II4 z>b(~GpJC+9MxS%6VVxV*$#aga@HsF)^b>8k_)@xAdRz;-fqvrtGx0YNSrshB^t18F z7OZ*(YFZB14z8QDc?b2g;R*?G8&Ih+PupTI;kJ3=A8XqBV(Mu^10&PtDHJpT>@>^) zc{|mA;+cA#Chq9~t?Ts0D6xxuVwrkD7XYhQ4**mNCx5IV=?R~!Avesih>Bykx?y)9 z(1y{V5WX-NpAuACEd&5a4kCtVx#UypV6D4g;DikVf*TkqqChRPC!%$r0sGfGV?=~? z;G87!tbTF6RMFc?cz`)*sQW%ZnJ1VFe{Jnpn}tXB2q5F?CudRg5tbJHs8>t(4`nFR zez(L_j~;WYPt=4Qb2TOABQg95T8+N_n_ZTOh0q_;+u#BPtN)KH>{S4gs-dwvqW`KM z2FNcRL%jBy!3a3_hHm@obhCT$XC-#3@hzFzgM$Fu?#8!JszoDi9IRPPLg18Oa__R-v~hh2(0h1kH)ij!4Jm z)eCY{V*A?gE6&P1=vqb^_=XETl-dR5mVfoGiwbV6$|1=Z%3YcVKm#YKvB zh(dC*!y8g)5)-^9qFvyYSX-9ABK(xl;nZLFBR9W0anqU|OC4}cnK4OWnC zU#hI-U^Fw}&7LU*AA5rWi@vDj) zkK!1x^ZN$zF#s<@QsN&a#ss*`93>yC?+Dz|i}Uh*76RG`7yF%;RV5e2q7*wB(M<)` zt5{*4>avgtnFt3GMzxt(KQr{~LG%7wn4(kffWl^0x#&u-JZ$ivLXtxEQB-ooqDc`? z$S|AmYAGqf3I%nuvGP5KMuI0!R_cn%k?2Ce4#hYjcdQt#E&)xe|3|*P`y9&LGIJ-D zAN+-u1AAEHN)tLRj_hH8mZoElf&8(4XJjom@xUmskko#kw-@-`5r*%k*5$c#Yc;Tk zlMqKYt6eX`w;Z9}Pb%Yop6mUWJMIHNk^%b#r*~x~xTR~~X^2OY$I|yrAIpIW_`q)4 zSoZ7q$!p9Uc0n9Wf&)V6pV|JO_ML{}N5?-+Z%pd;6+k_T?IG@t0>(?9`AdH!v%JqH z|9v}joL3Ch&j2x(V=q%~Y?gPguCj8U^52h9J$tx?KR@y7E<|Tb0P?5((tT3kGk{F* z3e6Yp;FHU_^&6YFHAc1LpPZ;b(t&U2#0$;+Y7GDGc2Xi_Xn3+$G-uX?_jLm1!y4L!XIUr!MK8l8e5?JOEB`+7c}Q9EXf3n-xLNRCO6RY*DY=f zXwF_qiG*P$(A_k!u#SuCCFp=!3xMN?-T={C%=+%?Ta&riz4)tp&--JnbG#WmtPHqq z_CIb&hWl;*?S@2nPKgz2N~qnWXfEz#yk}wYxsaOg~Uw0>)5=3a&bKh#ZzAnYk}#w=@_kPGi7K9whH^(c$``F(z=t}hw{A?8)%D#f`pQ6 zHpz-JOgpt@lA=weqM{SfZ|tU4==R*|C2W5Zj~UJyi%NRWaRpZ(T8=7Ra|H6Fx;(j$ z(24*HBGpMF+H3_V0`Pw(YtJf(;~Rf?n-c$P-@@jvyTJ8A^B{cMC`qC;+8e@twsNUn zE<%r<-ODkN-h~xk>HLfQ=N;zSCYJ3s6f3vs=C&yIDCRz`(Y(WQ(__q}?lC z%#M;9wPI6%>@~__hkg^`>wxB6+9paR%x3{F+|FW+2aGTr>UvT;#%LDkCgp7|A*aiE z8-6_>LYh56ib)9%kKnIPJ0youGyT>qqvhQ&(__jtXUu776}jJTgzEvn7*ds;m}-y4 zv&pnzg#Edbu|G{{unTfboM3%+(%oINM3>}r+A=i&aEJ2Ifi!W+;3U^+o4Et2OF~yx z&k%ki1D97n+W4!V_vvuiDT`z3?Ej(Q9RxF1cA@k4)HB)YSvRBpmU<$5WYp!kKF zR*uMC3XK0XCPxvz3>4W&@sLR_Uh;lTPjvr7! z&yd2d#`rThw06`@YjRK$+GSd;OiILezFGxNTc4ReecZVv$9Km29z~IdfhtyEo>GtoBmM(+XuY^)mXDXFt!OTr2COO(6 z|BqWakhL+24n4v?ooxrcqQN|r+wreTMt6OmlS_L8Od3|jHwkV|Q)Of;YxlD98%4;s zmQdPL-Gkt)Tq&x8)#mdj90UfwnWp>FWYb zOwBl9NK;E537Ku2VC5+P+qOL7^UeDIb}d)t2!ANxht)Xj`|_F8{0hSD{&DhrKja1J zxp21Qpt2V@Z#l&3dfdvOeOPyHYu%8!O_Lwas|J9qwC*^cb*_)OEnfd?ibq^TJf&7J zCW=zfFQ^7L(7@O-PzAyTwD`E!RIpCvEw={$Q$Z3SxbCEbWC+%$3j1*=A2s@MC@0Hq zE@xxVngTb_d6p^;!&$|j`OW}_*IpYAT+EFDm~uzk zyb>UX-jRmi^LhGY@ZGdJ+0EFe0$emSKd}V4P}K7L%#gb-=pe+@qkd&ax>q+&=N?oNs^Mk_;cD%Cgo zBlblpDpl&st$S8bcb{KewaAqKfO z2ho`0rHA$kg0mT+`LJh9QcYx2L&IYUEneOX-|q_G?9(HfCI~7tIyH>k(%W2TDDO2T zza$c%l>A1wO+|aBfF@^9E-ty^wm6+*BdQUs^8G(#5_v8(ov47|#)PHM=xq_rc?a#C zH|`SxH^iA!;UrIWKHjPjXUOA;EY3yg2HYzzs~CZpH5RC2y{>U)&$aC=zEd5Jv+^~z4Eu~Vf48iIQWJ?QvP^A><{W%g&O`f|<%091O*9eIHx*wlqvqb*G z#IZe&#a~hzm#6?{;o9!eCZ58xsHe86t5@XYgWWv*+(!>I|C{DcEpJgqlj$OT{A~4U z12M3cHR&F1rFZzlF;79{*&Jh93)z)AoP9XtCb)L7IN8JVpdU2EbA z@BrSN<)q4e!v^D%_8xKTo*@?mVwas;e$0z6z@?9t+q!tumBH;@zt(ZX6b$r~s(}|> z^d99@UI9lem{b@jB@o`f%wChsm1Y*VBWLd0ODAIYu%Vlsh4h7CP6AhECl zh}3wg@&*7(0+7FOuH|x7XE&b*{;Odn=3@hx85IUt4yrT*=eaP~kKK7$3Y~umYVo>E zjUHsZ#Yv4aMd#8E2kmQRfYUnSVd^Kiy7l^UzI0$w5R;kO+$CEwZ>~9=es!93&(Pg^ zmvEDgahZ^UkBBtx@}&QzDEfw~7aSUH%pe(q{yPAT{vi8X1K_tkQ|3k|SXL06FVP*gxffHH2xF zv3+) znI>RO7`K2xRk(zxItSH$W`9VLM=3%CO(d$E<5zYa5*|sGA~!B?4J-0O!v<859hAXv zKSB~iBKH)k*S`It7T31dz(m zR|Ni4V(q2vs{gGjiiZtRE2;!&_3e-=wI87L*Y~7QYh1*p1w$1vPYX>Da%e6ZA2_3& z85}8Wm&3S{YhvIZ0aAL|;JU`5$;LCe;K)net|YUl!w(3l&1Cu`toGhtPS6b+P(r`&N5uDL2YHnv&CMt0Sv znX6)%Y+&7+>I}&e!G+bvNswjE15@r=Q?w{EtkN!Ikek$OP^Vm!rV|cyBmo>tHsCVK zRvTUN`_&(oWy^O(>D1N}!Pr%94uNPlok27$8`2!TR~Y_YGzl!w-?xNbYHP!d??u3W z)Ow$jIV_Tarz#J&8%1z&jMJ>2XVKP=j_^Y;FREo&N!bVJQI9Oqt1g)bobsO1LS~k_ z2HCKFcx)I>_oHbg{CnnMi37+}4|q0Vn^2itj$)TI;+{&fZGj6_TYZV!6{b1{S2T7c z9h2r_xN_brF1DPMjT0$AP(<4OSK-p0sut28I$oJ~w6-0YMINFz zZ)08F4MsgmGL2!bA@`cvL1>>g^&+1NJ6ETMWPT0hZ7V-OnzZ!(_5!e7fLFMVo>2}> zLWm?xdv2EdTXQKngvrmRZ)Q7){ng^JvRfwfY{s5W@`)!>k~_4b*+E{CO-;*Q?&^vI zJC@!cY);mOA+0QRoov>M8l1b-=OBfebh%GfY_J|ZT$Ei*kj2&L$%mVh`xCfcmGmdq z3UP2bhdjWP4)y4ej0>=-RV@O`mTfe%o%WSZ){7~{EJxu z!8E%iU!5{Zppe_^s62&RdF++x8q;OPw6eM`c9R71q`h>Kl@rvsZ%X@;$Mco8X#_qU|^sI`Tc|yqLpqv*TJ$S@Q zxG|q0$eg>x;kaT5r6!e5STC5r-xX)emhIWp75DQc6*|iXZ3$$?BnRNSk59@xiLjUi z*5QWkS#ke3jQ2B!f&`ef;E$$AW@2F1gT~HM^<*iVf)V37RQ1EgR!$wTG7Z?oG4WiU zMX8KOX;xxD-Yq-B&GN{300(?@E=>K!6a^lNsZEni7tj@a(KHRDn4TjNB%l)z9*^mn z(;a|1z%=j$i*W9CBm~6ehX1Bf-C->e2%wHe;*}e9fRe%OI1GNPTLezqq8-{Z7c!^= z%_8o55{8XGXl^S~%j6<2k^UQc#A==38LAlj8y1sPhzs5)$&fL%c0k2w2x7{jN?XG6 zkcA56rdcg8kL*08r9R%8tul6=k#s%c+{lh@2ew(+qnnPbMFtRDFgY@Cmb_BNGEJMC z8Dg<7-q3~dEUFv4QRYNP6Pl8D-V&PGUs!}R^9jJCdG7OjN5{nWbL zvg?qNiL&s5_KH-pRF8gTdMOC?ILK zVhP9!0dnag=?WlDa{}#zFu^Vb^H+SA*9^1eDswQvNQq+CVEp*VmwXXbiFT`2*wv<2!5v8xo$ z@Y|fSEm^DTgc$S3*iU^8LOpuFcp~hf$Yn+C5-i6#a7kb4eF5{KIosOm1|v)pyva;! zJUiW}6@G?I!nQrfp#8iA(yDU)!c-+wt~TV^yt{OECYe_KfnHM-tzmv}N20l@ST1^U z{5e%xbp@b7yg|ePb)F&r=qTi{BRp@^X0aE=zMr$ zJEiDHFrG;`7@jK;25smPbBCFWMZZ#M5Ihor4z;Arqy2&wRMSgQ`(TkbQCMdGZxsu> zkc**`Og$;}3*DxaTaGp^8QG==jfqL}>$QhkdLe-8+B%AgjgD7u#q{LCzHXtleTBw( zNYtZXIHCwI%>XLu&Gh-G&1*!I`eaHuE*u}ED2+&v91j0)fK~|`7STME`$e#0@2b5} zgY927F8?RKqhwQ(tZldgO%>D8_`4@vxjj^!(lkqm=tG#jF-tBCtKpQ3$o4BbvHdjn z5oEw~x(MyGPV+04`{#u(p*A`SfaL>!X^`R+*^xpi4?{Jqq_kN>3644QrVP zQ>J{%GSbl!l~Cp0$(Z&^XRjBHoX+(1&5feVI-YbQiIzXSJ9G4#w4Z6z<>c>)i!sk! zLFar~^|2uc69;k2)q;8bDU1MP<3*fONGkxleKmX)`A5cF+4{*e#$0(5L`H?nUv!6d z<=T~V<4ToBwYJgNRh*v*O`YOyw4uv+@KRH|QS>0{F1$=fCX95_q-udKjCC)S7te*H zEBvbECYc?Z2s)J+Dm;SDTI}^r9*=27Fle~BjZY)i#wjOQEx{3nG#EDaV&XH-ff!N_%d;>wq1)Zp2sc~>kmm(#C6@E{d=y>v> z>4HEtus#cGNYt2H^k%wO0I&Sm%@q(QO+dt9WEGnJgJSh%Z6V+YvkUN(cvxL|Xw#xv zdxCJPjNd#6CR~@7i?D?fhvhVD6VsWyVg|?6p;7Z7qh7X|QfF0XuEfp7Scvc8f@)^M z0)h)UW9pTzkJq`a;?dIJ`2!_9dFfu>hNh6;widhAn|*8JuE7I6u8tI;^9;z7)7n@m zGtHMGSKE3JZ9ddF35o7P>Z0D z;gW%q5xKfYQ$>fJY%MlrJ^^6Ry4cfJ+R0=8>%?b*-`N2uXw zcyFYUyodfSPLF+Om)f)!qMlNpvDujl@@7?2vw3p7>P!iG(6&Dl&EvuH%i5t%n5uj&b$UyNcv zEoOrxGs*EO#-1P*rwY6}+2k{C$C{QG*T&FhTNYG#t2l~T!cGEzvwayX<1#gF?K!_Y zd1(ks%K&c@HV!qJS`SD#PlL@3s#JPF+fUM*7kMEvs~GZWie8UH8grm(s>P8G8Zexu zhq`LW)rULmSgcaRsIORVa!efhc*ck#1uAwk7ppHt**bE;2&l; z*FNc7lBDYpUju+zV3uY)RfmZKV$gMXb!ZYRM(M8@prIL*k|i(S*F~pDJ78Rq9NnaL z%kA7SCMr(?-RB>F*AL>Vq6|}H(S-5_{cVjJH|DPGtYaM0ThL+n#j(q-r0omam>3c z8O%!ck{=2oCGV(!VJ#;eMk5I4Ez3ikmH%?T7$evXgYo7FF3$V5uo?;YI|I~fOBjiF zXm-&0Mg2rFKfP*2p5|c$8@%um)hqs8AyaLL+qBkff}Z883n?klDGh z3|P@QBX{V|rG^43n^}j!fxZ-&zT!stC;+YarbQyFC2-gc0Ft+*rb z+Fvh2@+kP8ZNGV6KN`6CdU!p*Q%v)}I6PO|J^bQ56Yy;YJce%m%Ko^07^?67Uib#Q zeZ$*seD0shO^VE}^K-Lts@vdHDOCX5#}B?RrzDmp3>RwD@+s zhPWzNZ43COAcwT^QRvbYe2+Yqj0Zy+%<19=m(!}cY4`euXlf*kCg{9R3ZAd zEPsz*entJ{R1DwjVpJxk@;T7+dJh0|-$#v|4A)G785*wLz8}>z)k>aeC0le@ojFvC z69i^}4hB2*imyOfD(t+6Fy5?= zz}7@IGrwk@_z&h4`yQaCI;-o6(sqz+eNT|@@`*Rz1fDghMr>Mf9bOIxdxMa;xa3Ub@ii% zu$=Ce8GaK!_?cOb6;L|?cQcFIbEx3rq72%16mL{VpCm#^c86vWg^DoiA-{s;6{2_x zTL8Ipv+f&OAJDOy5e2yIStJCO?5(jA9{G)0dF zq!NiCo`Q|oe}$>%Vk;`JiWpOc6YDFIqOFn-bp$ z^V{$hJZ9BiYoA1VX`BHNRKWzc(EYx2)r|Ov#1W5A>7cSl-om6cpef1=62ps|?ekr~ z+58LP%4hZa0Th2Aip)@YBeCT;tz{d)`m)=3IuP}wo>!+d2tPXd4mH*xgske|m6k(K zy-RFrP7nlC`3iCbu4=~1qiV*3d{j|r4iuxO)};!03$?%OVGjq`6GdlGjm3vij`Z@) zqLyTG|2Fy_-Ot+g-Tu64K4k{(OC%RTSIxj>X;iH1HcvO_&LFWyARgs3@K4e6C?Omi z*TXMRaOrfQAtC#GrTFX^sby{+Yn;V-dHzn7e>G<=CFYbr7%4RBvYt~#E{NC>v+T`i z1)pZk;*w7ZiyH@k1^XfT`;`)hjli^jPsfRFbl(ov$8;4%5WY-X2pTLdN{3G4Cxsjv z;QXArP*W+OkbXlEow$6*I(MLgAYiQik`m@y62$H;$eCDF)Z) znd^3mp$<|dT7c?h0bey_$l$;OBNG@I@m8DbJu8*6-_XuO*Qb2qh*>d^Gk1W3l7jWk zg~=`Y{`&RJ<^Q$_hQJymDOKU}MkLCGaW^JvnWfurGRihn!PPG6E@l~nxo}PJ2*)7-y^>RE~UdlB0vKOI)iHRER#W=-Ss}2 zp~{1&awAwd`!6bfkNEHIj7+1**(_}O?djTaED)2~YPlj8%3=VI-inZJ!~+fm5>B!I38B#_Q+T&ZdNjUhL9M&X$uZ2_A-0NU#@N3=+;h zmo3+0F241%STfWiXV9_iEg4$VKGRXm@$%fv>>g&+`}| z2|Vw+ZO@Tx2=r(zoKkn$O>v^~h#;Di%zDS;#HZtbPp$GINT%^Xl#?#Mal|G2p`Nou zEUj+c zZPwZCSXM(NBIJxppD_{ru#~89SH5-c`x>55*=K;n9n9DriwVLgY_zjFX95$5V9yAX zL2s^68xF2;ZD5x)cXKjHZRmKLF+iVIjgloeX=dBR@}Ugo;#r6Jfr18&m{A~Hz65oV zC1FworXn@DL*VB%Kag(w_ha*CsM`aQfEqN_Ed${#Nz#nQjzwcQ(^*!o2x=6zD4xsJ zUHFm-d>ZDNvf_~?l_XU{N-GE(qVhfAe>OXJ>IAHGaPc{4yaU_*=|B8APf?RH%xGv# zR{P&ypb}yFE%)o!?c1MC&u^E#5{TJ8kE2_Y-?Q~#C9aYwJs_5$T0#{!k0{D0E{c4Q z=!IQ*u%|R*qgU|~B{0UZXMqdy?x&FtLSpT)gFqbG1EUthI%Zs}6~gH->d}NMNOKag zaHU%b!?VjCD6AC6^*QYT!8aU86Okw4)^$G~So~yjCP&}YbW~rSW#sjRp%)OF$UpeR z;4W;1#Dl~UXkOibjqbPSUIvYKyH1XlXVY)0MyBY2ECGphZkU1zfmq?jk#KkJLQkoL ze;O_hIC5cKJ%!<<@=uAa-ei3;%xLw;C8lxO7|%&HMiuxa7DLbg>GUx?a}?$DAhfvQ z@$8_)T1A`KKSW|>n_PrXUs>Pp7h~n0xQLJjTfR?JQGx|!I~m78cctxAH5}RvND#Zu zfto-V=^Sn<;pLcf0VxU8hEBO-glZ6_%$&#=xRyh0w9{o<75jha5@qEA8D?0`3;%O< zI$V=vcEep_}*6(L$=QY+ajpNqGy!G#`x8XP?iXVv;a$g zt;H2KsmR1XCPh~@E~TeBW*4|cqw?Iv(^3;k7dSq|E=NFQ)|uY|hP%AAzZYWFqus~y zRr~jb*Nw&Z)O5Q+M_K4gsaPxsAuN=idk!mbMv99fuN81phLYBbtB#hGpgo8w!+DUo~Gvr?xWaG~KDv^1a4bSVWT zrC-D+&m_PlhkO^HPpA~2ieGR>s0LZeEx9R7(H6}8C^@`9mnc09ONoE|@n!Mdjwpp5 zA&|Yb(*70mRp|xb?JPBeRs@fu_XpPnSrBv1BNf#XHMsi7wf-wIGs5I7lvqxzAw~v- z^YTj>LeR3tgK`UGM>wfE5H@Z#1XV5%v@jW{>;MpDQ-t&vDh1s`DW2p-`!A>g5AQxz zeI8g{>a3(~s(HL*N-GX8Brz`dETkBWF3L25-a^r5YRZ9BvmEPT-hvbXv}XjLxE#U) zrn}n)_Tng}4*_1dxb&4e*Z*kjE5M@Ky7z}1xLNOwvj zh@>>q(j_1*jYuO6zd`Q3Ui^RG_xv}{Fo!ei-Fxk|*WT;h>zp$jit@PmyO+y$1eaD7 zZrFbQ-eN1kOM5IBwwJJgd4`a@7~+Fc3iKxI*piv8H493NtFzCz9D7qYB@$Gau@_hAve<^RKsj+N-$#y<~_xRiCd>|Cx z7|W?*fTx?nmRmo{zQ4!<9S-cSbY}mw2vK#XRj5vNc1_InfU(a*#Vzz?Z9hGH3>ZgP z5)-5IJlp8!m^&=>1d6LO=t?HVvADU=4dzB%;H4Mq=EO+$*z+6SA1(h#?HotJKU-Y4 z-ZQ!K;jqP?g`$k`953BX&8%%pN4n#~d@>$8&P#4S{H393obqF8qqJl%fv#}%`HzhO zeT%?DL`%!h#2Nqp`moNTWKp z+@;Em8Dd>zzDN(X{vnz7R7X}A$?s=CmqN;gIKo(cfI*lup{Y1+> zRCLh`;@{iGB?fW`*mjWscF^J_xq2Opelu$Dd{&cPL(D~v|BxaH;RrA%OiFy3IwIr^&4h1pm0mnIuxb?{HVvc2lb?Eed=WZh z%UiV0IcrN6{m#qQ{O7vxlGXfoyR1<2%}ZCfx}O9&eK&3IdoW!hO~7N1SN5J{cQT#WyDI!_C2YZjvssGQrX9~D8s zYB39gqRto~AF$L{S&8O8uo#;!@bjFdKVbGOU(|$WC2hBYr{s9nG*@?(Bg)cA|JKr* z{*}%mA6KJPqwwy*P*uTD;>5`^)y34a!@f2jTOFR%U=k%H*V?s&!1nQ2(+Ai|xT9m- zA+-;L-3hF(yb75fflf0Fdb8~?_3vw7GVzAF@e*kR_zaj32xpkvQFnyz3q4D7(ykvt z^7e#Il*q$WbhA^&Et=D=F(U5ML5se^f&}g7XxWU!NURuxmumN@Z9@&kOLTtB0gxrj z5hfwxdgczYX6IE}$U3*QRYb=McI$Hm&D2D{v6d8;%(H}f8ft96sFvibnX8TR%Xb`V zIGbkxHm=URc_yIa=Cpcr=IcV$;`XV)C0*3>=g>gi+|1hrHx547ugGynw6wI_Z9!y&ravdv)cb{iuz>y{gvN}GprBTY@<;NCa zcW7vv#Y>75;W28-GYAGf8JVa@$~50V4Md3pI#w2fgh-R~lyw7~9zHRXf?fsLxbp5C z3zwrH zH=VcLkriwGxZit@(s!Ix9Zm;alY#R&YBSDJ}+t}cVigC!EEx4OtjFiD3OOZ(d`PWx8qve6p2`I8p9ZBo?#sS zY16=;VHou3ltKQ5&T^y@lzJZ%Nt86Qrex3nRo?kBMK9fwnU3v+Oa5gKI|Vt^&NR!C zed4ZNeM<}HAqK&&3?(`JjJi(Z#^+TxAX;)7o|&(6k(5_bYV7#VJqNhs=_S{}_8FwR z!)zvNq2I*C``!gTRc)PqU~iyg0*cAh2*C2M)W@j^b|26!PM5E~J~Jz_$~oNTFF|q| zR{vndZ%8?HAYMaK&f}G^yJ9j#nXe$tLOj$08IEmHWfW)Y{r)lR;TJJETp3cdI?6F4FAcYNodglWv9=AIgCq2lo-;l5(b`^UJ`fowLk@f$i zz&d^iqUb$&aq;5G<^HTM6_~2AVZX;Hh%1S>MY=cxC;wnGngxf*ex8(|=%8OLBa7IN zOQHtvM5XZT%@fs689yl-MP0W$0Ry@aF?iUOeBl;0CZdfY)jCzt&AHxZ}K6} z;^`;Hy?159k2s!Tp5Skq!~nkIyo4zRB)t`$g3I%KJMd&=i##mUs)99}QLaQZ=VtsX zuRgcX2y3>N%1Xh9v-u9d5tydI5y<*6GL#KNvD0+|qXMf>p8;Rba6_!;Na{T+fgkDn z?@I>|$t1YDQ4#3O_NKG#awbI(4d|2Bld>Yo2lMQxn|s~Mj^@dBBmhRNH86+Os`) zYy2B*=O*ed9+2nyJz$~a7Um)ImgecC*h`UGSZ0w0Eo5x}{ z53Igz!;+^pcI+}J&{l1LP`HO*1{&~m8L5#0Y44XMR3CT#1iBX{gPt{SQY9SX2X-#3 zMjDXuk-UtB$SODp1+b}>x>N*3OT^G4c7Ole;d{cH8Wl>;f~z0SDm4>|TN-g4uc7iP z2^UYYy8K_B`e+Hpi_D#B&RYpz2vHpX7mZi_FQj(K_kyrzg^bw;)rJzJNF80%jIaWy zW^r>3l;J4=O#w!kXR5=(-?D4>_Iu^q1fXI|ZmIrSE31jI6%uB0Z^+q4&V@rRA$The z$o1bjx8FuX2zOh=D85W&e({eMMSYvI{*r<)Ha9cAV)pAtUrUt_A09jViblMVTJuok z>?BKZyeCd>YiEi?#hL)gAt4vYI6apfEzV$O#Cg{*0ek+{f5vw3lbm~G09*!Fs=0^e z^t(ml?T_oebW0+w-*IG;3c2QfEM?_EKlZgkoyU=R2|b#-tiPH}#{a^sTa1Kq#^+7#%n8MO6D?5Iu2Zjs z&kYoWA2p{9u+nu%GpwPAY>ZY#&}l31!u6VCQ<*Gvy1yBDqoDHjhmq5v*VY3uqwpS$ zPwa(OA6I39M7!yWK5)-)Gqm*_*Lqlp6`Ol9C7L#8k-P`-33q>%t?M@|-@eJpgO)To zB&&O2SC$?RVUS^~Dss|ud)p+M7q|@q;o|qAE!#e}Rw=Q;7a;PCC-cF}?T$TtVy)4= zh}DFIz9ERL<&k*;+cA0RhO?m2io1uQO1WF%;vr#2giD`ww6g7xQMf)l+&zAI$QJQB z+OlTkO`lQX@ueA5?8TvY!r8s(F*tptdxCrk zm638Y|40{@Hk2ZJW_b1{>LleWu%P-$geYb~|R_~5iLrX00hp%|M;ds1rw7BP=%!CthDK_(e3+>%It1Vl8@bqQ4YCVu_?cey@mo;Jb{s%T+Ii5e+K9TX8U1bWDYA-&@OW^vz>F83ST{I0_T&=rX@9b0 zX}Y=x!tFjANkL_nVO^Djb(t9U4*WLGb)VH7Z0#I>b=)LE-O`tnz<&;WhV3xNC;NTW zkhMZ(?fZm&DUI%wmqJ_HSFWFPckUBIUe%^RYvu&2zv_(PXxn`lHb>?Sp%G_OVmu6P znX)7!!qMz>>I7%MX#qc<7>mGuVpdJzGW~#OVJH*rToO2Svm*A`vPfLDp7m2m`O&JZ zJ^23ZI*n4OsZ{ztt7Xp;I(+&&kq&MFq5C$dW#7U=rn{pi|w7J_k%^g8n zna=dVi;T3URHd_Hpu?}LN2f?oD9iZEefq0MaVEiWL$Z={8WxK6PRDTfFU6>xWG>5| zz1oLfV5$MPJi^JL+`Iw-1ga$jf$(6~aj|tU=CE#6( z<`|g0_NPx##u#@9!!m_S#|5eqh=KInJ5t$ngoZo>4griEWN{sbW8)n0y9w{sc!;Pc z;4toX+7l>+k8u7|Pa30uD5+jk4=f=V2Nl!$OK)sNLWVPAwWjUR%-qMu~l_j5&3 zp`Nj+3B54{&4qSPv;qwLe5AkrS-6EKFa7Z>Kc5?3v+nw(Ru;;gE$KZQ2Ex1}`Aqox z;YKXsZwcRTl26>DthQ{;ejPQG*>Y^qQX@VxHY^E{PaT2OmpFS#C*sZ+8kry zWt#j!_FI;t;+sM?sBP0Pu*%&GUO&AtmTRjnsS;^@hNWb>YW|fGm+K3 z3*Aev0LH1qPjaS0^|>C36W;YE;r-rXknisl*4Ffwwy_b%sAwtl)Kxv{M#V=>5;=eaoi zbS)XtKT1|1?gWPO^a#CL*B1}5#@(GRtGQV)3hTuZL}&9AcKNN3eOPMN*oFzkDrgzVBO`F$O-{qw)?} zHe1c$=Y?sWjt!^a+Y2EDL0Tvp0tf)DqyKBJo7&ny9vc{1nOx8H<+wSU5l(`R?KiH0 zOh+#^d38R#oEeRik(AVK#u>NSs3Iz(m|Rz+@?t5$iH8R6g3N_6qbFY2Sse}3-pz@v znu*MR;$TQM+2pY*Bq(^+>$n|tukWq-*)h%uC1D~tC)dj}Du8|1x9td`(B`%DXs}8w z`>UAHtCMfWUr80!Ut+JI&wSIGqKY>eLW56z&CGbJM)bJ3HS=*wj9rl|9OK5wTY)Zm z4*Bj=R_4?}V}=9#c=mD31YMQEws8a-ni|-Io6@;*4!s)vxe%KH)I_&6hR#=|i?@;Q%cF!k zfV*1zU$W9UE1B+3&E%;x7^IIki`^<0nawPvqmX5Br~2nJ1$h4m zS;NZhGmhaO0F)sJDOpisI(}%&XU$7xUlEOF!-tag1$D0cr`k`=PY4cTEPhaK-VJgT z$4L_sk;(xDP)dJ$J2`{Xw#zR;%$HGFE5E=gQJz#=TXS||4b>q>2wlxbKO<@_VY3X( zd~+~d6YorE*sQ8{M?_FP?4D5~Us6yDRrov7FfCcA1>n;I_v9OwG%lNm(GxON>X0Lz z+4!;cAwOMjIFKwC3Y}lw#E4eMW4&?h!L&lhBE3HRP5zMo{ zFx;D3y<~@5zG!C1$P7@g&wH4_UcZHRS3lgEoeR9sV32LE71}C(%wacuS$pZYzqqx5 zUSo#&njHvg-L-rD_H?T7G}_SCUSPZa%7W0@-6DHjd$ezu&3RYlyi~QwjbkVefcx(( z3pRyrVx_f-v4z1OG%IVy;GzLGUgfYCEUx}r(84inJ~c){o& ztmY))x%ZFbB?gdr;&F}Fa`A-OspLLFbEtiE!73=vjun%=-P5OGVIrq zu$xU45x8*tw~^*(dSBh2x<@-~Wh=dw3i|>Sn#38*ne#}c%2!Zdpyqu^!;S;DS-*#4 zm%Agx*EKW78rVULdxGgxkJWLi(z3s0V2@7AQ#Xw8Z(0CW<4KpFU9g^JsUFdjv)I6P>xPgAs(JH+d7JNEVhQ5}PVzR+m#k z74OC%R0l0@R)Yy0ikbQo9vC8((vVn)f{T1G9Fk0(M1j8TctyD|WRe`LU?Q&A6uhaZ z&HHKwZma_*I$YoiVJdTv^T)yvG(SG_Bk|J}oI zV0QXVRsWM!Ay{I9?)5M+CO8m?5(J7r?gdi;{sS!`@LU+k^L6t=G1IC2t~hVjUA2hn zgKOq1A>2Ie78*%Rr$32QSy(r@P){!3&WL>~-b$F%;2nI-#}pRsP9=vRwz@qABk!*p zQkk>78M!y>ma{|_ta4a)m+*_Sr1?36-===qyo(XXqDb6hoIze3!yWNJ%cYWT!%4>$ zfLvOO9~l%%*-}%TB9ERVD(+qJWBR%r%WM&Gex}0xI-|*?{mG*@rlyNOf(f}^-?cia za2mbV@~{(_LI3aO_-DfXCreDeqlsgK8KDgk7T(BV7WqYEZzPRvjhw7aY#`V1?U%vtFGwc!p`Yc8#NBG`%*(xR(4h#n^&o|2G zp$#Wv)&~fpOqSenI|(xSXfN(*m~9#zIUn_Ac@4*Ws6^)eBBh^v{u400zI`oVYY( z_g+D#3LhcWf6W@v-%&zS*YXwmXzQ(%Qwqn!ub3jAD1g0NLGQPIKq*Y<>O-6(7&I1z zBXehPL$!8K6ScoRAI%@gh!#xhWUz?IO-zvIjZqAdQ2LlHsbk*L>O_opxjawXb`gam zkG-0YBgGWpR7J8Lg#m|S@t}1y!k7C#c6S!aMD@W?ST;$(aing_xyT9CZ4zP0L=>D3 zvvd_~s$Xv)Ur53D1I)U5kKOD{9Cg@T0c)$u*oUf%u#MCa-7Xcat@>hIJ4$9Qt0^cL z38GG4RpJ<3yBNRuBH$8Qg85pOp(2JmSw7gY-^Ig*a|rGZqJt+ zYI6deALc8;uljrT{W!>d_K5w}8C=Jdr(*3aHfqKq(efOH$fSEwRm%$#2Il>eMadJ_ z)2c&gl9n1Dfd=l53h}+5o+r{~l)&p1v=$}bef!5->>t42lVlb0Q?*Hw)F%_~ilOA| zn;{RIaOU+<^aUIUkE&tAE}*T$lVi;tq>h5|9S;L}pgouL=cVX;+bfXGlxVUsRvKCN zqu1<0W^^$#hZD=>m<@$IT;qCcuZnzKBp!TkpxOM~OQUw44c=v!Hfy*qjR;7G;53P~ zcDMnE+Lp&ua38jHg@^S(uA-Dz7v211^aDU@H*A{0!4rUf=LP;8RoK9S;6T){-;wJm z|L+)ETisOfpArxN2y`6Yq{J8gtWX#Xp!|Gxoo?1_Isaa1Fg~ z>^vPn{MV}azkt``H|6^1>k7)haDT5cxAleGUT%MZZ}df3{RbV_2POe-(+%pA}r^Gk}|f#{cR)>UABz%HMW?t&_iUA+XSW zTm8_91&^1oDenpk-hT_Nf}yW{_1w{Duh)c$uJ|AznKWq)n={@LyQ)`Tz@@um;A_J05WHc&123;#Fwz3ne# zCVICi>+hD$S&(j%;eQD1ztz8Hm48y`-*vbaAjWTZgGp~W*`H~w-{M?Ze<^z_sr6@b zJk|=7(_j$jAuL09+eu%-obDH!a5RBHU@0-j|LEk&ONu#8STJI12?AkXHx4T|!`}6` zk2ylztW5qv|2GG{?QKqEe>Dy Date: Sun, 24 Dec 2023 21:30:02 +0800 Subject: [PATCH 48/48] =?UTF-8?q?Signed-off-by:=20=E2=80=9Cxxx=E2=80=9D=20?= =?UTF-8?q?<651952673@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/net/micode/notes/model/Note.java | 66 +++++++++++-------- .../net/micode/notes/model/WorkingNote.java | 8 +-- .../net/micode/notes/tool/BackupUtils.java | 46 +++++++------ 3 files changed, 68 insertions(+), 52 deletions(-) diff --git a/src/Notes-master/src/net/micode/notes/model/Note.java b/src/Notes-master/src/net/micode/notes/model/Note.java index 63fcbbf..17f7256 100644 --- a/src/Notes-master/src/net/micode/notes/model/Note.java +++ b/src/Notes-master/src/net/micode/notes/model/Note.java @@ -43,12 +43,12 @@ public class Note { */ public static synchronized long getNewNoteId(Context context, long folderId) { // Create a new note in the database - ContentValues values = new ContentValues(); - long createdTime = System.currentTimeMillis(); - values.put(NoteColumns.CREATED_DATE, createdTime); - values.put(NoteColumns.MODIFIED_DATE, createdTime); - values.put(NoteColumns.TYPE, Notes.TYPE_NOTE); - values.put(NoteColumns.LOCAL_MODIFIED, 1); + ContentValues values = new ContentValues();//新建values来保存信息 + long createdTime = System.currentTimeMillis();//以当前时间为创建时间 + values.put(NoteColumns.CREATED_DATE, createdTime);//创建时间 + values.put(NoteColumns.MODIFIED_DATE, createdTime);//修改时间 + values.put(NoteColumns.TYPE, Notes.TYPE_NOTE);//类型 + values.put(NoteColumns.LOCAL_MODIFIED, 1);//本地修改标志 values.put(NoteColumns.PARENT_ID, folderId);//将数据写入数据库表格 Uri uri = context.getContentResolver().insert(Notes.CONTENT_NOTE_URI, values); //ContentResolver()主要是实现外部应用对ContentProvider中的数据 @@ -57,6 +57,9 @@ public class Note { long noteId = 0; try { noteId = Long.valueOf(uri.getPathSegments().get(1)); +// uri.getPathSegments().get(1) 的作用是从 Uri 对象中获取路径的分段,并返回索引为 1 的分段内容。 +// 在这段代码中,通过调用 uri.getPathSegments() 方法获取到一个 List 对象,其中包含了 Uri 路径的各个分段内容。而后使用 get(1) 方法获取到索引为 1 的分段内容。 +// 根据代码的上下文,可以推测索引为 1 的分段内容代表新生成的笔记的 ID 号。因此,uri.getPathSegments().get(1) 的作用就是从 Uri 中解析出新生成的笔记的 ID 号,并将其作为一个长整型值返回给变量 noteId。 } catch (NumberFormatException e) { Log.e(TAG, "Get note id error :" + e.toString()); noteId = 0; @@ -64,7 +67,7 @@ public class Note { if (noteId == -1) { throw new IllegalStateException("Wrong note id:" + noteId); } - return noteId; + return noteId;//生成的新笔记的 ID 号 } public Note() { @@ -72,10 +75,10 @@ public class Note { mNoteData = new NoteData(); }//定义两个变量用来存储便签的数据,一个是存储便签属性、一个是存储便签内容 - public void setNoteValue(String key, String value) { - mNoteDiffValues.put(key, value); + public void setNoteValue(String key, String value) {//接受两个参数:key 和 value,分别表示属性的键和值。 + mNoteDiffValues.put(key, value);//将 key 和 value 存储到 mNoteDiffValues 对象中 mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); - mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); + mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis());//修改时间为当前时间 }//设置数据库表格的标签属性数据 public void setTextData(String key, String value) { @@ -117,12 +120,12 @@ public class Note { * {@link NoteColumns#MODIFIED_DATE}. For data safety, though update note fails, we also update the * note data info */ - if (context.getContentResolver().update( + if (context.getContentResolver().update(//更新数据库中的笔记数据。 ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), mNoteDiffValues, null, - null) == 0) { + null) == 0) {//笔记的 Uri,通过 ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId) 获取到特定 ID 的笔记的 Uri。 Log.e(TAG, "Update note error, should not happen"); // Do not return, fall through - } + }//如果更新操作返回的结果为 0(表示没有进行更新操作),则记录错误日志 "Update note error, should not happen",并且在注释中说明不要返回,而是继续执行后面的代码。 mNoteDiffValues.clear(); if (mNoteData.isLocalModified() @@ -194,11 +197,13 @@ public class Note { ContentProviderOperation.Builder builder = null;//数据库的操作列表 if(mTextDataValues.size() > 0) {//有文本数据 - mTextDataValues.put(DataColumns.NOTE_ID, noteId); - if (mTextDataId == 0) { + mTextDataValues.put(DataColumns.NOTE_ID, noteId);//如果有文本数据,首先将笔记的 ID(noteId)存储到 mTextDataValues 中 + if (mTextDataId == 0) {//如果是 0,表示当前没有对应的文本数据记录,需要进行插入操作。 mTextDataValues.put(DataColumns.MIME_TYPE, TextNote.CONTENT_ITEM_TYPE); + //在插入操作中,设置 mTextDataValues 的 MIME 类型为 TextNote.CONTENT_ITEM_TYPE,表示文本类型的数据。 Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, - mTextDataValues); + mTextDataValues);//通过 context.getContentResolver().insert() 方法将 mTextDataValues 插入到 DataColumns 表中,并返回插入数据的 Uri。 + //尝试从插入返回的 Uri 中获取新插入数据的 ID,并将其转换为 Long 类型,并存储到 mTextDataId 中。若转换失败,记录错误日志并清空 mTextDataValues,然后返回 null。 try { setTextDataId(Long.valueOf(uri.getPathSegments().get(1))); } catch (NumberFormatException e) { @@ -206,21 +211,25 @@ public class Note { mTextDataValues.clear(); return null; } - } else { + } else {//如果 mTextDataId 不为 0,则表示已存在对应的文本数据记录,需要进行更新操作。 builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mTextDataId)); + Notes.CONTENT_DATA_URI, mTextDataId));//通过 ContentUris.withAppendedId() 获取特定 ID 的文本数据记录的 Uri,并设置更新值为 mTextDataValues。 builder.withValues(mTextDataValues); - operationList.add(builder.build()); + operationList.add(builder.build());//将更新操作添加到 operationList 中。 } - mTextDataValues.clear(); + mTextDataValues.clear();//清空 mTextDataValues。 }//把文本数据存入DataColumns - if(mCallDataValues.size() > 0) {//有电话号码 - mCallDataValues.put(DataColumns.NOTE_ID, noteId); - if (mCallDataId == 0) { + if(mCallDataValues.size() > 0) {//有电话号码。用于将电话号码数据存储到数据库的 DataColumns 表中 + mCallDataValues.put(DataColumns.NOTE_ID, noteId);//如果有电话号码数据,首先将笔记的 ID(noteId)存储到 mCallDataValues 中。 + if (mCallDataId == 0) {//判断 mCallDataId 是否为 0。如果是 0,表示当前没有对应的电话号码数据记录,需要进行插入操作。 mCallDataValues.put(DataColumns.MIME_TYPE, CallNote.CONTENT_ITEM_TYPE); Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, mCallDataValues); + //在插入操作中,设置 mCallDataValues 的 MIME 类型为 CallNote.CONTENT_ITEM_TYPE,表示电话号码类型的数据。 + // 然后通过 context.getContentResolver().insert() 方法将 mCallDataValues 插入到 DataColumns 表中,并返回插入数据的 Uri。 + + //尝试从插入返回的 Uri 中获取新插入数据的 ID,并将其转换为 Long 类型,并存储到 mCallDataId 中。若转换失败,记录错误日志并清空 mCallDataValues,然后返回 null。 try { setCallDataId(Long.valueOf(uri.getPathSegments().get(1))); } catch (NumberFormatException e) { @@ -228,16 +237,19 @@ public class Note { mCallDataValues.clear(); return null; } - } else { + } else {//如果 mCallDataId 不为 0,则表示已存在对应的电话号码数据记录,需要进行更新操作。 builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mCallDataId)); + Notes.CONTENT_DATA_URI, mCallDataId));//创建一个 ContentProviderOperation.Builder 对象,通过 ContentUris.withAppendedId() 获取特定 ID 的电话号码数据记录的 Uri,并设置更新值为 mCallDataValues。 builder.withValues(mCallDataValues); - operationList.add(builder.build()); + operationList.add(builder.build());////将更新操作添加到 operationList 中。 } - mCallDataValues.clear(); + mCallDataValues.clear();//清空 mCallDataValues。 }//把电话号码数据存入DataColumns +//将电话号码数据与笔记关联起来,方便后续读取和展示。 + if (operationList.size() > 0) {//总长大于0 +// 在 try-catch 块中,捕获可能发生的 RemoteException 和 OperationApplicationException 异常。 try { ContentProviderResult[] results = context.getContentResolver().applyBatch( Notes.AUTHORITY, operationList); diff --git a/src/Notes-master/src/net/micode/notes/model/WorkingNote.java b/src/Notes-master/src/net/micode/notes/model/WorkingNote.java index c2c1b9e..7b347da 100644 --- a/src/Notes-master/src/net/micode/notes/model/WorkingNote.java +++ b/src/Notes-master/src/net/micode/notes/model/WorkingNote.java @@ -113,13 +113,13 @@ public class WorkingNote { private WorkingNote(Context context, long folderId) { mContext = context; mAlertDate = 0; - mModifiedDate = System.currentTimeMillis(); - mFolderId = folderId; + mModifiedDate = System.currentTimeMillis();//将修改日期设置为当前时间的毫秒数。 + mFolderId = folderId;//将传入的文件夹 ID 赋值给 mFolderId。 mNote = new Note(); mNoteId = 0; mIsDeleted = false; mMode = 0; - mWidgetType = Notes.TYPE_WIDGET_INVALIDE; + mWidgetType = Notes.TYPE_WIDGET_INVALIDE;//:将小部件类型设置为无效类型(Notes.TYPE_WIDGET_INVALIDE)。 } // Existing note construct @@ -140,7 +140,7 @@ public class WorkingNote { ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null, null, null); - // 若存在,储存相应信息 + // 若存在,储存相应信 if (cursor != null) { if (cursor.moveToFirst()) { mFolderId = cursor.getLong(NOTE_PARENT_ID_COLUMN); diff --git a/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java b/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java index 5a7c0f4..7062f51 100644 --- a/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java +++ b/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java @@ -37,16 +37,17 @@ import java.io.PrintStream;//导入 Java 的打印流(PrintStream)类,用于 //备份的处理 public class BackupUtils { - private static final String TAG = "BackupUtils"; + private static final String TAG = "BackupUtils";//定义了一个私有的静态字符串常量 TAG,用于日志输出。 // Singleton stuff - private static BackupUtils sInstance; + private static BackupUtils sInstance;//定义了一个私有的静态成员变量 sInstance,表示单例对象。 public static synchronized BackupUtils getInstance(Context context) { - if (sInstance == null) { + if (sInstance == null) { //如果当前备份不存在,则新声明一个 - sInstance = new BackupUtils(context); + sInstance = new BackupUtils(context);//并将传入的上下文参数赋值给它 + } - return sInstance; + return sInstance;//。最后返回 sInstance。 } /** @@ -63,38 +64,37 @@ public class BackupUtils { public static final int STATE_SYSTEM_ERROR = 3; // Backup or restore success成功存储 public static final int STATE_SUCCESS = 4; - - private TextExport mTextExport; + //备份或恢复成功。 + private TextExport mTextExport;//声明了一个私有成员变量 mTextExport,表示文本导出对象。 //初始化函数 private BackupUtils(Context context) { mTextExport = new TextExport(context); - } + }//用于初始化 BackupUtils 对象 //外部存储功能是否可用 private static boolean externalStorageAvailable() {//外部存储功能是否可用 return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); - } + }//用于检查外部存储是否可用。它通过比较外部存储的状态是否为 Environment.MEDIA_MOUNTED 来判断外部存储是否可用,并返回布尔值。 // public int exportToText() { return mTextExport.exportToText(); } - +//用于导出数据到文本文件。该方法调用了 mTextExport 对象的 exportToText() 方法,并返回结果。 public String getExportedTextFileName() { return mTextExport.mFileName; } - +// 用于获取导出的文本文件名。该方法返回 mTextExport 对象的 mFileName 属性。 public String getExportedTextFileDir() { return mTextExport.mFileDirectory; } - - private static class TextExport { +// 用于获取导出的文本文件目录。该方法返回 mTextExport 对象的 mFileDirectory 属性。 private static class TextExport { private static final String[] NOTE_PROJECTION = { - NoteColumns.ID, - NoteColumns.MODIFIED_DATE, - NoteColumns.SNIPPET, - NoteColumns.TYPE + NoteColumns.ID,//表示笔记的唯一标识符。 + NoteColumns.MODIFIED_DATE,//表示笔记的修改日期。 + NoteColumns.SNIPPET,//表示笔记的摘要或片段。 + NoteColumns.TYPE//表示笔记的类型。 }; private static final int NOTE_COLUMN_ID = 0; @@ -171,12 +171,16 @@ public class BackupUtils { * Export note identified by id to a print stream */ private void exportNoteToText(String noteId, PrintStream ps) { +// 通过 mContext.getContentResolver().query() 方法查询数据库,获取与指定笔记 ID 相关的数据。 Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] { noteId }, null); - if (dataCursor != null) { //利用光标来扫描内容,区别为callnote和note两种,靠ps.printline输出 +// if (dataCursor != null) { //利用光标来扫描内容,区别为callnote和note两种,靠ps.printline输出 +// 如果类型为 DataConstants.CALL_NOTE,则获取电话号码、通话时间、附件位置等信息,并使用 ps.println() 方法输出到文本文件中。 +// 如果类型为 DataConstants.NOTE,则获取笔记内容信息,并使用 ps.println() 方法输出到文本文件中。 +// 在每个笔记结束后,输出一行分隔符(由 Character.LINE_SEPARATOR, Character.LETTER_NUMBER 组成),以便区分不同笔记的内容 if (dataCursor.moveToFirst()) { do { String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE); @@ -211,7 +215,7 @@ public class BackupUtils { dataCursor.close(); } // print a line separator between note - try { + try {//如果在输出时发生异常,则会记录日志。 ps.write(new byte[] { Character.LINE_SEPARATOR, Character.LETTER_NUMBER }); @@ -318,14 +322,14 @@ public class BackupUtils { * Generate the text file to store imported data */ private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new StringBuilder();//创建一个 StringBuilder 对象 sb,用于构建文件的路径。 sb.append(Environment.getExternalStorageDirectory()); //外部(SD卡)的存储路径 sb.append(context.getString(filePathResId));//文件的存储路径 File filedir = new File(sb.toString());//filedir应该就是用来存储路径信息 sb.append(context.getString( fileNameFormatResId, DateFormat.format(context.getString(R.string.format_date_ymd), - System.currentTimeMillis()))); + System.currentTimeMillis())));//将资源 ID 为 fileNameFormatResId 的字符串添加到 sb 中,该字符串是文件名的格式化模板,其中使用了当前时间进行格式化。 File file = new File(sb.toString()); try { //如果这些文件不存在,则新建