From f590a134b53b0854fe79a01163e3390de95afc5e Mon Sep 17 00:00:00 2001 From: spinel Date: Mon, 21 Mar 2022 01:07:29 +0100 Subject: [PATCH] various updates --- TODO | 155 +- android/app/build.gradle | 4 +- android/build.gradle | 2 +- lib/components/app_theme.dart | 44 +- lib/components/data_table.dart | 43 - lib/components/detail.dart | 36 +- lib/components/forms.dart | 222 --- .../forms/auto_complete_dropdown_button.dart | 230 +++ lib/components/forms/boolean_form_field.dart | 39 + .../forms/date_time_form_field.dart | 47 + lib/components/forms/duration_form_field.dart | 123 ++ lib/components/forms/form_wrapper.dart | 45 + lib/components/forms/number_form_field.dart | 129 ++ .../forms/time_of_day_form_field.dart | 40 + lib/components/progress_indicator.dart | 65 - lib/components/repeat_on_hold_button.dart | 74 + lib/config.dart | 29 +- lib/main.dart | 103 +- lib/models/accuracy.dart | 50 +- lib/models/basal.dart | 56 +- lib/models/basal_profile.dart | 68 +- lib/models/bolus.dart | 52 +- lib/models/bolus_profile.dart | 65 +- lib/models/glucose_target.dart | 122 ++ lib/models/ingredient.dart | 79 + lib/models/log_bolus.dart | 93 + lib/models/log_entry.dart | 73 +- lib/models/log_event.dart | 178 +- lib/models/log_event_type.dart | 35 +- lib/models/log_meal.dart | 63 +- lib/models/meal.dart | 35 +- lib/models/meal_category.dart | 29 +- lib/models/meal_portion_type.dart | 29 +- lib/models/meal_source.dart | 30 +- lib/models/recipe.dart | 66 + lib/models/settings.dart | 130 ++ lib/navigation.dart | 40 +- lib/objectbox-model.json | 643 +++++- lib/objectbox.g.dart | 1724 +++++++++++++---- lib/screens/accuracy_detail.dart | 197 +- lib/screens/accuracy_list.dart | 164 +- lib/screens/basal/basal_detail.dart | 213 +- lib/screens/basal/basal_list.dart | 129 +- lib/screens/basal/basal_profile_detail.dart | 185 +- lib/screens/basal/basal_profile_list.dart | 278 +++ lib/screens/basal/basal_profiles_list.dart | 203 -- lib/screens/bolus/bolus_detail.dart | 413 ++-- lib/screens/bolus/bolus_list.dart | 180 +- lib/screens/bolus/bolus_profile_detail.dart | 196 +- lib/screens/bolus/bolus_profile_list.dart | 179 +- lib/screens/log/active_log_event_list.dart | 166 -- lib/screens/log/log.dart | 343 +++- lib/screens/log/log_entry.dart | 281 --- .../log/log_entry/log_bolus_detail.dart | 843 ++++++++ lib/screens/log/log_entry/log_bolus_list.dart | 146 ++ lib/screens/log/log_entry/log_entry.dart | 470 +++++ .../log/log_entry/log_meal_detail.dart | 804 ++++++++ lib/screens/log/log_entry/log_meal_list.dart | 127 ++ lib/screens/log/log_entry_form.dart | 185 -- .../log/log_event/log_event_detail.dart | 511 +++++ lib/screens/log/log_event/log_event_list.dart | 366 ++++ .../log/log_event/log_event_type_detail.dart | 304 +++ .../log/log_event/log_event_type_list.dart | 123 ++ lib/screens/log/log_event_detail.dart | 172 -- lib/screens/log/log_event_list.dart | 113 -- lib/screens/log/log_event_type_detail.dart | 171 -- lib/screens/log/log_event_type_list.dart | 109 -- lib/screens/log/log_meal_detail.dart | 561 ------ lib/screens/log/log_meal_list.dart | 107 - lib/screens/meal/meal_category_detail.dart | 153 +- lib/screens/meal/meal_category_list.dart | 110 +- lib/screens/meal/meal_detail.dart | 875 +++++---- lib/screens/meal/meal_list.dart | 155 +- .../meal/meal_portion_type_detail.dart | 159 +- lib/screens/meal/meal_portion_type_list.dart | 116 +- lib/screens/meal/meal_source_detail.dart | 461 +++-- lib/screens/meal/meal_source_list.dart | 111 +- lib/screens/recipe/recipe_detail.dart | 322 +++ lib/screens/recipe/recipe_list.dart | 200 ++ lib/settings.dart | 708 +++++-- lib/utils/date_time_utils.dart | 20 +- .../dialogs.dart => utils/dialog_utils.dart} | 2 +- lib/utils/utils.dart | 60 +- objectbox/data.mdb | Bin 0 -> 1277952 bytes objectbox/lock.mdb | Bin 0 -> 8192 bytes pubspec.lock | 326 +--- pubspec.yaml | 9 +- sync-server | Bin 0 -> 9206368 bytes sync-server-config.js | 12 + web/manifest.json | 4 +- 90 files changed, 11883 insertions(+), 5249 deletions(-) delete mode 100644 lib/components/data_table.dart delete mode 100644 lib/components/forms.dart create mode 100644 lib/components/forms/auto_complete_dropdown_button.dart create mode 100644 lib/components/forms/boolean_form_field.dart create mode 100644 lib/components/forms/date_time_form_field.dart create mode 100644 lib/components/forms/duration_form_field.dart create mode 100644 lib/components/forms/form_wrapper.dart create mode 100644 lib/components/forms/number_form_field.dart create mode 100644 lib/components/forms/time_of_day_form_field.dart delete mode 100644 lib/components/progress_indicator.dart create mode 100644 lib/components/repeat_on_hold_button.dart create mode 100644 lib/models/glucose_target.dart create mode 100644 lib/models/ingredient.dart create mode 100644 lib/models/log_bolus.dart create mode 100644 lib/models/recipe.dart create mode 100644 lib/models/settings.dart create mode 100644 lib/screens/basal/basal_profile_list.dart delete mode 100644 lib/screens/basal/basal_profiles_list.dart delete mode 100644 lib/screens/log/active_log_event_list.dart delete mode 100644 lib/screens/log/log_entry.dart create mode 100644 lib/screens/log/log_entry/log_bolus_detail.dart create mode 100644 lib/screens/log/log_entry/log_bolus_list.dart create mode 100644 lib/screens/log/log_entry/log_entry.dart create mode 100644 lib/screens/log/log_entry/log_meal_detail.dart create mode 100644 lib/screens/log/log_entry/log_meal_list.dart delete mode 100644 lib/screens/log/log_entry_form.dart create mode 100644 lib/screens/log/log_event/log_event_detail.dart create mode 100644 lib/screens/log/log_event/log_event_list.dart create mode 100644 lib/screens/log/log_event/log_event_type_detail.dart create mode 100644 lib/screens/log/log_event/log_event_type_list.dart delete mode 100644 lib/screens/log/log_event_detail.dart delete mode 100644 lib/screens/log/log_event_list.dart delete mode 100644 lib/screens/log/log_event_type_detail.dart delete mode 100644 lib/screens/log/log_event_type_list.dart delete mode 100644 lib/screens/log/log_meal_detail.dart delete mode 100644 lib/screens/log/log_meal_list.dart create mode 100644 lib/screens/recipe/recipe_detail.dart create mode 100644 lib/screens/recipe/recipe_list.dart rename lib/{components/dialogs.dart => utils/dialog_utils.dart} (99%) create mode 100644 objectbox/data.mdb create mode 100644 objectbox/lock.mdb create mode 100755 sync-server create mode 100644 sync-server-config.js diff --git a/TODO b/TODO index a522ce5..a7fccd9 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,150 @@ +MAIN TASKS: + Components/Framework: + ☐ come up with new concept for duration component + ☐ update duration fields to use corresponding component + ☐ log event type detail (reminder duration) + ☐ log event detail (reminder duration) + ☐ meal (bolus delay) + ☐ log bolus (delay) + ☐ set name properties as unique (and add checks to forms) + ☐ check through all detail forms and set required fields/according messages + ☐ change placement of delete and floating button because its very easy to accidentally hit delete + ☐ implement deletion by swiping left on item instead? + ☐ check for changes before navigating as well (not just on cancel) + Reports: + ☐ evaluate what type of reports there should be + ☐ try out graph/diagram components -Todo: - ☐ add active/deleted flag to all data models - ☐ account for deleted/disabled elements in dropdowns - ☐ place dropdown items right below their input - ✔ use local database instead of back4app @done(21-11-07 18:53) - \ No newline at end of file +FUTURE TASKS: + Features: + ☐ app icon + ☐ desktop version + ☐ add explanations to each section + ☐ alternate languages + ☐ log hba1c + ☐ indicate nested creation process (creating from dropdown etc) + ☐ enable restoring data from sync + ☐ indicate read only fields + Components/Framework: + ☐ show indicator and make all fields readonly if user somehow gets to a deleted record detail view + ☐ dropdown tweaks + ☐ edit item -> cancel: shouldn't clear dropdwon + ☐ keep focus on textfield when typing + ☐ account for deleted/disabled elements + Accuracy: + ☐ same icons in detail as in overview to indicate what's what + Recipe: + ☐ update to use correct components, init/dispose etc + ☐ change the entire concept of ingredients + ☐ add functionality to create a meal from a recipe + Reports: + ☐ meal tweaking + ☐ bolus tweaking + ☐ basal test + ☐ daily graph (showing glucose curve, events, boli and meals) + Log Overview: + ☐ add filters + Log Entry: + ☐ check if there is still an active bolus when suggesting glucose bolus + Event Types: + ☐ add colors as indicators for log entries (and later graphs in reports) + ☐ implement reminders as push notifications + Settings: + ☐ add option to hide extra customization options (ie. changing pre calculated values)? + ☐ option to switch theme + ☐ add fields for glucose target tiers (as map of cutoff glucose and colors) + ☐ add field for active insulin duration + ☐ add setting for carb units/bread units + ☐ add option to switch 'save' and 'save & close' buttons + ☐ add functionality to delete dead records (meaning: set deleted flag and no relations to undeleted records) + +Archive: + ✔ only show current day @done(22-01-24 05:39) @project(MAIN TASKS.Log Overview) + ✔ add calendar field on top to navigate @done(22-01-24 05:39) @project(MAIN TASKS.Log Overview) + ✔ use currently selected day when adding a log entry @done(22-01-24 05:39) @project(MAIN TASKS.Log Overview) + ✔ only show current day @done(22-01-24 05:39) @project(MAIN TASKS.Event Types) + ✔ add calendar field on top to navigate @done(22-01-24 05:39) @project(MAIN TASKS.Event Types) + ✔ use currently selected day when adding a log event @done(22-01-24 05:39) @project(MAIN TASKS.Event Types) + ✔ update number fields to use corresponding components @done(22-01-24 03:13) @project(MAIN TASKS.Components/Framework) + ✔ meal detail (carbs ratio, portion size, carbs per portion) @done(22-01-24 03:12) @project(MAIN TASKS.Components/Framework) + ✔ log meal detail (amount, carbs ratio, portion size, carbs per portion) @done(22-01-24 03:12) @project(MAIN TASKS.Components/Framework) + ✔ add "set manually" switch (like in log bolus detail) wherever parameters can be calculated from others @done(22-01-24 03:13) @project(MAIN TASKS.Components/Framework) + ✔ meal detail @done(22-01-24 03:13) @project(MAIN TASKS.Components/Framework) + ✔ log meal detail @done(22-01-24 03:13) @project(MAIN TASKS.Components/Framework) + ✔ put dropdowns first if they override name field @done(22-01-24 03:17) @project(MAIN TASKS.Components/Framework) + ✔ settings (target glucose, increments) @done(22-01-22 01:48) @project(MAIN TASKS.Components/Framework) + ✔ accuracy detail (confidence rating) @done(22-01-21 16:51) @project(MAIN TASKS.Components/Framework) + ✔ basal detail (units) @done(22-01-21 18:14) @project(MAIN TASKS.Components/Framework) + ✔ bolus detail (units, per carbs, per glucose) @done(22-01-21 20:35) @project(MAIN TASKS.Components/Framework) + ✔ log entry (glucose) @done(22-01-22 15:13) @project(MAIN TASKS.Components/Framework) + ✔ log bolus detail (units, current, target, correction, carbs) @done(22-01-22 22:59) @project(MAIN TASKS.Components/Framework) + ✔ add dispose methods everywhere and clean up controllers @done(22-01-21 17:55) @project(MAIN TASKS.Components/Framework) + ✔ fix spacing @done(22-01-21 17:20) @project(MAIN TASKS.Event Types) + ✔ calculation log meal carbs @done(22-01-08 22:21) @project(BUG FIXES.Log Entry) + ✔ implement component for durations @done(22-01-08 19:00) @project(MAIN TASKS.General/Framework) + ✔ make glucose optional @done(22-01-08 19:00) @project(MAIN TASKS.Log Entry) + ✔ add setting for decimal places/unit steps @done(22-01-08 22:18) @project(MAIN TASKS.Settings) + ✔ add fields for preferred date and time formats @done(22-01-07 21:06) @project(MAIN TASKS.Settings) + ✔ add field for glucose target @done(22-01-08 19:00) @project(MAIN TASKS.Settings) + ✔ setup objectbox sync server @done(21-12-22 15:21) @project(FUTURE TASKS.General/Framework) + ✔ recipe list screen @done(21-12-11 22:01) @project(MAIN TASKS.Recipe) + ✔ recipe detail screen @done(21-12-11 22:01) @project(MAIN TASKS.Recipe) + ✔ add model for recipe @done(21-12-11 02:23) @project(MAIN TASKS.Recipe) + ✔ add model for ingredient (relation betweeen recipe and meal) @done(21-12-11 02:23) @project(MAIN TASKS.Recipe) + ✔ give option to specify quantity @done(21-12-11 01:28) @project(MAIN TASKS.Log Entry) + ✔ give option to pick meal from a different log entry (that doesn't have an associated bolus yet and within certain time span) @done(21-12-11 02:22) @project(MAIN TASKS.Log Entry) + ✔ find a better way to work with multiple glucose measurements @done(21-12-11 02:23) @project(FUTURE TASKS.General/Framework) + ✔ make components rounder/nicer/closer to new material style @done(21-12-10 04:10) @project(MAIN TASKS.Layout) + ✔ make sure 'null' isn't shown in text fields @done(21-12-10 04:23) @project(MAIN TASKS.General/Framework) + ✔ hide details like accuracies etc when picking meals @done(21-12-10 06:12) @project(MAIN TASKS.General/Framework) + ✔ add save and close and next buttons on rate creations @done(21-12-10 06:12) @project(MAIN TASKS.Basal/Bolus) + ✔ always calculate other glucose measurement from active one and make other one readonly @done(21-12-10 04:33) @project(MAIN TASKS.Basal/Bolus) + ✔ add save and close button @done(21-12-10 06:11) @project(MAIN TASKS.Log Entry) + ✔ move on to newly created entry after saving @done(21-12-10 06:11) @project(MAIN TASKS.Log Entry) + ✔ recalculate bolus upon deactivating 'set manually' option @done(21-12-10 06:18) @project(MAIN TASKS.Log Entry) + ✔ account for delayed percentage setting on choosing meals @done(21-12-10 06:39) @project(MAIN TASKS.Log Entry) + ✔ fix preloading of dropdown values (appear blank at first as of now) @done(21-12-09 05:31) @project(BUGFIXES.General/Framework) + ✔ glucose target isn't displayed correctly anymore @done(21-12-09 05:31) @project(BUGFIXES.Log Entry) + ✔ hide dropdown overlay on tapping anywhere else (especially menu) @done(21-12-07 21:04) @project(MAIN TASKS.General/Framework) + ✔ add clear button to dropdown @done(21-12-07 21:21) @project(MAIN TASKS.General/Framework) + ✔ add option to specify trend for blood sugar @done(21-12-07 14:20) @project(MAIN TASKS.Log Entry) + ✔ always calculate other glucose measurement from active one and make other one readonly @done(21-12-07 14:33) @project(MAIN TASKS.Log Entry) + ✔ scrollbars in rate overview not showing @done(21-12-06 20:01) @project(BUGFIXES.Basal/Bolus) + ✔ order category lists (meals, meal sources,...) alphabetically @done(21-12-06 20:34) @project(MAIN TASKS.General/Framework) + ✔ add delay to auto conversions @done(21-12-06 20:25) @project(MAIN TASKS.General/Framework) + ✔ show daily Basal sum in overview @done(21-12-06 21:09) @project(MAIN TASKS.Basal/Bolus) + ✔ show KI and stuff for Bolus in overview @done(21-12-06 21:44) @project(MAIN TASKS.Basal/Bolus) + ✔ apply target color settings to glucose @done(21-12-06 22:57) @project(MAIN TASKS.Log Overview) + ✔ improve log meal list display @done(21-12-06 20:25) @project(MAIN TASKS.Log Entry) + ✔ change delayed bolus rate to percentage @done(21-12-06 20:47) @project(MAIN TASKS.Meal) + ✔ add meal source, carbs and portion size as subtitle in list @done(21-12-06 22:01) @project(MAIN TASKS.Meal) + ✔ add option to hide warning dialogs on cancel, delete or event stop @done(21-12-05 19:18) @project(FUTURE TASKS.Settings) + ✔ fix settings saving @done(21-12-05 19:08) @project(MAIN TASKS.Settings) + ✔ add objectbox settings class and use instead of shared preferences @done(21-12-05 00:41) @project(MAIN TASKS.Settings) + ✔ provide percentage functionality for delayed bolus @done(21-12-04 21:39) @project(MAIN TASKS.Log Entry) + ✔ create two bolus entries accordingly @done(21-12-04 22:12) @project(MAIN TASKS.Log Entry) + ✔ replace active profile picking mode with simple dropdown @done(21-12-04 20:10) @project(MAIN TASKS.Basal/Bolus) + ✔ indicate both the default rate and the currently active one (according to event) @done(21-12-04 20:10) @project(MAIN TASKS.Basal/Bolus) + ✔ get rid of excessive cancellation warnings @done(21-12-04 19:09) @project(MAIN TASKS.Log Entry) + ✔ give a warning if event of same type is already running @done(21-12-04 18:50) @project(MAIN TASKS.Events) + ✔ implement reordering @started(21-12-03 23:12) @done(21-12-04 17:01) @lasted(17h49m38s) @project(MAIN TASKS.Accuracies) + ✔ show event start AND end times in list @done(21-12-03 22:04) @project(MAIN TASKS.Events) + ✔ separate events from log entries @done(21-12-01 23:37) @project(MAIN TASKS.Events) + ✔ show total bolus and carbs per entry @done(21-12-01 19:50) @project(MAIN TASKS.Log Overview) + ✔ display boli correctly @done(21-11-30 04:14) @project(MAIN TASKS.Log Entry) + ✔ replace meal and glucose boli with logbolus entities @done(21-11-30 03:56) @project(MAIN TASKS.Log Entry) + ✔ adjust/debug active events view @done(21-11-26 22:54) @project(MAIN TASKS.Log Overview) + ✔ show all active events, not just those assigned to the entry @done(21-11-26 22:12) @project(MAIN TASKS.Log Entry) + ✔ add active events view (as main menu item) @done(21-11-26 21:28) @project(MAIN TASKS.Log Overview) + ✔ add option to change bolus/basal profile for event duration @done(21-11-26 21:13) @project(MAIN TASKS.Event Types) + ✔ add deleted flag to all data models @done(21-11-26 18:56) @project(MAIN TASKS.General/Framework) + ✔ adjust remove and fetch methods accordingly @done(21-11-26 20:52) @project(MAIN TASKS.General/Framework) + ✔ implement tostring methods for all models @done(21-11-26 20:52) @project(MAIN TASKS.General/Framework) + ✔ fix logmeals/logboli/logevents @done(21-11-25 17:10) @project(MAIN TASKS.Log Entry) + ✔ add tab for bolus overview @done(21-11-24 22:05) @project(MAIN TASKS.Log Entry) + ✔ calculate bolus suggestions according to active profile @done(21-11-24 22:05) @project(MAIN TASKS.Log Entry) + ✔ place dropdown items right below their input @done(21-11-23 20:33) @project(MAIN TASKS.General/Framework) + ✔ add autocomplete function to dropdowns @done(21-11-23 20:33) @project(MAIN TASKS.General/Framework) + ✔ use local database instead of back4app @done(21-11-07 18:53) @project(MAIN TASKS.General/Framework) + ✔ use ids instead of passing entities around where possible @done(21-11-10 00:06) @project(MAIN TASKS.General/Framework) + ✔ add time picker for entry date/time @done(21-11-10 00:06) @project(MAIN TASKS.Log Entry) diff --git a/android/app/build.gradle b/android/app/build.gradle index e8ef626..467296d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 30 + compileSdkVersion 31 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -44,7 +44,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.diameter" - minSdkVersion 16 + minSdkVersion 21 targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/android/build.gradle b/android/build.gradle index 44bf4e1..0e71045 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.6.10' repositories { google() mavenCentral() diff --git a/lib/components/app_theme.dart b/lib/components/app_theme.dart index 658b771..e46df56 100644 --- a/lib/components/app_theme.dart +++ b/lib/components/app_theme.dart @@ -5,19 +5,47 @@ class AppTheme { AppTheme._(); static ThemeData lightTheme = FlexColorScheme.light( - scheme: FlexScheme.mandyRed, - fontFamily: 'RobotoCondensed', + surfaceStyle: FlexSurface.medium, + scheme: FlexScheme.aquaBlue, + fontFamily: 'Roboto', ).toTheme; - static ThemeData darkTheme = FlexColorScheme.light( - scheme: FlexScheme.mandyRed, - fontFamily: 'RobotoCondensed', + static ThemeData darkTheme = FlexColorScheme.dark( + scheme: FlexScheme.aquaBlue, + fontFamily: 'Roboto', ).toTheme; static ThemeData makeTheme(ThemeData baseThemeData) { return baseThemeData.copyWith( - visualDensity: VisualDensity.compact, - bottomNavigationBarTheme: BottomNavigationBarThemeData( - backgroundColor: baseThemeData.primaryColor)); + cardTheme: baseThemeData.cardTheme.copyWith( + color: baseThemeData.bottomAppBarColor, + elevation: 1, + margin: const EdgeInsets.only(bottom: 10.0), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(10.0)), + ), + ), + scrollbarTheme: baseThemeData.scrollbarTheme.copyWith( + isAlwaysShown: true, + ), + textTheme: baseThemeData.textTheme.copyWith( + subtitle2: TextStyle( + color: baseThemeData.primaryColor, + letterSpacing: 2.0, + ), + ), + inputDecorationTheme: baseThemeData.inputDecorationTheme.copyWith( + fillColor: baseThemeData.textSelectionTheme.selectionColor, + border: const UnderlineInputBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(8.0), + topRight: Radius.circular(8.0), + ), + ), + ), + bottomNavigationBarTheme: BottomNavigationBarThemeData( + backgroundColor: baseThemeData.primaryColor, + ), + ); } } diff --git a/lib/components/data_table.dart b/lib/components/data_table.dart deleted file mode 100644 index 90c2101..0000000 --- a/lib/components/data_table.dart +++ /dev/null @@ -1,43 +0,0 @@ -import 'package:flutter/material.dart'; - -abstract class DataTableContent { - bool selected = false; - List asDataTableCells(List actions) => []; - static List asDataTableColumns() => []; -} - -class DataTableSourceBuilder extends DataTableSource { - final List data; - final BuildContext context; - - DataTableSourceBuilder(this.context, this.data); - - @override - bool get isRowCountApproximate => false; - - @override - int get rowCount => data.length; - - @override - int get selectedRowCount { - int count = 0; - for (var element in data) { - if (element.selected) { - count++; - } - } - return count; - } - - @override - DataRow? getRow(int index) { - assert(index >= 0); - if (index >= data.length) return null; - final rowData = data[index]; - return DataRow.byIndex( - index: index, - selected: rowData.selected, - cells: rowData.asDataTableCells([]), - ); - } -} diff --git a/lib/components/detail.dart b/lib/components/detail.dart index 160a853..8beb917 100644 --- a/lib/components/detail.dart +++ b/lib/components/detail.dart @@ -2,10 +2,22 @@ import 'package:flutter/material.dart'; class DetailBottomRow extends StatefulWidget { final void Function()? onCancel; - final void Function()? onSave; + final void Function()? onAction; + final void Function()? onMiddleAction; + final String actionText; + final String middleActionText; + final IconData actionIcon; + final IconData middleActionIcon; const DetailBottomRow( - {Key? key, required this.onCancel, required this.onSave}) + {Key? key, + required this.onCancel, + required this.onAction, + this.onMiddleAction, + this.actionText = 'SAVE', + this.actionIcon = Icons.save, + this.middleActionText = 'SAVE & CLOSE', + this.middleActionIcon = Icons.done}) : super(key: key); @override @@ -19,6 +31,7 @@ class _DetailBottomRowState extends State { child: Padding( padding: const EdgeInsets.all(10.0), child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ ElevatedButton.icon( onPressed: widget.onCancel, @@ -28,14 +41,23 @@ class _DetailBottomRowState extends State { ), label: const Text('CANCEL'), ), - const Spacer(), + widget.onMiddleAction != null + ? ElevatedButton.icon( + onPressed: widget.onMiddleAction, + icon: Icon( + widget.middleActionIcon, + size: 18.0, + ), + label: Text(widget.middleActionText), + ) + : const Spacer(), ElevatedButton.icon( - onPressed: widget.onSave, - icon: const Icon( - Icons.save, + onPressed: widget.onAction, + icon: Icon( + widget.actionIcon, size: 18.0, ), - label: const Text('SAVE'), + label: Text(widget.actionText), ), ], ), diff --git a/lib/components/forms.dart b/lib/components/forms.dart deleted file mode 100644 index a09f32c..0000000 --- a/lib/components/forms.dart +++ /dev/null @@ -1,222 +0,0 @@ -import 'package:diameter/components/progress_indicator.dart'; -import 'package:flutter/material.dart'; - -class StyledForm extends StatefulWidget { - final List? fields; - final List? buttons; - final GlobalKey? formState; - - const StyledForm({Key? key, this.formState, this.fields, this.buttons}) - : super(key: key); - - @override - _StyledFormState createState() => _StyledFormState(); -} - -class _StyledFormState extends State { - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.all(10.0), - child: Form( - key: widget.formState, - child: Column( - children: [ - Column( - children: widget.fields - ?.map((e) => Padding( - padding: const EdgeInsets.symmetric(vertical: 5.0), - child: e)) - .toList() ?? - [], - ), - Container( - padding: const EdgeInsets.only(top: 10.0), - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: widget.buttons ?? [], - ), - ), - ], - ), - ), - ); - } -} - -class StyledBooleanFormField extends StatefulWidget { - final bool value; - final String label; - final void Function(bool) onChanged; - final bool? enabled; - - const StyledBooleanFormField( - {Key? key, - required this.value, - required this.label, - required this.onChanged, - this.enabled}) - : super(key: key); - - @override - _StyledBooleanFormFieldState createState() => _StyledBooleanFormFieldState(); -} - -class _StyledBooleanFormFieldState extends State { - @override - Widget build(BuildContext context) { - return FormField(builder: (context) { - return ListTile( - onTap: () => widget.onChanged(!widget.value), - trailing: Switch( - value: widget.value, - onChanged: widget.onChanged, - ), - title: Text(widget.label), - enabled: widget.enabled ?? true, - ); - }); - } -} - -class StyledTimeOfDayFormField extends StatefulWidget { - final TimeOfDay time; - final TextEditingController controller; - final String label; - final void Function(TimeOfDay?) onChanged; - - const StyledTimeOfDayFormField( - {Key? key, - required this.time, - required this.controller, - required this.label, - required this.onChanged}) - : super(key: key); - - @override - _StyledTimeOfDayFormFieldState createState() => - _StyledTimeOfDayFormFieldState(); -} - -class _StyledTimeOfDayFormFieldState extends State { - @override - Widget build(BuildContext context) { - return TextFormField( - readOnly: true, - controller: widget.controller, - decoration: InputDecoration( - labelText: widget.label, - ), - onTap: () async { - final newTime = await showTimePicker( - context: context, - initialTime: widget.time, - ); - widget.onChanged(newTime); - }, - ); - } -} - -class StyledDropdownButton extends StatefulWidget { - final String label; - final T? selectedItem; - final List items; - final Widget Function(T item) renderItem; - final void Function(T? value) onChanged; - - const StyledDropdownButton( - {Key? key, - this.selectedItem, - required this.label, - required this.items, - required this.renderItem, - required this.onChanged}) - : super(key: key); - - @override - _StyledDropdownButtonState createState() => _StyledDropdownButtonState(); -} - -class _StyledDropdownButtonState extends State> { - @override - Widget build(BuildContext context) { - return DropdownButtonFormField( - decoration: InputDecoration( - labelText: widget.label, - ), - value: widget.selectedItem, - onChanged: widget.onChanged, - items: widget.items - .map((item) => DropdownMenuItem( - value: item, - child: widget.renderItem(item), - )) - .toList(), - ); - } -} - -class StyledFutureDropdownButton extends StatefulWidget { - final String label; - final String? selectedItem; - final Future> items; - final String? Function(T item) getItemValue; - final Widget Function(T item) renderItem; - final void Function(String? value) onChanged; - - const StyledFutureDropdownButton( - {Key? key, - this.selectedItem, - required this.label, - required this.items, - required this.getItemValue, - required this.renderItem, - required this.onChanged}) - : super(key: key); - - @override - _StyledFutureDropdownButtonState createState() => - _StyledFutureDropdownButtonState(); -} - -class _StyledFutureDropdownButtonState - extends State> { - @override - Widget build(BuildContext context) { - return FutureBuilder>( - future: widget.items, - builder: (context, snapshot) { - return ViewWithProgressIndicator( - snapshot: snapshot, - padding: const EdgeInsets.all(10.0), - progressIndicatorSize: 44, - child: snapshot.data == null || snapshot.data!.isEmpty - ? Row( - mainAxisAlignment: MainAxisAlignment.center, - children: const [ - Padding( - padding: EdgeInsets.all(10.0), - child: Text('No Meal Sources'), - ) - ], - ) - : DropdownButtonFormField( - decoration: InputDecoration( - labelText: widget.label, - ), - value: widget.selectedItem, - onChanged: widget.onChanged, - items: snapshot.data! - .map((item) => DropdownMenuItem( - value: widget.getItemValue(item), - child: widget.renderItem(item), - )) - .toList(), - ), - ); - }, - ); - } -} diff --git a/lib/components/forms/auto_complete_dropdown_button.dart b/lib/components/forms/auto_complete_dropdown_button.dart new file mode 100644 index 0000000..cd858e6 --- /dev/null +++ b/lib/components/forms/auto_complete_dropdown_button.dart @@ -0,0 +1,230 @@ +import 'dart:math'; +import 'package:flutter/material.dart'; + +class AutoCompleteDropdownButton extends StatefulWidget { + final String label; + final T? selectedItem; + final List items; + final void Function(T? value) onChanged; + final List Function(String? value)? applyQuery; + final TextEditingController controller; + + const AutoCompleteDropdownButton( + {Key? key, + this.selectedItem, + required this.label, + required this.items, + required this.onChanged, + this.applyQuery, + required this.controller}) + : super(key: key); + + @override + _AutoCompleteDropdownButtonState createState() => + _AutoCompleteDropdownButtonState(); +} + +class _AutoCompleteDropdownButtonState + extends State> { + late List options; + late List suggestions; + + final FocusNode focusNode = FocusNode(); + final LayerLink layerLink = LayerLink(); + OverlayEntry? entry; + bool isOpen = false; + + @override + void initState() { + super.initState(); + + setState(() { + options = widget.items; + suggestions = []; + }); + } + + @override + void dispose() { + focusNode.dispose(); + super.dispose(); + } + + void toggleOverlay() { + isOpen ? hideOverlay() : showOverlay(); + } + + void showOverlay() { + hideOverlay(); + focusNode.requestFocus(); + + List items = []; + Divider? divider; + + ScrollController _scrollController = ScrollController(); + + final overlay = Overlay.of(context)!; + final renderBox = context.findRenderObject() as RenderBox; + + if (widget.selectedItem != null) { + items.add(buildListTile(widget.selectedItem!)); + } + + if (suggestions.isNotEmpty) { + items.addAll(suggestions + .where((item) => item != widget.selectedItem) + .map((item) => buildListTile(item))); + } + + if ((widget.selectedItem != null || suggestions.isNotEmpty) && + (options.length - + suggestions.length - + (widget.selectedItem == null ? 0 : 1) > + 0)) { + divider = const Divider(height: 10); + items.add(divider); + } + + items.addAll(options + .where((item) => + !(widget.selectedItem != null && + item.toString() == widget.selectedItem!.toString()) && + !suggestions.contains(item)) + .map((item) => buildListTile(item)) + .toList()); + + final screenHeight = MediaQuery.of(context).size.height; + final neededHeight = renderBox.size.height * (items.length - 1) + + (divider?.height ?? renderBox.size.height); + final availableHeight = screenHeight - + (renderBox.localToGlobal(Offset.zero).dy + renderBox.size.height); + bool displayAbove = neededHeight > availableHeight && + screenHeight - availableHeight > availableHeight; + final height = min(neededHeight, + max(availableHeight, screenHeight - availableHeight - 55) - 55); + + entry = OverlayEntry( + builder: (context) => Positioned( + width: renderBox.size.width, + height: height, + child: CompositedTransformFollower( + link: layerLink, + targetAnchor: displayAbove ? Alignment.bottomLeft : Alignment.topLeft, + followerAnchor: + displayAbove ? Alignment.bottomLeft : Alignment.topLeft, + offset: Offset(0, renderBox.size.height * (displayAbove ? -1 : 1)), + showWhenUnlinked: false, + child: Scrollbar( + controller: _scrollController, + isAlwaysShown: true, + child: Material( + elevation: 8, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + children: items, + ), + ), + ), + ), + ), + ), + ); + + overlay.insert(entry!); + isOpen = true; + } + + ListTile buildListTile(T item) { + return ListTile( + onTap: () => handleChanged(item), + selected: item == widget.selectedItem, + title: Row( + children: [ + Expanded( + child: Text(item.toString()), + ), + ], + ), + ); + } + + void hideOverlay() { + entry?.remove(); + setState(() { + entry = null; + isOpen = false; + }); + } + + void handleChanged(T? item) { + widget.onChanged(item); + hideOverlay(); + } + + void onChangeQuery(String value) { + if (value.trim() == '' || + (widget.selectedItem != null && + value == widget.selectedItem!.toString())) { + setState(() { + suggestions = []; + }); + } else { + if (widget.applyQuery == null) { + setState(() { + suggestions = widget.items.where((item) { + String itemString = item.toString().toLowerCase(); + String valueLowercase = value.toLowerCase(); + return itemString.contains(valueLowercase); + }).toList(); + }); + } else { + setState(() { + suggestions = widget.applyQuery!(value) + .where((item) => item != widget.selectedItem) + .toList(); + }); + } + showOverlay(); + } + } + + @override + Widget build(BuildContext context) { + return Focus( + focusNode: focusNode, + onFocusChange: (isFocused) { + if (!isFocused) { + hideOverlay(); + } + }, + child: CompositedTransformTarget( + link: layerLink, + child: TextFormField( + onChanged: onChangeQuery, + onTap: toggleOverlay, + controller: widget.controller, + decoration: InputDecoration( + labelText: widget.label, + suffixIcon: Row( + mainAxisSize: MainAxisSize.min, + children: [ + widget.selectedItem != null + ? IconButton( + onPressed: () => handleChanged(null), + icon: const Icon(Icons.close), + iconSize: 20.0, + ) + : Container(), + IconButton( + onPressed: toggleOverlay, + icon: const Icon(Icons.arrow_drop_down), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/components/forms/boolean_form_field.dart b/lib/components/forms/boolean_form_field.dart new file mode 100644 index 0000000..16f5e52 --- /dev/null +++ b/lib/components/forms/boolean_form_field.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; + +class BooleanFormField extends StatefulWidget { + final bool value; + final String label; + final void Function(bool) onChanged; + final bool? enabled; + final EdgeInsets? contentPadding; + + const BooleanFormField( + {Key? key, + required this.value, + required this.label, + required this.onChanged, + this.enabled, + this.contentPadding}) + : super(key: key); + + @override + _BooleanFormFieldState createState() => _BooleanFormFieldState(); +} + +class _BooleanFormFieldState extends State { + @override + Widget build(BuildContext context) { + return FormField(builder: (state) { + return ListTile( + contentPadding: widget.contentPadding, + onTap: () => widget.onChanged(!widget.value), + trailing: Switch( + value: widget.value, + onChanged: widget.onChanged, + ), + title: Text(widget.label), + enabled: widget.enabled ?? true, + ); + }); + } +} \ No newline at end of file diff --git a/lib/components/forms/date_time_form_field.dart b/lib/components/forms/date_time_form_field.dart new file mode 100644 index 0000000..091202e --- /dev/null +++ b/lib/components/forms/date_time_form_field.dart @@ -0,0 +1,47 @@ + +import 'package:flutter/material.dart'; + +class DateTimeFormField extends StatefulWidget { + final DateTime date; + final DateTime? minDate; + final DateTime? maxDate; + final TextEditingController controller; + final String label; + final void Function(DateTime?) onChanged; + + const DateTimeFormField( + {Key? key, + required this.date, + this.minDate, + this.maxDate, + required this.controller, + required this.label, + required this.onChanged}) + : super(key: key); + + @override + _DateTimeFormFieldState createState() => _DateTimeFormFieldState(); +} + +class _DateTimeFormFieldState extends State { + @override + Widget build(BuildContext context) { + return TextFormField( + readOnly: true, + controller: widget.controller, + decoration: InputDecoration( + labelText: widget.label, + ), + onTap: () async { + final newTime = await showDatePicker( + context: context, + initialDate: widget.date, + firstDate: widget.minDate ?? DateTime(2000, 1, 1), + lastDate: + widget.maxDate ?? DateTime.now().add(const Duration(days: 365)), + ); + widget.onChanged(newTime); + }, + ); + } +} diff --git a/lib/components/forms/duration_form_field.dart b/lib/components/forms/duration_form_field.dart new file mode 100644 index 0000000..d6867cf --- /dev/null +++ b/lib/components/forms/duration_form_field.dart @@ -0,0 +1,123 @@ + +import 'package:flutter/material.dart'; + +class DurationFormField extends StatefulWidget { + final String label; + final int minutes; + final void Function(int?) onChanged; + final bool showSteppers; + final bool readOnly; + final int min; + final int? max; + final int step; + + const DurationFormField( + {Key? key, + required this.label, + this.minutes = 0, + required this.onChanged, + this.showSteppers = false, + this.readOnly = false, + this.min = 0, + this.max, + this.step = 5}) + : super(key: key); + + @override + _DurationFormFieldState createState() => _DurationFormFieldState(); +} + +class _DurationFormFieldState extends State { + late Duration duration; + final TextEditingController controller = TextEditingController(text: ''); + + @override + void initState() { + super.initState(); + updateDuration(); + } + + void updateDuration() { + duration = Duration(minutes: widget.minutes); + + int days = duration.inDays; + int hours = duration.inHours - days * 24; + int minutes = duration.inMinutes - hours * 60; + int seconds = duration.inSeconds - minutes * 60; + + String daysString = days > 9 ? '$days d' : days > 0 ? '0$days d' : '00 d'; + String hoursString = hours > 9 ? ' $hours h' : hours > 0 ? ' 0$hours h' : ' 00 h'; + String minutesString = minutes > 9 ? ' $minutes m' : minutes > 0 ? ' 0$minutes m' : ' 00 m'; + String secondsString = seconds > 9 ? ' $seconds s' : seconds > 0 ? ' 0$seconds s' : ' 00 s'; + controller.text = '$daysString $hoursString $minutesString $secondsString'.trim(); + } + + void handleChange(String value) async { + await Future.delayed(const Duration(seconds: 1)); + + int days = int.tryParse(value.split(' d')[0]) ?? 0; + int hours = int.tryParse(value.split('d')[1].split(' h')[0]) ?? 0; + int minutes = int.tryParse(value.split('h')[1].split(' m')[0]) ?? 0; + int seconds = int.tryParse(value.split('m')[1].split(' s')[0]) ?? 0; + int updatedMinutes = + Duration(days: days, hours: hours, minutes: minutes, seconds: seconds) + .inMinutes; + + widget.onChanged(updatedMinutes); + setState(() { + updateDuration(); + }); + } + + void onIncrease() { + if (widget.max == null || widget.minutes + widget.step <= widget.max!) { + int value = widget.minutes + widget.step; + widget.onChanged(value); + setState(() { + updateDuration(); + }); + } + } + + void onDecrease() { + if (widget.minutes - widget.step >= widget.min) { + int value = widget.minutes - widget.step; + widget.onChanged(value); + setState(() { + updateDuration(); + }); + } + } + + @override + Widget build(BuildContext context) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + widget.showSteppers + ? IconButton( + onPressed: onDecrease, + icon: const Icon(Icons.remove), + ) + : Container(), + Expanded( + child: TextFormField( + controller: controller, + decoration: InputDecoration( + labelText: widget.label, + ), + keyboardType: TextInputType.numberWithOptions( + decimal: true, signed: widget.min.isNegative), + onChanged: handleChange, + ), + ), + widget.showSteppers + ? IconButton( + onPressed: onIncrease, + icon: const Icon(Icons.add), + ) + : Container(), + ], + ); + } +} diff --git a/lib/components/forms/form_wrapper.dart b/lib/components/forms/form_wrapper.dart new file mode 100644 index 0000000..2010875 --- /dev/null +++ b/lib/components/forms/form_wrapper.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; + +class FormWrapper extends StatefulWidget { + final List? fields; + final List? buttons; + final GlobalKey? formState; + + const FormWrapper({Key? key, this.formState, this.fields, this.buttons}) + : super(key: key); + + @override + _FormWrapperState createState() => _FormWrapperState(); +} + +class _FormWrapperState extends State { + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(10.0), + child: Form( + key: widget.formState, + child: Column( + children: [ + Column( + children: widget.fields + ?.map((e) => Padding( + padding: const EdgeInsets.symmetric(vertical: 5.0), + child: e)) + .toList() ?? + [], + ), + Container( + padding: const EdgeInsets.only(top: 10.0), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: widget.buttons ?? [], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/components/forms/number_form_field.dart b/lib/components/forms/number_form_field.dart new file mode 100644 index 0000000..9b41cb1 --- /dev/null +++ b/lib/components/forms/number_form_field.dart @@ -0,0 +1,129 @@ +import 'package:diameter/components/repeat_on_hold_button.dart'; +import 'package:diameter/utils/utils.dart'; +import 'package:flutter/material.dart'; + +class NumberFormField extends StatefulWidget { + final TextEditingController controller; + final double min; + final double? max; + final double step; + final String label; + final String? suffix; + final void Function(double?) onChanged; + final bool readOnly; + final bool showSteppers; + final bool autoRoundToMultipleOfStep; + final String? Function(String?)? validator; + + const NumberFormField({ + Key? key, + required this.controller, + required this.label, + required this.onChanged, + this.suffix, + this.min = 0, + this.max, + this.step = 1, + this.readOnly = false, + this.showSteppers = true, + this.autoRoundToMultipleOfStep = false, + this.validator, + }) : super(key: key); + + @override + _NumberFormFieldState createState() => _NumberFormFieldState(); +} + +class _NumberFormFieldState extends State { + int precision = 1; + + @override + void initState() { + super.initState(); + precision = Utils.getFractionDigitsLength(widget.step) + 1; + } + + bool onIncrease() { + double? currentValue = double.tryParse(widget.controller.text); + + if (currentValue != null && + (widget.max == null || currentValue + widget.step <= widget.max!)) { + widget.onChanged( + Utils.addDoublesWithPrecision(currentValue, widget.step, precision)); + setState(() {}); + return true; + } + return false; + } + + bool onDecrease() { + double? currentValue = double.tryParse(widget.controller.text); + + if (currentValue != null && (currentValue - widget.step >= widget.min)) { + widget.onChanged( + Utils.addDoublesWithPrecision(currentValue, -widget.step, precision)); + setState(() {}); + return true; + } + return false; + } + + @override + Widget build(BuildContext context) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + widget.showSteppers + ? RepeatOnHoldButton( + onTap: onDecrease, + child: IconButton( + onPressed: double.tryParse(widget.controller.text) != null && + (double.parse(widget.controller.text) - widget.step >= + widget.min) + ? onDecrease + : null, + icon: const Icon(Icons.remove), + ), + ) + : Container(), + Expanded( + child: TextFormField( + readOnly: widget.readOnly, + controller: widget.controller, + decoration: InputDecoration( + labelText: widget.label, + suffixText: widget.suffix, + ), + keyboardType: TextInputType.numberWithOptions( + decimal: widget.step > 0 && widget.step < 1, + signed: widget.min.isNegative), + onChanged: (input) async { + await Future.delayed(const Duration(seconds: 1)); + double? value = double.tryParse(input); + if (widget.autoRoundToMultipleOfStep) { + value = value != null ? Utils.roundToMultipleOfBase(value, widget.step) : null; + } + widget.onChanged(value); + }, + validator: widget.validator, + ), + ), + widget.showSteppers + ? RepeatOnHoldButton( + onTap: onIncrease, + child: IconButton( + onPressed: double.tryParse(widget.controller.text) != null && + (widget.max == null || + double.parse(widget.controller.text) + + widget.step <= + widget.max!) + ? onIncrease + : null, + icon: const Icon(Icons.add), + ), + ) + : Container(), + ], + ); + } +} diff --git a/lib/components/forms/time_of_day_form_field.dart b/lib/components/forms/time_of_day_form_field.dart new file mode 100644 index 0000000..1d7b1da --- /dev/null +++ b/lib/components/forms/time_of_day_form_field.dart @@ -0,0 +1,40 @@ + +import 'package:flutter/material.dart'; + +class TimeOfDayFormField extends StatefulWidget { + final TimeOfDay time; + final TextEditingController controller; + final String label; + final void Function(TimeOfDay?) onChanged; + + const TimeOfDayFormField( + {Key? key, + required this.time, + required this.controller, + required this.label, + required this.onChanged}) + : super(key: key); + + @override + _TimeOfDayFormFieldState createState() => _TimeOfDayFormFieldState(); +} + +class _TimeOfDayFormFieldState extends State { + @override + Widget build(BuildContext context) { + return TextFormField( + readOnly: true, + controller: widget.controller, + decoration: InputDecoration( + labelText: widget.label, + ), + onTap: () async { + final newTime = await showTimePicker( + context: context, + initialTime: widget.time, + ); + widget.onChanged(newTime); + }, + ); + } +} \ No newline at end of file diff --git a/lib/components/progress_indicator.dart b/lib/components/progress_indicator.dart deleted file mode 100644 index f9a69e9..0000000 --- a/lib/components/progress_indicator.dart +++ /dev/null @@ -1,65 +0,0 @@ -import 'package:flutter/material.dart'; -// import 'package:flutter/widgets.dart'; - -class ViewWithProgressIndicator extends StatefulWidget { - final AsyncSnapshot snapshot; - final Widget child; - final double progressIndicatorSize; - final EdgeInsets padding; - - const ViewWithProgressIndicator( - {Key? key, - required this.snapshot, - required this.child, - this.progressIndicatorSize = 100, - this.padding = const EdgeInsets.all(0)}) - : super(key: key); - - @override - _ViewWithProgressIndicatorState createState() => - _ViewWithProgressIndicatorState(); -} - -class _ViewWithProgressIndicatorState extends State { - - - @override - Widget build(BuildContext context) { - switch (widget.snapshot.connectionState) { - case ConnectionState.none: - case ConnectionState.waiting: - return Container( - alignment: Alignment.center, - padding: widget.padding, - child: Center( - child: SizedBox( - width: widget.progressIndicatorSize, - height: widget.progressIndicatorSize, - child: FutureBuilder( - future: Future.delayed(const Duration(seconds: 1)), - builder: (context, wait) { - if (wait.connectionState != ConnectionState.waiting) { - return const CircularProgressIndicator(); - } - return Container(); - } - ), - ), - ), - ); - default: - if (widget.snapshot.hasError) { - return Center( - child: Text(widget.snapshot.error.toString()), - ); - } - if (!widget.snapshot.hasData) { - return const Center( - child: Text("No data"), - ); - } else { - return widget.child; - } - } - } -} diff --git a/lib/components/repeat_on_hold_button.dart b/lib/components/repeat_on_hold_button.dart new file mode 100644 index 0000000..d0c26f2 --- /dev/null +++ b/lib/components/repeat_on_hold_button.dart @@ -0,0 +1,74 @@ +import 'dart:math'; +import 'package:flutter/material.dart'; + +class RepeatOnHoldButton extends StatefulWidget { + /// Function to be called on tap and on long press. + /// Return [false] to signify that the loop should be broken after execution. + final bool? Function() onTap; + + /// Specifies whether repetition speeds up when the user keeps holding the button. + final bool increaseSpeed; + + /// Specifies how many ms should pass before action is repeated. + final int initialRepetitionIntervalMs; + + /// Specifies by how much the interval between actions should be divided after [speedUpAfterTimes] times. + final int speedUpFactor; + + /// Specifies how many times [onTap] will be called before increasing the speed. + final int speedUpAfterTimes; + + final Widget child; + + const RepeatOnHoldButton({ + Key? key, + required this.onTap, + this.increaseSpeed = true, + this.initialRepetitionIntervalMs = 250, + this.speedUpFactor = 2, + this.speedUpAfterTimes = 5, + required this.child, + }) : super(key: key); + + @override + _RepeatOnHoldButtonState createState() => _RepeatOnHoldButtonState(); +} + +class _RepeatOnHoldButtonState extends State { + bool _isHeld = false; + + void onLongPress() async { + setState(() { + _isHeld = true; + }); + int holdCycle = 0; + int speed = widget.initialRepetitionIntervalMs; + + while (true) { + final result = widget.onTap() ?? true; + if (!_isHeld || !result) { + break; + } + + holdCycle++; + if (speed > 1 && holdCycle % widget.speedUpAfterTimes == 0) { + speed = max(1, (speed ~/ widget.speedUpFactor)); + } + + await Future.delayed( + Duration( + milliseconds: speed, + ), + ); + } + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onLongPress: onLongPress, + onLongPressEnd: (_) => _isHeld = false, + child: widget.child, + ); + } +} diff --git a/lib/config.dart b/lib/config.dart index d242e7e..094eda9 100644 --- a/lib/config.dart +++ b/lib/config.dart @@ -1,28 +1 @@ -import 'package:diameter/settings.dart'; - -const keyApplicationId = 'DFfD2aeppmqQnVmox02kUZhYOUc7vAtGfunAP7hn'; -const keyClientKey = '0ROGEVQP0Id21EMEqK05wJP3nBDuOW5DM5Cpzdt3'; -const keyParseServerUrl = 'https://parseapi.back4app.com'; - -// settings -NutritionMeasurement nutritionMeasurement = NutritionMeasurement.grams; -GlucoseMeasurement glucoseMeasurement = GlucoseMeasurement.mgPerDl; -GlucoseDisplayMode glucoseDisplayMode = GlucoseDisplayMode.bothForList; - -DateTime dummyDate = DateTime(2000); -String dateFormat = 'MM/dd/yy'; -String? longDateFormat = 'MMMM dd, yyyy'; -String timeFormat = 'HH:mm'; -String? longTimeFormat = 'HH:mm:ss'; - -bool showConfirmationDialogOnCancel = true; -bool showConfirmationDialogOnDelete = true; -bool showConfirmationDialogOnStopEvent = true; - -int lowGlucoseMgPerDl = 80; -int moderateGlucoseMgPerDl = 140; -int highGlucoseMgPerDl = 240; - -double lowGlucoseMmolPerL = 4.44; -double moderateGlucoseMmolPerL = 7.77; -double highGlucoseMmolPerDl = 13.32; +String secret = 'm4Gwehzgv18jZ5gCVUBZl5li3Z0FX2Yb'; diff --git a/lib/main.dart b/lib/main.dart index b1b4763..54b0044 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,13 +1,16 @@ import 'package:diameter/components/app_theme.dart'; +import 'package:diameter/config.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/object_box.dart'; import 'package:diameter/screens/accuracy_detail.dart'; import 'package:diameter/screens/basal/basal_profile_detail.dart'; import 'package:diameter/screens/bolus/bolus_profile_detail.dart'; import 'package:diameter/screens/log/log.dart'; -import 'package:diameter/screens/log/log_entry.dart'; -import 'package:diameter/screens/log/log_event_detail.dart'; -import 'package:diameter/screens/log/log_event_type_detail.dart'; -import 'package:diameter/screens/log/log_event_type_list.dart'; +import 'package:diameter/screens/log/log_entry/log_entry.dart'; +import 'package:diameter/screens/log/log_event/log_event_detail.dart'; +import 'package:diameter/screens/log/log_event/log_event_list.dart'; +import 'package:diameter/screens/log/log_event/log_event_type_detail.dart'; +import 'package:diameter/screens/log/log_event/log_event_type_list.dart'; import 'package:diameter/screens/meal/meal_category_detail.dart'; import 'package:diameter/screens/meal/meal_category_list.dart'; import 'package:diameter/screens/meal/meal_detail.dart'; @@ -16,61 +19,67 @@ import 'package:diameter/screens/meal/meal_portion_type_detail.dart'; import 'package:diameter/screens/meal/meal_portion_type_list.dart'; import 'package:diameter/screens/meal/meal_source_detail.dart'; import 'package:diameter/screens/meal/meal_source_list.dart'; +import 'package:diameter/screens/recipe/recipe_detail.dart'; +import 'package:diameter/screens/recipe/recipe_list.dart'; import 'package:diameter/settings.dart'; import 'package:flutter/material.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk.dart'; import 'package:diameter/screens/accuracy_list.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/screens/basal/basal_profiles_list.dart'; +import 'package:diameter/screens/basal/basal_profile_list.dart'; import 'package:diameter/screens/bolus/bolus_profile_list.dart'; import 'package:diameter/navigation.dart'; +import 'package:objectbox/objectbox.dart'; late ObjectBox objectBox; Future main() async { WidgetsFlutterBinding.ensureInitialized(); - - await Parse().initialize( - keyApplicationId, - keyParseServerUrl, - clientKey: keyClientKey, - debug: true, - coreStore: await CoreStoreSharedPrefsImp.getInstance(), - ); - - Settings.loadSettingsIntoConfig(); - objectBox = await ObjectBox.create(); + + Sync.isAvailable(); + SyncClient syncClient = Sync.client( + objectBox.store, + 'ws://192.168.1.184:9999', + SyncCredentials.sharedSecretString(secret) + ); + syncClient.start(); + syncClient.requestUpdates(subscribeForFuturePushes: false); runApp( - MaterialApp( - theme: AppTheme.makeTheme(AppTheme.lightTheme), - darkTheme: AppTheme.makeTheme(AppTheme.darkTheme), - themeMode: ThemeMode.system, - initialRoute: '/', - routes: { - '/': (context) => const LogScreen(), - Routes.log: (context) => const LogScreen(), - Routes.logEntry: (context) => const LogEntryScreen(), - Routes.logEvent: (context) => const LogEventDetailScreen(), - Routes.logEventTypes: (context) => const LogEventTypeListScreen(), - Routes.logEventType: (context) => const LogEventTypeDetailScreen(), - Routes.accuracies: (context) => const AccuracyListScreen(), - Routes.accuracy: (context) => const AccuracyDetailScreen(), - Routes.meals: (context) => const MealListScreen(), - Routes.meal: (context) => const MealDetailScreen(), - Routes.mealCategories: (context) => const MealCategoryListScreen(), - Routes.mealCategory: (context) => const MealCategoryDetailScreen(), - Routes.mealPortionTypes: (context) => const MealPortionTypeListScreen(), - Routes.mealPortionType: (context) => - const MealPortionTypeDetailScreen(), - Routes.mealSources: (context) => const MealSourceListScreen(), - Routes.mealSource: (context) => const MealSourceDetailScreen(), - Routes.bolusProfiles: (context) => const BolusProfileListScreen(), - Routes.bolusProfile: (context) => const BolusProfileDetailScreen(), - Routes.basalProfiles: (context) => const BasalProfileListScreen(), - Routes.basalProfile: (context) => const BasalProfileDetailScreen(), - Routes.settings: (context) => const SettingsScreen(), - }, + GestureDetector( + onTap: () => FocusManager.instance.primaryFocus?.unfocus(), + child: MaterialApp( + theme: AppTheme.makeTheme(AppTheme.lightTheme), + darkTheme: AppTheme.makeTheme(AppTheme.darkTheme), + themeMode: Settings.themeMode, + initialRoute: '/', + routes: { + '/': (context) => const LogScreen(), + Routes.log: (context) => const LogScreen(), + Routes.logEntry: (context) => const LogEntryScreen(), + Routes.logEvent: (context) => const LogEventDetailScreen(), + Routes.logEventTypes: (context) => const LogEventTypeListScreen(), + Routes.logEventType: (context) => const EventTypeDetailScreen(), + Routes.events: (context) => const LogEventListScreen(), + Routes.accuracies: (context) => const AccuracyListScreen(), + Routes.accuracy: (context) => const AccuracyDetailScreen(), + Routes.meals: (context) => const MealListScreen(), + Routes.meal: (context) => const MealDetailScreen(), + Routes.recipes: (context) => const RecipeListScreen(), + Routes.recipe: (context) => const RecipeDetailScreen(), + Routes.mealCategories: (context) => const MealCategoryListScreen(), + Routes.mealCategory: (context) => const MealCategoryDetailScreen(), + Routes.mealPortionTypes: (context) => + const MealPortionTypeListScreen(), + Routes.mealPortionType: (context) => + const MealPortionTypeDetailScreen(), + Routes.mealSources: (context) => const MealSourceListScreen(), + Routes.mealSource: (context) => const MealSourceDetailScreen(), + Routes.bolusProfiles: (context) => const BolusProfileListScreen(), + Routes.bolusProfile: (context) => const BolusProfileDetailScreen(), + Routes.basalProfiles: (context) => const BasalProfileListScreen(), + Routes.basalProfile: (context) => const BasalProfileDetailScreen(), + Routes.settings: (context) => const SettingsScreen(), + }, + ), ), ); } diff --git a/lib/models/accuracy.dart b/lib/models/accuracy.dart index 5391c84..680e377 100644 --- a/lib/models/accuracy.dart +++ b/lib/models/accuracy.dart @@ -1,19 +1,25 @@ import 'package:diameter/main.dart'; -import 'package:diameter/objectbox.g.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show Accuracy_; -@Entity() +@Entity(uid: 291512798403320400) +@Sync() class Accuracy { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String value; bool forCarbsRatio; bool forPortionSize; int? confidenceRating; String? notes; + // constructor Accuracy({ this.id = 0, + this.deleted = false, this.value = '', this.forCarbsRatio = false, this.forPortionSize = false, @@ -21,25 +27,51 @@ class Accuracy { this.notes, }); + // methods static Accuracy? get(int id) => box.get(id); + static void put(Accuracy accuracy) => box.put(accuracy); + static List getAll() { - QueryBuilder all = box.query()..order(Accuracy_.confidenceRating); + QueryBuilder all = box.query(Accuracy_.deleted.equals(false)) + ..order(Accuracy_.confidenceRating); return all.build().find(); } - static void put(Accuracy accuracy) => box.put(accuracy); - static void remove(int id) => box.remove(id); + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } static List getAllForPortionSize() { - QueryBuilder allForPortionSize = box - .query(Accuracy_.forPortionSize.equals(true)) + QueryBuilder allForPortionSize = box.query( + Accuracy_.forPortionSize.equals(true) & Accuracy_.deleted.equals(false)) ..order(Accuracy_.confidenceRating); return allForPortionSize.build().find(); } static List getAllForCarbsRatio() { - QueryBuilder allForCarbsRatio = box - .query(Accuracy_.forCarbsRatio.equals(true)) + QueryBuilder allForCarbsRatio = box.query( + Accuracy_.forCarbsRatio.equals(true) & Accuracy_.deleted.equals(false)) ..order(Accuracy_.confidenceRating); return allForCarbsRatio.build().find(); } + + static void reorder(Accuracy accuracy, int? newPosition) { + QueryBuilder all = box.query(Accuracy_.deleted.equals(false).and(Accuracy_.id.notEquals(accuracy.id))) + ..order(Accuracy_.confidenceRating); + List accuracies = all.build().find(); + newPosition == null || newPosition >= accuracies.length ? accuracies.add(accuracy) : accuracies.insert(newPosition, accuracy); + box.putMany(accuracies.map((item) { + item.confidenceRating = accuracies.indexOf(item); + return item; + }).toList()); + } + + @override + String toString() { + return value; + } } diff --git a/lib/models/basal.dart b/lib/models/basal.dart index cb547be..9ccd952 100644 --- a/lib/models/basal.dart +++ b/lib/models/basal.dart @@ -1,37 +1,75 @@ import 'package:diameter/main.dart'; import 'package:diameter/models/basal_profile.dart'; -import 'package:diameter/objectbox.g.dart'; +import 'package:diameter/utils/date_time_utils.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show Basal_, BasalProfile_; -@Entity() +@Entity(uid: 1467758525778521891) +@Sync() class Basal { static final Box box = objectBox.store.box(); - - int id; + // properties + int id; + bool deleted; @Property(type: PropertyType.date) DateTime startTime; - @Property(type: PropertyType.date) DateTime endTime; - double units; - + + // relations final basalProfile = ToOne(); + // constructor Basal({ this.id = 0, + this.deleted = false, required this.startTime, required this.endTime, this.units = 0, }); + // methods static Basal? get(int id) => box.get(id); static void put(Basal basal) => box.put(basal); - static void remove(int id) => box.remove(id); + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } static List getAllForProfile(int id) { - QueryBuilder builder = box.query()..order(Basal_.startTime); + QueryBuilder builder = box.query(Basal_.deleted.equals(false)) + ..order(Basal_.startTime); builder.link(Basal_.basalProfile, BasalProfile_.id.equals(id)); return builder.build().find(); } + + static double getDailyTotalForProfile(int id) { + double sum = 0.0; + + QueryBuilder builder = box.query(Basal_.deleted.equals(false)); + builder.link(Basal_.basalProfile, BasalProfile_.id.equals(id)); + + List basalRates = builder.build().find(); + for (Basal basal in basalRates) { + double rateDuration = + basal.endTime.difference(basal.startTime).inMinutes / 60; + if (rateDuration < 0) { + rateDuration += 24; + } + sum += basal.units * rateDuration; + } + + return sum; + } + + @override + String toString() { + return DateTimeUtils.displayTime(startTime); + } } diff --git a/lib/models/basal_profile.dart b/lib/models/basal_profile.dart index ceb9bff..54a3df3 100644 --- a/lib/models/basal_profile.dart +++ b/lib/models/basal_profile.dart @@ -1,37 +1,87 @@ import 'package:diameter/main.dart'; -import 'package:diameter/objectbox.g.dart'; +import 'package:diameter/models/log_event.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show BasalProfile_; -@Entity() +@Entity(uid: 3613736032926903785) +@Sync() class BasalProfile { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String name; bool active; String? notes; + // constructor BasalProfile({ this.id = 0, + this.deleted = false, this.name = '', this.active = false, this.notes, }); + // methods static BasalProfile? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(BasalProfile basalProfile) => box.put(basalProfile); - static void remove(int id) => box.remove(id); + + static List getAll() { + QueryBuilder all = box.query(BasalProfile_.deleted.equals(false)) + ..order(BasalProfile_.name); + return all.build().find(); + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } static int activeCount() { - Query query = - box.query(BasalProfile_.active.equals(true)).build(); + Query query = box + .query(BasalProfile_.active.equals(true) & BasalProfile_.deleted.equals(false)).build(); return query.find().length; } static void setAllInactive() { - box.putMany(box.getAll().map((element) { - element.active = false; - return element; + box.putMany(box.getAll().map((item) { + item.active = false; + return item; }).toList()); } + + static BasalProfile? getActive(DateTime? dateTime) { + if (dateTime != null) { + List activeEvents = LogEvent.getAllActiveForTime(dateTime) + .where((event) => event.basalProfile.target != null).toList(); + if (activeEvents.length > 1) { + final now = DateTime.now(); + activeEvents = + activeEvents.where((item) => !activeEvents.any((other) => + item.time.isBefore(other.time) || (item.endTime ?? now).isAfter(other.endTime ?? now) + )).toList(); + } + if (activeEvents.length == 1) { + return activeEvents.single.basalProfile.target; + } + } + + Query query = box + .query(BasalProfile_.active + .equals(true) + .and(BasalProfile_.deleted.equals(false))) + .build(); + final result = query.find(); + return result.length != 1 ? null : result.single; + } + + @override + String toString() { + return name; + } } diff --git a/lib/models/bolus.dart b/lib/models/bolus.dart index 975f461..ed043a0 100644 --- a/lib/models/bolus.dart +++ b/lib/models/bolus.dart @@ -1,12 +1,18 @@ import 'package:diameter/main.dart'; import 'package:diameter/models/bolus_profile.dart'; -import 'package:diameter/objectbox.g.dart'; +import 'package:diameter/utils/date_time_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show Bolus_, BolusProfile_; -@Entity() +@Entity(uid: 3417770529060202389) +@Sync() class Bolus { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; @Property(type: PropertyType.date) DateTime startTime; @Property(type: PropertyType.date) @@ -16,10 +22,13 @@ class Bolus { int? mgPerDl; double? mmolPerL; + // relations final bolusProfile = ToOne(); + // constructor Bolus({ this.id = 0, + this.deleted = false, required this.startTime, required this.endTime, this.units = 0, @@ -28,13 +37,48 @@ class Bolus { this.mmolPerL, }); + // methods static Bolus? get(int id) => box.get(id); static void put(Bolus bolus) => box.put(bolus); - static void remove(int id) => box.remove(id); static List getAllForProfile(int id) { - QueryBuilder builder = box.query()..order(Bolus_.startTime); + QueryBuilder builder = box.query(Bolus_.deleted.equals(false)) + ..order(Bolus_.startTime); builder.link(Bolus_.bolusProfile, BolusProfile_.id.equals(id)); return builder.build().find(); } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + static Bolus? getRateForTime(DateTime? dateTime) { + if (dateTime != null) { + final bolusProfile = BolusProfile.getActive(dateTime); + final time = DateTimeUtils.convertTimeOfDayToDateTime( + TimeOfDay.fromDateTime(dateTime)); + if (bolusProfile != null) { + final rates = Bolus.getAllForProfile(bolusProfile.id); + final result = rates.where((rate) { + DateTime endTime = rate.endTime == dummyDate + ? rate.endTime.add(const Duration(days: 1)) + : rate.endTime; + return (time.isAfter(rate.startTime) || + time.isAtSameMomentAs(rate.startTime)) && + time.isBefore(endTime); + }); + return result.length != 1 ? null : result.single; + } + } + return null; + } + + @override + String toString() { + return DateTimeUtils.displayTime(startTime); + } } diff --git a/lib/models/bolus_profile.dart b/lib/models/bolus_profile.dart index 36966b5..3e0408f 100644 --- a/lib/models/bolus_profile.dart +++ b/lib/models/bolus_profile.dart @@ -1,30 +1,53 @@ import 'package:diameter/main.dart'; -import 'package:diameter/objectbox.g.dart'; +import 'package:diameter/models/log_event.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show BolusProfile_; -@Entity() +@Entity(uid: 8812452529027052317) +@Sync() class BolusProfile { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String name; bool active; String? notes; + // constructor BolusProfile({ this.id = 0, + this.deleted = false, this.name = '', this.active = false, this.notes, }); + // methods static BolusProfile? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(BolusProfile bolusProfile) => box.put(bolusProfile); - static void remove(int id) => box.remove(id); + + static List getAll() { + QueryBuilder all = + box.query(BolusProfile_.deleted.equals(false))..order(BolusProfile_.name); + return all.build().find(); + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } static int activeCount() { - Query query = - box.query(BolusProfile_.active.equals(true)).build(); + Query query = box + .query(BolusProfile_.active + .equals(true) + .and(BolusProfile_.deleted.equals(false))) + .build(); return query.find().length; } @@ -34,4 +57,34 @@ class BolusProfile { return element; }).toList()); } + + static BolusProfile? getActive(DateTime? dateTime) { + if (dateTime != null) { + List activeEvents = LogEvent.getAllActiveForTime(dateTime) + .where((event) => event.bolusProfile.target != null).toList(); + if (activeEvents.length > 1) { + final now = DateTime.now(); + activeEvents = + activeEvents.where((item) => !activeEvents.any((other) => + item.time.isBefore(other.time) || (item.endTime ?? now).isAfter(other.endTime ?? now) + )).toList(); + } + if (activeEvents.length == 1) { + return activeEvents.single.bolusProfile.target; + } + } + + Query query = box + .query(BolusProfile_.active + .equals(true) + .and(BolusProfile_.deleted.equals(false))) + .build(); + final result = query.find(); + return result.length != 1 ? null : result.single; + } + + @override + String toString() { + return name; + } } diff --git a/lib/models/glucose_target.dart b/lib/models/glucose_target.dart new file mode 100644 index 0000000..890df51 --- /dev/null +++ b/lib/models/glucose_target.dart @@ -0,0 +1,122 @@ +import 'package:diameter/main.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:flutter/material.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show GlucoseTarget_; + +@Entity(uid: 5041265995704044399) +@Sync() +class GlucoseTarget { + static final Box box = objectBox.store.box(); + + // properties + int id; + bool deleted; + int fromMgPerDL; + int toMgPerDl; + double fromMmolPerL; + double toMmolPerL; + int color; + + // constructor + GlucoseTarget({ + this.id = 0, + this.deleted = false, + required this.fromMgPerDL, + required this.toMgPerDl, + required this.fromMmolPerL, + required this.toMmolPerL, + required this.color, + }); + + // methods + static GlucoseTarget? get(int id) => box.get(id); + + // methods + static List getAll() { + if (box.getAll().isEmpty) { + reset(); + } + return box.getAll(); + } + + static Color getColorForGlucose({int mgPerDl = 0, double mmolPerL = 0}) { + if (box.getAll().isEmpty) { + reset(); + } + + Condition condition; + if (mgPerDl > 0 && + (mmolPerL == 0 || + Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl)) { + condition = GlucoseTarget_.fromMgPerDL.lessOrEqual(mgPerDl).and(GlucoseTarget_.toMgPerDl.greaterOrEqual(mgPerDl)); + } else if (mmolPerL > 0 && + (mgPerDl == 0 || + Settings.glucoseMeasurement == GlucoseMeasurement.mmolPerL)) { + condition = GlucoseTarget_.fromMmolPerL.lessOrEqual(mmolPerL).and(GlucoseTarget_.toMmolPerL.greaterOrEqual(mmolPerL)); + } else { + return Colors.black; + } + + List result = box + .query(GlucoseTarget_.deleted.equals(false) & condition) + .build() + .find(); + + if (result.length != 1) { + return Colors.black; + } + return Color(result.single.color); + } + + static void put(GlucoseTarget glucoseTarget) => box.put(glucoseTarget); + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + static void reset() { + box.removeAll(); + List defaultTargets = [ + GlucoseTarget( + fromMgPerDL: 0, + toMgPerDl: 69, + fromMmolPerL: 0, + toMmolPerL: 3.83, + color: Colors.red.value, + ), + GlucoseTarget( + fromMgPerDL: 70, + toMgPerDl: 99, + fromMmolPerL: 3.84, + toMmolPerL: 5.48, + color: Colors.orange.value, + ), + GlucoseTarget( + fromMgPerDL: 100, + toMgPerDl: 140, + fromMmolPerL: 5.49, + toMmolPerL: 7.77, + color: Colors.green.value, + ), + GlucoseTarget( + fromMgPerDL: 141, + toMgPerDl: 240, + fromMmolPerL: 7.78, + toMmolPerL: 13.32, + color: Colors.orange.value, + ), + GlucoseTarget( + fromMgPerDL: 241, + toMgPerDl: 999, + fromMmolPerL: 13.33, + toMmolPerL: 55.44, + color: Colors.deepOrange.value, + ), + ]; + box.putMany(defaultTargets); + } +} diff --git a/lib/models/ingredient.dart b/lib/models/ingredient.dart new file mode 100644 index 0000000..486a178 --- /dev/null +++ b/lib/models/ingredient.dart @@ -0,0 +1,79 @@ +import 'package:diameter/main.dart'; +import 'package:diameter/models/meal.dart'; +import 'package:diameter/models/recipe.dart'; +import 'package:diameter/utils/utils.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show Ingredient_, Recipe_; + +@Entity(uid: 6950311793136068892) +@Sync() +class Ingredient { + static final Box box = objectBox.store.box(); + + // properties + int id; + bool deleted; + double amount; + + // relations + final recipe = ToOne(); + final ingredient = ToOne(); + + // constructor + Ingredient({ + this.id = 0, + this.deleted = false, + required this.amount, + }); + + // methods + static Ingredient? get(int id) => box.get(id); + static void put(Ingredient ingredient) => box.put(ingredient); + static void putMany(List ingredients) => box.putMany(ingredients); + + static List getAllForRecipe(int id) { + QueryBuilder builder = + box.query(Ingredient_.deleted.equals(false)); + builder.link(Ingredient_.recipe, Recipe_.id.equals(id)); + return builder.build().find(); + } + + static double? getCarbsRatioForRecipe(int id) { + double carbsSum = 0.0; + double totalWeight = 0.0; + + List ingredients = getAllForRecipe(id); + + for (Ingredient ingredient in ingredients) { + if ((ingredient.ingredient.target?.carbsRatio ?? 0) <= 0) { + return null; + } + totalWeight += ingredient.amount; + carbsSum += + Utils.calculateCarbs(ingredient.ingredient.target!.carbsRatio!, ingredient.amount); + } + return totalWeight > 0 + ? Utils.calculateCarbsRatio(carbsSum, totalWeight) + : null; + } + + static double? getTotalWeightForRecipe(int id) { + double totalWeight = 0.0; + + List ingredients = getAllForRecipe(id); + + for (Ingredient ingredient in ingredients) { + if (ingredient.ingredient.target?.carbsRatio == null) { + return null; + } + totalWeight += ingredient.amount; + } + + return totalWeight; + } + + @override + String toString() { + return ingredient.target?.value ?? ''; + } +} diff --git a/lib/models/log_bolus.dart b/lib/models/log_bolus.dart new file mode 100644 index 0000000..1b45234 --- /dev/null +++ b/lib/models/log_bolus.dart @@ -0,0 +1,93 @@ +import 'package:diameter/main.dart'; +import 'package:diameter/models/bolus.dart'; +import 'package:diameter/models/log_entry.dart'; +import 'package:diameter/models/log_meal.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show LogBolus_, LogEntry_, LogMeal_; + +@Entity(uid: 8033487006694871160) +@Sync() +class LogBolus { + static final Box box = objectBox.store.box(); + + // properties + int id; + bool deleted; + double units; + double? carbs; + int? delay; + int? mgPerDlCurrent; + int? mgPerDlTarget; + int? mgPerDlCorrection; + double? mmolPerLCurrent; + double? mmolPerLTarget; + double? mmolPerLCorrection; + bool setManually; + String? notes; + + // relations + final logEntry = ToOne(); + final rate = ToOne(); + final meal = ToOne(); + + // constructor + LogBolus({ + this.id = 0, + this.deleted = false, + this.units = 0, + this.carbs, + this.delay, + this.mgPerDlCurrent, + this.mgPerDlTarget, + this.mgPerDlCorrection, + this.mmolPerLCurrent, + this.mmolPerLTarget, + this.mmolPerLCorrection, + this.setManually = false, + this.notes, + }); + + // methods + static LogBolus? get(int id) => box.get(id); + static void put(LogBolus logBolus) => box.put(logBolus); + + static List getAllForEntry(int id) { + QueryBuilder builder = box.query(LogBolus_.deleted.equals(false)); + builder.link(LogBolus_.logEntry, LogEntry_.id.equals(id)); + return builder.build().find(); + } + + static double getTotalBolusForEntry(int id) { + QueryBuilder builder = box.query(LogBolus_.deleted.equals(false)); + builder.link(LogBolus_.logEntry, LogEntry_.id.equals(id)); + return builder.build().property(LogBolus_.units).sum(); + } + + static bool glucoseBolusForEntryExists(int id) { + QueryBuilder builder = box.query(LogBolus_.deleted + .equals(false) + .and(LogBolus_.mgPerDlCorrection.notNull())); + builder.link(LogBolus_.meal, LogMeal_.id.equals(id)); + return builder.build().find().isNotEmpty; + } + + static bool bolusForMealExists(int id) { + QueryBuilder builder = box.query(LogBolus_.deleted + .equals(false)); + builder.link(LogBolus_.meal, LogMeal_.id.equals(id)); + return builder.build().find().isNotEmpty; + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + @override + String toString() { + return units.toString(); + } +} diff --git a/lib/models/log_entry.dart b/lib/models/log_entry.dart index eaf4ac2..3891aeb 100644 --- a/lib/models/log_entry.dart +++ b/lib/models/log_entry.dart @@ -1,54 +1,64 @@ import 'package:diameter/main.dart'; -import 'package:diameter/models/log_event.dart'; -import 'package:diameter/models/log_meal.dart'; -import 'package:diameter/objectbox.g.dart'; +import 'package:diameter/models/log_bolus.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/utils/date_time_utils.dart'; import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show LogEntry_; -@Entity() +@Entity(uid: 752131069307970560) +@Sync() class LogEntry { static final Box box = objectBox.store.box(); + // properties int id; - + bool deleted; @Property(type: PropertyType.date) DateTime time; - int? mgPerDl; double? mmolPerL; - double? bolusGlucose; - int? delayedBolusDuration; - double? delayedBolusRate; + double? glucoseTrend; String? notes; - @Backlink('logEntry') - final events = ToMany(); - - @Backlink('endLogEntry') - final endedEvents = ToMany(); - - @Backlink('logEntry') - final meals = ToMany(); - + // constructor LogEntry({ this.id = 0, + this.deleted = false, required this.time, this.mgPerDl, this.mmolPerL, - this.bolusGlucose, - this.delayedBolusDuration, - this.delayedBolusRate, + this.glucoseTrend, this.notes, }); - static LogEntry? get(int id) => box.get(id); + // methods + static LogEntry? get(int id) => id == 0 ? null : box.get(id); static List getAll() => box.getAll(); static void put(LogEntry logEntry) => box.put(logEntry); - static void remove(int id) => box.remove(id); + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + static bool hasUncorrectedGlucose(int id) { + final entry = box.get(id); + if (((entry?.mgPerDl ?? 0) > Settings.targetMgPerDl || + (entry?.mmolPerL ?? 0) > Settings.targetMmolPerL)) { + return !LogBolus.glucoseBolusForEntryExists(id); + } + return false; + } static Map> getDailyEntryMap() { Map> dateMap = >{}; - QueryBuilder allByDate = box.query()..order(LogEntry_.time, flags: Order.descending); + QueryBuilder allByDate = box + .query(LogEntry_.deleted.equals(false)) + ..order(LogEntry_.time, flags: Order.descending); List entries = allByDate.build().find(); DateTime? date; @@ -59,4 +69,19 @@ class LogEntry { return dateMap; } + + static List getAllForDate(DateTime date) { + DateTime startOfDay = DateTime(date.year, date.month, date.day); + DateTime endOfDay = startOfDay.add(const Duration(days: 1)); + QueryBuilder builder = box.query(LogEntry_.deleted.equals(false)) + ..order(LogEntry_.time, flags: Order.descending); + return builder.build().find().where((entry) { + return (entry.time.compareTo(startOfDay) >= 0 && entry.time.isBefore(endOfDay)); + }).toList(); + } + + @override + String toString() { + return DateTimeUtils.displayDateTime(time); + } } diff --git a/lib/models/log_event.dart b/lib/models/log_event.dart index 4db1bec..d35d5f3 100644 --- a/lib/models/log_event.dart +++ b/lib/models/log_event.dart @@ -1,43 +1,195 @@ import 'package:diameter/main.dart'; -import 'package:diameter/models/log_entry.dart'; +import 'package:diameter/models/basal_profile.dart'; +import 'package:diameter/models/bolus_profile.dart'; import 'package:diameter/models/log_event_type.dart'; -import 'package:diameter/objectbox.g.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show LogEvent_, LogEventType_; -@Entity() +@Entity(uid: 4303325892753185970) +@Sync() class LogEvent { static final Box box = objectBox.store.box(); + // properties int id; - + bool deleted; @Property(type: PropertyType.date) DateTime time; - @Property(type: PropertyType.date) DateTime? endTime; - bool hasEndTime; + int? reminderDuration; String? notes; - final logEntry = ToOne(); - final endLogEntry = ToOne(); - final eventType = ToOne(); + @Transient() + String? title; + @Transient() + bool isEndEvent = false; + // relations + final eventType = ToOne(); + final bolusProfile = ToOne(); + final basalProfile = ToOne(); + + // constructor LogEvent({ this.id = 0, + this.deleted = false, required this.time, this.endTime, this.hasEndTime = false, + this.reminderDuration, this.notes, }); + // methods static LogEvent? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(LogEvent logEvent) => box.put(logEvent); - static void remove(int id) => box.remove(id); + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } static List getAllOngoing() { - QueryBuilder query = - box.query(LogEvent_.hasEndTime.equals(true) & LogEvent_.endTime.isNull())..order(LogEvent_.time); + QueryBuilder query = box.query(LogEvent_.hasEndTime.equals(true) & + LogEvent_.endTime.isNull() & + LogEvent_.deleted.equals(false)) + ..order(LogEvent_.time); return query.build().find(); } + + static List getAllActiveForTime(DateTime? dateTime) { + if (dateTime != null) { + QueryBuilder builder = box.query( + LogEvent_.hasEndTime.equals(true) & LogEvent_.deleted.equals(false)) + ..order(LogEvent_.time, flags: Order.descending); + final eventsWithEndTime = builder.build().find(); + return eventsWithEndTime.where((event) { + return (!dateTime.isBefore(event.time)) && + !dateTime.isAfter(event.endTime ?? DateTime.now()); + }).toList(); + } + return []; + } + + static bool eventTypeExistsForTime(int id, DateTime? dateTime) { + QueryBuilder builder = box.query( + LogEvent_.hasEndTime.equals(true) & LogEvent_.deleted.equals(false)) + ..order(LogEvent_.time, flags: Order.descending); + builder.link(LogEvent_.eventType, LogEventType_.id.equals(id)); + final eventsWithEndTime = builder.build().find(); + if (dateTime != null) { + return eventsWithEndTime.where((event) { + return (!dateTime.isBefore(event.time)) && + !dateTime.isAfter(event.endTime ?? DateTime.now()); + }).isNotEmpty; + } + return eventsWithEndTime.isNotEmpty; + } + + static Map> getDailyEntryMap() { + Map> dateMap = >{}; + Map> sortedDateMap = >{}; + + QueryBuilder allByDate = box + .query(LogEvent_.deleted.equals(false)) + ..order(LogEvent_.time, flags: Order.descending); + List events = allByDate.build().find(); + + DateTime? date; + + for (LogEvent event in events) { + date = DateTime.utc(event.time.year, event.time.month, event.time.day); + LogEvent startEvent = event; + startEvent.title = + '${event.toString()} ${event.hasEndTime ? '(Start)' : ''}'; + dateMap.putIfAbsent(date, () => []).add(startEvent); + } + + QueryBuilder allByEndDate = box + .query(LogEvent_.deleted.equals(false).and(LogEvent_.endTime.notNull())) + ..order(LogEvent_.endTime, flags: Order.descending); + List endEvents = allByEndDate.build().find(); + + for (LogEvent event in endEvents) { + date = DateTime.utc( + event.endTime!.year, event.endTime!.month, event.endTime!.day); + LogEvent endEvent = event; + endEvent.isEndEvent = true; + endEvent.title = '${event.toString()} (End)'; + dateMap.putIfAbsent(date, () => []).add(endEvent); + } + + final dates = dateMap.keys.toList(); + dates.sort(); + for (DateTime date in dates.reversed) { + dateMap[date]!.sort((LogEvent a, LogEvent b) { + final dateA = a.isEndEvent ? a.endTime : a.time; + final dateB = b.isEndEvent ? b.endTime : b.time; + return -(dateA!.compareTo(dateB!)); + }); + sortedDateMap + .putIfAbsent(date, () => []) + .addAll(dateMap[date]!); + } + + return sortedDateMap; + } + + static List getAllForDate(DateTime date) { + DateTime startOfDay = DateTime(date.year, date.month, date.day); + DateTime endOfDay = startOfDay.add(const Duration(days: 1)); + + List events = []; + + QueryBuilder allByDate = box + .query(LogEvent_.deleted.equals(false)) + ..order(LogEvent_.time, flags: Order.descending); + List startEvents = allByDate.build().find().where((event) { + return (event.time.compareTo(startOfDay) >= 0 && + event.time.isBefore(endOfDay)); + }).toList(); + + for (LogEvent event in startEvents) { + date = DateTime.utc(event.time.year, event.time.month, event.time.day); + LogEvent startEvent = event; + startEvent.title = + '${event.toString()} ${event.hasEndTime ? '(Start)' : ''}'; + events.add(startEvent); + } + + QueryBuilder allByEndDate = box + .query(LogEvent_.deleted.equals(false).and(LogEvent_.endTime.notNull())) + ..order(LogEvent_.endTime, flags: Order.descending); + List endEvents = allByEndDate.build().find().where((event) { + return (event.endTime!.compareTo(startOfDay) >= 0 && + event.endTime!.isBefore(endOfDay)); + }).toList(); + + for (LogEvent event in endEvents) { + date = DateTime.utc( + event.endTime!.year, event.endTime!.month, event.endTime!.day); + LogEvent endEvent = event; + endEvent.isEndEvent = true; + endEvent.title = '${event.toString()} (End)'; + events.add(endEvent); + } + + events.sort((LogEvent a, LogEvent b) { + final dateA = a.isEndEvent ? a.endTime : a.time; + final dateB = b.isEndEvent ? b.endTime : b.time; + return -(dateA!.compareTo(dateB!)); + }); + + return events; + } + + @override + String toString() { + return eventType.target?.value ?? ''; + } } diff --git a/lib/models/log_event_type.dart b/lib/models/log_event_type.dart index 857813d..e1683fb 100644 --- a/lib/models/log_event_type.dart +++ b/lib/models/log_event_type.dart @@ -1,26 +1,55 @@ import 'package:diameter/main.dart'; +import 'package:diameter/models/basal_profile.dart'; +import 'package:diameter/models/bolus_profile.dart'; import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show LogEventType_; -@Entity() +@Entity(uid: 8362795406595606110) +@Sync() class LogEventType { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String value; bool hasEndTime; int? defaultReminderDuration; String? notes; + // constructor LogEventType({ this.id = 0, + this.deleted = false, this.value = '', this.hasEndTime = false, this.defaultReminderDuration, this.notes, }); + // relations + final bolusProfile = ToOne(); + final basalProfile = ToOne(); + + // methods static LogEventType? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(LogEventType logEventType) => box.put(logEventType); - static void remove(int id) => box.remove(id); + + static List getAll() { + QueryBuilder builder = box.query(LogEventType_.deleted.equals(false))..order(LogEventType_.value); + return builder.build().find(); + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + @override + String toString() { + return value; + } } diff --git a/lib/models/log_meal.dart b/lib/models/log_meal.dart index e1fea66..8c9c471 100644 --- a/lib/models/log_meal.dart +++ b/lib/models/log_meal.dart @@ -1,4 +1,5 @@ import 'package:diameter/main.dart'; +import 'package:diameter/models/log_bolus.dart'; import 'package:diameter/models/log_entry.dart'; import 'package:diameter/models/meal.dart'; import 'package:diameter/models/meal_category.dart'; @@ -6,21 +7,25 @@ import 'package:diameter/models/meal_portion_type.dart'; import 'package:diameter/models/meal_source.dart'; import 'package:diameter/models/accuracy.dart'; import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show LogMeal_, LogEntry_; -@Entity() +@Entity(uid: 411177866700467286) +@Sync() class LogMeal { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String value; double? carbsRatio; double? portionSize; - double? carbsPerPortion; - double? bolus; - int? delayedBolusDuration; - double? delayedBolusRate; + double? totalCarbs; String? notes; + double? bolus; + double amount; + // relations final logEntry = ToOne(); final meal = ToOne(); final mealSource = ToOne(); @@ -29,20 +34,56 @@ class LogMeal { final portionSizeAccuracy = ToOne(); final carbsRatioAccuracy = ToOne(); + // constructor LogMeal({ this.id = 0, + this.deleted = false, this.value = '', + this.amount = 1, this.carbsRatio, this.portionSize, - this.carbsPerPortion, - this.bolus, - this.delayedBolusDuration, - this.delayedBolusRate, + this.totalCarbs, this.notes, }); + // methods static LogMeal? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(LogMeal logMeal) => box.put(logMeal); - static void remove(int id) => box.remove(id); + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + static List getAllForEntry(int id) { + QueryBuilder builder = box.query(LogMeal_.deleted.equals(false)); + builder.link(LogMeal_.logEntry, LogEntry_.id.equals(id)); + return builder.build().find(); + } + + static List getRecentWithoutBolus(int id) { + final dateTime = LogEntry.get(id)?.time ?? DateTime.now(); + QueryBuilder builder = box.query(LogMeal_.deleted.equals(false)); + builder.link(LogMeal_.logEntry); + List results = builder.build().find(); + results.retainWhere((logMeal) { + final entryTime = logMeal.logEntry.target!.time; + return entryTime.isAfter(dateTime.subtract(const Duration(hours: 12))) && + entryTime.isBefore(dateTime.add(const Duration(hours: 12))) && !LogBolus.bolusForMealExists(logMeal.id); + }); + return results; + } + + static double getTotalCarbsForEntry(int id) { + QueryBuilder builder = box.query(LogMeal_.deleted.equals(false)); + builder.link(LogMeal_.logEntry, LogEntry_.id.equals(id)); + return builder.build().property(LogMeal_.totalCarbs).sum(); + } + + @override + String toString() { + return value; + } } diff --git a/lib/models/meal.dart b/lib/models/meal.dart index eb763e2..c168dc0 100644 --- a/lib/models/meal.dart +++ b/lib/models/meal.dart @@ -3,43 +3,66 @@ import 'package:diameter/models/accuracy.dart'; import 'package:diameter/models/meal_category.dart'; import 'package:diameter/models/meal_portion_type.dart'; import 'package:diameter/models/meal_source.dart'; +import 'package:diameter/objectbox.g.dart' show Meal_; import 'package:objectbox/objectbox.dart'; enum PortionCarbsParameter { carbsRatio, portionSize, carbsPerPortion } -@Entity() +@Entity(uid: 382130101578692012) +@Sync() class Meal { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String value; double? carbsRatio; double? portionSize; double? carbsPerPortion; int? delayedBolusDuration; - double? delayedBolusRate; + double? delayedBolusPercentage; String? notes; - + // relations final mealSource = ToOne(); final mealCategory = ToOne(); final mealPortionType = ToOne(); final portionSizeAccuracy = ToOne(); final carbsRatioAccuracy = ToOne(); + // constructor Meal({ this.id = 0, + this.deleted = false, this.value = '', this.carbsRatio, this.portionSize, this.carbsPerPortion, this.delayedBolusDuration, - this.delayedBolusRate, + this.delayedBolusPercentage, this.notes, }); + // methods static Meal? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(Meal meal) => box.put(meal); - static void remove(int id) => box.remove(id); + + static List getAll() { + QueryBuilder builder = box.query(Meal_.deleted.equals(false))..order(Meal_.value); + return builder.build().find(); + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + @override + String toString() { + return value; + } } diff --git a/lib/models/meal_category.dart b/lib/models/meal_category.dart index 298dac0..80a44a4 100644 --- a/lib/models/meal_category.dart +++ b/lib/models/meal_category.dart @@ -1,22 +1,45 @@ import 'package:diameter/main.dart'; import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show MealCategory_; -@Entity() +@Entity(uid: 3158200688796904913) +@Sync() class MealCategory { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String value; String? notes; + // constructor MealCategory({ this.id = 0, + this.deleted = false, this.value = '', this.notes, }); + // methods static MealCategory? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(MealCategory mealCategory) => box.put(mealCategory); - static void remove(int id) => box.remove(id); + + static List getAll() { + QueryBuilder builder = box.query(MealCategory_.deleted.equals(false))..order(MealCategory_.value); + return builder.build().find(); + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + @override + String toString() { + return value; + } } diff --git a/lib/models/meal_portion_type.dart b/lib/models/meal_portion_type.dart index 43d8734..f337b5b 100644 --- a/lib/models/meal_portion_type.dart +++ b/lib/models/meal_portion_type.dart @@ -1,22 +1,45 @@ import 'package:diameter/main.dart'; import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show MealPortionType_; -@Entity() +@Entity(uid: 2111511899235985637) +@Sync() class MealPortionType { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String value; String? notes; + // constructor MealPortionType({ this.id = 0, + this.deleted = false, this.value = '', this.notes, }); + // methods static MealPortionType? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(MealPortionType mealPortionType) => box.put(mealPortionType); - static void remove(int id) => box.remove(id); + + static List getAll() { + QueryBuilder builder = box.query(MealPortionType_.deleted.equals(false))..order(MealPortionType_.value); + return builder.build().find(); + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + @override + String toString() { + return value; + } } diff --git a/lib/models/meal_source.dart b/lib/models/meal_source.dart index 03c1801..df007b0 100644 --- a/lib/models/meal_source.dart +++ b/lib/models/meal_source.dart @@ -3,28 +3,52 @@ import 'package:diameter/models/accuracy.dart'; import 'package:diameter/models/meal_category.dart'; import 'package:diameter/models/meal_portion_type.dart'; import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show MealSource_; -@Entity() +@Entity(uid: 1283034494527412242) +@Sync() class MealSource { static final Box box = objectBox.store.box(); + // properties int id; + bool deleted; String value; String? notes; + // relations final defaultMealCategory = ToOne(); final defaultMealPortionType = ToOne(); final defaultCarbsRatioAccuracy = ToOne(); final defaultPortionSizeAccuracy = ToOne(); + // constructor MealSource({ this.id = 0, + this.deleted = false, this.value = '', this.notes, }); + // methods static MealSource? get(int id) => box.get(id); - static List getAll() => box.getAll(); static void put(MealSource mealSource) => box.put(mealSource); - static void remove(int id) => box.remove(id); + + static List getAll() { + QueryBuilder builder = box.query(MealSource_.deleted.equals(false))..order(MealSource_.value); + return builder.build().find(); + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + @override + String toString() { + return value; + } } diff --git a/lib/models/recipe.dart b/lib/models/recipe.dart new file mode 100644 index 0000000..24b8bc6 --- /dev/null +++ b/lib/models/recipe.dart @@ -0,0 +1,66 @@ +import 'package:diameter/main.dart'; +import 'package:diameter/models/ingredient.dart'; +import 'package:diameter/models/meal.dart'; +import 'package:diameter/utils/utils.dart'; +import 'package:objectbox/objectbox.dart'; +import 'package:diameter/objectbox.g.dart' show Recipe_; + +@Entity(uid: 6497942314956341514) +@Sync() +class Recipe { + static final Box box = objectBox.store.box(); + + // properties + int id; + bool deleted; + String name; + double? servings; + String? notes; + + // relations + final portion = ToOne(); + + // constructor + Recipe({ + this.id = 0, + this.deleted = false, + this.name = '', + this.servings, + this.notes, + }); + + // methods + static Recipe? get(int id) => box.get(id); + static void put(Recipe recipe) => box.put(recipe); + + static List getAll() { + QueryBuilder builder = box.query(Recipe_.deleted.equals(false)) + ..order(Recipe_.name); + return builder.build().find(); + } + + static double? getCarbsPerPortion(int id) { + final servings = Recipe.get(id)?.servings; + final totalWeight = Ingredient.getTotalWeightForRecipe(id); + final carbsRatio = Ingredient.getCarbsRatioForRecipe(id); + + if (servings != null && totalWeight != null && carbsRatio != null) { + final portionSize = totalWeight / servings; + return Utils.calculateCarbs(carbsRatio, portionSize); + } + return null; + } + + static void remove(int id) { + final item = box.get(id); + if (item != null) { + item.deleted = true; + box.put(item); + } + } + + @override + String toString() { + return name; + } +} diff --git a/lib/models/settings.dart b/lib/models/settings.dart new file mode 100644 index 0000000..e43acde --- /dev/null +++ b/lib/models/settings.dart @@ -0,0 +1,130 @@ +import 'package:diameter/main.dart'; +import 'package:flutter/material.dart'; +import 'package:objectbox/objectbox.dart'; + +enum GlucoseDisplayMode { activeOnly, bothForList, bothForDetail, both } +List glucoseDisplayModeLabels = [ + 'activeOnly', + 'bothForList', + 'bothForDetail', + 'both', +]; + +enum GlucoseMeasurement { + mgPerDl, + mmolPerL, +} +List glucoseMeasurementSuffixes = [ + 'mg/dl', + 'mmol/l', +]; +List glucoseMeasurementLabels = [ + 'mgPerDl', + 'mmolPerL', +]; + +enum NutritionMeasurement { + grams, + ounces, + lbs, +} +List nutritionMeasurementSuffixes = [ + 'g', + 'oz', + 'lbs', +]; +List nutritionMeasurementLabels = [ + 'grams', + 'ounces', + 'lbs', +]; + +@Entity(uid: 3989341091218179227) +@Sync() +class Settings { + static final Box box = objectBox.store.box(); + + // properties + int id; + + int nutritionMeasurementIndex; + int glucoseDisplayModeIndex; + int glucoseMeasurementIndex; + int targetGlucoseMgPerDl; + double targetGlucoseMmolPerL; + + double insulinIncrements; + double nutritionIncrements; + double mmolPerLIncrements; + double amountIncrements; + + String dateFormat; + String? longDateFormat; + String timeFormat; + String? longTimeFormat; + + bool showConfirmationDialogOnCancel; + bool showConfirmationDialogOnDelete; + bool showConfirmationDialogOnStopEvent; + + bool useDarkTheme; + + // constructor + Settings({ + this.id = 0, + this.nutritionMeasurementIndex = 0, + this.glucoseDisplayModeIndex = 0, + this.glucoseMeasurementIndex = 0, + this.insulinIncrements = 0.05, + this.nutritionIncrements = 0.01, + this.mmolPerLIncrements = 0.1, + this.amountIncrements = 0.05, + this.dateFormat = 'MM/dd/yy', + this.longDateFormat = 'MMMM dd, yyyy', + this.timeFormat = 'HH:mm', + this.longTimeFormat = 'HH:mm:ss', + this.showConfirmationDialogOnCancel = true, + this.showConfirmationDialogOnDelete = true, + this.showConfirmationDialogOnStopEvent = true, + this.targetGlucoseMgPerDl = 100, + this.targetGlucoseMmolPerL = 5.5, + this.useDarkTheme = false, + }); + + // methods + static Settings get() { + if (box.getAll().length != 1) { + reset(); + } + return box.getAll().single; + } + + static NutritionMeasurement get nutritionMeasurement => + NutritionMeasurement.values[get().nutritionMeasurementIndex]; + static GlucoseMeasurement get glucoseMeasurement => + GlucoseMeasurement.values[get().glucoseMeasurementIndex]; + static GlucoseDisplayMode get glucoseDisplayMode => + GlucoseDisplayMode.values[get().glucoseDisplayModeIndex]; + + static String get nutritionMeasurementSuffix => + nutritionMeasurementSuffixes[get().nutritionMeasurementIndex]; + static String get glucoseMeasurementSuffix => + glucoseMeasurementSuffixes[get().glucoseMeasurementIndex]; + + static int get targetMgPerDl => get().targetGlucoseMgPerDl; + static double get targetMmolPerL => get().targetGlucoseMmolPerL; + + static double get insulinSteps => get().insulinIncrements; + static double get nutritionSteps => get().nutritionIncrements; + static double get mmolPerLSteps => get().mmolPerLIncrements; + + static ThemeMode get themeMode => + get().useDarkTheme ? ThemeMode.dark : ThemeMode.light; + + static void put(Settings settings) => box.put(settings); + + static void reset() { + box.removeAll(); + box.put(Settings(useDarkTheme: ThemeMode.system == ThemeMode.dark)); + } +} diff --git a/lib/navigation.dart b/lib/navigation.dart index 1b16cc4..6d308ad 100644 --- a/lib/navigation.dart +++ b/lib/navigation.dart @@ -2,16 +2,17 @@ import 'package:diameter/screens/accuracy_detail.dart'; import 'package:diameter/screens/accuracy_list.dart'; import 'package:diameter/screens/basal/basal_detail.dart'; import 'package:diameter/screens/basal/basal_profile_detail.dart'; -import 'package:diameter/screens/basal/basal_profiles_list.dart'; +import 'package:diameter/screens/basal/basal_profile_list.dart'; import 'package:diameter/screens/bolus/bolus_detail.dart'; import 'package:diameter/screens/bolus/bolus_profile_detail.dart'; import 'package:diameter/screens/bolus/bolus_profile_list.dart'; import 'package:diameter/screens/log/log.dart'; -import 'package:diameter/screens/log/log_entry.dart'; -import 'package:diameter/screens/log/log_event_detail.dart'; -import 'package:diameter/screens/log/log_event_type_detail.dart'; -import 'package:diameter/screens/log/log_event_type_list.dart'; -import 'package:diameter/screens/log/log_meal_detail.dart'; +import 'package:diameter/screens/log/log_entry/log_entry.dart'; +import 'package:diameter/screens/log/log_event/log_event_detail.dart'; +import 'package:diameter/screens/log/log_event/log_event_list.dart'; +import 'package:diameter/screens/log/log_event/log_event_type_detail.dart'; +import 'package:diameter/screens/log/log_event/log_event_type_list.dart'; +import 'package:diameter/screens/log/log_entry/log_meal_detail.dart'; import 'package:diameter/screens/meal/meal_category_detail.dart'; import 'package:diameter/screens/meal/meal_category_list.dart'; import 'package:diameter/screens/meal/meal_detail.dart'; @@ -20,6 +21,8 @@ import 'package:diameter/screens/meal/meal_portion_type_detail.dart'; import 'package:diameter/screens/meal/meal_portion_type_list.dart'; import 'package:diameter/screens/meal/meal_source_detail.dart'; import 'package:diameter/screens/meal/meal_source_list.dart'; +import 'package:diameter/screens/recipe/recipe_detail.dart'; +import 'package:diameter/screens/recipe/recipe_list.dart'; import 'package:diameter/settings.dart'; import 'package:flutter/material.dart'; @@ -39,9 +42,14 @@ class Routes { static const String logEvent = LogEventDetailScreen.routeName; static const String logMeal = LogMealDetailScreen.routeName; static const List logEntryRoutes = [logEntry, logEvent, logMeal]; - static const String logEventType = LogEventTypeDetailScreen.routeName; + static const String logEventType = EventTypeDetailScreen.routeName; static const String logEventTypes = LogEventTypeListScreen.routeName; static const List logEventTypeRoutes = [logEventType, logEventTypes]; + static const String events = LogEventListScreen.routeName; + + static const String recipe = RecipeDetailScreen.routeName; + static const String recipes = RecipeListScreen.routeName; + static const List recipeRoutes = [recipe, recipes]; static const String meal = MealDetailScreen.routeName; static const String meals = MealListScreen.routeName; @@ -98,16 +106,24 @@ class _NavigationState extends State { selected: widget.currentLocation == Routes.log, ), ListTile( - title: const Text('Log Entry'), - leading: const Icon(Icons.description), + title: const Text('Log Events'), + leading: const Icon(Icons.event), onTap: () { - selectDestination(Routes.logEntry); + selectDestination(Routes.events); }, - selected: Routes.logEntryRoutes.contains(widget.currentLocation), + selected: widget.currentLocation == Routes.events, ), + // ListTile( + // title: const Text('Recipes'), + // leading: const Icon(Icons.local_dining), + // onTap: () { + // selectDestination(Routes.recipes); + // }, + // selected: Routes.recipeRoutes.contains(widget.currentLocation), + // ), ListTile( title: const Text('Meals'), - leading: const Icon(Icons.restaurant), + leading: const Icon(Icons.dinner_dining), onTap: () { selectDestination(Routes.meals); }, diff --git a/lib/objectbox-model.json b/lib/objectbox-model.json index 65b048e..e0a1e35 100644 --- a/lib/objectbox-model.json +++ b/lib/objectbox-model.json @@ -3,49 +3,11 @@ "_note2": "ObjectBox manages crucial IDs for your object model. See docs for details.", "_note3": "If you have VCS merge conflicts, you must resolve them according to ObjectBox docs.", "entities": [ - { - "id": "1:3095978685310268382", - "lastPropertyId": "6:5471636804765937328", - "name": "Accuracy", - "properties": [ - { - "id": "1:3455702077061719523", - "name": "id", - "type": 6, - "flags": 1 - }, - { - "id": "2:1048198814030724077", - "name": "value", - "type": 9 - }, - { - "id": "3:9003780003858349085", - "name": "forCarbsRatio", - "type": 1 - }, - { - "id": "4:5421422436108145565", - "name": "forPortionSize", - "type": 1 - }, - { - "id": "5:7741631874181070179", - "name": "confidenceRating", - "type": 6 - }, - { - "id": "6:5471636804765937328", - "name": "notes", - "type": 9 - } - ], - "relations": [] - }, { "id": "2:1467758525778521891", - "lastPropertyId": "5:3908367275335317130", + "lastPropertyId": "6:3409466778841164684", "name": "Basal", + "flags": 2, "properties": [ { "id": "1:4281816825522738642", @@ -75,14 +37,20 @@ "flags": 520, "indexId": "1:8279975749291974737", "relationTarget": "BasalProfile" + }, + { + "id": "6:3409466778841164684", + "name": "deleted", + "type": 1 } ], "relations": [] }, { "id": "3:3613736032926903785", - "lastPropertyId": "4:6719547342639071472", + "lastPropertyId": "5:8140071977687660397", "name": "BasalProfile", + "flags": 2, "properties": [ { "id": "1:353771983641472117", @@ -104,14 +72,20 @@ "id": "4:6719547342639071472", "name": "notes", "type": 9 + }, + { + "id": "5:8140071977687660397", + "name": "deleted", + "type": 1 } ], "relations": [] }, { "id": "4:3417770529060202389", - "lastPropertyId": "8:7679622918986671917", + "lastPropertyId": "9:7440090146687096977", "name": "Bolus", + "flags": 2, "properties": [ { "id": "1:8141647919190345775", @@ -156,14 +130,20 @@ "flags": 520, "indexId": "2:1936045997906240691", "relationTarget": "BolusProfile" + }, + { + "id": "9:7440090146687096977", + "name": "deleted", + "type": 1 } ], "relations": [] }, { "id": "5:8812452529027052317", - "lastPropertyId": "4:3030493484602726372", + "lastPropertyId": "5:8082994824481464395", "name": "BolusProfile", + "flags": 2, "properties": [ { "id": "1:4233863196673391978", @@ -185,14 +165,20 @@ "id": "4:3030493484602726372", "name": "notes", "type": 9 + }, + { + "id": "5:8082994824481464395", + "name": "deleted", + "type": 1 } ], "relations": [] }, { "id": "6:752131069307970560", - "lastPropertyId": "8:6492273995038150006", + "lastPropertyId": "10:2505303363495348118", "name": "LogEntry", + "flags": 2, "properties": [ { "id": "1:5528657304180237933", @@ -215,33 +201,29 @@ "name": "mmolPerL", "type": 8 }, - { - "id": "5:3678829169126156351", - "name": "bolusGlucose", - "type": 8 - }, - { - "id": "6:1568597071506264632", - "name": "delayedBolusDuration", - "type": 6 - }, - { - "id": "7:8795268969829293398", - "name": "delayedBolusRate", - "type": 8 - }, { "id": "8:6492273995038150006", "name": "notes", "type": 9 + }, + { + "id": "9:1692732373071965573", + "name": "deleted", + "type": 1 + }, + { + "id": "10:2505303363495348118", + "name": "glucoseTrend", + "type": 8 } ], "relations": [] }, { "id": "7:4303325892753185970", - "lastPropertyId": "8:2514297323717317184", + "lastPropertyId": "12:3041952167628926163", "name": "LogEvent", + "flags": 2, "properties": [ { "id": "1:6648501734758557663", @@ -269,22 +251,6 @@ "name": "notes", "type": 9 }, - { - "id": "6:7838546213550447420", - "name": "logEntryId", - "type": 11, - "flags": 520, - "indexId": "3:3670661188280692002", - "relationTarget": "LogEntry" - }, - { - "id": "7:8031421171668506924", - "name": "endLogEntryId", - "type": 11, - "flags": 520, - "indexId": "4:7379712902406481832", - "relationTarget": "LogEntry" - }, { "id": "8:2514297323717317184", "name": "eventTypeId", @@ -292,14 +258,41 @@ "flags": 520, "indexId": "5:1417691902662024007", "relationTarget": "LogEventType" + }, + { + "id": "9:8477413048577624801", + "name": "deleted", + "type": 1 + }, + { + "id": "10:987218091728524211", + "name": "bolusProfileId", + "type": 11, + "flags": 520, + "indexId": "25:2500612771974500993", + "relationTarget": "BolusProfile" + }, + { + "id": "11:2013538196800336796", + "name": "basalProfileId", + "type": 11, + "flags": 520, + "indexId": "26:4562998391990896273", + "relationTarget": "BasalProfile" + }, + { + "id": "12:3041952167628926163", + "name": "reminderDuration", + "type": 6 } ], "relations": [] }, { "id": "8:8362795406595606110", - "lastPropertyId": "5:7361377572496986196", + "lastPropertyId": "8:1869014400856897151", "name": "LogEventType", + "flags": 2, "properties": [ { "id": "1:1430413826199774000", @@ -326,14 +319,36 @@ "id": "5:7361377572496986196", "name": "notes", "type": 9 + }, + { + "id": "6:5428344494256722438", + "name": "deleted", + "type": 1 + }, + { + "id": "7:9194648252717310397", + "name": "bolusProfileId", + "type": 11, + "flags": 520, + "indexId": "27:758221514459743282", + "relationTarget": "BolusProfile" + }, + { + "id": "8:1869014400856897151", + "name": "basalProfileId", + "type": 11, + "flags": 520, + "indexId": "28:4563029809754152081", + "relationTarget": "BasalProfile" } ], "relations": [] }, { "id": "9:411177866700467286", - "lastPropertyId": "16:7121997990741934484", + "lastPropertyId": "19:8965198821438347033", "name": "LogMeal", + "flags": 2, "properties": [ { "id": "1:962999525294133158", @@ -356,26 +371,11 @@ "name": "portionSize", "type": 8 }, - { - "id": "5:2215708755581938580", - "name": "carbsPerPortion", - "type": 8 - }, { "id": "6:8074052538574863399", "name": "bolus", "type": 8 }, - { - "id": "7:3247926313599127440", - "name": "delayedBolusDuration", - "type": 6 - }, - { - "id": "8:8789440370359282572", - "name": "delayedBolusRate", - "type": 8 - }, { "id": "9:1920579694098037947", "name": "notes", @@ -436,14 +436,30 @@ "flags": 520, "indexId": "12:35287836658362611", "relationTarget": "Accuracy" + }, + { + "id": "17:7341439841011629937", + "name": "deleted", + "type": 1 + }, + { + "id": "18:7405129785654054238", + "name": "amount", + "type": 8 + }, + { + "id": "19:8965198821438347033", + "name": "totalCarbs", + "type": 8 } ], "relations": [] }, { "id": "10:382130101578692012", - "lastPropertyId": "13:4890778480468380841", + "lastPropertyId": "15:8283810711091063880", "name": "Meal", + "flags": 2, "properties": [ { "id": "1:612386612600420389", @@ -476,11 +492,6 @@ "name": "delayedBolusDuration", "type": 6 }, - { - "id": "7:2172890064639236018", - "name": "delayedBolusRate", - "type": 8 - }, { "id": "8:6111684052388229887", "name": "notes", @@ -525,14 +536,25 @@ "flags": 520, "indexId": "17:9108886538013386415", "relationTarget": "Accuracy" + }, + { + "id": "14:3567196286623536415", + "name": "deleted", + "type": 1 + }, + { + "id": "15:8283810711091063880", + "name": "delayedBolusPercentage", + "type": 8 } ], "relations": [] }, { "id": "11:3158200688796904913", - "lastPropertyId": "3:3543757971350345683", + "lastPropertyId": "4:824435977543069541", "name": "MealCategory", + "flags": 2, "properties": [ { "id": "1:3678943122076184840", @@ -549,14 +571,20 @@ "id": "3:3543757971350345683", "name": "notes", "type": 9 + }, + { + "id": "4:824435977543069541", + "name": "deleted", + "type": 1 } ], "relations": [] }, { "id": "12:2111511899235985637", - "lastPropertyId": "3:1950852666001613408", + "lastPropertyId": "4:5680236937391945907", "name": "MealPortionType", + "flags": 2, "properties": [ { "id": "1:65428405312238271", @@ -573,14 +601,20 @@ "id": "3:1950852666001613408", "name": "notes", "type": 9 + }, + { + "id": "4:5680236937391945907", + "name": "deleted", + "type": 1 } ], "relations": [] }, { "id": "13:1283034494527412242", - "lastPropertyId": "7:5852853174931678667", + "lastPropertyId": "8:4547899751779962180", "name": "MealSource", + "flags": 2, "properties": [ { "id": "1:7205380295259922130", @@ -629,20 +663,415 @@ "flags": 520, "indexId": "21:1931330716440762729", "relationTarget": "Accuracy" + }, + { + "id": "8:4547899751779962180", + "name": "deleted", + "type": 1 + } + ], + "relations": [] + }, + { + "id": "14:8033487006694871160", + "lastPropertyId": "18:7503231998671134983", + "name": "LogBolus", + "flags": 2, + "properties": [ + { + "id": "1:8254237730262024662", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:7669701519569266656", + "name": "units", + "type": 8 + }, + { + "id": "3:1967840431906109999", + "name": "carbs", + "type": 8 + }, + { + "id": "4:5520321978435312625", + "name": "delay", + "type": 6 + }, + { + "id": "7:3065420032567707091", + "name": "setManually", + "type": 1 + }, + { + "id": "8:2967613978873295525", + "name": "notes", + "type": 9 + }, + { + "id": "9:5454965717985089938", + "name": "logEntryId", + "type": 11, + "flags": 520, + "indexId": "22:5852072074740543047", + "relationTarget": "LogEntry" + }, + { + "id": "10:4105009806564072037", + "name": "rateId", + "type": 11, + "flags": 520, + "indexId": "23:1594553054621930876", + "relationTarget": "Bolus" + }, + { + "id": "11:4818762109001810295", + "name": "mealId", + "type": 11, + "flags": 520, + "indexId": "24:4224983816051843140", + "relationTarget": "LogMeal" + }, + { + "id": "12:4765038304548427459", + "name": "deleted", + "type": 1 + }, + { + "id": "13:2530431967957143684", + "name": "mgPerDlCurrent", + "type": 6 + }, + { + "id": "14:5210229118898251877", + "name": "mgPerDlTarget", + "type": 6 + }, + { + "id": "15:657840864788362204", + "name": "mgPerDlCorrection", + "type": 6 + }, + { + "id": "16:3999403624434995450", + "name": "mmolPerLCurrent", + "type": 8 + }, + { + "id": "17:2852253735546692099", + "name": "mmolPerLTarget", + "type": 8 + }, + { + "id": "18:7503231998671134983", + "name": "mmolPerLCorrection", + "type": 8 + } + ], + "relations": [] + }, + { + "id": "15:291512798403320400", + "lastPropertyId": "7:6675647182186603076", + "name": "Accuracy", + "flags": 2, + "properties": [ + { + "id": "1:8405388350474524599", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:1919049381880760479", + "name": "value", + "type": 9 + }, + { + "id": "3:7181081526218678274", + "name": "forCarbsRatio", + "type": 1 + }, + { + "id": "4:3576006369067328383", + "name": "forPortionSize", + "type": 1 + }, + { + "id": "5:7027546512578846894", + "name": "confidenceRating", + "type": 6 + }, + { + "id": "6:6625101003527710274", + "name": "notes", + "type": 9 + }, + { + "id": "7:6675647182186603076", + "name": "deleted", + "type": 1 + } + ], + "relations": [] + }, + { + "id": "16:3989341091218179227", + "lastPropertyId": "23:3611447442844013652", + "name": "Settings", + "flags": 2, + "properties": [ + { + "id": "1:7803753645747063723", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:4703380985530623101", + "name": "dateFormat", + "type": 9 + }, + { + "id": "3:2983395924801005937", + "name": "longDateFormat", + "type": 9 + }, + { + "id": "4:2579032794029389590", + "name": "timeFormat", + "type": 9 + }, + { + "id": "5:3970690908108519507", + "name": "longTimeFormat", + "type": 9 + }, + { + "id": "6:349893175332801783", + "name": "showConfirmationDialogOnCancel", + "type": 1 + }, + { + "id": "7:4049915860178079910", + "name": "showConfirmationDialogOnDelete", + "type": 1 + }, + { + "id": "8:3088241443557186512", + "name": "showConfirmationDialogOnStopEvent", + "type": 1 + }, + { + "id": "18:1203593429961092769", + "name": "nutritionMeasurementIndex", + "type": 6 + }, + { + "id": "19:8895176254912253797", + "name": "glucoseDisplayModeIndex", + "type": 6 + }, + { + "id": "20:6560414475711071975", + "name": "glucoseMeasurementIndex", + "type": 6 + }, + { + "id": "21:7934134105044248002", + "name": "targetGlucoseMgPerDl", + "type": 6 + }, + { + "id": "22:3595473653451456068", + "name": "targetGlucoseMmolPerL", + "type": 8 + }, + { + "id": "23:3611447442844013652", + "name": "useDarkTheme", + "type": 1 + } + ], + "relations": [] + }, + { + "id": "17:5041265995704044399", + "lastPropertyId": "7:1333487551279074696", + "name": "GlucoseTarget", + "flags": 2, + "properties": [ + { + "id": "1:4322960567133959537", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:7533461804561299987", + "name": "deleted", + "type": 1 + }, + { + "id": "3:4949963248761074916", + "name": "fromMgPerDL", + "type": 6 + }, + { + "id": "4:8685380695305799464", + "name": "toMgPerDl", + "type": 6 + }, + { + "id": "5:2925449628924807050", + "name": "fromMmolPerL", + "type": 8 + }, + { + "id": "6:3244873743284485064", + "name": "toMmolPerL", + "type": 8 + }, + { + "id": "7:1333487551279074696", + "name": "color", + "type": 6 + } + ], + "relations": [] + }, + { + "id": "18:6497942314956341514", + "lastPropertyId": "11:8488657312300528492", + "name": "Recipe", + "flags": 2, + "properties": [ + { + "id": "1:6426741154282018946", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:1167304402395485629", + "name": "deleted", + "type": 1 + }, + { + "id": "3:1244733840071626966", + "name": "name", + "type": 9 + }, + { + "id": "9:8593446427752839266", + "name": "notes", + "type": 9 + }, + { + "id": "10:4370359747396560337", + "name": "portionId", + "type": 11, + "flags": 520, + "indexId": "29:5110151182694376118", + "relationTarget": "Meal" + }, + { + "id": "11:8488657312300528492", + "name": "servings", + "type": 8 + } + ], + "relations": [] + }, + { + "id": "19:6950311793136068892", + "lastPropertyId": "5:6495065881132428893", + "name": "Ingredient", + "flags": 2, + "properties": [ + { + "id": "1:7766569281758551418", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:3830559702655088692", + "name": "deleted", + "type": 1 + }, + { + "id": "3:602057803225843875", + "name": "amount", + "type": 8 + }, + { + "id": "4:26686399245586953", + "name": "recipeId", + "type": 11, + "flags": 520, + "indexId": "30:5492781242713788590", + "relationTarget": "Recipe" + }, + { + "id": "5:6495065881132428893", + "name": "ingredientId", + "type": 11, + "flags": 520, + "indexId": "31:3277019237664417023", + "relationTarget": "Meal" } ], "relations": [] } ], - "lastEntityId": "13:1283034494527412242", - "lastIndexId": "21:1931330716440762729", + "lastEntityId": "19:6950311793136068892", + "lastIndexId": "31:3277019237664417023", "lastRelationId": "0:0", "lastSequenceId": "0:0", "modelVersion": 5, "modelVersionParserMinimum": 5, - "retiredEntityUids": [], - "retiredIndexUids": [], - "retiredPropertyUids": [], + "retiredEntityUids": [ + 3095978685310268382 + ], + "retiredIndexUids": [ + 3670661188280692002, + 7379712902406481832 + ], + "retiredPropertyUids": [ + 3455702077061719523, + 1048198814030724077, + 9003780003858349085, + 5421422436108145565, + 7741631874181070179, + 5471636804765937328, + 6855574218883169324, + 5313708456544000157, + 3678829169126156351, + 1568597071506264632, + 8795268969829293398, + 3247926313599127440, + 8789440370359282572, + 7838546213550447420, + 8031421171668506924, + 1614362036318874174, + 1675040259141389754, + 7518219134349037920, + 2172890064639236018, + 310032577683835406, + 5588897884422150510, + 7638848982383620744, + 3282706593658092097, + 596980591281311896, + 3633551763915044903, + 2215708755581938580, + 241621230513128588, + 4678123663117222609, + 780211923138281722, + 763575433624979013, + 1225271130099322691 + ], "retiredRelationUids": [], "version": 1 } \ No newline at end of file diff --git a/lib/objectbox.g.dart b/lib/objectbox.g.dart index 4517098..ce823fb 100644 --- a/lib/objectbox.g.dart +++ b/lib/objectbox.g.dart @@ -7,13 +7,16 @@ import 'dart:typed_data'; import 'package:objectbox/flatbuffers/flat_buffers.dart' as fb; import 'package:objectbox/internal.dart'; // generated code can access "internal" functionality import 'package:objectbox/objectbox.dart'; -import 'package:objectbox_flutter_libs/objectbox_flutter_libs.dart'; +import 'package:objectbox_sync_flutter_libs/objectbox_sync_flutter_libs.dart'; import 'models/accuracy.dart'; import 'models/basal.dart'; import 'models/basal_profile.dart'; import 'models/bolus.dart'; import 'models/bolus_profile.dart'; +import 'models/glucose_target.dart'; +import 'models/ingredient.dart'; +import 'models/log_bolus.dart'; import 'models/log_entry.dart'; import 'models/log_event.dart'; import 'models/log_event_type.dart'; @@ -22,54 +25,17 @@ import 'models/meal.dart'; import 'models/meal_category.dart'; import 'models/meal_portion_type.dart'; import 'models/meal_source.dart'; +import 'models/recipe.dart'; +import 'models/settings.dart'; export 'package:objectbox/objectbox.dart'; // so that callers only have to import this file final _entities = [ - ModelEntity( - id: const IdUid(1, 3095978685310268382), - name: 'Accuracy', - lastPropertyId: const IdUid(6, 5471636804765937328), - flags: 0, - properties: [ - ModelProperty( - id: const IdUid(1, 3455702077061719523), - name: 'id', - type: 6, - flags: 1), - ModelProperty( - id: const IdUid(2, 1048198814030724077), - name: 'value', - type: 9, - flags: 0), - ModelProperty( - id: const IdUid(3, 9003780003858349085), - name: 'forCarbsRatio', - type: 1, - flags: 0), - ModelProperty( - id: const IdUid(4, 5421422436108145565), - name: 'forPortionSize', - type: 1, - flags: 0), - ModelProperty( - id: const IdUid(5, 7741631874181070179), - name: 'confidenceRating', - type: 6, - flags: 0), - ModelProperty( - id: const IdUid(6, 5471636804765937328), - name: 'notes', - type: 9, - flags: 0) - ], - relations: [], - backlinks: []), ModelEntity( id: const IdUid(2, 1467758525778521891), name: 'Basal', - lastPropertyId: const IdUid(5, 3908367275335317130), - flags: 0, + lastPropertyId: const IdUid(6, 3409466778841164684), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 4281816825522738642), @@ -97,15 +63,20 @@ final _entities = [ type: 11, flags: 520, indexId: const IdUid(1, 8279975749291974737), - relationTarget: 'BasalProfile') + relationTarget: 'BasalProfile'), + ModelProperty( + id: const IdUid(6, 3409466778841164684), + name: 'deleted', + type: 1, + flags: 0) ], relations: [], backlinks: []), ModelEntity( id: const IdUid(3, 3613736032926903785), name: 'BasalProfile', - lastPropertyId: const IdUid(4, 6719547342639071472), - flags: 0, + lastPropertyId: const IdUid(5, 8140071977687660397), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 353771983641472117), @@ -126,6 +97,11 @@ final _entities = [ id: const IdUid(4, 6719547342639071472), name: 'notes', type: 9, + flags: 0), + ModelProperty( + id: const IdUid(5, 8140071977687660397), + name: 'deleted', + type: 1, flags: 0) ], relations: [], @@ -133,8 +109,8 @@ final _entities = [ ModelEntity( id: const IdUid(4, 3417770529060202389), name: 'Bolus', - lastPropertyId: const IdUid(8, 7679622918986671917), - flags: 0, + lastPropertyId: const IdUid(9, 7440090146687096977), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 8141647919190345775), @@ -177,15 +153,20 @@ final _entities = [ type: 11, flags: 520, indexId: const IdUid(2, 1936045997906240691), - relationTarget: 'BolusProfile') + relationTarget: 'BolusProfile'), + ModelProperty( + id: const IdUid(9, 7440090146687096977), + name: 'deleted', + type: 1, + flags: 0) ], relations: [], backlinks: []), ModelEntity( id: const IdUid(5, 8812452529027052317), name: 'BolusProfile', - lastPropertyId: const IdUid(4, 3030493484602726372), - flags: 0, + lastPropertyId: const IdUid(5, 8082994824481464395), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 4233863196673391978), @@ -206,6 +187,11 @@ final _entities = [ id: const IdUid(4, 3030493484602726372), name: 'notes', type: 9, + flags: 0), + ModelProperty( + id: const IdUid(5, 8082994824481464395), + name: 'deleted', + type: 1, flags: 0) ], relations: [], @@ -213,8 +199,8 @@ final _entities = [ ModelEntity( id: const IdUid(6, 752131069307970560), name: 'LogEntry', - lastPropertyId: const IdUid(8, 6492273995038150006), - flags: 0, + lastPropertyId: const IdUid(10, 2505303363495348118), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 5528657304180237933), @@ -236,42 +222,29 @@ final _entities = [ name: 'mmolPerL', type: 8, flags: 0), - ModelProperty( - id: const IdUid(5, 3678829169126156351), - name: 'bolusGlucose', - type: 8, - flags: 0), - ModelProperty( - id: const IdUid(6, 1568597071506264632), - name: 'delayedBolusDuration', - type: 6, - flags: 0), - ModelProperty( - id: const IdUid(7, 8795268969829293398), - name: 'delayedBolusRate', - type: 8, - flags: 0), ModelProperty( id: const IdUid(8, 6492273995038150006), name: 'notes', type: 9, + flags: 0), + ModelProperty( + id: const IdUid(9, 1692732373071965573), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(10, 2505303363495348118), + name: 'glucoseTrend', + type: 8, flags: 0) ], relations: [], - backlinks: [ - ModelBacklink( - name: 'events', srcEntity: 'LogEvent', srcField: 'logEntry'), - ModelBacklink( - name: 'endedEvents', - srcEntity: 'LogEvent', - srcField: 'endLogEntry'), - ModelBacklink(name: 'meals', srcEntity: 'LogMeal', srcField: 'logEntry') - ]), + backlinks: []), ModelEntity( id: const IdUid(7, 4303325892753185970), name: 'LogEvent', - lastPropertyId: const IdUid(8, 2514297323717317184), - flags: 0, + lastPropertyId: const IdUid(12, 3041952167628926163), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 6648501734758557663), @@ -298,35 +271,45 @@ final _entities = [ name: 'notes', type: 9, flags: 0), - ModelProperty( - id: const IdUid(6, 7838546213550447420), - name: 'logEntryId', - type: 11, - flags: 520, - indexId: const IdUid(3, 3670661188280692002), - relationTarget: 'LogEntry'), - ModelProperty( - id: const IdUid(7, 8031421171668506924), - name: 'endLogEntryId', - type: 11, - flags: 520, - indexId: const IdUid(4, 7379712902406481832), - relationTarget: 'LogEntry'), ModelProperty( id: const IdUid(8, 2514297323717317184), name: 'eventTypeId', type: 11, flags: 520, indexId: const IdUid(5, 1417691902662024007), - relationTarget: 'LogEventType') + relationTarget: 'LogEventType'), + ModelProperty( + id: const IdUid(9, 8477413048577624801), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(10, 987218091728524211), + name: 'bolusProfileId', + type: 11, + flags: 520, + indexId: const IdUid(25, 2500612771974500993), + relationTarget: 'BolusProfile'), + ModelProperty( + id: const IdUid(11, 2013538196800336796), + name: 'basalProfileId', + type: 11, + flags: 520, + indexId: const IdUid(26, 4562998391990896273), + relationTarget: 'BasalProfile'), + ModelProperty( + id: const IdUid(12, 3041952167628926163), + name: 'reminderDuration', + type: 6, + flags: 0) ], relations: [], backlinks: []), ModelEntity( id: const IdUid(8, 8362795406595606110), name: 'LogEventType', - lastPropertyId: const IdUid(5, 7361377572496986196), - flags: 0, + lastPropertyId: const IdUid(8, 1869014400856897151), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 1430413826199774000), @@ -352,15 +335,34 @@ final _entities = [ id: const IdUid(5, 7361377572496986196), name: 'notes', type: 9, - flags: 0) + flags: 0), + ModelProperty( + id: const IdUid(6, 5428344494256722438), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(7, 9194648252717310397), + name: 'bolusProfileId', + type: 11, + flags: 520, + indexId: const IdUid(27, 758221514459743282), + relationTarget: 'BolusProfile'), + ModelProperty( + id: const IdUid(8, 1869014400856897151), + name: 'basalProfileId', + type: 11, + flags: 520, + indexId: const IdUid(28, 4563029809754152081), + relationTarget: 'BasalProfile') ], relations: [], backlinks: []), ModelEntity( id: const IdUid(9, 411177866700467286), name: 'LogMeal', - lastPropertyId: const IdUid(16, 7121997990741934484), - flags: 0, + lastPropertyId: const IdUid(19, 8965198821438347033), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 962999525294133158), @@ -382,26 +384,11 @@ final _entities = [ name: 'portionSize', type: 8, flags: 0), - ModelProperty( - id: const IdUid(5, 2215708755581938580), - name: 'carbsPerPortion', - type: 8, - flags: 0), ModelProperty( id: const IdUid(6, 8074052538574863399), name: 'bolus', type: 8, flags: 0), - ModelProperty( - id: const IdUid(7, 3247926313599127440), - name: 'delayedBolusDuration', - type: 6, - flags: 0), - ModelProperty( - id: const IdUid(8, 8789440370359282572), - name: 'delayedBolusRate', - type: 8, - flags: 0), ModelProperty( id: const IdUid(9, 1920579694098037947), name: 'notes', @@ -455,15 +442,30 @@ final _entities = [ type: 11, flags: 520, indexId: const IdUid(12, 35287836658362611), - relationTarget: 'Accuracy') + relationTarget: 'Accuracy'), + ModelProperty( + id: const IdUid(17, 7341439841011629937), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(18, 7405129785654054238), + name: 'amount', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(19, 8965198821438347033), + name: 'totalCarbs', + type: 8, + flags: 0) ], relations: [], backlinks: []), ModelEntity( id: const IdUid(10, 382130101578692012), name: 'Meal', - lastPropertyId: const IdUid(13, 4890778480468380841), - flags: 0, + lastPropertyId: const IdUid(15, 8283810711091063880), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 612386612600420389), @@ -495,11 +497,6 @@ final _entities = [ name: 'delayedBolusDuration', type: 6, flags: 0), - ModelProperty( - id: const IdUid(7, 2172890064639236018), - name: 'delayedBolusRate', - type: 8, - flags: 0), ModelProperty( id: const IdUid(8, 6111684052388229887), name: 'notes', @@ -539,15 +536,25 @@ final _entities = [ type: 11, flags: 520, indexId: const IdUid(17, 9108886538013386415), - relationTarget: 'Accuracy') + relationTarget: 'Accuracy'), + ModelProperty( + id: const IdUid(14, 3567196286623536415), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(15, 8283810711091063880), + name: 'delayedBolusPercentage', + type: 8, + flags: 0) ], relations: [], backlinks: []), ModelEntity( id: const IdUid(11, 3158200688796904913), name: 'MealCategory', - lastPropertyId: const IdUid(3, 3543757971350345683), - flags: 0, + lastPropertyId: const IdUid(4, 824435977543069541), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 3678943122076184840), @@ -563,6 +570,11 @@ final _entities = [ id: const IdUid(3, 3543757971350345683), name: 'notes', type: 9, + flags: 0), + ModelProperty( + id: const IdUid(4, 824435977543069541), + name: 'deleted', + type: 1, flags: 0) ], relations: [], @@ -570,8 +582,8 @@ final _entities = [ ModelEntity( id: const IdUid(12, 2111511899235985637), name: 'MealPortionType', - lastPropertyId: const IdUid(3, 1950852666001613408), - flags: 0, + lastPropertyId: const IdUid(4, 5680236937391945907), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 65428405312238271), @@ -587,6 +599,11 @@ final _entities = [ id: const IdUid(3, 1950852666001613408), name: 'notes', type: 9, + flags: 0), + ModelProperty( + id: const IdUid(4, 5680236937391945907), + name: 'deleted', + type: 1, flags: 0) ], relations: [], @@ -594,8 +611,8 @@ final _entities = [ ModelEntity( id: const IdUid(13, 1283034494527412242), name: 'MealSource', - lastPropertyId: const IdUid(7, 5852853174931678667), - flags: 0, + lastPropertyId: const IdUid(8, 4547899751779962180), + flags: 2, properties: [ ModelProperty( id: const IdUid(1, 7205380295259922130), @@ -639,7 +656,353 @@ final _entities = [ type: 11, flags: 520, indexId: const IdUid(21, 1931330716440762729), - relationTarget: 'Accuracy') + relationTarget: 'Accuracy'), + ModelProperty( + id: const IdUid(8, 4547899751779962180), + name: 'deleted', + type: 1, + flags: 0) + ], + relations: [], + backlinks: []), + ModelEntity( + id: const IdUid(14, 8033487006694871160), + name: 'LogBolus', + lastPropertyId: const IdUid(18, 7503231998671134983), + flags: 2, + properties: [ + ModelProperty( + id: const IdUid(1, 8254237730262024662), + name: 'id', + type: 6, + flags: 1), + ModelProperty( + id: const IdUid(2, 7669701519569266656), + name: 'units', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(3, 1967840431906109999), + name: 'carbs', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(4, 5520321978435312625), + name: 'delay', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(7, 3065420032567707091), + name: 'setManually', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(8, 2967613978873295525), + name: 'notes', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(9, 5454965717985089938), + name: 'logEntryId', + type: 11, + flags: 520, + indexId: const IdUid(22, 5852072074740543047), + relationTarget: 'LogEntry'), + ModelProperty( + id: const IdUid(10, 4105009806564072037), + name: 'rateId', + type: 11, + flags: 520, + indexId: const IdUid(23, 1594553054621930876), + relationTarget: 'Bolus'), + ModelProperty( + id: const IdUid(11, 4818762109001810295), + name: 'mealId', + type: 11, + flags: 520, + indexId: const IdUid(24, 4224983816051843140), + relationTarget: 'LogMeal'), + ModelProperty( + id: const IdUid(12, 4765038304548427459), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(13, 2530431967957143684), + name: 'mgPerDlCurrent', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(14, 5210229118898251877), + name: 'mgPerDlTarget', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(15, 657840864788362204), + name: 'mgPerDlCorrection', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(16, 3999403624434995450), + name: 'mmolPerLCurrent', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(17, 2852253735546692099), + name: 'mmolPerLTarget', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(18, 7503231998671134983), + name: 'mmolPerLCorrection', + type: 8, + flags: 0) + ], + relations: [], + backlinks: []), + ModelEntity( + id: const IdUid(15, 291512798403320400), + name: 'Accuracy', + lastPropertyId: const IdUid(7, 6675647182186603076), + flags: 2, + properties: [ + ModelProperty( + id: const IdUid(1, 8405388350474524599), + name: 'id', + type: 6, + flags: 1), + ModelProperty( + id: const IdUid(2, 1919049381880760479), + name: 'value', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(3, 7181081526218678274), + name: 'forCarbsRatio', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(4, 3576006369067328383), + name: 'forPortionSize', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(5, 7027546512578846894), + name: 'confidenceRating', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(6, 6625101003527710274), + name: 'notes', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(7, 6675647182186603076), + name: 'deleted', + type: 1, + flags: 0) + ], + relations: [], + backlinks: []), + ModelEntity( + id: const IdUid(16, 3989341091218179227), + name: 'Settings', + lastPropertyId: const IdUid(23, 3611447442844013652), + flags: 2, + properties: [ + ModelProperty( + id: const IdUid(1, 7803753645747063723), + name: 'id', + type: 6, + flags: 1), + ModelProperty( + id: const IdUid(2, 4703380985530623101), + name: 'dateFormat', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(3, 2983395924801005937), + name: 'longDateFormat', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(4, 2579032794029389590), + name: 'timeFormat', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(5, 3970690908108519507), + name: 'longTimeFormat', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(6, 349893175332801783), + name: 'showConfirmationDialogOnCancel', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(7, 4049915860178079910), + name: 'showConfirmationDialogOnDelete', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(8, 3088241443557186512), + name: 'showConfirmationDialogOnStopEvent', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(18, 1203593429961092769), + name: 'nutritionMeasurementIndex', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(19, 8895176254912253797), + name: 'glucoseDisplayModeIndex', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(20, 6560414475711071975), + name: 'glucoseMeasurementIndex', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(21, 7934134105044248002), + name: 'targetGlucoseMgPerDl', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(22, 3595473653451456068), + name: 'targetGlucoseMmolPerL', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(23, 3611447442844013652), + name: 'useDarkTheme', + type: 1, + flags: 0) + ], + relations: [], + backlinks: []), + ModelEntity( + id: const IdUid(17, 5041265995704044399), + name: 'GlucoseTarget', + lastPropertyId: const IdUid(7, 1333487551279074696), + flags: 2, + properties: [ + ModelProperty( + id: const IdUid(1, 4322960567133959537), + name: 'id', + type: 6, + flags: 1), + ModelProperty( + id: const IdUid(2, 7533461804561299987), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(3, 4949963248761074916), + name: 'fromMgPerDL', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(4, 8685380695305799464), + name: 'toMgPerDl', + type: 6, + flags: 0), + ModelProperty( + id: const IdUid(5, 2925449628924807050), + name: 'fromMmolPerL', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(6, 3244873743284485064), + name: 'toMmolPerL', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(7, 1333487551279074696), + name: 'color', + type: 6, + flags: 0) + ], + relations: [], + backlinks: []), + ModelEntity( + id: const IdUid(18, 6497942314956341514), + name: 'Recipe', + lastPropertyId: const IdUid(11, 8488657312300528492), + flags: 2, + properties: [ + ModelProperty( + id: const IdUid(1, 6426741154282018946), + name: 'id', + type: 6, + flags: 1), + ModelProperty( + id: const IdUid(2, 1167304402395485629), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(3, 1244733840071626966), + name: 'name', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(9, 8593446427752839266), + name: 'notes', + type: 9, + flags: 0), + ModelProperty( + id: const IdUid(10, 4370359747396560337), + name: 'portionId', + type: 11, + flags: 520, + indexId: const IdUid(29, 5110151182694376118), + relationTarget: 'Meal'), + ModelProperty( + id: const IdUid(11, 8488657312300528492), + name: 'servings', + type: 8, + flags: 0) + ], + relations: [], + backlinks: []), + ModelEntity( + id: const IdUid(19, 6950311793136068892), + name: 'Ingredient', + lastPropertyId: const IdUid(5, 6495065881132428893), + flags: 2, + properties: [ + ModelProperty( + id: const IdUid(1, 7766569281758551418), + name: 'id', + type: 6, + flags: 1), + ModelProperty( + id: const IdUid(2, 3830559702655088692), + name: 'deleted', + type: 1, + flags: 0), + ModelProperty( + id: const IdUid(3, 602057803225843875), + name: 'amount', + type: 8, + flags: 0), + ModelProperty( + id: const IdUid(4, 26686399245586953), + name: 'recipeId', + type: 11, + flags: 520, + indexId: const IdUid(30, 5492781242713788590), + relationTarget: 'Recipe'), + ModelProperty( + id: const IdUid(5, 6495065881132428893), + name: 'ingredientId', + type: 11, + flags: 520, + indexId: const IdUid(31, 3277019237664417023), + relationTarget: 'Meal') ], relations: [], backlinks: []) @@ -665,62 +1028,53 @@ Future openStore( ModelDefinition getObjectBoxModel() { final model = ModelInfo( entities: _entities, - lastEntityId: const IdUid(18, 1283034494527412242), - lastIndexId: const IdUid(25, 1931330716440762729), + lastEntityId: const IdUid(19, 6950311793136068892), + lastIndexId: const IdUid(31, 3277019237664417023), lastRelationId: const IdUid(0, 0), lastSequenceId: const IdUid(0, 0), - retiredEntityUids: const [], - retiredIndexUids: const [], - retiredPropertyUids: const [], + retiredEntityUids: const [3095978685310268382], + retiredIndexUids: const [3670661188280692002, 7379712902406481832], + retiredPropertyUids: const [ + 3455702077061719523, + 1048198814030724077, + 9003780003858349085, + 5421422436108145565, + 7741631874181070179, + 5471636804765937328, + 6855574218883169324, + 5313708456544000157, + 3678829169126156351, + 1568597071506264632, + 8795268969829293398, + 3247926313599127440, + 8789440370359282572, + 7838546213550447420, + 8031421171668506924, + 1614362036318874174, + 1675040259141389754, + 7518219134349037920, + 2172890064639236018, + 310032577683835406, + 5588897884422150510, + 7638848982383620744, + 3282706593658092097, + 596980591281311896, + 3633551763915044903, + 2215708755581938580, + 241621230513128588, + 4678123663117222609, + 780211923138281722, + 763575433624979013, + 1225271130099322691 + ], retiredRelationUids: const [], modelVersion: 5, modelVersionParserMinimum: 5, version: 1); final bindings = { - Accuracy: EntityDefinition( - model: _entities[0], - toOneRelations: (Accuracy object) => [], - toManyRelations: (Accuracy object) => {}, - getId: (Accuracy object) => object.id, - setId: (Accuracy object, int id) { - object.id = id; - }, - objectToFB: (Accuracy object, fb.Builder fbb) { - final valueOffset = fbb.writeString(object.value); - final notesOffset = - object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(7); - fbb.addInt64(0, object.id); - fbb.addOffset(1, valueOffset); - fbb.addBool(2, object.forCarbsRatio); - fbb.addBool(3, object.forPortionSize); - fbb.addInt64(4, object.confidenceRating); - fbb.addOffset(5, notesOffset); - fbb.finish(fbb.endTable()); - return object.id; - }, - objectFromFB: (Store store, ByteData fbData) { - final buffer = fb.BufferContext(fbData); - final rootOffset = buffer.derefObject(0); - - final object = Accuracy( - id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), - value: - const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), - forCarbsRatio: - const fb.BoolReader().vTableGet(buffer, rootOffset, 8, false), - forPortionSize: const fb.BoolReader() - .vTableGet(buffer, rootOffset, 10, false), - confidenceRating: const fb.Int64Reader() - .vTableGetNullable(buffer, rootOffset, 12), - notes: const fb.StringReader() - .vTableGetNullable(buffer, rootOffset, 14)); - - return object; - }), Basal: EntityDefinition( - model: _entities[1], + model: _entities[0], toOneRelations: (Basal object) => [object.basalProfile], toManyRelations: (Basal object) => {}, getId: (Basal object) => object.id, @@ -728,12 +1082,13 @@ ModelDefinition getObjectBoxModel() { object.id = id; }, objectToFB: (Basal object, fb.Builder fbb) { - fbb.startTable(6); + fbb.startTable(7); fbb.addInt64(0, object.id); fbb.addInt64(1, object.startTime.millisecondsSinceEpoch); fbb.addInt64(2, object.endTime.millisecondsSinceEpoch); fbb.addFloat64(3, object.units); fbb.addInt64(4, object.basalProfile.targetId); + fbb.addBool(5, object.deleted); fbb.finish(fbb.endTable()); return object.id; }, @@ -743,6 +1098,8 @@ ModelDefinition getObjectBoxModel() { final object = Basal( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 14, false), startTime: DateTime.fromMillisecondsSinceEpoch( const fb.Int64Reader().vTableGet(buffer, rootOffset, 6, 0)), endTime: DateTime.fromMillisecondsSinceEpoch( @@ -755,7 +1112,7 @@ ModelDefinition getObjectBoxModel() { return object; }), BasalProfile: EntityDefinition( - model: _entities[2], + model: _entities[1], toOneRelations: (BasalProfile object) => [], toManyRelations: (BasalProfile object) => {}, getId: (BasalProfile object) => object.id, @@ -766,11 +1123,12 @@ ModelDefinition getObjectBoxModel() { final nameOffset = fbb.writeString(object.name); final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(5); + fbb.startTable(6); fbb.addInt64(0, object.id); fbb.addOffset(1, nameOffset); fbb.addBool(2, object.active); fbb.addOffset(3, notesOffset); + fbb.addBool(4, object.deleted); fbb.finish(fbb.endTable()); return object.id; }, @@ -780,6 +1138,8 @@ ModelDefinition getObjectBoxModel() { final object = BasalProfile( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 12, false), name: const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), active: @@ -790,7 +1150,7 @@ ModelDefinition getObjectBoxModel() { return object; }), Bolus: EntityDefinition( - model: _entities[3], + model: _entities[2], toOneRelations: (Bolus object) => [object.bolusProfile], toManyRelations: (Bolus object) => {}, getId: (Bolus object) => object.id, @@ -798,7 +1158,7 @@ ModelDefinition getObjectBoxModel() { object.id = id; }, objectToFB: (Bolus object, fb.Builder fbb) { - fbb.startTable(9); + fbb.startTable(10); fbb.addInt64(0, object.id); fbb.addInt64(1, object.startTime.millisecondsSinceEpoch); fbb.addInt64(2, object.endTime.millisecondsSinceEpoch); @@ -807,6 +1167,7 @@ ModelDefinition getObjectBoxModel() { fbb.addInt64(5, object.mgPerDl); fbb.addFloat64(6, object.mmolPerL); fbb.addInt64(7, object.bolusProfile.targetId); + fbb.addBool(8, object.deleted); fbb.finish(fbb.endTable()); return object.id; }, @@ -816,6 +1177,8 @@ ModelDefinition getObjectBoxModel() { final object = Bolus( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 20, false), startTime: DateTime.fromMillisecondsSinceEpoch( const fb.Int64Reader().vTableGet(buffer, rootOffset, 6, 0)), endTime: DateTime.fromMillisecondsSinceEpoch( @@ -834,7 +1197,7 @@ ModelDefinition getObjectBoxModel() { return object; }), BolusProfile: EntityDefinition( - model: _entities[4], + model: _entities[3], toOneRelations: (BolusProfile object) => [], toManyRelations: (BolusProfile object) => {}, getId: (BolusProfile object) => object.id, @@ -845,11 +1208,12 @@ ModelDefinition getObjectBoxModel() { final nameOffset = fbb.writeString(object.name); final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(5); + fbb.startTable(6); fbb.addInt64(0, object.id); fbb.addOffset(1, nameOffset); fbb.addBool(2, object.active); fbb.addOffset(3, notesOffset); + fbb.addBool(4, object.deleted); fbb.finish(fbb.endTable()); return object.id; }, @@ -859,6 +1223,8 @@ ModelDefinition getObjectBoxModel() { final object = BolusProfile( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 12, false), name: const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), active: @@ -869,19 +1235,9 @@ ModelDefinition getObjectBoxModel() { return object; }), LogEntry: EntityDefinition( - model: _entities[5], + model: _entities[4], toOneRelations: (LogEntry object) => [], - toManyRelations: (LogEntry object) => { - RelInfo.toOneBacklink( - 6, object.id, (LogEvent srcObject) => srcObject.logEntry): - object.events, - RelInfo.toOneBacklink(7, object.id, - (LogEvent srcObject) => srcObject.endLogEntry): - object.endedEvents, - RelInfo.toOneBacklink( - 10, object.id, (LogMeal srcObject) => srcObject.logEntry): - object.meals - }, + toManyRelations: (LogEntry object) => {}, getId: (LogEntry object) => object.id, setId: (LogEntry object, int id) { object.id = id; @@ -889,15 +1245,14 @@ ModelDefinition getObjectBoxModel() { objectToFB: (LogEntry object, fb.Builder fbb) { final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(9); + fbb.startTable(11); fbb.addInt64(0, object.id); fbb.addInt64(1, object.time.millisecondsSinceEpoch); fbb.addInt64(2, object.mgPerDl); fbb.addFloat64(3, object.mmolPerL); - fbb.addFloat64(4, object.bolusGlucose); - fbb.addInt64(5, object.delayedBolusDuration); - fbb.addFloat64(6, object.delayedBolusRate); fbb.addOffset(7, notesOffset); + fbb.addBool(8, object.deleted); + fbb.addFloat64(9, object.glucoseTrend); fbb.finish(fbb.endTable()); return object.id; }, @@ -907,44 +1262,25 @@ ModelDefinition getObjectBoxModel() { final object = LogEntry( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 20, false), time: DateTime.fromMillisecondsSinceEpoch( const fb.Int64Reader().vTableGet(buffer, rootOffset, 6, 0)), mgPerDl: const fb.Int64Reader() .vTableGetNullable(buffer, rootOffset, 8), mmolPerL: const fb.Float64Reader() .vTableGetNullable(buffer, rootOffset, 10), - bolusGlucose: const fb.Float64Reader() - .vTableGetNullable(buffer, rootOffset, 12), - delayedBolusDuration: const fb.Int64Reader() - .vTableGetNullable(buffer, rootOffset, 14), - delayedBolusRate: const fb.Float64Reader() - .vTableGetNullable(buffer, rootOffset, 16), + glucoseTrend: const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 22), notes: const fb.StringReader() .vTableGetNullable(buffer, rootOffset, 18)); - InternalToManyAccess.setRelInfo( - object.events, - store, - RelInfo.toOneBacklink( - 6, object.id, (LogEvent srcObject) => srcObject.logEntry), - store.box()); - InternalToManyAccess.setRelInfo( - object.endedEvents, - store, - RelInfo.toOneBacklink( - 7, object.id, (LogEvent srcObject) => srcObject.endLogEntry), - store.box()); - InternalToManyAccess.setRelInfo( - object.meals, - store, - RelInfo.toOneBacklink( - 10, object.id, (LogMeal srcObject) => srcObject.logEntry), - store.box()); + return object; }), LogEvent: EntityDefinition( - model: _entities[6], + model: _entities[5], toOneRelations: (LogEvent object) => - [object.logEntry, object.endLogEntry, object.eventType], + [object.eventType, object.bolusProfile, object.basalProfile], toManyRelations: (LogEvent object) => {}, getId: (LogEvent object) => object.id, setId: (LogEvent object, int id) { @@ -953,15 +1289,17 @@ ModelDefinition getObjectBoxModel() { objectToFB: (LogEvent object, fb.Builder fbb) { final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(9); + fbb.startTable(13); fbb.addInt64(0, object.id); fbb.addInt64(1, object.time.millisecondsSinceEpoch); fbb.addInt64(2, object.endTime?.millisecondsSinceEpoch); fbb.addBool(3, object.hasEndTime); fbb.addOffset(4, notesOffset); - fbb.addInt64(5, object.logEntry.targetId); - fbb.addInt64(6, object.endLogEntry.targetId); fbb.addInt64(7, object.eventType.targetId); + fbb.addBool(8, object.deleted); + fbb.addInt64(9, object.bolusProfile.targetId); + fbb.addInt64(10, object.basalProfile.targetId); + fbb.addInt64(11, object.reminderDuration); fbb.finish(fbb.endTable()); return object.id; }, @@ -972,6 +1310,8 @@ ModelDefinition getObjectBoxModel() { const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 8); final object = LogEvent( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 20, false), time: DateTime.fromMillisecondsSinceEpoch( const fb.Int64Reader().vTableGet(buffer, rootOffset, 6, 0)), endTime: endTimeValue == null @@ -979,22 +1319,25 @@ ModelDefinition getObjectBoxModel() { : DateTime.fromMillisecondsSinceEpoch(endTimeValue), hasEndTime: const fb.BoolReader() .vTableGet(buffer, rootOffset, 10, false), + reminderDuration: const fb.Int64Reader() + .vTableGetNullable(buffer, rootOffset, 26), notes: const fb.StringReader() .vTableGetNullable(buffer, rootOffset, 12)); - object.logEntry.targetId = - const fb.Int64Reader().vTableGet(buffer, rootOffset, 14, 0); - object.logEntry.attach(store); - object.endLogEntry.targetId = - const fb.Int64Reader().vTableGet(buffer, rootOffset, 16, 0); - object.endLogEntry.attach(store); object.eventType.targetId = const fb.Int64Reader().vTableGet(buffer, rootOffset, 18, 0); object.eventType.attach(store); + object.bolusProfile.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 22, 0); + object.bolusProfile.attach(store); + object.basalProfile.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 24, 0); + object.basalProfile.attach(store); return object; }), LogEventType: EntityDefinition( - model: _entities[7], - toOneRelations: (LogEventType object) => [], + model: _entities[6], + toOneRelations: (LogEventType object) => + [object.bolusProfile, object.basalProfile], toManyRelations: (LogEventType object) => {}, getId: (LogEventType object) => object.id, setId: (LogEventType object, int id) { @@ -1004,12 +1347,15 @@ ModelDefinition getObjectBoxModel() { final valueOffset = fbb.writeString(object.value); final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(6); + fbb.startTable(9); fbb.addInt64(0, object.id); fbb.addOffset(1, valueOffset); fbb.addBool(2, object.hasEndTime); fbb.addInt64(3, object.defaultReminderDuration); fbb.addOffset(4, notesOffset); + fbb.addBool(5, object.deleted); + fbb.addInt64(6, object.bolusProfile.targetId); + fbb.addInt64(7, object.basalProfile.targetId); fbb.finish(fbb.endTable()); return object.id; }, @@ -1019,6 +1365,8 @@ ModelDefinition getObjectBoxModel() { final object = LogEventType( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 14, false), value: const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), hasEndTime: @@ -1027,11 +1375,16 @@ ModelDefinition getObjectBoxModel() { .vTableGetNullable(buffer, rootOffset, 10), notes: const fb.StringReader() .vTableGetNullable(buffer, rootOffset, 12)); - + object.bolusProfile.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 16, 0); + object.bolusProfile.attach(store); + object.basalProfile.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 18, 0); + object.basalProfile.attach(store); return object; }), LogMeal: EntityDefinition( - model: _entities[8], + model: _entities[7], toOneRelations: (LogMeal object) => [ object.logEntry, object.meal, @@ -1050,15 +1403,12 @@ ModelDefinition getObjectBoxModel() { final valueOffset = fbb.writeString(object.value); final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(17); + fbb.startTable(20); fbb.addInt64(0, object.id); fbb.addOffset(1, valueOffset); fbb.addFloat64(2, object.carbsRatio); fbb.addFloat64(3, object.portionSize); - fbb.addFloat64(4, object.carbsPerPortion); fbb.addFloat64(5, object.bolus); - fbb.addInt64(6, object.delayedBolusDuration); - fbb.addFloat64(7, object.delayedBolusRate); fbb.addOffset(8, notesOffset); fbb.addInt64(9, object.logEntry.targetId); fbb.addInt64(10, object.meal.targetId); @@ -1067,6 +1417,9 @@ ModelDefinition getObjectBoxModel() { fbb.addInt64(13, object.mealPortionType.targetId); fbb.addInt64(14, object.portionSizeAccuracy.targetId); fbb.addInt64(15, object.carbsRatioAccuracy.targetId); + fbb.addBool(16, object.deleted); + fbb.addFloat64(17, object.amount); + fbb.addFloat64(18, object.totalCarbs); fbb.finish(fbb.endTable()); return object.id; }, @@ -1076,22 +1429,22 @@ ModelDefinition getObjectBoxModel() { final object = LogMeal( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 36, false), value: const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), + amount: + const fb.Float64Reader().vTableGet(buffer, rootOffset, 38, 0), carbsRatio: const fb.Float64Reader() .vTableGetNullable(buffer, rootOffset, 8), portionSize: const fb.Float64Reader() .vTableGetNullable(buffer, rootOffset, 10), - carbsPerPortion: const fb.Float64Reader() - .vTableGetNullable(buffer, rootOffset, 12), - bolus: const fb.Float64Reader() - .vTableGetNullable(buffer, rootOffset, 14), - delayedBolusDuration: const fb.Int64Reader() - .vTableGetNullable(buffer, rootOffset, 16), - delayedBolusRate: const fb.Float64Reader() - .vTableGetNullable(buffer, rootOffset, 18), + totalCarbs: const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 40), notes: const fb.StringReader() - .vTableGetNullable(buffer, rootOffset, 20)); + .vTableGetNullable(buffer, rootOffset, 20)) + ..bolus = const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 14); object.logEntry.targetId = const fb.Int64Reader().vTableGet(buffer, rootOffset, 22, 0); object.logEntry.attach(store); @@ -1116,7 +1469,7 @@ ModelDefinition getObjectBoxModel() { return object; }), Meal: EntityDefinition( - model: _entities[9], + model: _entities[8], toOneRelations: (Meal object) => [ object.mealSource, object.mealCategory, @@ -1133,20 +1486,21 @@ ModelDefinition getObjectBoxModel() { final valueOffset = fbb.writeString(object.value); final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(14); + fbb.startTable(16); fbb.addInt64(0, object.id); fbb.addOffset(1, valueOffset); fbb.addFloat64(2, object.carbsRatio); fbb.addFloat64(3, object.portionSize); fbb.addFloat64(4, object.carbsPerPortion); fbb.addInt64(5, object.delayedBolusDuration); - fbb.addFloat64(6, object.delayedBolusRate); fbb.addOffset(7, notesOffset); fbb.addInt64(8, object.mealSource.targetId); fbb.addInt64(9, object.mealCategory.targetId); fbb.addInt64(10, object.mealPortionType.targetId); fbb.addInt64(11, object.portionSizeAccuracy.targetId); fbb.addInt64(12, object.carbsRatioAccuracy.targetId); + fbb.addBool(13, object.deleted); + fbb.addFloat64(14, object.delayedBolusPercentage); fbb.finish(fbb.endTable()); return object.id; }, @@ -1156,6 +1510,8 @@ ModelDefinition getObjectBoxModel() { final object = Meal( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 30, false), value: const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), carbsRatio: const fb.Float64Reader() @@ -1166,8 +1522,8 @@ ModelDefinition getObjectBoxModel() { .vTableGetNullable(buffer, rootOffset, 12), delayedBolusDuration: const fb.Int64Reader() .vTableGetNullable(buffer, rootOffset, 14), - delayedBolusRate: const fb.Float64Reader() - .vTableGetNullable(buffer, rootOffset, 16), + delayedBolusPercentage: const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 32), notes: const fb.StringReader() .vTableGetNullable(buffer, rootOffset, 18)); object.mealSource.targetId = @@ -1188,7 +1544,7 @@ ModelDefinition getObjectBoxModel() { return object; }), MealCategory: EntityDefinition( - model: _entities[10], + model: _entities[9], toOneRelations: (MealCategory object) => [], toManyRelations: (MealCategory object) => {}, getId: (MealCategory object) => object.id, @@ -1199,10 +1555,11 @@ ModelDefinition getObjectBoxModel() { final valueOffset = fbb.writeString(object.value); final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(4); + fbb.startTable(5); fbb.addInt64(0, object.id); fbb.addOffset(1, valueOffset); fbb.addOffset(2, notesOffset); + fbb.addBool(3, object.deleted); fbb.finish(fbb.endTable()); return object.id; }, @@ -1212,6 +1569,8 @@ ModelDefinition getObjectBoxModel() { final object = MealCategory( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 10, false), value: const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), notes: const fb.StringReader() @@ -1220,7 +1579,7 @@ ModelDefinition getObjectBoxModel() { return object; }), MealPortionType: EntityDefinition( - model: _entities[11], + model: _entities[10], toOneRelations: (MealPortionType object) => [], toManyRelations: (MealPortionType object) => {}, getId: (MealPortionType object) => object.id, @@ -1231,10 +1590,11 @@ ModelDefinition getObjectBoxModel() { final valueOffset = fbb.writeString(object.value); final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(4); + fbb.startTable(5); fbb.addInt64(0, object.id); fbb.addOffset(1, valueOffset); fbb.addOffset(2, notesOffset); + fbb.addBool(3, object.deleted); fbb.finish(fbb.endTable()); return object.id; }, @@ -1244,6 +1604,8 @@ ModelDefinition getObjectBoxModel() { final object = MealPortionType( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 10, false), value: const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), notes: const fb.StringReader() @@ -1252,7 +1614,7 @@ ModelDefinition getObjectBoxModel() { return object; }), MealSource: EntityDefinition( - model: _entities[12], + model: _entities[11], toOneRelations: (MealSource object) => [ object.defaultMealCategory, object.defaultMealPortionType, @@ -1268,7 +1630,7 @@ ModelDefinition getObjectBoxModel() { final valueOffset = fbb.writeString(object.value); final notesOffset = object.notes == null ? null : fbb.writeString(object.notes!); - fbb.startTable(8); + fbb.startTable(9); fbb.addInt64(0, object.id); fbb.addOffset(1, valueOffset); fbb.addOffset(2, notesOffset); @@ -1276,6 +1638,7 @@ ModelDefinition getObjectBoxModel() { fbb.addInt64(4, object.defaultMealPortionType.targetId); fbb.addInt64(5, object.defaultCarbsRatioAccuracy.targetId); fbb.addInt64(6, object.defaultPortionSizeAccuracy.targetId); + fbb.addBool(7, object.deleted); fbb.finish(fbb.endTable()); return object.id; }, @@ -1285,6 +1648,8 @@ ModelDefinition getObjectBoxModel() { final object = MealSource( id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 18, false), value: const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), notes: const fb.StringReader() @@ -1302,393 +1667,952 @@ ModelDefinition getObjectBoxModel() { const fb.Int64Reader().vTableGet(buffer, rootOffset, 16, 0); object.defaultPortionSizeAccuracy.attach(store); return object; + }), + LogBolus: EntityDefinition( + model: _entities[12], + toOneRelations: (LogBolus object) => + [object.logEntry, object.rate, object.meal], + toManyRelations: (LogBolus object) => {}, + getId: (LogBolus object) => object.id, + setId: (LogBolus object, int id) { + object.id = id; + }, + objectToFB: (LogBolus object, fb.Builder fbb) { + final notesOffset = + object.notes == null ? null : fbb.writeString(object.notes!); + fbb.startTable(19); + fbb.addInt64(0, object.id); + fbb.addFloat64(1, object.units); + fbb.addFloat64(2, object.carbs); + fbb.addInt64(3, object.delay); + fbb.addBool(6, object.setManually); + fbb.addOffset(7, notesOffset); + fbb.addInt64(8, object.logEntry.targetId); + fbb.addInt64(9, object.rate.targetId); + fbb.addInt64(10, object.meal.targetId); + fbb.addBool(11, object.deleted); + fbb.addInt64(12, object.mgPerDlCurrent); + fbb.addInt64(13, object.mgPerDlTarget); + fbb.addInt64(14, object.mgPerDlCorrection); + fbb.addFloat64(15, object.mmolPerLCurrent); + fbb.addFloat64(16, object.mmolPerLTarget); + fbb.addFloat64(17, object.mmolPerLCorrection); + fbb.finish(fbb.endTable()); + return object.id; + }, + objectFromFB: (Store store, ByteData fbData) { + final buffer = fb.BufferContext(fbData); + final rootOffset = buffer.derefObject(0); + + final object = LogBolus( + id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 26, false), + units: + const fb.Float64Reader().vTableGet(buffer, rootOffset, 6, 0), + carbs: const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 8), + delay: const fb.Int64Reader() + .vTableGetNullable(buffer, rootOffset, 10), + mgPerDlCurrent: const fb.Int64Reader() + .vTableGetNullable(buffer, rootOffset, 28), + mgPerDlTarget: const fb.Int64Reader() + .vTableGetNullable(buffer, rootOffset, 30), + mgPerDlCorrection: const fb.Int64Reader() + .vTableGetNullable(buffer, rootOffset, 32), + mmolPerLCurrent: const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 34), + mmolPerLTarget: const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 36), + mmolPerLCorrection: const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 38), + setManually: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 16, false), + notes: const fb.StringReader() + .vTableGetNullable(buffer, rootOffset, 18)); + object.logEntry.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 20, 0); + object.logEntry.attach(store); + object.rate.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 22, 0); + object.rate.attach(store); + object.meal.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 24, 0); + object.meal.attach(store); + return object; + }), + Accuracy: EntityDefinition( + model: _entities[13], + toOneRelations: (Accuracy object) => [], + toManyRelations: (Accuracy object) => {}, + getId: (Accuracy object) => object.id, + setId: (Accuracy object, int id) { + object.id = id; + }, + objectToFB: (Accuracy object, fb.Builder fbb) { + final valueOffset = fbb.writeString(object.value); + final notesOffset = + object.notes == null ? null : fbb.writeString(object.notes!); + fbb.startTable(8); + fbb.addInt64(0, object.id); + fbb.addOffset(1, valueOffset); + fbb.addBool(2, object.forCarbsRatio); + fbb.addBool(3, object.forPortionSize); + fbb.addInt64(4, object.confidenceRating); + fbb.addOffset(5, notesOffset); + fbb.addBool(6, object.deleted); + fbb.finish(fbb.endTable()); + return object.id; + }, + objectFromFB: (Store store, ByteData fbData) { + final buffer = fb.BufferContext(fbData); + final rootOffset = buffer.derefObject(0); + + final object = Accuracy( + id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 16, false), + value: + const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), + forCarbsRatio: + const fb.BoolReader().vTableGet(buffer, rootOffset, 8, false), + forPortionSize: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 10, false), + confidenceRating: const fb.Int64Reader() + .vTableGetNullable(buffer, rootOffset, 12), + notes: const fb.StringReader() + .vTableGetNullable(buffer, rootOffset, 14)); + + return object; + }), + Settings: EntityDefinition( + model: _entities[14], + toOneRelations: (Settings object) => [], + toManyRelations: (Settings object) => {}, + getId: (Settings object) => object.id, + setId: (Settings object, int id) { + object.id = id; + }, + objectToFB: (Settings object, fb.Builder fbb) { + final dateFormatOffset = fbb.writeString(object.dateFormat); + final longDateFormatOffset = object.longDateFormat == null + ? null + : fbb.writeString(object.longDateFormat!); + final timeFormatOffset = fbb.writeString(object.timeFormat); + final longTimeFormatOffset = object.longTimeFormat == null + ? null + : fbb.writeString(object.longTimeFormat!); + fbb.startTable(24); + fbb.addInt64(0, object.id); + fbb.addOffset(1, dateFormatOffset); + fbb.addOffset(2, longDateFormatOffset); + fbb.addOffset(3, timeFormatOffset); + fbb.addOffset(4, longTimeFormatOffset); + fbb.addBool(5, object.showConfirmationDialogOnCancel); + fbb.addBool(6, object.showConfirmationDialogOnDelete); + fbb.addBool(7, object.showConfirmationDialogOnStopEvent); + fbb.addInt64(17, object.nutritionMeasurementIndex); + fbb.addInt64(18, object.glucoseDisplayModeIndex); + fbb.addInt64(19, object.glucoseMeasurementIndex); + fbb.addInt64(20, object.targetGlucoseMgPerDl); + fbb.addFloat64(21, object.targetGlucoseMmolPerL); + fbb.addBool(22, object.useDarkTheme); + fbb.finish(fbb.endTable()); + return object.id; + }, + objectFromFB: (Store store, ByteData fbData) { + final buffer = fb.BufferContext(fbData); + final rootOffset = buffer.derefObject(0); + + final object = Settings( + id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + nutritionMeasurementIndex: + const fb.Int64Reader().vTableGet(buffer, rootOffset, 38, 0), + glucoseDisplayModeIndex: + const fb.Int64Reader().vTableGet(buffer, rootOffset, 40, 0), + glucoseMeasurementIndex: + const fb.Int64Reader().vTableGet(buffer, rootOffset, 42, 0), + dateFormat: + const fb.StringReader().vTableGet(buffer, rootOffset, 6, ''), + longDateFormat: const fb.StringReader() + .vTableGetNullable(buffer, rootOffset, 8), + timeFormat: + const fb.StringReader().vTableGet(buffer, rootOffset, 10, ''), + longTimeFormat: const fb.StringReader() + .vTableGetNullable(buffer, rootOffset, 12), + showConfirmationDialogOnCancel: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 14, false), + showConfirmationDialogOnDelete: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 16, false), + showConfirmationDialogOnStopEvent: const fb.BoolReader() + .vTableGet(buffer, rootOffset, 18, false), + targetGlucoseMgPerDl: + const fb.Int64Reader().vTableGet(buffer, rootOffset, 44, 0), + targetGlucoseMmolPerL: + const fb.Float64Reader().vTableGet(buffer, rootOffset, 46, 0), + useDarkTheme: const fb.BoolReader().vTableGet(buffer, rootOffset, 48, false)); + + return object; + }), + GlucoseTarget: EntityDefinition( + model: _entities[15], + toOneRelations: (GlucoseTarget object) => [], + toManyRelations: (GlucoseTarget object) => {}, + getId: (GlucoseTarget object) => object.id, + setId: (GlucoseTarget object, int id) { + object.id = id; + }, + objectToFB: (GlucoseTarget object, fb.Builder fbb) { + fbb.startTable(8); + fbb.addInt64(0, object.id); + fbb.addBool(1, object.deleted); + fbb.addInt64(2, object.fromMgPerDL); + fbb.addInt64(3, object.toMgPerDl); + fbb.addFloat64(4, object.fromMmolPerL); + fbb.addFloat64(5, object.toMmolPerL); + fbb.addInt64(6, object.color); + fbb.finish(fbb.endTable()); + return object.id; + }, + objectFromFB: (Store store, ByteData fbData) { + final buffer = fb.BufferContext(fbData); + final rootOffset = buffer.derefObject(0); + + final object = GlucoseTarget( + id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: + const fb.BoolReader().vTableGet(buffer, rootOffset, 6, false), + fromMgPerDL: + const fb.Int64Reader().vTableGet(buffer, rootOffset, 8, 0), + toMgPerDl: + const fb.Int64Reader().vTableGet(buffer, rootOffset, 10, 0), + fromMmolPerL: + const fb.Float64Reader().vTableGet(buffer, rootOffset, 12, 0), + toMmolPerL: + const fb.Float64Reader().vTableGet(buffer, rootOffset, 14, 0), + color: + const fb.Int64Reader().vTableGet(buffer, rootOffset, 16, 0)); + + return object; + }), + Recipe: EntityDefinition( + model: _entities[16], + toOneRelations: (Recipe object) => [object.portion], + toManyRelations: (Recipe object) => {}, + getId: (Recipe object) => object.id, + setId: (Recipe object, int id) { + object.id = id; + }, + objectToFB: (Recipe object, fb.Builder fbb) { + final nameOffset = fbb.writeString(object.name); + final notesOffset = + object.notes == null ? null : fbb.writeString(object.notes!); + fbb.startTable(12); + fbb.addInt64(0, object.id); + fbb.addBool(1, object.deleted); + fbb.addOffset(2, nameOffset); + fbb.addOffset(8, notesOffset); + fbb.addInt64(9, object.portion.targetId); + fbb.addFloat64(10, object.servings); + fbb.finish(fbb.endTable()); + return object.id; + }, + objectFromFB: (Store store, ByteData fbData) { + final buffer = fb.BufferContext(fbData); + final rootOffset = buffer.derefObject(0); + + final object = Recipe( + id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: + const fb.BoolReader().vTableGet(buffer, rootOffset, 6, false), + name: + const fb.StringReader().vTableGet(buffer, rootOffset, 8, ''), + servings: const fb.Float64Reader() + .vTableGetNullable(buffer, rootOffset, 24), + notes: const fb.StringReader() + .vTableGetNullable(buffer, rootOffset, 20)); + object.portion.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 22, 0); + object.portion.attach(store); + return object; + }), + Ingredient: EntityDefinition( + model: _entities[17], + toOneRelations: (Ingredient object) => + [object.recipe, object.ingredient], + toManyRelations: (Ingredient object) => {}, + getId: (Ingredient object) => object.id, + setId: (Ingredient object, int id) { + object.id = id; + }, + objectToFB: (Ingredient object, fb.Builder fbb) { + fbb.startTable(6); + fbb.addInt64(0, object.id); + fbb.addBool(1, object.deleted); + fbb.addFloat64(2, object.amount); + fbb.addInt64(3, object.recipe.targetId); + fbb.addInt64(4, object.ingredient.targetId); + fbb.finish(fbb.endTable()); + return object.id; + }, + objectFromFB: (Store store, ByteData fbData) { + final buffer = fb.BufferContext(fbData); + final rootOffset = buffer.derefObject(0); + + final object = Ingredient( + id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0), + deleted: + const fb.BoolReader().vTableGet(buffer, rootOffset, 6, false), + amount: + const fb.Float64Reader().vTableGet(buffer, rootOffset, 8, 0)); + object.recipe.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 10, 0); + object.recipe.attach(store); + object.ingredient.targetId = + const fb.Int64Reader().vTableGet(buffer, rootOffset, 12, 0); + object.ingredient.attach(store); + return object; }) }; return ModelDefinition(model, bindings); } -/// [Accuracy] entity fields to define ObjectBox queries. -class Accuracy_ { - /// see [Accuracy.id] - static final id = QueryIntegerProperty(_entities[0].properties[0]); - - /// see [Accuracy.value] - static final value = - QueryStringProperty(_entities[0].properties[1]); - - /// see [Accuracy.forCarbsRatio] - static final forCarbsRatio = - QueryBooleanProperty(_entities[0].properties[2]); - - /// see [Accuracy.forPortionSize] - static final forPortionSize = - QueryBooleanProperty(_entities[0].properties[3]); - - /// see [Accuracy.confidenceRating] - static final confidenceRating = - QueryIntegerProperty(_entities[0].properties[4]); - - /// see [Accuracy.notes] - static final notes = - QueryStringProperty(_entities[0].properties[5]); -} - /// [Basal] entity fields to define ObjectBox queries. class Basal_ { /// see [Basal.id] - static final id = QueryIntegerProperty(_entities[1].properties[0]); + static final id = QueryIntegerProperty(_entities[0].properties[0]); /// see [Basal.startTime] static final startTime = - QueryIntegerProperty(_entities[1].properties[1]); + QueryIntegerProperty(_entities[0].properties[1]); /// see [Basal.endTime] static final endTime = - QueryIntegerProperty(_entities[1].properties[2]); + QueryIntegerProperty(_entities[0].properties[2]); /// see [Basal.units] - static final units = QueryDoubleProperty(_entities[1].properties[3]); + static final units = QueryDoubleProperty(_entities[0].properties[3]); /// see [Basal.basalProfile] static final basalProfile = - QueryRelationToOne(_entities[1].properties[4]); + QueryRelationToOne(_entities[0].properties[4]); + + /// see [Basal.deleted] + static final deleted = + QueryBooleanProperty(_entities[0].properties[5]); } /// [BasalProfile] entity fields to define ObjectBox queries. class BasalProfile_ { /// see [BasalProfile.id] static final id = - QueryIntegerProperty(_entities[2].properties[0]); + QueryIntegerProperty(_entities[1].properties[0]); /// see [BasalProfile.name] static final name = - QueryStringProperty(_entities[2].properties[1]); + QueryStringProperty(_entities[1].properties[1]); /// see [BasalProfile.active] static final active = - QueryBooleanProperty(_entities[2].properties[2]); + QueryBooleanProperty(_entities[1].properties[2]); /// see [BasalProfile.notes] static final notes = - QueryStringProperty(_entities[2].properties[3]); + QueryStringProperty(_entities[1].properties[3]); + + /// see [BasalProfile.deleted] + static final deleted = + QueryBooleanProperty(_entities[1].properties[4]); } /// [Bolus] entity fields to define ObjectBox queries. class Bolus_ { /// see [Bolus.id] - static final id = QueryIntegerProperty(_entities[3].properties[0]); + static final id = QueryIntegerProperty(_entities[2].properties[0]); /// see [Bolus.startTime] static final startTime = - QueryIntegerProperty(_entities[3].properties[1]); + QueryIntegerProperty(_entities[2].properties[1]); /// see [Bolus.endTime] static final endTime = - QueryIntegerProperty(_entities[3].properties[2]); + QueryIntegerProperty(_entities[2].properties[2]); /// see [Bolus.units] - static final units = QueryDoubleProperty(_entities[3].properties[3]); + static final units = QueryDoubleProperty(_entities[2].properties[3]); /// see [Bolus.carbs] - static final carbs = QueryDoubleProperty(_entities[3].properties[4]); + static final carbs = QueryDoubleProperty(_entities[2].properties[4]); /// see [Bolus.mgPerDl] static final mgPerDl = - QueryIntegerProperty(_entities[3].properties[5]); + QueryIntegerProperty(_entities[2].properties[5]); /// see [Bolus.mmolPerL] static final mmolPerL = - QueryDoubleProperty(_entities[3].properties[6]); + QueryDoubleProperty(_entities[2].properties[6]); /// see [Bolus.bolusProfile] static final bolusProfile = - QueryRelationToOne(_entities[3].properties[7]); + QueryRelationToOne(_entities[2].properties[7]); + + /// see [Bolus.deleted] + static final deleted = + QueryBooleanProperty(_entities[2].properties[8]); } /// [BolusProfile] entity fields to define ObjectBox queries. class BolusProfile_ { /// see [BolusProfile.id] static final id = - QueryIntegerProperty(_entities[4].properties[0]); + QueryIntegerProperty(_entities[3].properties[0]); /// see [BolusProfile.name] static final name = - QueryStringProperty(_entities[4].properties[1]); + QueryStringProperty(_entities[3].properties[1]); /// see [BolusProfile.active] static final active = - QueryBooleanProperty(_entities[4].properties[2]); + QueryBooleanProperty(_entities[3].properties[2]); /// see [BolusProfile.notes] static final notes = - QueryStringProperty(_entities[4].properties[3]); + QueryStringProperty(_entities[3].properties[3]); + + /// see [BolusProfile.deleted] + static final deleted = + QueryBooleanProperty(_entities[3].properties[4]); } /// [LogEntry] entity fields to define ObjectBox queries. class LogEntry_ { /// see [LogEntry.id] - static final id = QueryIntegerProperty(_entities[5].properties[0]); + static final id = QueryIntegerProperty(_entities[4].properties[0]); /// see [LogEntry.time] static final time = - QueryIntegerProperty(_entities[5].properties[1]); + QueryIntegerProperty(_entities[4].properties[1]); /// see [LogEntry.mgPerDl] static final mgPerDl = - QueryIntegerProperty(_entities[5].properties[2]); + QueryIntegerProperty(_entities[4].properties[2]); /// see [LogEntry.mmolPerL] static final mmolPerL = - QueryDoubleProperty(_entities[5].properties[3]); - - /// see [LogEntry.bolusGlucose] - static final bolusGlucose = - QueryDoubleProperty(_entities[5].properties[4]); - - /// see [LogEntry.delayedBolusDuration] - static final delayedBolusDuration = - QueryIntegerProperty(_entities[5].properties[5]); - - /// see [LogEntry.delayedBolusRate] - static final delayedBolusRate = - QueryDoubleProperty(_entities[5].properties[6]); + QueryDoubleProperty(_entities[4].properties[3]); /// see [LogEntry.notes] static final notes = - QueryStringProperty(_entities[5].properties[7]); + QueryStringProperty(_entities[4].properties[4]); + + /// see [LogEntry.deleted] + static final deleted = + QueryBooleanProperty(_entities[4].properties[5]); + + /// see [LogEntry.glucoseTrend] + static final glucoseTrend = + QueryDoubleProperty(_entities[4].properties[6]); } /// [LogEvent] entity fields to define ObjectBox queries. class LogEvent_ { /// see [LogEvent.id] - static final id = QueryIntegerProperty(_entities[6].properties[0]); + static final id = QueryIntegerProperty(_entities[5].properties[0]); /// see [LogEvent.time] static final time = - QueryIntegerProperty(_entities[6].properties[1]); + QueryIntegerProperty(_entities[5].properties[1]); /// see [LogEvent.endTime] static final endTime = - QueryIntegerProperty(_entities[6].properties[2]); + QueryIntegerProperty(_entities[5].properties[2]); /// see [LogEvent.hasEndTime] static final hasEndTime = - QueryBooleanProperty(_entities[6].properties[3]); + QueryBooleanProperty(_entities[5].properties[3]); /// see [LogEvent.notes] static final notes = - QueryStringProperty(_entities[6].properties[4]); - - /// see [LogEvent.logEntry] - static final logEntry = - QueryRelationToOne(_entities[6].properties[5]); - - /// see [LogEvent.endLogEntry] - static final endLogEntry = - QueryRelationToOne(_entities[6].properties[6]); + QueryStringProperty(_entities[5].properties[4]); /// see [LogEvent.eventType] static final eventType = - QueryRelationToOne(_entities[6].properties[7]); + QueryRelationToOne(_entities[5].properties[5]); + + /// see [LogEvent.deleted] + static final deleted = + QueryBooleanProperty(_entities[5].properties[6]); + + /// see [LogEvent.bolusProfile] + static final bolusProfile = + QueryRelationToOne(_entities[5].properties[7]); + + /// see [LogEvent.basalProfile] + static final basalProfile = + QueryRelationToOne(_entities[5].properties[8]); + + /// see [LogEvent.reminderDuration] + static final reminderDuration = + QueryIntegerProperty(_entities[5].properties[9]); } /// [LogEventType] entity fields to define ObjectBox queries. class LogEventType_ { /// see [LogEventType.id] static final id = - QueryIntegerProperty(_entities[7].properties[0]); + QueryIntegerProperty(_entities[6].properties[0]); /// see [LogEventType.value] static final value = - QueryStringProperty(_entities[7].properties[1]); + QueryStringProperty(_entities[6].properties[1]); /// see [LogEventType.hasEndTime] static final hasEndTime = - QueryBooleanProperty(_entities[7].properties[2]); + QueryBooleanProperty(_entities[6].properties[2]); /// see [LogEventType.defaultReminderDuration] static final defaultReminderDuration = - QueryIntegerProperty(_entities[7].properties[3]); + QueryIntegerProperty(_entities[6].properties[3]); /// see [LogEventType.notes] static final notes = - QueryStringProperty(_entities[7].properties[4]); + QueryStringProperty(_entities[6].properties[4]); + + /// see [LogEventType.deleted] + static final deleted = + QueryBooleanProperty(_entities[6].properties[5]); + + /// see [LogEventType.bolusProfile] + static final bolusProfile = QueryRelationToOne( + _entities[6].properties[6]); + + /// see [LogEventType.basalProfile] + static final basalProfile = QueryRelationToOne( + _entities[6].properties[7]); } /// [LogMeal] entity fields to define ObjectBox queries. class LogMeal_ { /// see [LogMeal.id] - static final id = QueryIntegerProperty(_entities[8].properties[0]); + static final id = QueryIntegerProperty(_entities[7].properties[0]); /// see [LogMeal.value] - static final value = QueryStringProperty(_entities[8].properties[1]); + static final value = QueryStringProperty(_entities[7].properties[1]); /// see [LogMeal.carbsRatio] static final carbsRatio = - QueryDoubleProperty(_entities[8].properties[2]); + QueryDoubleProperty(_entities[7].properties[2]); /// see [LogMeal.portionSize] static final portionSize = - QueryDoubleProperty(_entities[8].properties[3]); - - /// see [LogMeal.carbsPerPortion] - static final carbsPerPortion = - QueryDoubleProperty(_entities[8].properties[4]); + QueryDoubleProperty(_entities[7].properties[3]); /// see [LogMeal.bolus] - static final bolus = QueryDoubleProperty(_entities[8].properties[5]); - - /// see [LogMeal.delayedBolusDuration] - static final delayedBolusDuration = - QueryIntegerProperty(_entities[8].properties[6]); - - /// see [LogMeal.delayedBolusRate] - static final delayedBolusRate = - QueryDoubleProperty(_entities[8].properties[7]); + static final bolus = QueryDoubleProperty(_entities[7].properties[4]); /// see [LogMeal.notes] - static final notes = QueryStringProperty(_entities[8].properties[8]); + static final notes = QueryStringProperty(_entities[7].properties[5]); /// see [LogMeal.logEntry] static final logEntry = - QueryRelationToOne(_entities[8].properties[9]); + QueryRelationToOne(_entities[7].properties[6]); /// see [LogMeal.meal] static final meal = - QueryRelationToOne(_entities[8].properties[10]); + QueryRelationToOne(_entities[7].properties[7]); /// see [LogMeal.mealSource] static final mealSource = - QueryRelationToOne(_entities[8].properties[11]); + QueryRelationToOne(_entities[7].properties[8]); /// see [LogMeal.mealCategory] static final mealCategory = - QueryRelationToOne(_entities[8].properties[12]); + QueryRelationToOne(_entities[7].properties[9]); /// see [LogMeal.mealPortionType] static final mealPortionType = - QueryRelationToOne(_entities[8].properties[13]); + QueryRelationToOne(_entities[7].properties[10]); /// see [LogMeal.portionSizeAccuracy] static final portionSizeAccuracy = - QueryRelationToOne(_entities[8].properties[14]); + QueryRelationToOne(_entities[7].properties[11]); /// see [LogMeal.carbsRatioAccuracy] static final carbsRatioAccuracy = - QueryRelationToOne(_entities[8].properties[15]); + QueryRelationToOne(_entities[7].properties[12]); + + /// see [LogMeal.deleted] + static final deleted = + QueryBooleanProperty(_entities[7].properties[13]); + + /// see [LogMeal.amount] + static final amount = + QueryDoubleProperty(_entities[7].properties[14]); + + /// see [LogMeal.totalCarbs] + static final totalCarbs = + QueryDoubleProperty(_entities[7].properties[15]); } /// [Meal] entity fields to define ObjectBox queries. class Meal_ { /// see [Meal.id] - static final id = QueryIntegerProperty(_entities[9].properties[0]); + static final id = QueryIntegerProperty(_entities[8].properties[0]); /// see [Meal.value] - static final value = QueryStringProperty(_entities[9].properties[1]); + static final value = QueryStringProperty(_entities[8].properties[1]); /// see [Meal.carbsRatio] static final carbsRatio = - QueryDoubleProperty(_entities[9].properties[2]); + QueryDoubleProperty(_entities[8].properties[2]); /// see [Meal.portionSize] static final portionSize = - QueryDoubleProperty(_entities[9].properties[3]); + QueryDoubleProperty(_entities[8].properties[3]); /// see [Meal.carbsPerPortion] static final carbsPerPortion = - QueryDoubleProperty(_entities[9].properties[4]); + QueryDoubleProperty(_entities[8].properties[4]); /// see [Meal.delayedBolusDuration] static final delayedBolusDuration = - QueryIntegerProperty(_entities[9].properties[5]); - - /// see [Meal.delayedBolusRate] - static final delayedBolusRate = - QueryDoubleProperty(_entities[9].properties[6]); + QueryIntegerProperty(_entities[8].properties[5]); /// see [Meal.notes] - static final notes = QueryStringProperty(_entities[9].properties[7]); + static final notes = QueryStringProperty(_entities[8].properties[6]); /// see [Meal.mealSource] static final mealSource = - QueryRelationToOne(_entities[9].properties[8]); + QueryRelationToOne(_entities[8].properties[7]); /// see [Meal.mealCategory] static final mealCategory = - QueryRelationToOne(_entities[9].properties[9]); + QueryRelationToOne(_entities[8].properties[8]); /// see [Meal.mealPortionType] static final mealPortionType = - QueryRelationToOne(_entities[9].properties[10]); + QueryRelationToOne(_entities[8].properties[9]); /// see [Meal.portionSizeAccuracy] static final portionSizeAccuracy = - QueryRelationToOne(_entities[9].properties[11]); + QueryRelationToOne(_entities[8].properties[10]); /// see [Meal.carbsRatioAccuracy] static final carbsRatioAccuracy = - QueryRelationToOne(_entities[9].properties[12]); + QueryRelationToOne(_entities[8].properties[11]); + + /// see [Meal.deleted] + static final deleted = + QueryBooleanProperty(_entities[8].properties[12]); + + /// see [Meal.delayedBolusPercentage] + static final delayedBolusPercentage = + QueryDoubleProperty(_entities[8].properties[13]); } /// [MealCategory] entity fields to define ObjectBox queries. class MealCategory_ { /// see [MealCategory.id] static final id = - QueryIntegerProperty(_entities[10].properties[0]); + QueryIntegerProperty(_entities[9].properties[0]); /// see [MealCategory.value] static final value = - QueryStringProperty(_entities[10].properties[1]); + QueryStringProperty(_entities[9].properties[1]); /// see [MealCategory.notes] static final notes = - QueryStringProperty(_entities[10].properties[2]); + QueryStringProperty(_entities[9].properties[2]); + + /// see [MealCategory.deleted] + static final deleted = + QueryBooleanProperty(_entities[9].properties[3]); } /// [MealPortionType] entity fields to define ObjectBox queries. class MealPortionType_ { /// see [MealPortionType.id] static final id = - QueryIntegerProperty(_entities[11].properties[0]); + QueryIntegerProperty(_entities[10].properties[0]); /// see [MealPortionType.value] static final value = - QueryStringProperty(_entities[11].properties[1]); + QueryStringProperty(_entities[10].properties[1]); /// see [MealPortionType.notes] static final notes = - QueryStringProperty(_entities[11].properties[2]); + QueryStringProperty(_entities[10].properties[2]); + + /// see [MealPortionType.deleted] + static final deleted = + QueryBooleanProperty(_entities[10].properties[3]); } /// [MealSource] entity fields to define ObjectBox queries. class MealSource_ { /// see [MealSource.id] static final id = - QueryIntegerProperty(_entities[12].properties[0]); + QueryIntegerProperty(_entities[11].properties[0]); /// see [MealSource.value] static final value = - QueryStringProperty(_entities[12].properties[1]); + QueryStringProperty(_entities[11].properties[1]); /// see [MealSource.notes] static final notes = - QueryStringProperty(_entities[12].properties[2]); + QueryStringProperty(_entities[11].properties[2]); /// see [MealSource.defaultMealCategory] static final defaultMealCategory = - QueryRelationToOne(_entities[12].properties[3]); + QueryRelationToOne(_entities[11].properties[3]); /// see [MealSource.defaultMealPortionType] static final defaultMealPortionType = QueryRelationToOne( - _entities[12].properties[4]); + _entities[11].properties[4]); /// see [MealSource.defaultCarbsRatioAccuracy] static final defaultCarbsRatioAccuracy = - QueryRelationToOne(_entities[12].properties[5]); + QueryRelationToOne(_entities[11].properties[5]); /// see [MealSource.defaultPortionSizeAccuracy] static final defaultPortionSizeAccuracy = - QueryRelationToOne(_entities[12].properties[6]); + QueryRelationToOne(_entities[11].properties[6]); + + /// see [MealSource.deleted] + static final deleted = + QueryBooleanProperty(_entities[11].properties[7]); +} + +/// [LogBolus] entity fields to define ObjectBox queries. +class LogBolus_ { + /// see [LogBolus.id] + static final id = QueryIntegerProperty(_entities[12].properties[0]); + + /// see [LogBolus.units] + static final units = + QueryDoubleProperty(_entities[12].properties[1]); + + /// see [LogBolus.carbs] + static final carbs = + QueryDoubleProperty(_entities[12].properties[2]); + + /// see [LogBolus.delay] + static final delay = + QueryIntegerProperty(_entities[12].properties[3]); + + /// see [LogBolus.setManually] + static final setManually = + QueryBooleanProperty(_entities[12].properties[4]); + + /// see [LogBolus.notes] + static final notes = + QueryStringProperty(_entities[12].properties[5]); + + /// see [LogBolus.logEntry] + static final logEntry = + QueryRelationToOne(_entities[12].properties[6]); + + /// see [LogBolus.rate] + static final rate = + QueryRelationToOne(_entities[12].properties[7]); + + /// see [LogBolus.meal] + static final meal = + QueryRelationToOne(_entities[12].properties[8]); + + /// see [LogBolus.deleted] + static final deleted = + QueryBooleanProperty(_entities[12].properties[9]); + + /// see [LogBolus.mgPerDlCurrent] + static final mgPerDlCurrent = + QueryIntegerProperty(_entities[12].properties[10]); + + /// see [LogBolus.mgPerDlTarget] + static final mgPerDlTarget = + QueryIntegerProperty(_entities[12].properties[11]); + + /// see [LogBolus.mgPerDlCorrection] + static final mgPerDlCorrection = + QueryIntegerProperty(_entities[12].properties[12]); + + /// see [LogBolus.mmolPerLCurrent] + static final mmolPerLCurrent = + QueryDoubleProperty(_entities[12].properties[13]); + + /// see [LogBolus.mmolPerLTarget] + static final mmolPerLTarget = + QueryDoubleProperty(_entities[12].properties[14]); + + /// see [LogBolus.mmolPerLCorrection] + static final mmolPerLCorrection = + QueryDoubleProperty(_entities[12].properties[15]); +} + +/// [Accuracy] entity fields to define ObjectBox queries. +class Accuracy_ { + /// see [Accuracy.id] + static final id = QueryIntegerProperty(_entities[13].properties[0]); + + /// see [Accuracy.value] + static final value = + QueryStringProperty(_entities[13].properties[1]); + + /// see [Accuracy.forCarbsRatio] + static final forCarbsRatio = + QueryBooleanProperty(_entities[13].properties[2]); + + /// see [Accuracy.forPortionSize] + static final forPortionSize = + QueryBooleanProperty(_entities[13].properties[3]); + + /// see [Accuracy.confidenceRating] + static final confidenceRating = + QueryIntegerProperty(_entities[13].properties[4]); + + /// see [Accuracy.notes] + static final notes = + QueryStringProperty(_entities[13].properties[5]); + + /// see [Accuracy.deleted] + static final deleted = + QueryBooleanProperty(_entities[13].properties[6]); +} + +/// [Settings] entity fields to define ObjectBox queries. +class Settings_ { + /// see [Settings.id] + static final id = QueryIntegerProperty(_entities[14].properties[0]); + + /// see [Settings.dateFormat] + static final dateFormat = + QueryStringProperty(_entities[14].properties[1]); + + /// see [Settings.longDateFormat] + static final longDateFormat = + QueryStringProperty(_entities[14].properties[2]); + + /// see [Settings.timeFormat] + static final timeFormat = + QueryStringProperty(_entities[14].properties[3]); + + /// see [Settings.longTimeFormat] + static final longTimeFormat = + QueryStringProperty(_entities[14].properties[4]); + + /// see [Settings.showConfirmationDialogOnCancel] + static final showConfirmationDialogOnCancel = + QueryBooleanProperty(_entities[14].properties[5]); + + /// see [Settings.showConfirmationDialogOnDelete] + static final showConfirmationDialogOnDelete = + QueryBooleanProperty(_entities[14].properties[6]); + + /// see [Settings.showConfirmationDialogOnStopEvent] + static final showConfirmationDialogOnStopEvent = + QueryBooleanProperty(_entities[14].properties[7]); + + /// see [Settings.nutritionMeasurementIndex] + static final nutritionMeasurementIndex = + QueryIntegerProperty(_entities[14].properties[8]); + + /// see [Settings.glucoseDisplayModeIndex] + static final glucoseDisplayModeIndex = + QueryIntegerProperty(_entities[14].properties[9]); + + /// see [Settings.glucoseMeasurementIndex] + static final glucoseMeasurementIndex = + QueryIntegerProperty(_entities[14].properties[10]); + + /// see [Settings.targetGlucoseMgPerDl] + static final targetGlucoseMgPerDl = + QueryIntegerProperty(_entities[14].properties[11]); + + /// see [Settings.targetGlucoseMmolPerL] + static final targetGlucoseMmolPerL = + QueryDoubleProperty(_entities[14].properties[12]); + + /// see [Settings.useDarkTheme] + static final useDarkTheme = + QueryBooleanProperty(_entities[14].properties[13]); +} + +/// [GlucoseTarget] entity fields to define ObjectBox queries. +class GlucoseTarget_ { + /// see [GlucoseTarget.id] + static final id = + QueryIntegerProperty(_entities[15].properties[0]); + + /// see [GlucoseTarget.deleted] + static final deleted = + QueryBooleanProperty(_entities[15].properties[1]); + + /// see [GlucoseTarget.fromMgPerDL] + static final fromMgPerDL = + QueryIntegerProperty(_entities[15].properties[2]); + + /// see [GlucoseTarget.toMgPerDl] + static final toMgPerDl = + QueryIntegerProperty(_entities[15].properties[3]); + + /// see [GlucoseTarget.fromMmolPerL] + static final fromMmolPerL = + QueryDoubleProperty(_entities[15].properties[4]); + + /// see [GlucoseTarget.toMmolPerL] + static final toMmolPerL = + QueryDoubleProperty(_entities[15].properties[5]); + + /// see [GlucoseTarget.color] + static final color = + QueryIntegerProperty(_entities[15].properties[6]); +} + +/// [Recipe] entity fields to define ObjectBox queries. +class Recipe_ { + /// see [Recipe.id] + static final id = QueryIntegerProperty(_entities[16].properties[0]); + + /// see [Recipe.deleted] + static final deleted = + QueryBooleanProperty(_entities[16].properties[1]); + + /// see [Recipe.name] + static final name = QueryStringProperty(_entities[16].properties[2]); + + /// see [Recipe.notes] + static final notes = QueryStringProperty(_entities[16].properties[3]); + + /// see [Recipe.portion] + static final portion = + QueryRelationToOne(_entities[16].properties[4]); + + /// see [Recipe.servings] + static final servings = + QueryDoubleProperty(_entities[16].properties[5]); +} + +/// [Ingredient] entity fields to define ObjectBox queries. +class Ingredient_ { + /// see [Ingredient.id] + static final id = + QueryIntegerProperty(_entities[17].properties[0]); + + /// see [Ingredient.deleted] + static final deleted = + QueryBooleanProperty(_entities[17].properties[1]); + + /// see [Ingredient.amount] + static final amount = + QueryDoubleProperty(_entities[17].properties[2]); + + /// see [Ingredient.recipe] + static final recipe = + QueryRelationToOne(_entities[17].properties[3]); + + /// see [Ingredient.ingredient] + static final ingredient = + QueryRelationToOne(_entities[17].properties[4]); } diff --git a/lib/screens/accuracy_detail.dart b/lib/screens/accuracy_detail.dart index 33cdb48..fb5b304 100644 --- a/lib/screens/accuracy_detail.dart +++ b/lib/screens/accuracy_detail.dart @@ -1,9 +1,11 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/components/forms/number_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:flutter/material.dart'; -import 'package:diameter/components/forms.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; import 'package:diameter/models/accuracy.dart'; class AccuracyDetailScreen extends StatefulWidget { @@ -22,12 +24,14 @@ class _AccuracyDetailScreenState extends State { bool _isSaving = false; final GlobalKey _accuracyForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); final _valueController = TextEditingController(text: ''); - final _confidenceRatingController = TextEditingController(text: ''); final _notesController = TextEditingController(text: ''); - bool _forCarbsRatio = false; - bool _forPortionSize = false; + final _confidenceRatingController = + TextEditingController(text: Accuracy.getAll().length.toString()); + bool _forCarbsRatio = true; + bool _forPortionSize = true; @override void initState() { @@ -38,18 +42,39 @@ class _AccuracyDetailScreenState extends State { _forCarbsRatio = _accuracy!.forCarbsRatio; _forPortionSize = _accuracy!.forPortionSize; _confidenceRatingController.text = - (_accuracy!.confidenceRating ?? '').toString(); + (_accuracy!.confidenceRating ?? Accuracy.getAll().length).toString(); _notesController.text = _accuracy!.notes ?? ''; } } - void reload() { + @override + void dispose() { + _scrollController.dispose(); + _valueController.dispose(); + _notesController.dispose(); + _confidenceRatingController.dispose(); + super.dispose(); + } + + void reload({String? message}) { if (widget.id != 0) { setState(() { _accuracy = Accuracy.get(widget.id); }); } _isNew = _accuracy == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); } void handleSaveAction() async { @@ -57,15 +82,18 @@ class _AccuracyDetailScreenState extends State { _isSaving = true; }); if (_accuracyForm.currentState!.validate()) { - Accuracy.box.put(Accuracy( + Accuracy accuracy = Accuracy( id: widget.id, value: _valueController.text, forCarbsRatio: _forCarbsRatio, forPortionSize: _forPortionSize, - confidenceRating: int.tryParse(_confidenceRatingController.text), notes: _notesController.text, - )); - Navigator.pop(context, '${_isNew ? 'New' : ''} Accuracy saved'); + ); + Accuracy.put(accuracy); + Accuracy.reorder( + accuracy, int.tryParse(_confidenceRatingController.text)); + Navigator.pop( + context, ['${_isNew ? 'New' : ''} Accuracy saved', accuracy]); } setState(() { _isSaving = false; @@ -73,21 +101,22 @@ class _AccuracyDetailScreenState extends State { } void handleCancelAction() { - if (showConfirmationDialogOnCancel && - (_isNew && - (_forCarbsRatio || - _forPortionSize || - _valueController.text != '' || - int.tryParse(_confidenceRatingController.text) != null || - _notesController.text != '')) || - (!_isNew && - (_forCarbsRatio != _accuracy!.forCarbsRatio || - _forPortionSize != _accuracy!.forPortionSize || - _accuracy!.value != _valueController.text || - int.tryParse(_confidenceRatingController.text) != - _accuracy!.confidenceRating || - (_accuracy!.notes ?? '') != _notesController.text))) { - Dialogs.showCancelConfirmationDialog( + if (Settings.get().showConfirmationDialogOnCancel && + (_isNew && + (!_forCarbsRatio || + !_forPortionSize || + _valueController.text != '' || + int.tryParse(_confidenceRatingController.text) != + Accuracy.getAll().length || + _notesController.text != '')) || + (!_isNew && + (_forCarbsRatio != _accuracy!.forCarbsRatio || + _forPortionSize != _accuracy!.forPortionSize || + _accuracy!.value != _valueController.text || + int.tryParse(_confidenceRatingController.text) != + _accuracy!.confidenceRating || + (_accuracy!.notes ?? '') != _notesController.text))) { + DialogUtils.showCancelConfirmationDialog( context: context, isNew: _isNew, onSave: handleSaveAction, @@ -104,66 +133,74 @@ class _AccuracyDetailScreenState extends State { title: Text(_isNew ? 'New Accuracy' : _accuracy!.value), ), drawer: const Navigation(currentLocation: AccuracyDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _accuracyForm, - fields: [ - TextFormField( - controller: _valueController, - decoration: const InputDecoration( - labelText: 'Name', + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _accuracyForm, + fields: [ + TextFormField( + controller: _valueController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty name'; + } + return null; + }, ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty name'; - } - return null; - }, - ), - StyledBooleanFormField( - value: _forCarbsRatio, - label: 'for carbs ratio', - onChanged: (value) { - setState(() { - _forCarbsRatio = value; - }); - }, - ), - StyledBooleanFormField( - value: _forPortionSize, - label: 'for portion size', - onChanged: (value) { - setState(() { - _forPortionSize = value; - }); - }, - ), - TextFormField( - controller: _confidenceRatingController, - keyboardType: TextInputType.number, - decoration: const InputDecoration( - labelText: 'Confidence Rating', + BooleanFormField( + value: _forCarbsRatio, + label: 'for carbs ratio', + onChanged: (value) { + setState(() { + _forCarbsRatio = value; + }); + }, ), - ), - TextFormField( - controller: _notesController, - keyboardType: TextInputType.multiline, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, + BooleanFormField( + value: _forPortionSize, + label: 'for portion size', + onChanged: (value) { + setState(() { + _forPortionSize = value; + }); + }, ), - ), - ], - ), - ], + NumberFormField( + controller: _confidenceRatingController, + label: 'Confidence Rating', + onChanged: (value) { + setState(() { + _confidenceRatingController.text = + (value ?? 0).toInt().toString(); + }); + }, + ), + TextFormField( + controller: _notesController, + keyboardType: TextInputType.multiline, + decoration: const InputDecoration( + labelText: 'Notes', + ), + minLines: 2, + maxLines: 5, + ), + ], + ), + ], + ), ), ), bottomNavigationBar: DetailBottomRow( onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, + onAction: _isSaving ? null : handleSaveAction, ), ); } diff --git a/lib/screens/accuracy_list.dart b/lib/screens/accuracy_list.dart index 8e0c4da..ad282be 100644 --- a/lib/screens/accuracy_list.dart +++ b/lib/screens/accuracy_list.dart @@ -1,5 +1,5 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:diameter/screens/accuracy_detail.dart'; import 'package:flutter/material.dart'; @@ -16,13 +16,21 @@ class AccuracyListScreen extends StatefulWidget { class _AccuracyListScreenState extends State { List _accuracies = Accuracy.getAll(); + final ScrollController _scrollController = ScrollController(); + @override void initState() { super.initState(); - refresh(); + reload(); } - void refresh({String? message}) { + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { setState(() { _accuracies = Accuracy.getAll(); }); @@ -42,12 +50,12 @@ class _AccuracyListScreenState extends State { void onDelete(Accuracy accuracy) { Accuracy.remove(accuracy.id); - refresh(); + reload(); } void handleDeleteAction(Accuracy accuracy) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(accuracy), message: 'Are you sure you want to delete this Accuracy?', @@ -60,13 +68,13 @@ class _AccuracyListScreenState extends State { void handleToggleForPortionSizeAction(Accuracy accuracy) async { accuracy.forPortionSize = !accuracy.forPortionSize; Accuracy.put(accuracy); - refresh(); + reload(); } void handleToggleForCarbsRatioAction(Accuracy accuracy) async { accuracy.forCarbsRatio = !accuracy.forCarbsRatio; Accuracy.put(accuracy); - refresh(); + reload(); } @override @@ -75,7 +83,7 @@ class _AccuracyListScreenState extends State { appBar: AppBar( title: const Text('Accuracies'), actions: [ - IconButton(onPressed: refresh, icon: const Icon(Icons.refresh)) + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) ], ), drawer: const Navigation(currentLocation: AccuracyListScreen.routeName), @@ -83,67 +91,83 @@ class _AccuracyListScreenState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( - child: _accuracies.isNotEmpty ? ListView.builder( - padding: const EdgeInsets.only(top: 10.0), - itemCount: _accuracies.length, - itemBuilder: (context, index) { - final accuracy = _accuracies[index]; - return ListTile( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - AccuracyDetailScreen(id: accuracy.id), - ), - ).then((message) => refresh(message: message)); - }, - title: Text(accuracy.value), - leading: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon(Icons.reorder), - onPressed: () { - // TODO: implement reordering + child: _accuracies.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ReorderableListView.builder( + padding: const EdgeInsets.all(10.0), + scrollController: _scrollController, + itemCount: _accuracies.length, + onReorder: (oldIndex, newIndex) { + Accuracy.reorder(_accuracies[oldIndex], newIndex); + reload(); }, - ), - ], + itemBuilder: (context, index) { + final accuracy = _accuracies[index]; + return Card( + key: Key(accuracy.id.toString()), + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + AccuracyDetailScreen(id: accuracy.id), + ), + ).then((result) => reload(message: result?[0])); + }, + title: Text( + accuracy.value.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, + ), + leading: Row( + mainAxisSize: MainAxisSize.min, + children: const [ + Icon(Icons.reorder), + ], + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: Icon( + Icons.square_foot, + color: accuracy.forPortionSize + ? Theme.of(context) + .toggleableActiveColor + : Theme.of(context).highlightColor, + ), + onPressed: () => + handleToggleForPortionSizeAction( + accuracy), + ), + IconButton( + icon: Icon( + Icons.pie_chart, + color: accuracy.forCarbsRatio + ? Theme.of(context) + .toggleableActiveColor + : Theme.of(context).highlightColor, + ), + onPressed: () => + handleToggleForCarbsRatioAction( + accuracy), + ), + IconButton( + icon: const Icon(Icons.delete), + onPressed: () => + handleDeleteAction(accuracy), + ) + ], + ), + ), + ); + }), + ) + : const Center( + child: Text('You have not created any Accuracies yet!'), ), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: Icon( - Icons.square_foot, - color: accuracy.forPortionSize - ? Theme.of(context).toggleableActiveColor - : Theme.of(context).highlightColor, - ), - onPressed: () => handleToggleForPortionSizeAction(accuracy), - ), - IconButton( - icon: Icon( - Icons.pie_chart, - color: accuracy.forCarbsRatio - ? Theme.of(context).toggleableActiveColor - : Theme.of(context).highlightColor, - ), - onPressed: () => handleToggleForCarbsRatioAction(accuracy), - ), - const SizedBox(width: 24), - IconButton( - icon: const Icon(Icons.delete), - onPressed: () => handleDeleteAction(accuracy), - ) - ], - ), - ); - } - ) : const Center( - child: Text('You have not created any Accuracies yet!'), - ), - ), + ), ], ), floatingActionButton: FloatingActionButton( @@ -153,7 +177,7 @@ class _AccuracyListScreenState extends State { MaterialPageRoute( builder: (context) => const AccuracyDetailScreen(), ), - ).then((message) => refresh(message: message)); + ).then((result) => reload(message: result?[0])); }, child: const Icon(Icons.add), ), diff --git a/lib/screens/basal/basal_detail.dart b/lib/screens/basal/basal_detail.dart index 80f8c9a..0903211 100644 --- a/lib/screens/basal/basal_detail.dart +++ b/lib/screens/basal/basal_detail.dart @@ -1,10 +1,13 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/components/forms/number_form_field.dart'; +import 'package:diameter/components/forms/time_of_day_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:diameter/utils/date_time_utils.dart'; +import 'package:diameter/utils/utils.dart'; import 'package:flutter/material.dart'; -import 'package:diameter/components/forms.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; import 'package:diameter/models/basal.dart'; import 'package:diameter/models/basal_profile.dart'; @@ -32,15 +35,18 @@ class _BasalDetailScreenState extends State { Basal? _basal; bool _isNew = true; bool _isSaving = false; + bool _isFinalRate = true; final GlobalKey _basalForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); TimeOfDay _startTime = const TimeOfDay(hour: 0, minute: 0); TimeOfDay _endTime = const TimeOfDay(hour: 0, minute: 0); final _startTimeController = TextEditingController(text: ''); final _endTimeController = TextEditingController(text: ''); - final _unitsController = TextEditingController(text: ''); + final _unitsController = + TextEditingController(text: 0.toStringAsPrecision(3)); @override void initState() { @@ -57,36 +63,67 @@ class _BasalDetailScreenState extends State { if (_basal != null) { _startTime = TimeOfDay.fromDateTime(_basal!.startTime); _endTime = TimeOfDay.fromDateTime(_basal!.endTime); - _unitsController.text = _basal!.units.toString(); + _unitsController.text = _basal!.units.toStringAsPrecision(3); } - updateStartTime(); - updateEndTime(); + _startTimeController.text = DateTimeUtils.displayTimeOfDay(_startTime); + _endTimeController.text = DateTimeUtils.displayTimeOfDay(_endTime); } - void reload() { + @override + void dispose() { + _scrollController.dispose(); + _startTimeController.dispose(); + _endTimeController.dispose(); + _unitsController.dispose(); + super.dispose(); + } + + void reload({String? message}) { if (widget.id != 0) { setState(() { _basal = Basal.get(widget.id); }); } _isNew = _basal == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); } - void updateStartTime() { - _startTimeController.text = DateTimeUtils.displayTimeOfDay(_startTime); + void updateStartTime(TimeOfDay? value) { + if (value != null) { + setState(() { + _startTime = value; + _startTimeController.text = DateTimeUtils.displayTimeOfDay(_startTime); + }); + } } - void updateEndTime() { - _endTimeController.text = DateTimeUtils.displayTimeOfDay(_endTime); + void updateEndTime(TimeOfDay? value) { + if (value != null) { + setState(() { + _endTime = value; + _endTimeController.text = DateTimeUtils.displayTimeOfDay(_endTime); + _isFinalRate = widget.suggestedEndTime == null || + _endTime == widget.suggestedEndTime!; + }); + } } Future validateTimePeriod() async { String? error; List basalRates = Basal.getAllForProfile(widget.basalProfileId); - // TODO use a query for the following checks instead? - // check for duplicates if (basalRates .where((other) => (widget.id != other.id) && @@ -128,7 +165,7 @@ class _BasalDetailScreenState extends State { }); } - void handleSaveAction() async { + void handleSaveAction({bool next = true}) async { setState(() { _isSaving = true; }); @@ -143,7 +180,30 @@ class _BasalDetailScreenState extends State { ); basal.basalProfile.targetId = widget.basalProfileId; Basal.put(basal); - Navigator.pop(context, '${_isNew ? 'New' : ''} Basal Rate saved'); + + if (next) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return BasalDetailScreen( + basalProfileId: widget.basalProfileId, + suggestedStartTime: _endTime, + suggestedEndTime: widget.suggestedEndTime, + ); + }, + ), + ).then((result) { + Navigator.pop( + context, + ['New Basal Rate${result[1] != null ? 's' : ''} saved', basal] + + [result[1]], + ); + }); + } else { + Navigator.pop( + context, ['${_isNew ? 'New' : ''} Basal Rate saved', basal]); + } } }); } @@ -153,21 +213,20 @@ class _BasalDetailScreenState extends State { } void handleCancelAction() { - if (showConfirmationDialogOnCancel && + if (Settings.get().showConfirmationDialogOnCancel && ((_isNew && (_startTime.hour != (widget.suggestedStartTime?.hour ?? 0) || _endTime.hour != (widget.suggestedEndTime?.hour ?? 0) || _startTime.minute != (widget.suggestedStartTime?.minute ?? 0) || _endTime.minute != (widget.suggestedEndTime?.minute ?? 0) || - double.tryParse(_unitsController.text) != null)) || + double.tryParse(_unitsController.text) != 0)) || (!_isNew && - (TimeOfDay.fromDateTime(_basal!.startTime) != - _startTime || + (TimeOfDay.fromDateTime(_basal!.startTime) != _startTime || TimeOfDay.fromDateTime(_basal!.endTime) != _endTime || - (double.tryParse(_unitsController.text) ?? 0) != + double.tryParse(_unitsController.text) != _basal!.units)))) { - Dialogs.showCancelConfirmationDialog( + DialogUtils.showCancelConfirmationDialog( context: context, isNew: _isNew, onSave: handleSaveAction, @@ -185,73 +244,69 @@ class _BasalDetailScreenState extends State { '${_isNew ? 'New' : 'Edit'} Basal Rate for ${BasalProfile.get(widget.basalProfileId)?.name}'), ), drawer: const Navigation(currentLocation: BasalDetailScreen.routeName), - body: Column( - children: [ - StyledForm( - formState: _basalForm, - fields: [ - Row( - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.only(right: 5), - child: StyledTimeOfDayFormField( - label: 'Start Time', - controller: _startTimeController, - time: _startTime, - onChanged: (newStartTime) { - if (newStartTime != null) { - setState(() { - _startTime = newStartTime; - }); - updateStartTime(); - } - }, + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + children: [ + FormWrapper( + formState: _basalForm, + fields: [ + Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.only(right: 5), + child: TimeOfDayFormField( + label: 'Start Time', + controller: _startTimeController, + time: _startTime, + onChanged: updateStartTime, + ), + ), ), - ), - ), - Expanded( - child: Padding( - padding: const EdgeInsets.only(left: 5), - child: StyledTimeOfDayFormField( - label: 'End Time', - controller: _endTimeController, - time: _endTime, - onChanged: (newEndTime) { - if (newEndTime != null) { - setState(() { - _endTime = newEndTime; - }); - updateEndTime(); - } - }, + Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 5), + child: TimeOfDayFormField( + label: 'End Time', + controller: _endTimeController, + time: _endTime, + onChanged: updateEndTime, + ), + ), ), - ), + ], ), + NumberFormField( + controller: _unitsController, + label: 'Units', + suffix: 'U', + autoRoundToMultipleOfStep: true, + step: Settings.insulinSteps, + onChanged: (value) { + if (value != null) { + _unitsController.text = + Utils.toStringMatchingTemplateFractionPrecision( + value, Settings.insulinSteps); + } + }), ], ), - TextFormField( - controller: _unitsController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - decoration: const InputDecoration( - labelText: 'Units', - suffixText: 'U', - ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty amount of units'; - } - return null; - }, - ), ], ), - ], + ), ), bottomNavigationBar: DetailBottomRow( onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, + onAction: + _isSaving ? null : () => handleSaveAction(next: !_isFinalRate), + onMiddleAction: _isSaving || _isFinalRate + ? null + : () => handleSaveAction(next: false), + actionText: _isFinalRate ? 'SAVE & CLOSE' : 'NEXT', + middleActionText: 'SAVE & CLOSE', ), ); } diff --git a/lib/screens/basal/basal_list.dart b/lib/screens/basal/basal_list.dart index 96a3c5c..7685693 100644 --- a/lib/screens/basal/basal_list.dart +++ b/lib/screens/basal/basal_list.dart @@ -1,5 +1,5 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/utils/date_time_utils.dart'; import 'package:flutter/material.dart'; import 'package:diameter/models/basal.dart'; @@ -23,6 +23,14 @@ class BasalListScreen extends StatefulWidget { } class _BasalListScreenState extends State { + final ScrollController _scrollController = ScrollController(); + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + void reload({String? message}) { widget.reload(); @@ -48,7 +56,7 @@ class _BasalListScreenState extends State { id: basal.id, ), ), - ).then((message) => reload(message: message)); + ).then((result) => reload(message: result?[0])); } void onDelete(Basal basal) { @@ -57,8 +65,8 @@ class _BasalListScreenState extends State { } void handleDeleteAction(Basal basal) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(basal), message: 'Are you sure you want to delete this Basal Rate?', @@ -72,7 +80,6 @@ class _BasalListScreenState extends State { List basalRates = widget.basalRates; Basal basal = basalRates[index]; - // TODO: use queries for all this // check for gaps if (index == 0 && (basal.startTime.hour != 0 || basal.startTime.minute != 0)) { @@ -105,56 +112,76 @@ class _BasalListScreenState extends State { .isNotEmpty) { return 'This rate\'s time period overlaps with another one'; } + + return null; } @override Widget build(BuildContext context) { - return SingleChildScrollView( - child: Column( - children: [ - widget.basalRates.isNotEmpty ? ListView.builder( - shrinkWrap: true, - itemCount: widget.basalRates.length, - itemBuilder: (context, index) { - final basal = widget.basalRates[index]; - final error = validateTimePeriod(index); - return ListTile( - tileColor: error != null ? Colors.red.shade100 : null, - onTap: () { - handleEditAction(basal); - }, - title: Row( - mainAxisSize: MainAxisSize.max, - children: [ - Expanded( - child: Text( - '${DateTimeUtils.displayTime(basal.startTime)} - ${DateTimeUtils.displayTime(basal.endTime)}')), - const Spacer(), - Expanded(child: Text('${basal.units} U')), - ], - ), - subtitle: error != null - ? Text(error, style: const TextStyle(color: Colors.red)) - : Container(), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, + return widget.basalRates.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + padding: const EdgeInsets.all(10.0), + controller: _scrollController, + shrinkWrap: true, + itemCount: widget.basalRates.length, + itemBuilder: (context, index) { + final basal = widget.basalRates[index]; + final error = validateTimePeriod(index); + return Card( + child: Column( + children: [ + error != null + ? Padding( + padding: const EdgeInsets.all(5.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.warning, + color: Theme.of(context).errorColor), + Text(error, + style: TextStyle( + color: Theme.of(context).errorColor)), + ], + ), + ) + : Container(), + ListTile( + onTap: () { + handleEditAction(basal); + }, + title: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + child: Text( + '${DateTimeUtils.displayTime(basal.startTime)} - ${DateTimeUtils.displayTime(basal.endTime)}')), + const Spacer(), + Expanded(child: Text('${basal.units} U')), + ], + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => handleDeleteAction(basal), + ), + ], + ), ), - onPressed: () => handleDeleteAction(basal), - ), - ], - ), - ); - }, - ) : const Center( - child: Text('You have not created any Basal Rates yet!'), + ], + ), + ); + }, ), - ], - ), - ); + ) + : const Center( + child: Text('You have not created any Basal Rates yet!'), + ); } } diff --git a/lib/screens/basal/basal_profile_detail.dart b/lib/screens/basal/basal_profile_detail.dart index 13af0bf..d558376 100644 --- a/lib/screens/basal/basal_profile_detail.dart +++ b/lib/screens/basal/basal_profile_detail.dart @@ -1,11 +1,12 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; import 'package:diameter/models/basal.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:diameter/screens/basal/basal_detail.dart'; import 'package:flutter/material.dart'; -import 'package:diameter/components/forms.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; import 'package:diameter/models/basal_profile.dart'; import 'package:diameter/screens/basal/basal_list.dart'; @@ -27,14 +28,15 @@ class _BasalProfileDetailScreenState extends State { BasalProfile? _basalProfile; List _basalRates = []; bool _isNew = true; - bool _isSaving = false; final GlobalKey _basalProfileForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); late FloatingActionButton addBasalButton; late IconButton refreshButton; late IconButton closeButton; late DetailBottomRow detailBottomRow; + late DetailBottomRow detailBottomRowWhileSaving; FloatingActionButton? actionButton; List appBarActions = []; @@ -77,7 +79,13 @@ class _BasalProfileDetailScreenState extends State { detailBottomRow = DetailBottomRow( onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, + onAction: handleSaveAction, + onMiddleAction: () => handleSaveAction(close: true), + ); + + detailBottomRowWhileSaving = DetailBottomRow( + onCancel: handleCancelAction, + onAction: null, ); actionButton = null; @@ -85,6 +93,14 @@ class _BasalProfileDetailScreenState extends State { bottomNav = detailBottomRow; } + @override + void dispose() { + _scrollController.dispose(); + _nameController.dispose(); + _notesController.dispose(); + super.dispose(); + } + void reload({String? message}) { if (widget.id != 0) { setState(() { @@ -146,7 +162,7 @@ class _BasalProfileDetailScreenState extends State { }); } else if (!_active && ((_isNew && _activeCount == 0) || - (_activeCount == 1 && _basalProfile!.active))) { + (!_isNew && _activeCount == 1 && _basalProfile!.active))) { await showDialog( context: context, builder: (BuildContext context) { @@ -178,25 +194,30 @@ class _BasalProfileDetailScreenState extends State { TimeOfDay? suggestedStartTime; TimeOfDay? suggestedEndTime; - _basalRates.asMap().forEach((index, basal) { - if (suggestedStartTime == null && suggestedEndTime == null) { - if (index == 0 && - (basal.startTime.hour != 0 || basal.startTime.minute != 0)) { - suggestedStartTime = const TimeOfDay(hour: 0, minute: 0); - suggestedEndTime = TimeOfDay.fromDateTime(basal.startTime); - } else if ((index == _basalRates.length - 1) && - (basal.endTime.hour != 0 || basal.endTime.minute != 0)) { - suggestedStartTime = TimeOfDay.fromDateTime(basal.endTime); - suggestedEndTime = const TimeOfDay(hour: 0, minute: 0); - } else if (index != 0) { - var lastEndTime = _basalRates[index - 1].endTime; - if (basal.startTime.isAfter(lastEndTime)) { - suggestedStartTime = TimeOfDay.fromDateTime(lastEndTime); + if (_basalRates.isEmpty) { + suggestedStartTime = const TimeOfDay(hour: 0, minute: 0); + suggestedEndTime = const TimeOfDay(hour: 0, minute: 0); + } else { + _basalRates.asMap().forEach((index, basal) { + if (suggestedStartTime == null && suggestedEndTime == null) { + if (index == 0 && + (basal.startTime.hour != 0 || basal.startTime.minute != 0)) { + suggestedStartTime = const TimeOfDay(hour: 0, minute: 0); suggestedEndTime = TimeOfDay.fromDateTime(basal.startTime); + } else if ((index == _basalRates.length - 1) && + (basal.endTime.hour != 0 || basal.endTime.minute != 0)) { + suggestedStartTime = TimeOfDay.fromDateTime(basal.endTime); + suggestedEndTime = const TimeOfDay(hour: 0, minute: 0); + } else if (index != 0) { + var lastEndTime = _basalRates[index - 1].endTime; + if (basal.startTime.isAfter(lastEndTime)) { + suggestedStartTime = TimeOfDay.fromDateTime(lastEndTime); + suggestedEndTime = TimeOfDay.fromDateTime(basal.startTime); + } } } - } - }); + }); + } Navigator.push( context, @@ -209,30 +230,47 @@ class _BasalProfileDetailScreenState extends State { ); }, ), - ).then((message) => reload(message: message)); + ).then((result) => reload(message: result?[0])); } - void handleSaveAction() async { + void handleSaveAction({bool close = false}) async { setState(() { - _isSaving = true; + bottomNav = detailBottomRowWhileSaving; }); if (_basalProfileForm.currentState!.validate()) { await checkActiveProfiles(); - BasalProfile.put(BasalProfile( + BasalProfile basalProfile = BasalProfile( id: widget.id, name: _nameController.text, active: _active, notes: _notesController.text, - )); - Navigator.pop(context, '${_isNew ? 'New' : ''} Basal Profile saved'); + ); + BasalProfile.put(basalProfile); + + if (close) { + Navigator.pop(context, + ['${_isNew ? 'New' : ''} Basal Profile saved', basalProfile]); + } else { + if (_isNew) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + BasalProfileDetailScreen(id: basalProfile.id), + ), + ).then((result) => Navigator.pop(context, result)); + } else { + reload(message: 'Basal Profile saved'); + } + } } setState(() { - _isSaving = false; + bottomNav = detailBottomRow; }); } void handleCancelAction() { - if (showConfirmationDialogOnCancel && + if (Settings.get().showConfirmationDialogOnCancel && (_isNew && (_active != widget.active || _nameController.text != '' || @@ -241,7 +279,7 @@ class _BasalProfileDetailScreenState extends State { (_basalProfile!.active != _active || _basalProfile!.name != _nameController.text || (_basalProfile!.notes ?? '') != _notesController.text))) { - Dialogs.showCancelConfirmationDialog( + DialogUtils.showCancelConfirmationDialog( context: context, isNew: _isNew, onSave: handleSaveAction, @@ -279,52 +317,59 @@ class _BasalProfileDetailScreenState extends State { renderTabButtons(tabController.index); }); List tabs = [ - SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _basalProfileForm, - fields: [ - TextFormField( - controller: _nameController, - decoration: const InputDecoration( - labelText: 'Name', + Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _basalProfileForm, + fields: [ + TextFormField( + controller: _nameController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty title'; + } + return null; + }, ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty title'; - } - return null; - }, - ), - TextFormField( - keyboardType: TextInputType.multiline, - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - suffixText: '', - alignLabelWithHint: true, + TextFormField( + keyboardType: TextInputType.multiline, + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + minLines: 2, + maxLines: 5, ), - ), - StyledBooleanFormField( - value: _active, - onChanged: (value) { - setState(() { - _active = value; - }); - }, - label: 'active', - ), - ], - ), - ], + BooleanFormField( + value: _active, + onChanged: (value) { + setState(() { + _active = value; + }); + }, + label: 'active', + ), + ], + ), + ], + ), ), ), ]; if (!_isNew) { - tabs.add(BasalListScreen(basalProfile: _basalProfile!, basalRates: _basalRates, reload: reload)); + tabs.add(BasalListScreen( + basalProfile: _basalProfile!, + basalRates: _basalRates, + reload: reload)); } return Scaffold( diff --git a/lib/screens/basal/basal_profile_list.dart b/lib/screens/basal/basal_profile_list.dart new file mode 100644 index 0000000..cfa561f --- /dev/null +++ b/lib/screens/basal/basal_profile_list.dart @@ -0,0 +1,278 @@ +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/models/basal.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/navigation.dart'; +import 'package:flutter/material.dart'; +import 'package:diameter/models/basal_profile.dart'; +import 'package:diameter/screens/basal/basal_profile_detail.dart'; + +class BasalProfileListScreen extends StatefulWidget { + static const String routeName = '/basal-profiles'; + const BasalProfileListScreen({Key? key}) : super(key: key); + + @override + _BasalProfileListScreenState createState() => _BasalProfileListScreenState(); +} + +class _BasalProfileListScreenState extends State { + final ScrollController _scrollController = ScrollController(); + + late List _basalProfiles; + Widget banner = Container(); + + final BasalProfile? _activeProfile = BasalProfile.getActive(DateTime.now()); + + @override + void initState() { + super.initState(); + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + setState(() { + _basalProfiles = BasalProfile.getAll(); + }); + updateBanner(); + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void updateBanner() { + int activeProfileCount = BasalProfile.activeCount(); + setState(() { + banner = activeProfileCount != 1 + ? MaterialBanner( + content: Text(activeProfileCount == 0 + ? 'You currently do not have an active Basal Profile.' + : 'More than one active Basal Profile has been found.'), + leading: const CircleAvatar(child: Icon(Icons.warning)), + forceActionsBelow: true, + actions: activeProfileCount == 0 + ? [ + _basalProfiles.isNotEmpty + ? TextButton( + child: const Text('ACTIVATE A PROFILE'), + onPressed: handlePickActiveProfileAction, + ) + : Container(), + TextButton( + child: const Text('CREATE A NEW PROFILE'), + onPressed: () => onNew(true), + ), + ] + : [ + TextButton( + child: const Text('PICK A PROFILE'), + onPressed: handlePickActiveProfileAction, + ), + ], + ) + : Container(); + }); + } + + void handleDuplicateAction(BasalProfile basalProfile) async { + final copy = BasalProfile( + active: false, + name: 'Copy of ${basalProfile.name}', + ); + BasalProfile.put(copy); + + final rates = Basal.getAllForProfile(basalProfile.id); + for (Basal rate in rates) { + final basal = Basal( + endTime: rate.endTime, + startTime: rate.startTime, + units: rate.units, + ); + basal.basalProfile.target = copy; + Basal.put(basal); + } + + reload(message: 'Added copy of ${basalProfile.name}'); + } + + void onDelete(BasalProfile basalProfile) { + BasalProfile.remove(basalProfile.id); + reload(message: 'Basal Profile deleted'); + } + + void handleDeleteAction(BasalProfile basalProfile) async { + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( + context: context, + onConfirm: () => onDelete(basalProfile), + message: 'Are you sure you want to delete this Basal Profile?', + ); + } else { + onDelete(basalProfile); + } + } + + void onPickActive(BasalProfile? basalProfile) { + if (basalProfile != null) { + BasalProfile.setAllInactive; + basalProfile.active = true; + BasalProfile.put(basalProfile); + reload( + message: '${basalProfile.name} has been set as your active Profile'); + } + } + + void handlePickActiveProfileAction() { + setState(() { + banner = MaterialBanner( + content: AutoCompleteDropdownButton( + controller: TextEditingController(text: ''), + items: _basalProfiles, + label: 'Default Basal Profile', + onChanged: onPickActive, + ), + leading: const CircleAvatar(child: Icon(Icons.info)), + forceActionsBelow: true, + actions: [ + TextButton( + child: const Text('CREATE A NEW PROFILE INSTEAD'), + onPressed: () => onNew(true), + ), + ], + ); + }); + } + + void showDetailScreen({BasalProfile? basalProfile, bool active = false}) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + BasalProfileDetailScreen(id: basalProfile?.id ?? 0, active: active), + ), + ).then((result) => reload(message: result?[0])); + } + + void onNew(bool active) { + showDetailScreen(active: active); + } + + void onEdit(BasalProfile basalProfile) { + showDetailScreen(basalProfile: basalProfile); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Basal Profiles'), + actions: [ + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) + ], + ), + drawer: + const Navigation(currentLocation: BasalProfileListScreen.routeName), + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + banner, + Expanded( + child: _basalProfiles.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + padding: const EdgeInsets.all(10.0), + controller: _scrollController, + itemCount: _basalProfiles.length, + itemBuilder: (context, index) { + final basalProfile = _basalProfiles[index]; + double dailyTotal = + Basal.getDailyTotalForProfile(basalProfile.id); + String activeProfileText = basalProfile.active + ? ' (Default Profile)' + : basalProfile.id == _activeProfile?.id + ? ' (Current Active Profile)' + : ''; + return Card( + child: ListTile( + isThreeLine: true, + selected: basalProfile.active || + basalProfile.id == _activeProfile?.id, + onTap: () => onEdit(basalProfile), + title: Text( + basalProfile.name.toUpperCase() + + activeProfileText, + style: Theme.of(context).textTheme.subtitle2, + ), + subtitle: Padding( + padding: const EdgeInsets.only(top: 10.0), + child: Row( + children: [ + Text(basalProfile.notes ?? ''), + Expanded( + child: Column( + children: dailyTotal > 0 + ? [ + Text(dailyTotal + .toStringAsPrecision(3)), + const Text('U/day', + textScaleFactor: 0.75), + ] + : [], + ), + ), + ], + ), + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon( + Icons.copy, + color: Colors.blue, + ), + onPressed: () => + handleDuplicateAction(basalProfile), + ), + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => + handleDeleteAction(basalProfile), + ), + ], + ), + ), + ); + }, + ), + ) + : const Center( + child: Text('You have not created any Basal Profiles yet!'), + ), + ), + ], + ), + floatingActionButton: FloatingActionButton( + onPressed: () => onNew(false), + child: const Icon(Icons.add), + ), + ); + } +} diff --git a/lib/screens/basal/basal_profiles_list.dart b/lib/screens/basal/basal_profiles_list.dart deleted file mode 100644 index c2be7a7..0000000 --- a/lib/screens/basal/basal_profiles_list.dart +++ /dev/null @@ -1,203 +0,0 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/navigation.dart'; -import 'package:flutter/material.dart'; -// import 'package:diameter/components/progress_indicator.dart'; -import 'package:diameter/models/basal_profile.dart'; -import 'package:diameter/screens/basal/basal_profile_detail.dart'; - -class BasalProfileListScreen extends StatefulWidget { - static const String routeName = '/basal-profiles'; - const BasalProfileListScreen({Key? key}) : super(key: key); - - @override - _BasalProfileListScreenState createState() => _BasalProfileListScreenState(); -} - -class _BasalProfileListScreenState extends State { - late List _basalProfiles; - Widget banner = Container(); - bool pickActiveProfileMode = false; - - void refresh({String? message}) { - setState(() { - pickActiveProfileMode = false; - _basalProfiles = BasalProfile.getAll(); - }); - // _basalProfiles.then((list) => - updateBanner(); - setState(() { - if (message != null) { - var snackBar = SnackBar( - content: Text(message), - duration: const Duration(seconds: 2), - ); - ScaffoldMessenger.of(context) - ..removeCurrentSnackBar() - ..showSnackBar(snackBar); - } - }); - } - - void updateBanner() { - int activeProfileCount = BasalProfile.activeCount(); - setState(() { - banner = activeProfileCount != 1 - ? MaterialBanner( - content: Text(activeProfileCount == 0 - ? 'You currently do not have an active Basal Profile.' - : 'More than one active Basal Profile has been found.'), - leading: const CircleAvatar(child: Icon(Icons.warning)), - forceActionsBelow: true, - actions: activeProfileCount == 0 - ? [ - _basalProfiles.isNotEmpty - ? TextButton( - child: const Text('ACTIVATE A PROFILE'), - onPressed: handlePickActiveProfileAction, - ) - : Container(), - TextButton( - child: const Text('CREATE A NEW PROFILE'), - onPressed: () => onNew(true), - ), - ] - : [ - TextButton( - child: const Text('PICK A PROFILE'), - onPressed: handlePickActiveProfileAction, - ), - ], - ) - : Container(); - }); - } - - void onDelete(BasalProfile basalProfile) { - BasalProfile.remove(basalProfile.id); - refresh(message: 'Basal Profile deleted'); - } - - void handleDeleteAction(BasalProfile basalProfile) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( - context: context, - onConfirm: () => onDelete(basalProfile), - message: 'Are you sure you want to delete this Basal Profile?', - ); - } else { - onDelete(basalProfile); - } - } - - void onPickActive(BasalProfile basalProfile) { - BasalProfile.setAllInactive; - basalProfile.active = true; - BasalProfile.put(basalProfile); - // (exception: basalProfile.objectId!).then((_) => - refresh(message: '${basalProfile.name} has been set as your active Profile'); - } - - void handlePickActiveProfileAction() { - setState(() { - banner = MaterialBanner( - content: const Text('Click one of the profiles to active it.'), - leading: const CircleAvatar(child: Icon(Icons.info)), - forceActionsBelow: true, - actions: [ - TextButton( - child: const Text('CREATE A NEW PROFILE INSTEAD'), - onPressed: () => onNew(true), - ), - ], - ); - pickActiveProfileMode = true; - }); - } - - void showDetailScreen({BasalProfile? basalProfile, bool active = false}) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => BasalProfileDetailScreen( - id: basalProfile?.id ?? 0, active: active), - ), - ).then((message) => refresh(message: message)); - } - - void onNew(bool active) { - showDetailScreen(active: active); - } - - void onEdit(BasalProfile basalProfile) { - showDetailScreen(basalProfile: basalProfile); - } - - @override - void initState() { - super.initState(); - refresh(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('Basal Profiles'), - actions: [ - IconButton(onPressed: refresh, icon: const Icon(Icons.refresh)) - ], - ), - drawer: - const Navigation(currentLocation: BasalProfileListScreen.routeName), - body: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - banner, - Expanded( - child: _basalProfiles.isNotEmpty ? ListView.builder( - itemCount: _basalProfiles.length, - itemBuilder: (context, index) { - final basalProfile = _basalProfiles[index]; - - return ListTile( - tileColor: basalProfile.active - ? Colors.green.shade100 - : null, - onTap: () { - pickActiveProfileMode - ? onPickActive(basalProfile) - : onEdit(basalProfile); - }, - title: Text( - basalProfile.name, - ), - subtitle: Text(basalProfile.notes!), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () => - handleDeleteAction(basalProfile), - ), - ], - ), - ); - }, - ) : const Center( - child: Text('You have not created any Basal Profiles yet!'), - ), - ), - ], - ), - floatingActionButton: FloatingActionButton( - onPressed: () => onNew(false), - child: const Icon(Icons.add), - ), - ); - } -} diff --git a/lib/screens/bolus/bolus_detail.dart b/lib/screens/bolus/bolus_detail.dart index 917f7e7..fb93f54 100644 --- a/lib/screens/bolus/bolus_detail.dart +++ b/lib/screens/bolus/bolus_detail.dart @@ -1,12 +1,13 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/components/forms/number_form_field.dart'; +import 'package:diameter/components/forms/time_of_day_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; -import 'package:diameter/settings.dart'; import 'package:diameter/utils/date_time_utils.dart'; import 'package:diameter/utils/utils.dart'; import 'package:flutter/material.dart'; -import 'package:diameter/components/forms.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; import 'package:diameter/models/bolus.dart'; import 'package:diameter/models/bolus_profile.dart'; @@ -34,18 +35,20 @@ class _BolusDetailScreenState extends State { Bolus? _bolus; bool _isNew = true; bool _isSaving = false; + bool _isFinalRate = true; final GlobalKey _bolusForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); TimeOfDay _startTime = const TimeOfDay(hour: 0, minute: 0); TimeOfDay _endTime = const TimeOfDay(hour: 0, minute: 0); final _startTimeController = TextEditingController(text: ''); final _endTimeController = TextEditingController(text: ''); - final _unitsController = TextEditingController(text: ''); - final _carbsController = TextEditingController(text: ''); - final _mgPerDlController = TextEditingController(text: ''); - final _mmolPerLController = TextEditingController(text: ''); + final _unitsController = TextEditingController(text: Utils.toStringMatchingTemplateFractionPrecision(0, Settings.insulinSteps)); + final _carbsController = TextEditingController(text: Utils.toStringMatchingTemplateFractionPrecision(0, Settings.nutritionSteps)); + final _mgPerDlController = TextEditingController(text: '0'); + final _mmolPerLController = TextEditingController(text: Utils.toStringMatchingTemplateFractionPrecision(0, Settings.mmolPerLSteps)); @override void initState() { @@ -61,41 +64,75 @@ class _BolusDetailScreenState extends State { if (_bolus != null) { _startTime = TimeOfDay.fromDateTime(_bolus!.startTime); + _endTime = TimeOfDay.fromDateTime(_bolus!.endTime); _unitsController.text = _bolus!.units.toString(); _carbsController.text = _bolus!.carbs.toString(); - _mgPerDlController.text = _bolus!.mgPerDl.toString(); - _mmolPerLController.text = _bolus!.mmolPerL.toString(); + _mgPerDlController.text = (_bolus!.mgPerDl ?? '').toString(); + _mmolPerLController.text = (_bolus!.mmolPerL ?? '').toString(); } - - updateStartTime(); - updateEndTime(); + _startTimeController.text = DateTimeUtils.displayTimeOfDay(_startTime); + _endTimeController.text = DateTimeUtils.displayTimeOfDay(_endTime); } - void reload() { + @override + void dispose() { + _scrollController.dispose(); + _startTimeController.dispose(); + _endTimeController.dispose(); + _unitsController.dispose(); + _carbsController.dispose(); + _mgPerDlController.dispose(); + _mmolPerLController.dispose(); + super.dispose(); + } + + void reload({String? message}) { if (widget.id != 0) { setState(() { _bolus = Bolus.get(widget.id); }); } _isNew = _bolus == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); } - void updateStartTime() { - _startTimeController.text = DateTimeUtils.displayTimeOfDay(_startTime); + void updateStartTime(TimeOfDay? value) { + if (value != null) { + setState(() { + _startTime = value; + _startTimeController.text = DateTimeUtils.displayTimeOfDay(_startTime); + }); + } } - void updateEndTime() { - _endTimeController.text = DateTimeUtils.displayTimeOfDay(_endTime); + void updateEndTime(TimeOfDay? value) { + if (value != null) { + setState(() { + _endTime = value; + _endTimeController.text = DateTimeUtils.displayTimeOfDay(_endTime); + _isFinalRate = widget.suggestedEndTime == null || + _endTime == widget.suggestedEndTime!; + }); + } } Future validateTimePeriod() async { String? error; List bolusRates = Bolus.getAllForProfile(widget.bolusProfileId); - // BolusProfile.get(widget.bolusProfileId)?.bolusRates ?? []; - // TODO use a query for the following checks instead? // check for duplicates if (bolusRates .where((other) => @@ -138,7 +175,7 @@ class _BolusDetailScreenState extends State { }); } - void handleSaveAction() async { + void handleSaveAction({bool next = true}) async { setState(() { _isSaving = true; }); @@ -153,11 +190,34 @@ class _BolusDetailScreenState extends State { units: double.tryParse(_unitsController.text) ?? 0, carbs: double.tryParse(_carbsController.text) ?? 0, mgPerDl: int.tryParse(_mgPerDlController.text), - mmolPerL: double.parse(_mmolPerLController.text), + mmolPerL: double.tryParse(_mmolPerLController.text), ); bolus.bolusProfile.targetId = widget.bolusProfileId; Bolus.put(bolus); - Navigator.pop(context, '${_isNew ? 'New' : ''} Bolus Rate saved'); + + if (next) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return BolusDetailScreen( + bolusProfileId: widget.bolusProfileId, + suggestedStartTime: _endTime, + suggestedEndTime: widget.suggestedEndTime, + ); + }, + ), + ).then((result) { + Navigator.pop( + context, + ['New Bolus Rate${result[1] != null ? 's' : ''} saved', bolus] + + [result[1]], + ); + }); + } else { + Navigator.pop( + context, ['${_isNew ? 'New' : ''} Bolus Rate saved', bolus]); + } } }); } @@ -168,7 +228,7 @@ class _BolusDetailScreenState extends State { } void handleCancelAction() { - if (showConfirmationDialogOnCancel && + if (Settings.get().showConfirmationDialogOnCancel && ((_isNew && (_startTime.hour != (widget.suggestedStartTime?.hour ?? 0) || _endTime.hour != (widget.suggestedEndTime?.hour ?? 0) || @@ -190,7 +250,7 @@ class _BolusDetailScreenState extends State { _bolus!.mgPerDl || (double.tryParse(_mmolPerLController.text) ?? 0) != _bolus!.mmolPerL)))) { - Dialogs.showCancelConfirmationDialog( + DialogUtils.showCancelConfirmationDialog( context: context, isNew: _isNew, onSave: handleSaveAction, @@ -200,30 +260,26 @@ class _BolusDetailScreenState extends State { } } - void convertBetweenMgPerDlAndMmolPerL({GlucoseMeasurement? calculateFrom}) { - int? mgPerDl; - double? mmolPerL; - - if (calculateFrom != GlucoseMeasurement.mmolPerL && - _mgPerDlController.text != '') { - mgPerDl = int.tryParse(_mgPerDlController.text); - } - if (calculateFrom != GlucoseMeasurement.mgPerDl && - _mmolPerLController.text != '') { - mmolPerL = double.tryParse(_mmolPerLController.text); - } - - if (mgPerDl != null && mmolPerL == null) { - setState(() { + void convertBetweenMgPerDlAndMmolPerL(double? value) async { + if (value != null) { + if (Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl && + _mgPerDlController.text != '') { + _mgPerDlController.text = value.toInt().toString(); + setState(() { + _mmolPerLController.text = + Utils.convertMgPerDlToMmolPerL(value.toInt()).toString(); + }); + } + if (Settings.glucoseMeasurement == GlucoseMeasurement.mmolPerL && + _mmolPerLController.text != '') { _mmolPerLController.text = - Utils.convertMgPerDlToMmolPerL(mgPerDl!).toString(); - }); - } - if (mmolPerL != null && mgPerDl == null) { - setState(() { - _mgPerDlController.text = - Utils.convertMmolPerLToMgPerDl(mmolPerL!).toString(); - }); + Utils.toStringMatchingTemplateFractionPrecision( + value, Settings.mmolPerLSteps); + setState(() { + _mgPerDlController.text = + Utils.convertMmolPerLToMgPerDl(value.toDouble()).toString(); + }); + } } } @@ -235,172 +291,127 @@ class _BolusDetailScreenState extends State { '${_isNew ? 'New' : 'Edit'} Bolus Rate for ${BolusProfile.get(widget.bolusProfileId)?.name}'), ), drawer: const Navigation(currentLocation: BolusDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - children: [ - StyledForm( - formState: _bolusForm, - fields: [ - Row( - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.only(right: 5), - child: StyledTimeOfDayFormField( - label: 'Start Time', - controller: _startTimeController, - time: _startTime, - onChanged: (newStartTime) { - if (newStartTime != null) { - setState(() { - _startTime = newStartTime; - }); - updateStartTime(); - } - }, + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + children: [ + FormWrapper( + formState: _bolusForm, + fields: [ + Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.only(right: 5), + child: TimeOfDayFormField( + label: 'Start Time', + controller: _startTimeController, + time: _startTime, + onChanged: updateStartTime, + ), ), ), - ), - Expanded( - child: Padding( - padding: const EdgeInsets.only(left: 5), - child: StyledTimeOfDayFormField( - label: 'End Time', - controller: _endTimeController, - time: _endTime, - onChanged: (newEndTime) { - if (newEndTime != null) { - setState(() { - _endTime = newEndTime; - }); - updateEndTime(); - } - }, + Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 5), + child: TimeOfDayFormField( + label: 'End Time', + controller: _endTimeController, + time: _endTime, + onChanged: updateEndTime, + ), ), ), - ), - ], - ), - TextFormField( - decoration: const InputDecoration( - labelText: 'Units', - suffixText: 'U', + ], ), - controller: _unitsController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty amount of units'; - } - return null; - }, - ), - TextFormField( - decoration: InputDecoration( - labelText: 'per carbs', - suffixText: nutritionMeasurement == - NutritionMeasurement.grams - ? 'g' - : nutritionMeasurement == NutritionMeasurement.ounces - ? 'oz' - : '', + NumberFormField( + controller: _unitsController, + label: 'Units', + suffix: 'U', + autoRoundToMultipleOfStep: true, + step: Settings.insulinSteps, + onChanged: (value) { + if (value != null) { + _unitsController.text = + Utils.toStringMatchingTemplateFractionPrecision( + value, Settings.insulinSteps); + } + }, ), - controller: _carbsController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - validator: (value) { - if (value!.trim().isEmpty) { - return 'How many carbs does the rate make up for?'; - } - return null; - }, - ), - Row( - children: [ - glucoseMeasurement == GlucoseMeasurement.mgPerDl || - glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == - GlucoseDisplayMode.bothForDetail - ? Expanded( - child: TextFormField( - decoration: const InputDecoration( - labelText: 'per mg/dl', - suffixText: 'mg/dl', + NumberFormField( + controller: _carbsController, + label: 'per carbs', + suffix: Settings.nutritionMeasurementSuffix, + autoRoundToMultipleOfStep: true, + step: Settings.nutritionSteps, + onChanged: (value) { + if (value != null) { + _carbsController.text = + Utils.toStringMatchingTemplateFractionPrecision( + value, Settings.nutritionSteps); + } + }, + ), + Row( + children: [ + Settings.glucoseMeasurement == + GlucoseMeasurement.mgPerDl || + Settings.glucoseDisplayMode == + GlucoseDisplayMode.both || + Settings.glucoseDisplayMode == + GlucoseDisplayMode.bothForDetail + ? Expanded( + flex: Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl ? 2 : 1, + child: NumberFormField( + label: 'per mg/dl', + suffix: 'mg/dl', + readOnly: Settings.glucoseMeasurement == + GlucoseMeasurement.mmolPerL, + showSteppers: Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl, + controller: _mgPerDlController, + onChanged: convertBetweenMgPerDlAndMmolPerL, ), - controller: _mgPerDlController, - onChanged: (_) => - convertBetweenMgPerDlAndMmolPerL( - calculateFrom: - GlucoseMeasurement.mgPerDl), - keyboardType: - const TextInputType.numberWithOptions(), - validator: (value) { - if (value!.trim().isEmpty && - _mmolPerLController.text.trim().isEmpty) { - return 'How many mg/dl does the rate make up for?'; - } - return null; - }, - ), - ) - : Container(), - glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == + ) + : Container(), + Settings.glucoseMeasurement == + GlucoseMeasurement.mmolPerL || + [ + GlucoseDisplayMode.both, GlucoseDisplayMode.bothForDetail - ? IconButton( - onPressed: () => convertBetweenMgPerDlAndMmolPerL( - calculateFrom: GlucoseMeasurement.mmolPerL), - icon: const Icon(Icons.calculate), - ) - : Container(), - glucoseMeasurement == GlucoseMeasurement.mmolPerL || - glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == - GlucoseDisplayMode.bothForDetail - ? Expanded( - child: TextFormField( - decoration: const InputDecoration( - labelText: 'per mmol/l', - suffixText: 'mmol/l', + ].contains(Settings.glucoseDisplayMode) + ? Expanded( + flex: Settings.glucoseMeasurement == GlucoseMeasurement.mmolPerL ? 2 : 1, + child: NumberFormField( + label: 'per mmol/l', + suffix: 'mmol/l', + readOnly: Settings.glucoseMeasurement == + GlucoseMeasurement.mgPerDl, + showSteppers: Settings.glucoseMeasurement == GlucoseMeasurement.mmolPerL, + controller: _mmolPerLController, + step: Settings.mmolPerLSteps, + onChanged: convertBetweenMgPerDlAndMmolPerL, ), - controller: _mmolPerLController, - onChanged: (_) => - convertBetweenMgPerDlAndMmolPerL( - calculateFrom: - GlucoseMeasurement.mmolPerL), - keyboardType: - const TextInputType.numberWithOptions( - decimal: true), - validator: (value) { - if (value!.trim().isEmpty && - _mgPerDlController.text.trim().isEmpty) { - return 'How many mmol/l does rhe rate make up for?'; - } - return null; - }, - ), - ) - : Container(), - glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == - GlucoseDisplayMode.bothForDetail - ? IconButton( - onPressed: () => convertBetweenMgPerDlAndMmolPerL( - calculateFrom: GlucoseMeasurement.mgPerDl), - icon: const Icon(Icons.calculate), - ) - : Container(), - ], - ), - ], - ), - ], + ) + : Container(), + ], + ), + ], + ), + ], + ), ), ), bottomNavigationBar: DetailBottomRow( onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, + onAction: + _isSaving ? null : () => handleSaveAction(next: !_isFinalRate), + onMiddleAction: _isSaving || _isFinalRate + ? null + : () => handleSaveAction(next: false), + actionText: _isFinalRate ? 'SAVE & CLOSE' : 'NEXT', + middleActionText: 'SAVE & CLOSE', ), ); } diff --git a/lib/screens/bolus/bolus_list.dart b/lib/screens/bolus/bolus_list.dart index 2c2576e..828719a 100644 --- a/lib/screens/bolus/bolus_list.dart +++ b/lib/screens/bolus/bolus_list.dart @@ -1,6 +1,5 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/settings.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/utils/date_time_utils.dart'; import 'package:flutter/material.dart'; import 'package:diameter/models/bolus.dart'; @@ -13,7 +12,10 @@ class BolusListScreen extends StatefulWidget { final Function() reload; const BolusListScreen( - {Key? key, required this.bolusProfile, this.bolusRates = const [], required this.reload}) + {Key? key, + required this.bolusProfile, + this.bolusRates = const [], + required this.reload}) : super(key: key); @override @@ -21,6 +23,14 @@ class BolusListScreen extends StatefulWidget { } class _BolusListScreenState extends State { + final ScrollController _scrollController = ScrollController(); + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + void reload({String? message}) { widget.reload(); @@ -46,7 +56,7 @@ class _BolusListScreenState extends State { id: bolus.id, ), ), - ).then((message) => reload(message: message)); + ).then((result) => reload(message: result?[0])); } void onDelete(Bolus bolus) { @@ -55,8 +65,8 @@ class _BolusListScreenState extends State { } void handleDeleteAction(Bolus bolus) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(bolus), message: 'Are you sure you want to delete this Bolus Rate?', @@ -70,8 +80,6 @@ class _BolusListScreenState extends State { List bolusRates = widget.bolusRates; Bolus bolus = bolusRates[index]; - // TODO: use queries for all this - // check for gaps if (index == 0 && (bolus.startTime.toLocal().hour != 0 || bolus.startTime.minute != 0)) { return 'First Bolus of the day needs to start at 00:00'; @@ -103,58 +111,122 @@ class _BolusListScreenState extends State { .isNotEmpty) { return 'This rate\'s time period overlaps with another one'; } + + return null; } @override Widget build(BuildContext context) { - return SingleChildScrollView( - padding: const EdgeInsets.only(top: 10.0), - child: Column( - children: [ - widget.bolusRates.isNotEmpty ? ListView.builder( - shrinkWrap: true, - itemCount: widget.bolusRates.length, - itemBuilder: (context, index) { - final bolus = widget.bolusRates[index]; - final error = validateTimePeriod(index); - return ListTile( - isThreeLine: true, - tileColor: error != null ? Colors.red.shade100 : null, - onTap: () { - handleEditAction(bolus); - }, - title: Text( - '${DateTimeUtils.displayTime(bolus.startTime)} - ${DateTimeUtils.displayTime(bolus.endTime)}'), - subtitle: Column( - mainAxisSize: MainAxisSize.max, - crossAxisAlignment: CrossAxisAlignment.start, + return widget.bolusRates.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + padding: const EdgeInsets.all(10.0), + controller: _scrollController, + shrinkWrap: true, + itemCount: widget.bolusRates.length, + itemBuilder: (context, index) { + final bolus = widget.bolusRates[index]; + final error = validateTimePeriod(index); + return Card( + child: Column( children: [ - Text( - '${bolus.units} U per ${bolus.carbs}${nutritionMeasurement == NutritionMeasurement.grams ? ' g' : ' oz'} carbs/${glucoseMeasurement == GlucoseMeasurement.mgPerDl ? bolus.mgPerDl : bolus.mmolPerL} ${glucoseMeasurement == GlucoseMeasurement.mgPerDl ? 'mg/dl' : 'mmol/l'}'), error != null - ? Text(error, - style: const TextStyle(color: Colors.red)) - : const Text('') - ]), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, + ? Padding( + padding: const EdgeInsets.all(5.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.warning, + color: Theme.of(context).errorColor), + Text(error, + style: TextStyle( + color: Theme.of(context).errorColor)), + ], + ), + ) + : Container(), + ListTile( + onTap: () { + handleEditAction(bolus); + }, + isThreeLine: true, + title: Text( + '${DateTimeUtils.displayTime(bolus.startTime)} - ${DateTimeUtils.displayTime(bolus.endTime)}'), + subtitle: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Column( + children: (bolus.units > 0 && bolus.carbs > 0) + ? [ + Text((bolus.carbs / bolus.units) + .toStringAsPrecision(2)), + Text( + '${Settings.nutritionMeasurementSuffix} carbs per U', + textAlign: TextAlign.center, + textScaleFactor: 0.75), + ] + : [], + ), + ), + Expanded( + child: Column( + children: (bolus.units > 0 && bolus.carbs > 0) + ? [ + Text((bolus.units / bolus.carbs * 12) + .toStringAsPrecision(2)), + const Text('U per bread unit', + textAlign: TextAlign.center, + textScaleFactor: 0.75), + ] + : [], + ), + ), + Expanded( + child: Column( + children: (bolus.units > 0 && + (bolus.mgPerDl ?? bolus.mmolPerL ?? 0) > + 0) + ? [ + Text((((Settings.glucoseMeasurement == + GlucoseMeasurement + .mgPerDl + ? bolus.mgPerDl + : bolus.mmolPerL ?? 0)! / + bolus.units)) + .toString()), + Text( + '${Settings.glucoseMeasurementSuffix} per unit', + textAlign: TextAlign.center, + textScaleFactor: 0.75), + ] + : [], + ), + ), + ], + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => handleDeleteAction(bolus), + ), + ], + ), ), - onPressed: () => handleDeleteAction(bolus), - ), - ], - ), - ); - }, - ) : const Center( - child: Text('You have not created any Bolus Rates yet!'), + ], + ), + ); + }, ), - ], - ), - ); + ) + : const Center( + child: Text('You have not created any Bolus Rates yet!'), + ); } } diff --git a/lib/screens/bolus/bolus_profile_detail.dart b/lib/screens/bolus/bolus_profile_detail.dart index 4e87dd4..bb0aeed 100644 --- a/lib/screens/bolus/bolus_profile_detail.dart +++ b/lib/screens/bolus/bolus_profile_detail.dart @@ -1,11 +1,12 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; import 'package:diameter/models/bolus.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:diameter/screens/bolus/bolus_detail.dart'; import 'package:flutter/material.dart'; -import 'package:diameter/components/forms.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; import 'package:diameter/models/bolus_profile.dart'; import 'package:diameter/screens/bolus/bolus_list.dart'; @@ -26,14 +27,15 @@ class _BolusProfileDetailScreenState extends State { BolusProfile? _bolusProfile; List _bolusRates = []; bool _isNew = true; - bool _isSaving = false; final GlobalKey _bolusProfileForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); late FloatingActionButton addBolusButton; late IconButton refreshButton; late IconButton closeButton; late DetailBottomRow detailBottomRow; + late DetailBottomRow detailBottomRowWhileSaving; FloatingActionButton? actionButton; List appBarActions = []; @@ -73,10 +75,15 @@ class _BolusProfileDetailScreenState extends State { icon: const Icon(Icons.close), ); - // TODO: fix (saving button doesnt get disabled) detailBottomRow = DetailBottomRow( onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, + onAction: handleSaveAction, + onMiddleAction: () => handleSaveAction(close: true), + ); + + detailBottomRowWhileSaving = DetailBottomRow( + onCancel: handleCancelAction, + onAction: null, ); actionButton = null; @@ -84,6 +91,14 @@ class _BolusProfileDetailScreenState extends State { bottomNav = detailBottomRow; } + @override + void dispose() { + _scrollController.dispose(); + _nameController.dispose(); + _notesController.dispose(); + super.dispose(); + } + void reload({String? message}) { if (widget.id != 0) { setState(() { @@ -144,7 +159,7 @@ class _BolusProfileDetailScreenState extends State { }); } else if (!_active && ((_isNew && _activeCount == 0) || - (_activeCount == 1 && _bolusProfile!.active))) { + (!_isNew && _activeCount == 1 && _bolusProfile!.active))) { await showDialog( context: context, builder: (BuildContext context) { @@ -176,25 +191,30 @@ class _BolusProfileDetailScreenState extends State { TimeOfDay? suggestedStartTime; TimeOfDay? suggestedEndTime; - _bolusRates.asMap().forEach((index, bolus) { - if (suggestedStartTime == null && suggestedEndTime == null) { - if (index == 0 && - (bolus.startTime.hour != 0 || bolus.startTime.minute != 0)) { - suggestedStartTime = const TimeOfDay(hour: 0, minute: 0); - suggestedEndTime = TimeOfDay.fromDateTime(bolus.startTime); - } else if ((index == _bolusRates.length - 1) && - (bolus.endTime.hour != 0 || bolus.endTime.minute != 0)) { - suggestedStartTime = TimeOfDay.fromDateTime(bolus.endTime); - suggestedEndTime = const TimeOfDay(hour: 0, minute: 0); - } else if (index != 0) { - var lastEndTime = _bolusRates[index - 1].endTime; - if (bolus.startTime.isAfter(lastEndTime)) { - suggestedStartTime = TimeOfDay.fromDateTime(lastEndTime); + if (_bolusRates.isEmpty) { + suggestedStartTime = const TimeOfDay(hour: 0, minute: 0); + suggestedEndTime = const TimeOfDay(hour: 0, minute: 0); + } else { + _bolusRates.asMap().forEach((index, bolus) { + if (suggestedStartTime == null && suggestedEndTime == null) { + if (index == 0 && + (bolus.startTime.hour != 0 || bolus.startTime.minute != 0)) { + suggestedStartTime = const TimeOfDay(hour: 0, minute: 0); suggestedEndTime = TimeOfDay.fromDateTime(bolus.startTime); + } else if ((index == _bolusRates.length - 1) && + (bolus.endTime.hour != 0 || bolus.endTime.minute != 0)) { + suggestedStartTime = TimeOfDay.fromDateTime(bolus.endTime); + suggestedEndTime = const TimeOfDay(hour: 0, minute: 0); + } else if (index != 0) { + var lastEndTime = _bolusRates[index - 1].endTime; + if (bolus.startTime.isAfter(lastEndTime)) { + suggestedStartTime = TimeOfDay.fromDateTime(lastEndTime); + suggestedEndTime = TimeOfDay.fromDateTime(bolus.startTime); + } } } - } - }); + }); + } Navigator.push( context, @@ -207,34 +227,49 @@ class _BolusProfileDetailScreenState extends State { ); }, ), - ).then((message) => reload(message: message)); + ).then((result) => reload(message: result?[0])); } - void handleSaveAction() async { + void handleSaveAction({bool close = false}) async { setState(() { - _isSaving = true; + bottomNav = detailBottomRowWhileSaving; }); if (_bolusProfileForm.currentState!.validate()) { await checkActiveProfiles(); - BolusProfile.put( - BolusProfile( - id: widget.id, - name: _nameController.text, - active: _active, - notes: _notesController.text, - ), + BolusProfile bolusProfile = BolusProfile( + id: widget.id, + name: _nameController.text, + active: _active, + notes: _notesController.text, ); - Navigator.pop(context, '${_isNew ? 'New' : ''} Bolus Profile saved'); + BolusProfile.put(bolusProfile); + + if (close) { + Navigator.pop(context, + ['${_isNew ? 'New' : ''} Bolus Profile saved', bolusProfile]); + } else { + if (_isNew) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + BolusProfileDetailScreen(id: bolusProfile.id), + ), + ).then((result) => Navigator.pop(context, result)); + } else { + reload(message: 'Bolus Profile saved'); + } + } } setState(() { - _isSaving = false; + bottomNav = detailBottomRow; }); - } + } void handleCancelAction() { - if (showConfirmationDialogOnCancel && + if (Settings.get().showConfirmationDialogOnCancel && (_isNew && (_active != widget.active || _nameController.text != '' || @@ -243,7 +278,7 @@ class _BolusProfileDetailScreenState extends State { (_bolusProfile!.active != _active || _bolusProfile!.name != _nameController.text || (_bolusProfile!.notes ?? '') != _notesController.text))) { - Dialogs.showCancelConfirmationDialog( + DialogUtils.showCancelConfirmationDialog( context: context, isNew: _isNew, onSave: handleSaveAction, @@ -282,52 +317,59 @@ class _BolusProfileDetailScreenState extends State { }); List tabs = [ - SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _bolusProfileForm, - fields: [ - TextFormField( - controller: _nameController, - decoration: const InputDecoration( - labelText: 'Name', + Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _bolusProfileForm, + fields: [ + TextFormField( + controller: _nameController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty title'; + } + return null; + }, ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty title'; - } - return null; - }, - ), - TextFormField( - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, + TextFormField( + decoration: const InputDecoration( + labelText: 'Notes', + ), + controller: _notesController, + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, ), - controller: _notesController, - keyboardType: TextInputType.multiline, - ), - StyledBooleanFormField( - value: _active, - onChanged: (value) { - setState(() { - _active = value; - }); - }, - label: 'active', - ), - ], - ), - ], + BooleanFormField( + value: _active, + onChanged: (value) { + setState(() { + _active = value; + }); + }, + label: 'active', + ), + ], + ), + ], + ), ), ), ]; if (!_isNew) { - tabs.add( - BolusListScreen(bolusProfile: _bolusProfile!, bolusRates: _bolusRates, reload: reload)); + tabs.add(BolusListScreen( + bolusProfile: _bolusProfile!, + bolusRates: _bolusRates, + reload: reload)); } return Scaffold( diff --git a/lib/screens/bolus/bolus_profile_list.dart b/lib/screens/bolus/bolus_profile_list.dart index d6579a9..2b9a617 100644 --- a/lib/screens/bolus/bolus_profile_list.dart +++ b/lib/screens/bolus/bolus_profile_list.dart @@ -1,5 +1,7 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/models/bolus.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:flutter/material.dart'; import 'package:diameter/models/bolus_profile.dart'; @@ -14,18 +16,32 @@ class BolusProfileListScreen extends StatefulWidget { } class _BolusProfileListScreenState extends State { + final ScrollController _scrollController = ScrollController(); + List _bolusProfiles = []; Widget banner = Container(); - bool pickActiveProfileMode = false; + + final BolusProfile? _activeProfile = BolusProfile.getActive(DateTime.now()); + + @override + void initState() { + super.initState(); + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } void reload({String? message}) { setState(() { - pickActiveProfileMode = false; _bolusProfiles = BolusProfile.getAll(); }); updateBanner(); - + setState(() { if (message != null) { var snackBar = SnackBar( @@ -74,14 +90,38 @@ class _BolusProfileListScreenState extends State { }); } + void handleDuplicateAction(BolusProfile bolusProfile) async { + final copy = BolusProfile( + active: false, + name: 'Copy of ${bolusProfile.name}', + ); + BolusProfile.put(copy); + + final rates = Bolus.getAllForProfile(bolusProfile.id); + for (Bolus rate in rates) { + final bolus = Bolus( + endTime: rate.endTime, + startTime: rate.startTime, + units: rate.units, + carbs: rate.carbs, + mgPerDl: rate.mgPerDl, + mmolPerL: rate.mmolPerL, + ); + bolus.bolusProfile.target = copy; + Bolus.put(bolus); + } + + reload(message: 'Added copy of ${bolusProfile.name}'); + } + void onDelete(BolusProfile bolusProfile) { BolusProfile.remove(bolusProfile.id); reload(message: 'Bolus Profile deleted'); } void handleDeleteAction(BolusProfile bolusProfile) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(bolusProfile), message: 'Are you sure you want to delete this Bolus Profile?', @@ -91,18 +131,25 @@ class _BolusProfileListScreenState extends State { } } - void onPickActive(BolusProfile bolusProfile) { - BolusProfile.setAllInactive; - bolusProfile.active = true; - BolusProfile.put(bolusProfile); - reload( - message: '${bolusProfile.name} has been set as your active Profile'); + void onPickActive(BolusProfile? bolusProfile) { + if (bolusProfile != null) { + BolusProfile.setAllInactive; + bolusProfile.active = true; + BolusProfile.put(bolusProfile); + reload( + message: '${bolusProfile.name} has been set as your active Profile'); + } } void handlePickActiveProfileAction() { setState(() { banner = MaterialBanner( - content: const Text('Click one of the profiles to active it.'), + content: AutoCompleteDropdownButton( + controller: TextEditingController(text: ''), + items: _bolusProfiles, + label: 'Default Basal Profile', + onChanged: onPickActive, + ), leading: const CircleAvatar(child: Icon(Icons.info)), forceActionsBelow: true, actions: [ @@ -112,7 +159,6 @@ class _BolusProfileListScreenState extends State { ), ], ); - pickActiveProfileMode = true; }); } @@ -120,10 +166,10 @@ class _BolusProfileListScreenState extends State { Navigator.push( context, MaterialPageRoute( - builder: (context) => BolusProfileDetailScreen( - id: bolusProfile?.id ?? 0, active: active), + builder: (context) => + BolusProfileDetailScreen(id: bolusProfile?.id ?? 0, active: active), ), - ).then((message) => reload(message: message)); + ).then((result) => reload(message: result?[0])); } void onNew(bool active) { @@ -134,12 +180,6 @@ class _BolusProfileListScreenState extends State { showDetailScreen(bolusProfile: bolusProfile); } - @override - void initState() { - super.initState(); - reload(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -156,42 +196,63 @@ class _BolusProfileListScreenState extends State { children: [ banner, Expanded( - child: _bolusProfiles.isNotEmpty ? ListView.builder( - itemCount: _bolusProfiles.length, - itemBuilder: (context, index) { - final bolusProfile = _bolusProfiles[index]; - return ListTile( - tileColor: bolusProfile.active - ? Colors.green.shade100 - : null, - onTap: () { - // TODO: make pick active profile visually distinct - pickActiveProfileMode - ? onPickActive(bolusProfile) - : onEdit(bolusProfile); - }, - title: Text( - bolusProfile.name, + child: _bolusProfiles.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + padding: const EdgeInsets.all(10.0), + controller: _scrollController, + itemCount: _bolusProfiles.length, + itemBuilder: (context, index) { + final bolusProfile = _bolusProfiles[index]; + String activeProfileText = bolusProfile.active + ? ' (Default Profile)' + : bolusProfile.id == _activeProfile?.id + ? ' (Current Active Profile)' + : ''; + return Card( + child: ListTile( + selected: bolusProfile.active || + bolusProfile.id == _activeProfile?.id, + onTap: () => onEdit(bolusProfile), + title: Text( + bolusProfile.name.toUpperCase() + + activeProfileText, + style: Theme.of(context).textTheme.subtitle2, + ), + subtitle: Padding( + padding: const EdgeInsets.only(top: 10.0), + child: Text(bolusProfile.notes ?? ''), + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon( + Icons.copy, + color: Colors.blue, + ), + onPressed: () => + handleDuplicateAction(bolusProfile), + ), + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => + handleDeleteAction(bolusProfile), + ), + ], + ), + ), + ); + }, + ), + ) + : const Center( + child: Text('You have not created any Bolus Profiles yet!'), ), - subtitle: Text(bolusProfile.notes!), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () => - handleDeleteAction(bolusProfile), - ), - ], - ), - ); - }, - ) : const Center( - child: Text('You have not created any Bolus Profiles yet!'), - ), ), ], ), diff --git a/lib/screens/log/active_log_event_list.dart b/lib/screens/log/active_log_event_list.dart deleted file mode 100644 index b16c82d..0000000 --- a/lib/screens/log/active_log_event_list.dart +++ /dev/null @@ -1,166 +0,0 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/models/log_entry.dart'; -import 'package:diameter/models/log_event.dart'; -// import 'package:diameter/models/log_event_type.dart'; -import 'package:diameter/screens/log/log_event_detail.dart'; -import 'package:diameter/utils/date_time_utils.dart'; -import 'package:flutter/material.dart'; -// import 'package:diameter/components/progress_indicator.dart'; - -class ActiveLogEventListScreen extends StatefulWidget { - static const String routeName = '/active-log-events'; - - final LogEntry? endLogEntry; - final Function()? onSetEndTime; - - const ActiveLogEventListScreen( - {Key? key, this.endLogEntry, this.onSetEndTime}) - : super(key: key); - - @override - _ActiveLogEventListScreenState createState() => - _ActiveLogEventListScreenState(); -} - -class _ActiveLogEventListScreenState extends State { - List _activeLogEvents = []; - - void refresh({String? message}) { - setState(() { - _activeLogEvents = LogEvent.getAllOngoing(); - }); - - setState(() { - if (message != null) { - var snackBar = SnackBar( - content: Text(message), - duration: const Duration(seconds: 2), - ); - ScaffoldMessenger.of(context) - ..removeCurrentSnackBar() - ..showSnackBar(snackBar); - } - }); - } - - void onStop(LogEvent event) async { - event.endTime = DateTime.now(); - event.endLogEntry.target = - widget.endLogEntry ?? LogEntry(time: DateTime.now()); - LogEvent.put(event); - refresh(); - if (widget.onSetEndTime != null) { - widget.onSetEndTime!(); - } - } - - void handleStopAction(LogEvent event) async { - if (showConfirmationDialogOnStopEvent) { - Dialogs.showConfirmationDialog( - context: context, - onConfirm: () => onStop(event), - message: 'Are you sure you want to end this Event?', - ); - } else { - onStop(event); - } - } - - void onDelete(LogEvent event) { - LogEvent.remove(event.id); - refresh(message: 'Event deleted'); - } - - void handleDeleteAction(LogEvent event) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( - context: context, - onConfirm: () => onDelete(event), - message: 'Are you sure you want to delete this Event?', - ); - } else { - onDelete(event); - } - } - - @override - void initState() { - super.initState(); - refresh(); - } - - @override - Widget build(BuildContext context) { - return SingleChildScrollView( - padding: const EdgeInsets.only(top: 10.0), - child: Column( - children: [ - // TODO: make action button instead of appbar - AppBar( - title: const Text('Active Events'), - primary: false, - automaticallyImplyLeading: false, - actions: [ - IconButton( - icon: const Icon(Icons.add), - onPressed: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => LogEventDetailScreen( - logEntry: widget.endLogEntry!, - ), - ), - ).then((message) => refresh(message: message)); - }, - ), - IconButton(icon: const Icon(Icons.refresh), onPressed: refresh), - ], - ), - _activeLogEvents.isNotEmpty ? - ListView.builder( - shrinkWrap: true, - itemCount: _activeLogEvents.length, - itemBuilder: (context, index) { - final event = _activeLogEvents[index]; - return ListTile( - title: Row( - mainAxisSize: MainAxisSize.max, - children: [ - Expanded( - child: Text(event.eventType.target?.value ?? ''), - ), - ], - ), - subtitle: Text( - '${DateTimeUtils.displayDateTime(event.time)}${event.hasEndTime ? ' - ${DateTimeUtils.displayDateTime(event.endTime)}' : ''}'), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () => handleStopAction(event), - ), - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () => handleDeleteAction(event), - ), - ], - ), - ); - }, - ) : const Center( - child: Text('There are no currently ongoing events!'), - ), - ], - ), - ); - } -} diff --git a/lib/screens/log/log.dart b/lib/screens/log/log.dart index 910477d..c1d9b5e 100644 --- a/lib/screens/log/log.dart +++ b/lib/screens/log/log.dart @@ -1,10 +1,14 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/glucose_target.dart'; +import 'package:diameter/models/log_bolus.dart'; import 'package:diameter/models/log_entry.dart'; +import 'package:diameter/models/log_meal.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; -import 'package:diameter/screens/log/log_entry.dart'; +import 'package:diameter/screens/log/log_entry/log_entry.dart'; import 'package:diameter/utils/date_time_utils.dart'; import 'package:flutter/material.dart'; +import 'dart:math' as math; class LogScreen extends StatefulWidget { static const String routeName = '/log'; @@ -15,11 +19,33 @@ class LogScreen extends StatefulWidget { } class _LogScreenState extends State { - late Map> _logEntryDailyMap; + late List _logEntries; - void refresh({String? message}) { + final ScrollController _scrollController = ScrollController(); + final TextEditingController _dateController = TextEditingController(text: ''); + + late DateTime _date; + + @override + void initState() { + super.initState(); + + _date = DateTime.now(); + _dateController.text = DateTimeUtils.displayDate(_date); + + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + _dateController.dispose(); + super.dispose(); + } + + void reload({String? message}) { setState(() { - _logEntryDailyMap = LogEntry.getDailyEntryMap(); + _logEntries = LogEntry.getAllForDate(_date); }); setState(() { if (message != null) { @@ -36,12 +62,12 @@ class _LogScreenState extends State { void onDelete(LogEntry logEntry) { LogEntry.remove(logEntry.id); - refresh(message: 'Log Entry deleted'); + reload(message: 'Log Entry deleted'); } void handleDeleteAction(LogEntry logEntry) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(logEntry), message: 'Are you sure you want to delete this Log Entry?', @@ -51,10 +77,14 @@ class _LogScreenState extends State { } } - @override - void initState() { - super.initState(); - refresh(); + void onChangeDate(DateTime? date) { + if (date != null) { + setState(() { + _date = DateTime(date.year, date.month, date.day); + _dateController.text = DateTimeUtils.displayDate(date); + }); + reload(); + } } @override @@ -64,92 +94,235 @@ class _LogScreenState extends State { title: const Text('Log Entries'), actions: [ IconButton( - onPressed: refresh, - icon: const Icon(Icons.refresh) - ), + onPressed: () => onChangeDate(DateTime.now()), + icon: const Icon(Icons.today)), + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)), ], ), drawer: const Navigation(currentLocation: LogScreen.routeName), body: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: SingleChildScrollView( - child: _logEntryDailyMap.isNotEmpty ? ListView.builder( - shrinkWrap: true, - padding: const EdgeInsets.all(10.0), - itemCount: _logEntryDailyMap.length, - itemBuilder: (context, dateIndex) { - List dateList = _logEntryDailyMap.keys.toList(); - final date = dateList[dateIndex]; - final entryList = _logEntryDailyMap[date]; - return ListBody( - children: [ - Text(DateTimeUtils.displayDate(date)), - entryList != null && entryList.isNotEmpty - ? ListView.builder( - shrinkWrap: true, - itemCount: entryList.length, - itemBuilder: (context, index) { - final logEntry = entryList[index]; - return ListTile( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - LogEntryScreen( - id: logEntry.id), - ), - ).then((message) => refresh( - message: message)); - }, - title: Text( - DateTimeUtils.displayTime( - logEntry.time)), - // TODO: add additional fields (event icons...) - // TODO: display glucose in colors according to target settings - subtitle: Text(logEntry - .mgPerDl != - null - ? '${logEntry.mgPerDl.toString()} mg/dl' - : ''), - trailing: Row( - mainAxisSize: - MainAxisSize.min, - children: [ - IconButton( - onPressed: () => - handleDeleteAction( - logEntry), - icon: const Icon( - Icons.delete, - color: Colors.blue), - ) - ], - ), - ); - } - ) : Container(), - ], - ); - }, - ) : const Center( - child: Text('You have not created any Log Entries yet!'), + children: [ + Row( + children: [ + IconButton( + onPressed: _date.isAtSameMomentAs(DateTime(2000, 1, 1)) + ? null + : () => + onChangeDate(_date.subtract(const Duration(days: 1))), + icon: const Icon(Icons.arrow_back), ), - ), + Expanded( + child: GestureDetector( + onTap: () async { + final newTime = await showDatePicker( + context: context, + initialDate: _date, + firstDate: DateTime(2000, 1, 1), + lastDate: DateTime.now().add(const Duration(days: 365)), + ); + onChangeDate(newTime); + }, + child: Expanded( + child: Text( + DateTimeUtils.displayDate(_date).toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, + textAlign: TextAlign.center, + ), + ), + ), + ), + IconButton( + onPressed: + _date.add(const Duration(days: 1)).isBefore(DateTime.now()) + ? () => onChangeDate(_date.add(const Duration(days: 1))) + : null, + icon: const Icon(Icons.arrow_forward), + ), + ], + ), + Expanded( + child: _logEntries.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + controller: _scrollController, + padding: const EdgeInsets.all(10.0), + shrinkWrap: true, + itemCount: _logEntries.length, + itemBuilder: (context, index) { + LogEntry logEntry = _logEntries[index]; + double bolus = + LogBolus.getTotalBolusForEntry(logEntry.id); + double carbs = + LogMeal.getTotalCarbsForEntry(logEntry.id); + TextStyle glucoseStyle = TextStyle( + color: GlucoseTarget.getColorForGlucose( + mgPerDl: logEntry.mgPerDl ?? 0, + mmolPerL: logEntry.mmolPerL ?? 0)); + return Card( + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + LogEntryScreen(id: logEntry.id), + ), + ).then((result) => reload(message: result?[0])); + }, + title: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Text( + DateTimeUtils.displayTime(logEntry.time), + ), + ), + Expanded( + child: Column( + children: logEntry.mgPerDl != null && + (Settings.glucoseMeasurement == + GlucoseMeasurement + .mgPerDl || + Settings.glucoseDisplayMode == + GlucoseDisplayMode.both || + Settings.glucoseDisplayMode == + GlucoseDisplayMode + .bothForList) + ? [ + Row( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Text( + logEntry.mgPerDl.toString(), + style: glucoseStyle), + logEntry.glucoseTrend != null + ? Transform.rotate( + angle: logEntry + .glucoseTrend! * + math.pi / + 180, + child: Icon( + Icons.arrow_upward, + color: glucoseStyle + .color, + size: 16.0, + ), + ) + : Container(), + ], + ), + const Text( + 'mg/dl', + textScaleFactor: 0.75, + ), + ] + : [], + ), + ), + Expanded( + child: Column( + children: logEntry.mmolPerL != null && + (Settings.glucoseMeasurement == + GlucoseMeasurement + .mmolPerL || + Settings.glucoseDisplayMode == + GlucoseDisplayMode.both || + Settings.glucoseDisplayMode == + GlucoseDisplayMode + .bothForList) + ? [ + Row( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Text( + logEntry.mmolPerL + .toString(), + style: glucoseStyle), + logEntry.glucoseTrend != null + ? Transform.rotate( + angle: logEntry + .glucoseTrend! * + math.pi / + 180, + child: Icon( + Icons.arrow_upward, + color: glucoseStyle + .color, + size: 16.0, + ), + ) + : Container(), + ], + ), + const Text( + 'mmol/l', + textScaleFactor: 0.75, + ), + ] + : [], + ), + ), + Expanded( + child: Column( + children: (bolus > 0) + ? [ + Text(bolus.toStringAsPrecision(3)), + const Text('U', + textScaleFactor: 0.75), + ] + : [], + ), + ), + Expanded( + child: Column( + children: (carbs > 0) + ? [ + Text(carbs.toStringAsPrecision(3)), + Text( + '${Settings.nutritionMeasurementSuffix} carbs', + textScaleFactor: 0.75), + ] + : [], + ), + ), + ], + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + onPressed: () => handleDeleteAction(logEntry), + icon: const Icon(Icons.delete, + color: Colors.blue), + ) + ], + ), + ), + ); + }, + ), + ) + : const Center( + child: Text( + 'You have not created any Log Entries for this date yet!'), + ), ), ], ), - // TODO: add button for active events floatingActionButton: FloatingActionButton( onPressed: () { + final now = DateTime.now(); Navigator.push( context, MaterialPageRoute( - builder: (context) => const LogEntryScreen(), + builder: (context) => LogEntryScreen( + suggestedDate: _date.isAtSameMomentAs(DateTime(now.year, now.month, now.day)) ? now : _date), ), - ).then((message) => refresh(message: message)); + ).then((result) => reload(message: result?[0])); }, child: const Icon(Icons.add), ), diff --git a/lib/screens/log/log_entry.dart b/lib/screens/log/log_entry.dart deleted file mode 100644 index 37ac86e..0000000 --- a/lib/screens/log/log_entry.dart +++ /dev/null @@ -1,281 +0,0 @@ -import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/models/log_entry.dart'; -import 'package:diameter/navigation.dart'; -import 'package:diameter/screens/log/log_entry_form.dart'; -import 'package:diameter/screens/log/log_event_detail.dart'; -import 'package:diameter/screens/log/log_event_list.dart'; -import 'package:diameter/screens/log/log_meal_detail.dart'; -import 'package:diameter/screens/log/log_meal_list.dart'; -import 'package:flutter/material.dart'; - -class LogEntryScreen extends StatefulWidget { - static const String routeName = '/log-entry'; - final int id; - - const LogEntryScreen({Key? key, this.id = 0}) : super(key: key); - - @override - _LogEntryScreenState createState() => _LogEntryScreenState(); -} - -class _LogEntryScreenState extends State { - LogEntry? _logEntry; - bool _isNew = true; - bool _isSaving = false; - - final GlobalKey logEntryForm = GlobalKey(); - - late FloatingActionButton addMealButton; - late FloatingActionButton addEventButton; - late IconButton refreshButton; - late IconButton closeButton; - late DetailBottomRow detailBottomRow; - - FloatingActionButton? actionButton; - List appBarActions = []; - DetailBottomRow? bottomNav; - - final formDataControllers = { - 'time': TextEditingController(text: ''), - 'mgPerDl': TextEditingController(text: ''), - 'mmolPerL': TextEditingController(text: ''), - 'bolusGlucose': TextEditingController(text: ''), - 'delayedBolusRate': TextEditingController(text: ''), - 'delayedBolusDuration': TextEditingController(text: ''), - 'notes': TextEditingController(text: ''), - }; - - @override - void initState() { - super.initState(); - - reload(); - - if (_logEntry != null) { - formDataControllers['time']!.text = _logEntry!.time.toString(); - formDataControllers['mgPerDl']!.text = - (_logEntry!.mgPerDl ?? '').toString(); - formDataControllers['mmolPerL']!.text = - (_logEntry!.mmolPerL ?? '').toString(); - formDataControllers['bolusGlucose']!.text = - (_logEntry!.bolusGlucose ?? '').toString(); - formDataControllers['delayedBolusRate']!.text = - (_logEntry!.delayedBolusRate ?? '').toString(); - formDataControllers['delayedBolusDuration']!.text = - (_logEntry!.delayedBolusDuration ?? '').toString(); - formDataControllers['notes']!.text = _logEntry!.notes ?? ''; - } else { - formDataControllers['time']!.text = DateTime.now().toString(); - } - - addMealButton = FloatingActionButton( - onPressed: handleAddNewMeal, - child: const Icon(Icons.add), - ); - - addEventButton = FloatingActionButton( - onPressed: handleAddNewEvent, - child: const Icon(Icons.add), - ); - - refreshButton = IconButton( - icon: const Icon(Icons.refresh), - onPressed: reload, - ); - - closeButton = IconButton( - onPressed: handleCancelAction, - icon: const Icon(Icons.close), - ); - - detailBottomRow = DetailBottomRow( - onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, - ); - - actionButton = null; - appBarActions = [closeButton]; - bottomNav = detailBottomRow; - } - - void reload({String? message}) { - if (widget.id != 0) { - setState(() { - _logEntry = LogEntry.get(widget.id); - }); - _isNew = _logEntry == null; - } - - setState(() { - if (message != null) { - var snackBar = SnackBar( - content: Text(message), - duration: const Duration(seconds: 2), - ); - ScaffoldMessenger.of(context) - ..removeCurrentSnackBar() - ..showSnackBar(snackBar); - } - }); - } - - void handleAddNewMeal() async { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) { - return LogMealDetailScreen(logEntry: _logEntry!); - }, - ), - ).then((message) => reload(message: message)); - } - - void handleAddNewEvent() async { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) { - return LogEventDetailScreen(logEntry: _logEntry!); - }, - ), - ).then((message) => reload(message: message)); - } - - void handleSaveAction() async { - setState(() { - _isSaving = true; - }); - if (logEntryForm.currentState!.validate()) { - LogEntry.put(LogEntry( - id: widget.id, - time: DateTime.parse(formDataControllers['time']!.text), - mgPerDl: int.tryParse(formDataControllers['mgPerDl']!.text), - mmolPerL: double.tryParse(formDataControllers['mmolPerL']!.text), - bolusGlucose: - double.tryParse(formDataControllers['delayedBolusRate']!.text), - delayedBolusDuration: - int.tryParse(formDataControllers['delayedBolusDuration']!.text), - delayedBolusRate: - double.tryParse(formDataControllers['delayedBolusRate']!.text), - notes: formDataControllers['notes']!.text, - )); - Navigator.pushReplacementNamed(context, '/log', - arguments: '${_isNew ? 'New' : ''} Log Entry Saved'); - } - setState(() { - _isSaving = false; - }); - } - - void handleCancelAction() { - if (showConfirmationDialogOnCancel && - ((_isNew && - (int.tryParse(formDataControllers['mgPerDl']?.text ?? '') != - null || - double.tryParse(formDataControllers['mmolPerL']?.text ?? '') != - null || - double.tryParse(formDataControllers['bolusGlucose']?.text ?? '') != - null || - int.tryParse(formDataControllers['delayedBolusDuration']?.text ?? '') != - null || - double.tryParse(formDataControllers['delayedBolusRate']?.text ?? '') != - null || - formDataControllers['notes']?.text != '')) || - (!_isNew && - (int.tryParse(formDataControllers['mgPerDl']?.text ?? '') != - _logEntry!.mgPerDl || - double.tryParse(formDataControllers['mmolPerL']?.text ?? '') != - _logEntry!.mmolPerL || - double.tryParse(formDataControllers['bolusGlucose']?.text ?? '') != - _logEntry!.bolusGlucose || - int.tryParse( - formDataControllers['delayedBolusDuration']?.text ?? - '') != - _logEntry!.delayedBolusDuration || - double.tryParse(formDataControllers['delayedBolusRate']?.text ?? '') != - _logEntry!.delayedBolusRate || - formDataControllers['notes']?.text != - (_logEntry!.notes ?? ''))))) { - Dialogs.showCancelConfirmationDialog( - context: context, - isNew: _isNew, - onSave: handleSaveAction, - onDiscard: (context) => Navigator.pushReplacementNamed(context, '/log'), - ); - } else { - Navigator.pushReplacementNamed(context, '/log', - arguments: '${_isNew ? 'New' : ''} Log Entry Saved'); - } - } - - void renderTabButtons(index) { - if (_logEntry != null) { - setState(() { - switch (index) { - case 1: - actionButton = addMealButton; - appBarActions = [refreshButton, closeButton]; - bottomNav = null; - break; - case 2: - actionButton = addEventButton; - appBarActions = [refreshButton, closeButton]; - bottomNav = null; - break; - default: - actionButton = null; - appBarActions = [closeButton]; - bottomNav = detailBottomRow; - } - }); - } - } - - @override - Widget build(BuildContext context) { - return DefaultTabController( - length: _isNew ? 1 : 3, - child: Builder(builder: (BuildContext context) { - final TabController tabController = DefaultTabController.of(context)!; - tabController.addListener(() { - renderTabButtons(tabController.index); - }); - List tabs = [ - LogEntryForm( - formState: logEntryForm, controllers: formDataControllers), - ]; - - if (!_isNew) { - tabs.add(LogMealListScreen(logEntry: _logEntry!, reload: reload)); - tabs.add(LogEventListScreen(logEntry: _logEntry!, reload: reload)); - } - - return Scaffold( - appBar: AppBar( - title: Text(_isNew ? 'New Log Entry' : 'Edit Log Entry'), - bottom: _isNew - ? PreferredSize(child: Container(), preferredSize: Size.zero) - : const TabBar( - tabs: [ - Tab(text: 'GENERAL'), - Tab(text: 'MEALS'), - Tab(text: 'EVENTS'), - ], - ), - actions: appBarActions, - ), - drawer: const Navigation(currentLocation: LogEntryScreen.routeName), - body: TabBarView( - children: tabs, - ), - bottomNavigationBar: bottomNav, - floatingActionButton: actionButton, - floatingActionButtonLocation: - FloatingActionButtonLocation.endFloat, - ); - }), - ); - } -} diff --git a/lib/screens/log/log_entry/log_bolus_detail.dart b/lib/screens/log/log_entry/log_bolus_detail.dart new file mode 100644 index 0000000..bb70fcd --- /dev/null +++ b/lib/screens/log/log_entry/log_bolus_detail.dart @@ -0,0 +1,843 @@ +import 'dart:math'; + +import 'package:diameter/components/detail.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/components/forms/number_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; +import 'package:diameter/models/bolus.dart'; +import 'package:diameter/models/log_bolus.dart'; +import 'package:diameter/models/log_entry.dart'; +import 'package:diameter/models/log_meal.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/navigation.dart'; +import 'package:diameter/screens/log/log_entry/log_meal_detail.dart'; +import 'package:diameter/utils/utils.dart'; +import 'package:flutter/material.dart'; + +enum BolusType { + meal, + glucose, +} + +enum GlucoseParameter { + mgdlCurrent, + mgdlTarget, + mgdlCorrection, + mmolCurrent, + mmolTarget, + mmolCorrection, +} + +class LogBolusDetailScreen extends StatefulWidget { + static const String routeName = '/log-bolus'; + + final int logEntryId; + final int id; + + const LogBolusDetailScreen({Key? key, this.logEntryId = 0, this.id = 0}) + : super(key: key); + + @override + _LogBolusDetailScreenState createState() => _LogBolusDetailScreenState(); +} + +class _LogBolusDetailScreenState extends State { + LogEntry? _logEntry; + LogBolus? _logBolus; + + bool _isNew = true; + bool _isSaving = false; + + final GlobalKey _logBolusForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); + + final _unitsController = TextEditingController(text: ''); + final _carbsController = TextEditingController(text: ''); + final _mgPerDlCurrentController = TextEditingController(text: ''); + final _mgPerDlTargetController = TextEditingController(text: ''); + final _mgPerDlCorrectionController = TextEditingController(text: ''); + final _mmolPerLCurrentController = TextEditingController(text: ''); + final _mmolPerLTargetController = TextEditingController(text: ''); + final _mmolPerLCorrectionController = TextEditingController(text: ''); + final _delayController = TextEditingController(text: ''); + final _notesController = TextEditingController(text: ''); + + final _delayedUnitsController = TextEditingController(text: ''); + final _immediateUnitsController = TextEditingController(text: ''); + + final _mealController = TextEditingController(text: ''); + + bool _setManually = false; + BolusType _bolusType = BolusType.meal; + LogMeal? _meal; + Bolus? _rate; + double _delayPercentage = 0; + + List _logMeals = []; + + @override + void initState() { + super.initState(); + reload(); + + _logEntry = LogEntry.get(widget.logEntryId); + _logMeals = LogMeal.getRecentWithoutBolus(widget.logEntryId); + + if (widget.id != 0) { + _carbsController.text = (_logBolus!.carbs ?? '').toString(); + _delayController.text = (_logBolus!.delay ?? '').toString(); + _notesController.text = _logBolus!.notes ?? ''; + _setManually = _logBolus!.setManually; + _meal = _logBolus!.meal.target; + _mealController.text = (_meal ?? '').toString(); + _rate = _logBolus!.rate.target; + } + + _rate ??= Bolus.getRateForTime(_logEntry?.time); + + _mgPerDlCurrentController.text = (_logBolus?.mgPerDlCurrent ?? + (LogEntry.hasUncorrectedGlucose(widget.logEntryId) + ? _logEntry?.mgPerDl ?? 0 + : 0)) + .toString(); + _mgPerDlTargetController.text = + (_logBolus?.mgPerDlTarget ?? Settings.targetMgPerDl).toString(); + _mgPerDlCorrectionController.text = (_logBolus?.mgPerDlCorrection ?? + max( + (int.tryParse(_mgPerDlCurrentController.text) ?? 0) - + (int.tryParse(_mgPerDlTargetController.text) ?? 0), + 0)) + .toString(); + _mmolPerLCurrentController.text = (_logBolus?.mmolPerLCurrent ?? + (LogEntry.hasUncorrectedGlucose(widget.logEntryId) + ? _logEntry?.mmolPerL ?? 0 + : 0)) + .toString(); + _mmolPerLTargetController.text = + (_logBolus?.mmolPerLTarget ?? Settings.targetMmolPerL).toString(); + _mmolPerLCorrectionController.text = (_logBolus?.mmolPerLCorrection ?? + max( + (double.tryParse(_mmolPerLCurrentController.text) ?? 0) - + (double.tryParse(_mmolPerLTargetController.text) ?? 0), + 0)) + .toString(); + + _unitsController.text = (_logBolus?.units ?? + (_rate != null && !_setManually + ? ((int.tryParse(_mgPerDlCorrectionController.text) ?? 0) / + ((_rate!.mgPerDl ?? 0) / _rate!.units)) + : 0)) + .toString(); + + if (widget.id == 0 && LogEntry.hasUncorrectedGlucose(widget.logEntryId)) { + _bolusType = BolusType.glucose; + } + + calculateBolus(); + } + + @override + void dispose() { + _scrollController.dispose(); + _unitsController.dispose(); + _carbsController.dispose(); + _mgPerDlCurrentController.dispose(); + _mgPerDlTargetController.dispose(); + _mgPerDlCorrectionController.dispose(); + _mmolPerLCurrentController.dispose(); + _mmolPerLTargetController.dispose(); + _mmolPerLCorrectionController.dispose(); + _delayController.dispose(); + _notesController.dispose(); + _delayedUnitsController.dispose(); + _immediateUnitsController.dispose(); + _mealController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _logBolus = LogBolus.get(widget.id); + }); + } + _isNew = _logBolus == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void updateLogMeal(LogMeal? value) { + setState(() { + _meal = value; + _mealController.text = (_meal ?? '').toString(); + }); + if (_meal != null) { + if (_meal!.totalCarbs != null) { + _carbsController.text = (_meal!.totalCarbs).toString(); + } + if (_meal!.meal.hasValue) { + if (_meal!.meal.target!.delayedBolusDuration != null) { + _delayController.text = + (_meal!.meal.target?.delayedBolusDuration).toString(); + } + if (_meal!.meal.target!.delayedBolusDuration != null) { + _delayPercentage = _meal!.meal.target!.delayedBolusPercentage!; + } + } + calculateBolus(); + } + } + + void onSelectMeal(LogMeal? meal) { + updateLogMeal(meal); + if (meal != null && meal.totalCarbs != null) { + setState(() { + _carbsController.text = meal.totalCarbs.toString(); + calculateBolus(); + }); + } + } + + void calculateBolus() { + if (_rate != null && !_setManually) { + double? units; + + if (_bolusType == BolusType.glucose) { + if (Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl) { + units = (int.tryParse(_mgPerDlCorrectionController.text) ?? 0) / + (_rate!.mgPerDl ?? 1) / + _rate!.units; + } + if (Settings.glucoseMeasurement == GlucoseMeasurement.mmolPerL) { + units = (int.tryParse(_mmolPerLCorrectionController.text) ?? 0) / + (_rate!.mmolPerL ?? 1) / + _rate!.units; + } + } + if (_bolusType == BolusType.meal) { + units = (double.tryParse(_carbsController.text) ?? 0) / + (_rate!.carbs / _rate!.units); + } + + updateDelayedRatio(totalUnitsUpdate: units); + } + } + + void onChangeGlucose() { + int? mgPerDlCurrent; + int? mgPerDlTarget; + int? mgPerDlCorrection; + + double? mmolPerLCurrent; + double? mmolPerLTarget; + double? mmolPerLCorrection; + + if (Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl && + _mgPerDlCurrentController.text != '' && + _mgPerDlTargetController.text != '') { + mgPerDlCurrent = int.tryParse(_mgPerDlCurrentController.text); + mgPerDlTarget = int.tryParse(_mgPerDlTargetController.text); + mgPerDlCorrection = max((mgPerDlCurrent ?? 0) - (mgPerDlTarget ?? 0), 0); + } + if (Settings.glucoseMeasurement == GlucoseMeasurement.mmolPerL && + _mmolPerLCurrentController.text != '') { + mmolPerLCurrent = double.tryParse(_mmolPerLCurrentController.text); + mmolPerLTarget = double.tryParse(_mmolPerLTargetController.text); + mmolPerLCorrection = + max((mmolPerLCurrent ?? 0) - (mmolPerLTarget ?? 0), 0); + } + + if ((mgPerDlCurrent != null && mmolPerLCurrent == null) || + (mgPerDlTarget != null && mmolPerLTarget == null) || + (mgPerDlCorrection != null && mmolPerLCorrection == null)) { + setState(() { + _mgPerDlCorrectionController.text = (mgPerDlCorrection ?? 0).toString(); + _mmolPerLCurrentController.text = + Utils.convertMgPerDlToMmolPerL(mgPerDlCurrent ?? 0).toString(); + _mmolPerLTargetController.text = + Utils.convertMgPerDlToMmolPerL(mgPerDlTarget ?? 0).toString(); + _mmolPerLCorrectionController.text = + Utils.convertMgPerDlToMmolPerL(mgPerDlCorrection ?? 0).toString(); + calculateBolus(); + }); + } + if ((mmolPerLCurrent != null && mgPerDlCurrent == null) || + (mmolPerLTarget != null && mgPerDlTarget == null) || + (mmolPerLCorrection != null && mgPerDlCorrection == null)) { + setState(() { + _mmolPerLCurrentController.text = (mmolPerLCorrection ?? 0).toString(); + _mgPerDlCurrentController.text = + Utils.convertMmolPerLToMgPerDl(mmolPerLCurrent ?? 0).toString(); + _mgPerDlTargetController.text = + Utils.convertMmolPerLToMgPerDl(mmolPerLTarget ?? 0).toString(); + _mgPerDlCorrectionController.text = + Utils.convertMmolPerLToMgPerDl(mmolPerLCorrection ?? 0).toString(); + calculateBolus(); + }); + } + } + + void updateDelayedRatio({ + double? totalUnitsUpdate, + double? delayedUnitsUpdate, + double? immediateUnitsUpdate, + double? percentageUpdate + }) { + int precision = Utils.getFractionDigitsLength(Settings.insulinSteps); + + double? totalUnits; + double? delayedUnits; + double? immediateUnits; + + if (totalUnitsUpdate != null) { + totalUnits = Utils.roundToMultipleOfBase(totalUnitsUpdate, Settings.insulinSteps); + } else if (double.tryParse(_unitsController.text) != null) { + totalUnits = Utils.roundToMultipleOfBase(double.tryParse(_unitsController.text)!, Settings.insulinSteps); + } + + if (delayedUnitsUpdate != null) { + delayedUnits = Utils.roundToMultipleOfBase(delayedUnitsUpdate, Settings.insulinSteps); + } else if (double.tryParse(_delayedUnitsController.text) != null) { + delayedUnits = Utils.roundToMultipleOfBase(double.tryParse(_delayedUnitsController.text)!, Settings.insulinSteps); + } + + if (immediateUnitsUpdate != null) { + immediateUnits = Utils.roundToMultipleOfBase(immediateUnitsUpdate, Settings.insulinSteps); + } else if (double.tryParse(_immediateUnitsController.text) != null) { + immediateUnits = Utils.roundToMultipleOfBase(double.tryParse(_immediateUnitsController.text)!, Settings.insulinSteps); + } + + if (totalUnits == null) { + if (percentageUpdate != null) { + if (immediateUnits != null) { + totalUnits = immediateUnits / (100 - percentageUpdate) * 100; + } else if (delayedUnits != null) { + totalUnits = delayedUnits / percentageUpdate * 100; + } + } else if (delayedUnits != null && immediateUnits != null) { + totalUnits = Utils.addDoublesWithPrecision( + delayedUnits, immediateUnits, precision); + } + + if (totalUnits != null) { + totalUnits = + Utils.roundToMultipleOfBase(totalUnits, Settings.insulinSteps); + } + } + + setState(() { + _unitsController.text = Utils.toStringMatchingTemplateFractionPrecision( + totalUnits ?? 0, Settings.insulinSteps); + }); + + if (totalUnits != null) { + double percentage = percentageUpdate ?? _delayPercentage; + + if (totalUnitsUpdate != null || percentageUpdate != null) { + immediateUnits = Utils.roundToMultipleOfBase( + totalUnits * (100 - percentage) / 100, Settings.insulinSteps); + } else if (delayedUnitsUpdate != null) { + immediateUnits = totalUnits - delayedUnits!; + } + + if (immediateUnits != null) { + delayedUnits = Utils.addDoublesWithPrecision( + totalUnits, -immediateUnits, precision); + + setState(() { + _immediateUnitsController.text = + Utils.toStringMatchingTemplateFractionPrecision( + immediateUnits!, Settings.insulinSteps); + _delayedUnitsController.text = + Utils.toStringMatchingTemplateFractionPrecision( + delayedUnits!, Settings.insulinSteps); + if (totalUnits != 0) { + _delayPercentage = delayedUnits / totalUnits! * 100; + } + }); + } + } + } + + void handleSaveAction() async { + setState(() { + _isSaving = true; + }); + if (_logBolusForm.currentState!.validate()) { + LogBolus logBolus; + LogBolus? delayedBolus; + + if ((int.tryParse(_delayController.text) ?? 0) != 0 && + _delayPercentage != 0 && + _delayPercentage != 100) { + logBolus = LogBolus( + id: widget.id, + units: double.tryParse(_immediateUnitsController.text) ?? 0, + setManually: _setManually, + notes: _notesController.text, + ); + delayedBolus = LogBolus( + delay: int.tryParse(_delayController.text), + units: double.tryParse(_delayedUnitsController.text) ?? 0, + setManually: _setManually, + notes: _notesController.text, + ); + } else { + logBolus = LogBolus( + id: widget.id, + units: double.tryParse(_unitsController.text) ?? 0, + delay: _delayPercentage == 100 + ? int.tryParse(_delayController.text) + : null, + setManually: _setManually, + notes: _notesController.text, + ); + } + + if (_bolusType == BolusType.meal) { + logBolus.carbs = double.tryParse(_carbsController.text); + if (delayedBolus != null) { + delayedBolus.carbs = double.tryParse(_carbsController.text); + } + logBolus.mgPerDlCurrent = null; + logBolus.mmolPerLCurrent = null; + } else { + logBolus.carbs = null; + logBolus.mgPerDlCurrent = int.tryParse(_mgPerDlCurrentController.text); + logBolus.mmolPerLCurrent = + double.tryParse(_mmolPerLCurrentController.text); + logBolus.mgPerDlTarget = int.tryParse(_mgPerDlTargetController.text); + logBolus.mmolPerLTarget = + double.tryParse(_mmolPerLTargetController.text); + logBolus.mgPerDlCorrection = + int.tryParse(_mgPerDlCorrectionController.text); + logBolus.mmolPerLCorrection = + double.tryParse(_mmolPerLCorrectionController.text); + if (delayedBolus != null) { + delayedBolus.mgPerDlCurrent = + int.tryParse(_mgPerDlCurrentController.text); + delayedBolus.mmolPerLCurrent = + double.tryParse(_mmolPerLCurrentController.text); + delayedBolus.mgPerDlTarget = + int.tryParse(_mgPerDlTargetController.text); + delayedBolus.mmolPerLTarget = + double.tryParse(_mmolPerLTargetController.text); + delayedBolus.mgPerDlCorrection = + int.tryParse(_mgPerDlCorrectionController.text); + delayedBolus.mmolPerLCorrection = + double.tryParse(_mmolPerLCorrectionController.text); + } + } + logBolus.logEntry.target = _logEntry; + logBolus.meal.target = _meal; + logBolus.rate.target = _rate; + LogBolus.put(logBolus); + + if (delayedBolus != null) { + delayedBolus.logEntry.target = _logEntry; + delayedBolus.meal.target = _meal; + delayedBolus.rate.target = _rate; + LogBolus.put(delayedBolus); + } + + Navigator.pop(context, + ['${_isNew ? 'New' : ''} Bolus Saved', logBolus, delayedBolus]); + } + setState(() { + _isSaving = false; + }); + } + + void handleCancelAction() { + if (Settings.get().showConfirmationDialogOnCancel && + ((_isNew && + (_carbsController.text != '' || + (_bolusType == BolusType.glucose && + (_mgPerDlCurrentController.text != + (_logEntry?.mgPerDl.toString() ?? '') || + _mmolPerLCurrentController.text != + (_logEntry?.mmolPerL.toString() ?? ''))) || + _mgPerDlTargetController.text != + Settings.targetMgPerDl.toString() || + _mmolPerLTargetController.text != + Settings.targetMmolPerL.toString() || + _delayController.text != '' || + _setManually || + _notesController.text != '')) || + (!_isNew && + (double.tryParse(_unitsController.text) != _logBolus!.units || + double.tryParse(_carbsController.text) != + _logBolus!.carbs || + int.tryParse(_mgPerDlCurrentController.text) != + _logBolus!.mgPerDlCurrent || + int.tryParse(_mgPerDlTargetController.text) != + _logBolus!.mgPerDlTarget || + int.tryParse(_mgPerDlCorrectionController.text) != + _logBolus!.mgPerDlCorrection || + double.tryParse(_mmolPerLCurrentController.text) != + _logBolus!.mmolPerLCurrent || + double.tryParse(_mmolPerLTargetController.text) != + _logBolus!.mmolPerLTarget || + double.tryParse(_mmolPerLCorrectionController.text) != + _logBolus!.mmolPerLCorrection || + int.tryParse(_delayController.text) != _logBolus!.delay || + _setManually != _logBolus!.setManually || + _notesController.text != (_logBolus!.notes ?? ''))))) { + DialogUtils.showCancelConfirmationDialog( + context: context, + isNew: _isNew, + onSave: handleSaveAction, + ); + } else { + Navigator.pop(context); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(_isNew ? 'New Bolus' : 'Edit Bolus'), + ), + drawer: const Navigation(currentLocation: LogBolusDetailScreen.routeName), + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _logBolusForm, + fields: [ + Row( + children: [ + Expanded( + child: NumberFormField( + label: 'Bolus Units', + suffix: ' U', + controller: _unitsController, + step: Settings.insulinSteps, + autoRoundToMultipleOfStep: true, + onChanged: (value) { + setState(() { + _setManually = true; + }); + updateDelayedRatio(totalUnitsUpdate: value); + }, + ), + ), + Expanded( + child: BooleanFormField( + contentPadding: const EdgeInsets.only( + left: 10.0, right: 10.0, top: 10.0), + value: _setManually, + label: 'set manually', + onChanged: (value) { + setState(() { + _setManually = value; + calculateBolus(); + }); + }, + ), + ), + ], + ), + Row( + children: [ + Expanded( + child: RadioListTile( + title: const Text('for glucose'), + groupValue: _bolusType, + value: BolusType.glucose, + onChanged: (_) { + setState(() { + _bolusType = BolusType.glucose; + calculateBolus(); + }); + }), + ), + Expanded( + child: RadioListTile( + title: const Text('for meal'), + groupValue: _bolusType, + value: BolusType.meal, + onChanged: (value) { + setState(() { + _bolusType = BolusType.meal; + calculateBolus(); + }); + }), + ), + ], + ), + Column( + children: _bolusType == BolusType.glucose + ? [ + Row( + children: Settings.glucoseMeasurement == + GlucoseMeasurement.mgPerDl || + [ + GlucoseDisplayMode.both, + GlucoseDisplayMode.bothForDetail + ].contains(Settings.glucoseDisplayMode) + ? [ + Expanded( + child: Padding( + padding: + const EdgeInsets.only(right: 5.0), + child: NumberFormField( + label: 'Current', + suffix: 'mg/dl', + controller: + _mgPerDlCurrentController, + onChanged: (_) => onChangeGlucose(), + showSteppers: false, + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 5.0), + child: NumberFormField( + label: 'Target', + suffix: 'mg/dl', + controller: + _mgPerDlTargetController, + onChanged: (_) => onChangeGlucose(), + showSteppers: false, + ), + ), + ), + Expanded( + child: Padding( + padding: + const EdgeInsets.only(left: 5.0), + child: TextFormField( + decoration: const InputDecoration( + labelText: 'Correction', + suffixText: 'mg/dl', + ), + controller: + _mgPerDlCorrectionController, + readOnly: true, + ), + ), + ), + ] + : [], + ), + Padding( + padding: EdgeInsets.only( + top: [ + GlucoseDisplayMode.both, + GlucoseDisplayMode.bothForDetail + ].contains(Settings.glucoseDisplayMode) + ? 10.0 + : 0.0), + child: Row( + children: Settings.glucoseMeasurement == + GlucoseMeasurement.mmolPerL || + [ + GlucoseDisplayMode.both, + GlucoseDisplayMode.bothForDetail + ].contains(Settings.glucoseDisplayMode) + ? [ + Expanded( + child: Padding( + padding: const EdgeInsets.only( + right: 5.0), + child: NumberFormField( + label: 'Current', + suffix: 'mmol/l', + controller: + _mmolPerLCurrentController, + onChanged: (_) => + onChangeGlucose(), + showSteppers: false, + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 5.0), + child: NumberFormField( + label: 'Target', + suffix: 'mmol/l', + controller: + _mmolPerLTargetController, + onChanged: (_) => + onChangeGlucose(), + showSteppers: false, + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 5.0), + child: TextFormField( + decoration: const InputDecoration( + labelText: 'Correction', + suffixText: 'mmol/l', + ), + controller: + _mmolPerLCorrectionController, + readOnly: true, + ), + ), + ), + ] + : [], + ), + ), + ] + : [ + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: _mealController, + selectedItem: _meal, + label: 'Meal', + items: _logMeals, + onChanged: onSelectMeal, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _meal == null + ? const LogMealDetailScreen() + : LogMealDetailScreen( + id: _meal!.id), + ), + ).then((result) { + updateLogMeal(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon( + _meal == null ? Icons.add : Icons.edit), + ), + ], + ), + Padding( + padding: const EdgeInsets.only(top: 10.0), + child: NumberFormField( + label: 'Carbs', + suffix: Settings.nutritionMeasurementSuffix, + controller: _carbsController, + step: Settings.nutritionSteps, + onChanged: (value) { + _carbsController.text = + (value ?? 0).toString(); + calculateBolus(); + }, + ), + ), + ], + ), + Row( + children: [ + Expanded( + child: TextFormField( + decoration: const InputDecoration( + labelText: 'Delayed Bolus Duration', + suffixText: ' min', + ), + controller: _delayController, + onChanged: (value) => setState(() {}), + keyboardType: const TextInputType.numberWithOptions(), + ), + ), + Expanded( + child: Slider( + label: '${_delayPercentage.floor().toString()}%', + divisions: 100, + value: _delayPercentage, + min: 0, + max: 100, + onChanged: (value) { + updateDelayedRatio(percentageUpdate: value); + }, + ), + ), + const Text('%', textScaleFactor: 1.5), + ], + ), + Row( + children: (int.tryParse(_delayController.text) ?? 0) != 0 + ? [ + Expanded( + child: Padding( + padding: const EdgeInsets.only(right: 5.0), + child: NumberFormField( + label: 'Immediate Bolus', + suffix: ' U', + controller: _immediateUnitsController, + max: double.tryParse(_unitsController.text), + step: Settings.insulinSteps, + readOnly: true, + onChanged: (value) => updateDelayedRatio( + immediateUnitsUpdate: value), + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 5.0), + child: NumberFormField( + label: 'Delayed Bolus', + suffix: ' U', + controller: _delayedUnitsController, + max: double.tryParse(_unitsController.text), + step: Settings.insulinSteps, + readOnly: true, + onChanged: (value) => { + updateDelayedRatio( + delayedUnitsUpdate: value), + }), + ), + ), + ] + : [], + ), + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, + ), + ], + ), + ], + ), + ), + ), + bottomNavigationBar: DetailBottomRow( + onCancel: handleCancelAction, + onAction: _isSaving ? null : handleSaveAction, + ), + ); + } +} diff --git a/lib/screens/log/log_entry/log_bolus_list.dart b/lib/screens/log/log_entry/log_bolus_list.dart new file mode 100644 index 0000000..8ee43e2 --- /dev/null +++ b/lib/screens/log/log_entry/log_bolus_list.dart @@ -0,0 +1,146 @@ +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/log_bolus.dart'; +import 'package:diameter/models/log_entry.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/screens/log/log_entry/log_bolus_detail.dart'; +import 'package:diameter/screens/log/log_entry/log_meal_detail.dart'; +import 'package:flutter/material.dart'; + +class LogBolusListScreen extends StatefulWidget { + final LogEntry logEntry; + final List logBoli; + final Function() reload; + + const LogBolusListScreen( + {Key? key, + required this.logEntry, + this.logBoli = const [], + required this.reload}) + : super(key: key); + + @override + _LogBolusListScreenState createState() => _LogBolusListScreenState(); +} + +class _LogBolusListScreenState extends State { + final ScrollController _scrollController = ScrollController(); + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + widget.reload(); + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void handleEditAction(LogBolus logBolus) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => LogBolusDetailScreen( + logEntryId: widget.logEntry.id, + id: logBolus.id, + ), + ), + ).then((result) => reload(message: result?[0])); + } + + void onDelete(LogBolus logBolus) { + LogBolus.remove(logBolus.id); + reload(message: 'Bolus deleted'); + } + + void handleDeleteAction(LogBolus logBolus) async { + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( + context: context, + onConfirm: () => onDelete(logBolus), + message: 'Are you sure you want to delete this Bolus?', + ); + } else { + onDelete(logBolus); + } + } + + void handleEditMealAction(int mealId) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => LogMealDetailScreen( + logEntryId: widget.logEntry.id, + id: mealId, + ), + ), + ).then((result) => reload(message: result?[0])); + } + + @override + Widget build(BuildContext context) { + return widget.logBoli.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + padding: const EdgeInsets.all(10.0), + controller: _scrollController, + shrinkWrap: true, + itemCount: widget.logBoli.length, + itemBuilder: (context, index) { + final bolus = widget.logBoli[index]; + String titleText = '${bolus.units} U ${(bolus.delay ?? 0) != 0 + ? ' (delayed by ${bolus.delay} min)' + : ''}'; + return Card( + child: ListTile( + onTap: () => handleEditAction(bolus), + title: Text( + titleText.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, + ), + subtitle: Text(bolus.carbs != null ? + 'for ${(bolus.meal.target ?? '').toString()} (${bolus.carbs}${Settings.nutritionMeasurementSuffix} carbs)' + : 'to correct ${Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl ? bolus.mgPerDlCorrection : bolus.mmolPerLCorrection} ${Settings.glucoseMeasurementSuffix}'), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + bolus.meal.target != null + ? IconButton( + icon: const Icon(Icons.restaurant), + onPressed: () => + handleEditMealAction(bolus.meal.targetId), + ) + : Container(), + const SizedBox(width: 24), + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => handleDeleteAction(bolus), + ), + ], + ), + ), + ); + }, + ), + ) + : const Center( + child: Text( + 'You have not added any Boli to this Log Entry yet!'), + ); + } +} diff --git a/lib/screens/log/log_entry/log_entry.dart b/lib/screens/log/log_entry/log_entry.dart new file mode 100644 index 0000000..5878ec6 --- /dev/null +++ b/lib/screens/log/log_entry/log_entry.dart @@ -0,0 +1,470 @@ +import 'package:diameter/components/detail.dart'; +import 'package:diameter/components/forms/date_time_form_field.dart'; +import 'package:diameter/components/forms/number_form_field.dart'; +import 'package:diameter/components/forms/time_of_day_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; +import 'package:diameter/models/log_bolus.dart'; +import 'package:diameter/models/log_entry.dart'; +import 'package:diameter/models/log_meal.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/navigation.dart'; +import 'package:diameter/screens/log/log_entry/log_bolus_detail.dart'; +import 'package:diameter/screens/log/log_entry/log_bolus_list.dart'; +import 'package:diameter/screens/log/log_entry/log_meal_detail.dart'; +import 'package:diameter/screens/log/log_entry/log_meal_list.dart'; +import 'package:diameter/utils/date_time_utils.dart'; +import 'package:diameter/utils/utils.dart'; +import 'package:flutter/material.dart'; +import 'dart:math' as math; + +class LogEntryScreen extends StatefulWidget { + static const String routeName = '/log-entry'; + final int id; + final DateTime? suggestedDate; + + const LogEntryScreen({Key? key, this.id = 0, this.suggestedDate}) : super(key: key); + + @override + _LogEntryScreenState createState() => _LogEntryScreenState(); +} + +class _LogEntryScreenState extends State { + LogEntry? _logEntry; + List _logMeals = []; + List _logBoli = []; + + bool _isNew = true; + + final GlobalKey logEntryForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); + + late DateTime _time; + double? _glucoseTrend; + + final _timeController = TextEditingController(text: ''); + final _dateController = TextEditingController(text: ''); + final _mgPerDlController = TextEditingController(text: ''); + final _mmolPerLController = TextEditingController(text: ''); + final _notesController = TextEditingController(text: ''); + + late FloatingActionButton addMealButton; + late FloatingActionButton addBolusButton; + late IconButton refreshButton; + late IconButton closeButton; + late DetailBottomRow detailBottomRow; + late DetailBottomRow detailBottomRowWhileSaving; + + FloatingActionButton? actionButton; + List appBarActions = []; + DetailBottomRow? bottomNav; + + @override + void initState() { + super.initState(); + + reload(); + + addMealButton = FloatingActionButton( + onPressed: handleAddNewMeal, + child: const Icon(Icons.add), + ); + + addBolusButton = FloatingActionButton( + onPressed: handleAddNewBolus, + child: const Icon(Icons.add), + ); + + refreshButton = IconButton( + icon: const Icon(Icons.refresh), + onPressed: reload, + ); + + closeButton = IconButton( + onPressed: handleCancelAction, + icon: const Icon(Icons.close), + ); + + detailBottomRow = DetailBottomRow( + onCancel: handleCancelAction, + onAction: handleSaveAction, + onMiddleAction: () => handleSaveAction(close: true), + ); + + detailBottomRowWhileSaving = DetailBottomRow( + onCancel: handleCancelAction, + onAction: null, + ); + + actionButton = null; + appBarActions = [closeButton]; + bottomNav = detailBottomRow; + + if (_logEntry != null) { + _time = _logEntry!.time; + _mgPerDlController.text = (_logEntry!.mgPerDl ?? '').toString(); + _mmolPerLController.text = (_logEntry!.mmolPerL ?? '').toString(); + _glucoseTrend = _logEntry!.glucoseTrend; + _notesController.text = _logEntry!.notes ?? ''; + } else { + _time = widget.suggestedDate ?? DateTime.now(); + } + + updateTime(); + } + + @override + void dispose() { + _scrollController.dispose(); + _timeController.dispose(); + _dateController.dispose(); + _mgPerDlController.dispose(); + _mmolPerLController.dispose(); + _notesController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _logEntry = LogEntry.get(widget.id); + _logMeals = LogMeal.getAllForEntry(widget.id); + _logBoli = LogBolus.getAllForEntry(widget.id); + }); + _isNew = _logEntry == null; + } + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void updateTime() { + _timeController.text = DateTimeUtils.displayTime(_time); + _dateController.text = DateTimeUtils.displayDate(_time); + } + + void convertBetweenMgPerDlAndMmolPerL(double? value) async { + if (value != null) { + if (Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl && + _mgPerDlController.text != '') { + _mgPerDlController.text = value.toInt().toString(); + setState(() { + _mmolPerLController.text = + Utils.convertMgPerDlToMmolPerL(value.toInt()).toString(); + }); + } + if (Settings.glucoseMeasurement == GlucoseMeasurement.mmolPerL && + _mmolPerLController.text != '') { + _mmolPerLController.text = + Utils.toStringMatchingTemplateFractionPrecision( + value, Settings.mmolPerLSteps); + setState(() { + _mgPerDlController.text = + Utils.convertMmolPerLToMgPerDl(value.toDouble()).toString(); + }); + } + } + } + + void handleSaveAction({bool close = false}) async { + setState(() { + bottomNav = detailBottomRowWhileSaving; + }); + if (logEntryForm.currentState!.validate()) { + LogEntry logEntry = LogEntry( + id: widget.id, + time: _time, + mgPerDl: int.tryParse(_mgPerDlController.text), + mmolPerL: double.tryParse(_mmolPerLController.text), + glucoseTrend: _glucoseTrend, + notes: _notesController.text, + ); + LogEntry.put(logEntry); + + if (close) { + Navigator.pop( + context, ['${_isNew ? 'New' : ''} Log Entry Saved', logEntry]); + } else { + if (_isNew) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => LogEntryScreen(id: logEntry.id), + ), + ).then((result) => Navigator.pop(context, result)); + } else { + reload(message: 'Log Entry Saved'); + } + } + } + + setState(() { + bottomNav = detailBottomRow; + }); + } + + void handleCancelAction() { + if (Settings.get().showConfirmationDialogOnCancel && + ((_isNew && + (int.tryParse(_mgPerDlController.text) != null || + double.tryParse(_mmolPerLController.text) != null || + _notesController.text != '')) || + (!_isNew && + (int.tryParse(_mgPerDlController.text) != _logEntry!.mgPerDl || + double.tryParse(_mmolPerLController.text) != + _logEntry!.mmolPerL || + _notesController.text != (_logEntry!.notes ?? ''))))) { + DialogUtils.showCancelConfirmationDialog( + context: context, + isNew: _isNew, + onSave: handleSaveAction, + onDiscard: (context) => Navigator.pop(context), + ); + } else { + Navigator.pop(context); + } + } + + void handleAddNewMeal() async { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return LogMealDetailScreen(logEntryId: _logEntry!.id); + }, + ), + ).then((result) => reload(message: result?[0])); + } + + void handleAddNewBolus() async { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return LogBolusDetailScreen(logEntryId: _logEntry!.id); + }, + ), + ).then((result) => reload(message: result?[0])); + } + + void renderTabButtons(index) { + if (_logEntry != null) { + setState(() { + switch (index) { + case 1: + actionButton = addMealButton; + appBarActions = [refreshButton, closeButton]; + bottomNav = null; + break; + case 2: + actionButton = addBolusButton; + appBarActions = [refreshButton, closeButton]; + bottomNav = null; + break; + default: + actionButton = null; + appBarActions = [closeButton]; + bottomNav = detailBottomRow; + } + }); + } + } + + @override + Widget build(BuildContext context) { + return DefaultTabController( + length: _isNew ? 1 : 3, + child: Builder(builder: (BuildContext context) { + final TabController tabController = DefaultTabController.of(context)!; + tabController.addListener(() { + renderTabButtons(tabController.index); + }); + List tabs = [ + Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: logEntryForm, + fields: [ + Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.only(right: 5), + child: DateTimeFormField( + date: _time, + label: 'Date', + controller: _dateController, + onChanged: (newTime) { + if (newTime != null) { + setState(() { + _time = DateTime( + newTime.year, + newTime.month, + newTime.day, + _time.hour, + _time.minute); + }); + updateTime(); + } + }, + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 5), + child: TimeOfDayFormField( + time: TimeOfDay.fromDateTime(_time), + label: 'Time', + controller: _timeController, + onChanged: (newTime) { + if (newTime != null) { + setState(() { + _time = DateTime( + _time.year, + _time.month, + _time.day, + newTime.hour, + newTime.minute); + }); + updateTime(); + } + }, + ), + ), + ), + ], + ), + Row( + children: [ + Settings.glucoseMeasurement == + GlucoseMeasurement.mgPerDl || + Settings.glucoseDisplayMode == + GlucoseDisplayMode.both || + Settings.glucoseDisplayMode == + GlucoseDisplayMode.bothForDetail + ? Expanded( + flex: Settings.glucoseMeasurement == + GlucoseMeasurement.mgPerDl + ? 2 + : 1, + child: NumberFormField( + label: 'Blood Glucose', + suffix: 'mg/dl', + readOnly: Settings.glucoseMeasurement == + GlucoseMeasurement.mmolPerL, + showSteppers: + Settings.glucoseMeasurement == + GlucoseMeasurement.mgPerDl, + controller: _mgPerDlController, + onChanged: + convertBetweenMgPerDlAndMmolPerL, + ), + ) + : Container(), + Settings.glucoseMeasurement == + GlucoseMeasurement.mmolPerL || + [ + GlucoseDisplayMode.both, + GlucoseDisplayMode.bothForDetail + ].contains(Settings.glucoseDisplayMode) + ? Expanded( + flex: Settings.glucoseMeasurement == + GlucoseMeasurement.mmolPerL + ? 2 + : 1, + child: NumberFormField( + label: 'Blood Glucose', + suffix: 'mmol/l', + readOnly: Settings.glucoseMeasurement == + GlucoseMeasurement.mgPerDl, + showSteppers: + Settings.glucoseMeasurement == + GlucoseMeasurement.mmolPerL, + controller: _mmolPerLController, + step: Settings.mmolPerLSteps, + onChanged: + convertBetweenMgPerDlAndMmolPerL, + ), + ) + : Container(), + Transform.rotate( + angle: (_glucoseTrend ?? 90) * math.pi / 180, + child: IconButton( + onPressed: () => setState(() { + _glucoseTrend = (_glucoseTrend ?? -45) + 45; + if (_glucoseTrend! > 180) { + _glucoseTrend = null; + } + }), + icon: Icon(Icons.arrow_upward, + color: _glucoseTrend != null + ? Theme.of(context).iconTheme.color + : Theme.of(context).disabledColor), + ), + ), + ], + ), + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, + ), + ], + ), + ]), + ), + ), + ]; + + if (!_isNew) { + tabs.add(LogMealListScreen( + logEntry: _logEntry!, logMeals: _logMeals, reload: reload)); + tabs.add(LogBolusListScreen( + logEntry: _logEntry!, logBoli: _logBoli, reload: reload)); + } + + return Scaffold( + appBar: AppBar( + title: Text(_isNew ? 'New Log Entry' : 'Edit Log Entry'), + bottom: _isNew + ? PreferredSize(child: Container(), preferredSize: Size.zero) + : const TabBar( + tabs: [ + Tab(text: 'GENERAL'), + Tab(text: 'MEALS'), + Tab(text: 'BOLI'), + ], + ), + actions: appBarActions, + ), + drawer: const Navigation(currentLocation: LogEntryScreen.routeName), + body: TabBarView( + children: tabs, + ), + bottomNavigationBar: bottomNav, + floatingActionButton: actionButton, + floatingActionButtonLocation: FloatingActionButtonLocation.endFloat, + ); + }), + ); + } +} diff --git a/lib/screens/log/log_entry/log_meal_detail.dart b/lib/screens/log/log_entry/log_meal_detail.dart new file mode 100644 index 0000000..6704d9a --- /dev/null +++ b/lib/screens/log/log_entry/log_meal_detail.dart @@ -0,0 +1,804 @@ +import 'package:diameter/components/detail.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/components/forms/number_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; +import 'package:diameter/models/accuracy.dart'; +import 'package:diameter/models/log_meal.dart'; +import 'package:diameter/models/meal.dart'; +import 'package:diameter/models/meal_category.dart'; +import 'package:diameter/models/meal_portion_type.dart'; +import 'package:diameter/models/meal_source.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/navigation.dart'; +import 'package:diameter/screens/accuracy_detail.dart'; +import 'package:diameter/screens/meal/meal_category_detail.dart'; +import 'package:diameter/screens/meal/meal_detail.dart'; +import 'package:diameter/screens/meal/meal_portion_type_detail.dart'; +import 'package:diameter/screens/meal/meal_source_detail.dart'; +import 'package:diameter/utils/utils.dart'; +import 'package:flutter/material.dart'; + +class LogMealDetailScreen extends StatefulWidget { + static const String routeName = '/log-meal'; + + final int logEntryId; + final int id; + + const LogMealDetailScreen({Key? key, this.logEntryId = 0, this.id = 0}) + : super(key: key); + + @override + _LogMealDetailScreenState createState() => _LogMealDetailScreenState(); +} + +class _LogMealDetailScreenState extends State { + LogMeal? _logMeal; + bool _isNew = true; + bool _isSaving = false; + bool _isExpanded = false; + bool _setManually = false; + + final GlobalKey _logMealForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); + + double _amount = 1; + + final _valueController = TextEditingController(text: ''); + final _carbsRatioController = TextEditingController(text: ''); + final _portionSizeController = TextEditingController(text: ''); + final _totalCarbsController = TextEditingController(text: ''); + final _notesController = TextEditingController(text: ''); + + Meal? _meal; + MealSource? _mealSource; + MealCategory? _mealCategory; + MealPortionType? _mealPortionType; + Accuracy? _portionSizeAccuracy; + Accuracy? _carbsRatioAccuracy; + + final _mealController = TextEditingController(text: ''); + final _mealSourceController = TextEditingController(text: ''); + final _mealCategoryController = TextEditingController(text: ''); + final _mealPortionTypeController = TextEditingController(text: ''); + final _portionSizeAccuracyController = TextEditingController(text: ''); + final _carbsRatioAccuracyController = TextEditingController(text: ''); + final _amountController = TextEditingController(text: '1'); + + List _meals = []; + List _mealCategories = []; + List _mealPortionTypes = []; + List _mealSources = []; + List _portionSizeAccuracies = []; + List _carbsRatioAccuracies = []; + + @override + void initState() { + super.initState(); + reload(); + + _portionSizeAccuracies = Accuracy.getAllForPortionSize(); + _carbsRatioAccuracies = Accuracy.getAllForCarbsRatio(); + _meals = Meal.getAll(); + _mealCategories = MealCategory.getAll(); + _mealPortionTypes = MealPortionType.getAll(); + _mealSources = MealSource.getAll(); + + if (widget.id != 0) { + _valueController.text = _logMeal!.value; + _carbsRatioController.text = (_logMeal!.carbsRatio ?? '').toString(); + _portionSizeController.text = (_logMeal!.portionSize ?? '').toString(); + _totalCarbsController.text = (_logMeal!.totalCarbs ?? '').toString(); + _amountController.text = (_logMeal!.amount).toString(); + _notesController.text = _logMeal!.notes ?? ''; + _meal = _logMeal!.meal.target; + _mealController.text = (_meal ?? '').toString(); + _mealSource = _logMeal!.mealSource.target; + _mealSourceController.text = (_mealSource ?? '').toString(); + _mealCategory = _logMeal!.mealCategory.target; + _mealCategoryController.text = (_mealCategory ?? '').toString(); + _mealPortionType = _logMeal!.mealPortionType.target; + _mealPortionTypeController.text = (_mealPortionType ?? '').toString(); + _portionSizeAccuracy = _logMeal!.portionSizeAccuracy.target; + _portionSizeAccuracyController.text = + (_portionSizeAccuracy ?? '').toString(); + _carbsRatioAccuracy = _logMeal!.carbsRatioAccuracy.target; + _carbsRatioAccuracyController.text = + (_carbsRatioAccuracy ?? '').toString(); + } + } + + @override + void dispose() { + _scrollController.dispose(); + _valueController.dispose(); + _carbsRatioController.dispose(); + _portionSizeController.dispose(); + _totalCarbsController.dispose(); + _notesController.dispose(); + _mealController.dispose(); + _mealSourceController.dispose(); + _mealCategoryController.dispose(); + _mealPortionTypeController.dispose(); + _portionSizeAccuracyController.dispose(); + _carbsRatioAccuracyController.dispose(); + _amountController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _logMeal = LogMeal.get(widget.id); + }); + } + _isNew = _logMeal == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void updateCarbsRatioAccuracy(Accuracy? value) { + setState(() { + _carbsRatioAccuracy = value; + _carbsRatioAccuracyController.text = + (_carbsRatioAccuracy ?? '').toString(); + }); + } + + void updatePortionSizeAccuracy(Accuracy? value) { + setState(() { + _portionSizeAccuracy = value; + _portionSizeAccuracyController.text = + (_portionSizeAccuracy ?? '').toString(); + }); + } + + void updateMealCategory(MealCategory? value) { + setState(() { + _mealCategory = value; + _mealCategoryController.text = (_mealCategory ?? '').toString(); + }); + } + + void updateMealPortionType(MealPortionType? value) { + setState(() { + _mealPortionType = value; + _mealPortionTypeController.text = (_mealPortionType ?? '').toString(); + }); + } + + void updateMealSource(MealSource? value) { + setState(() { + _mealSource = value; + _mealSourceController.text = (_mealSource ?? '').toString(); + }); + } + + Future onSelectMeal(Meal? meal) async { + setState(() { + _meal = meal; + _mealController.text = (_meal ?? '').toString(); + _valueController.text = _mealController.text; + _carbsRatioController.text = (meal?.carbsRatio ?? '').toString(); + _amountController.text = '1'; + _portionSizeController.text = (meal?.portionSize ?? '').toString(); + _totalCarbsController.text = (meal?.carbsPerPortion ?? '').toString(); + }); + updateMealSource(meal?.mealSource.target); + updateMealCategory(meal?.mealCategory.target); + updateMealPortionType(meal?.mealPortionType.target); + updatePortionSizeAccuracy(meal?.portionSizeAccuracy.target); + updateCarbsRatioAccuracy(meal?.carbsRatioAccuracy.target); + } + + void handleSaveAction() async { + setState(() { + _isSaving = true; + }); + if (_logMealForm.currentState!.validate()) { + LogMeal logMeal = LogMeal( + id: widget.id, + value: _valueController.text, + carbsRatio: double.tryParse(_carbsRatioController.text), + portionSize: double.tryParse(_portionSizeController.text), + totalCarbs: double.tryParse(_totalCarbsController.text), + amount: double.parse(_amountController.text), + ); + logMeal.logEntry.targetId = widget.logEntryId; + logMeal.meal.target = _meal; + logMeal.mealSource.target = _mealSource; + logMeal.mealCategory.target = _mealCategory; + logMeal.mealPortionType.target = _mealPortionType; + logMeal.portionSizeAccuracy.target = _portionSizeAccuracy; + logMeal.carbsRatioAccuracy.target = _carbsRatioAccuracy; + + LogMeal.put(logMeal); + Navigator.pop(context, ['${_isNew ? 'New' : ''} Meal Saved', logMeal]); + } + setState(() { + _isSaving = false; + }); + } + + void handleCancelAction() { + if (Settings.get().showConfirmationDialogOnCancel && + ((_isNew && + (_valueController.text != '' || + _meal != null || + _mealSource != null || + _mealCategory != null || + _mealPortionType != null || + double.tryParse(_amountController.text) != 1 || + double.tryParse(_carbsRatioController.text) != null || + double.tryParse(_portionSizeController.text) != null || + double.tryParse(_totalCarbsController.text) != null || + _carbsRatioAccuracy != null || + _portionSizeAccuracy != null || + _notesController.text != '')) || + (!_isNew && + (_valueController.text != _logMeal!.value || + _meal != _logMeal!.meal.target || + _mealSource != _logMeal!.mealSource.target || + _mealCategory != _logMeal!.mealCategory.target || + _mealPortionType != _logMeal!.mealPortionType.target || + double.tryParse(_amountController.text) != + _logMeal!.amount || + double.tryParse(_carbsRatioController.text) != + _logMeal!.carbsRatio || + double.tryParse(_portionSizeController.text) != + _logMeal!.portionSize || + double.tryParse(_totalCarbsController.text) != + _logMeal!.totalCarbs || + _carbsRatioAccuracy != + _logMeal!.carbsRatioAccuracy.target || + _portionSizeAccuracy != + _logMeal!.portionSizeAccuracy.target || + _notesController.text != (_logMeal!.notes ?? ''))))) { + DialogUtils.showCancelConfirmationDialog( + context: context, + isNew: _isNew, + onSave: handleSaveAction, + ); + } else { + Navigator.pop(context); + } + } + + void updateAmount(double? newAmount) { + if (newAmount != null) { + setState(() { + _amountController.text = Utils.getFractionDigitsLength(newAmount) == 0 + ? newAmount.toInt().toString() + : newAmount.toString(); + }); + + double? portionSize; + double? basePortionSize; + + if (_portionSizeController.text != '') { + portionSize = double.tryParse(_portionSizeController.text); + } + + if (portionSize != null && portionSize != 0) { + basePortionSize = portionSize / _amount; + } else if (_meal != null) { + basePortionSize = _meal!.portionSize; + } + + if (basePortionSize != null) { + setState(() { + portionSize = basePortionSize! * newAmount; + _portionSizeController.text = + Utils.toStringMatchingTemplateFractionPrecision( + portionSize!, Settings.nutritionSteps); + }); + calculateThirdMeasurementOfPortionCarbsRelation( + portionSizeUpdate: portionSize); + } + + setState(() { + _amount = newAmount; + }); + } + } + + void calculateThirdMeasurementOfPortionCarbsRelation( + {double? carbsRatioUpdate, + double? portionSizeUpdate, + double? totalCarbsUpdate}) { + if (!_setManually) { + double? carbsRatio = + carbsRatioUpdate ?? double.tryParse(_carbsRatioController.text); + double? portionSize = + portionSizeUpdate ?? double.tryParse(_portionSizeController.text); + double? totalCarbs = + totalCarbsUpdate ?? double.tryParse(_totalCarbsController.text); + + int toCalculate = 0; + const calcCarbsRatio = 1; + const calcTotalCarbs = 2; + const calcPortionSize = 3; + + if (carbsRatioUpdate != null) { + if (portionSize != null && portionSize != 0) { + toCalculate = calcTotalCarbs; + } else if (totalCarbs != null && totalCarbs != 0) { + toCalculate = calcPortionSize; + } + } else if (portionSizeUpdate != null) { + if (carbsRatio != null && carbsRatio != 0) { + toCalculate = calcTotalCarbs; + } else if (totalCarbs != null && totalCarbs != 0) { + toCalculate = calcCarbsRatio; + } + } else if (totalCarbsUpdate != null) { + if (carbsRatio != null && carbsRatio != 0) { + toCalculate = calcPortionSize; + } else if (portionSize != null && portionSize != 0) { + toCalculate = calcCarbsRatio; + } + } else { + if (carbsRatio != null && carbsRatio != 0) { + if (portionSize != null && portionSize != 0) { + toCalculate = calcTotalCarbs; + } else if (totalCarbs != null && totalCarbs != 0) { + toCalculate = calcPortionSize; + } + } else if (portionSize != null && + portionSize != 0 && + totalCarbs != null && + totalCarbs != 0) { + toCalculate = calcCarbsRatio; + } + } + + setState(() { + if (toCalculate == calcCarbsRatio) { + _carbsRatioController.text = + Utils.calculateCarbsRatio(totalCarbs!, portionSize!).toString(); + } else if (toCalculate == calcTotalCarbs) { + _totalCarbsController.text = + Utils.toStringMatchingTemplateFractionPrecision( + Utils.calculateCarbs(carbsRatio!, portionSize!, + step: Settings.nutritionSteps), + Settings.nutritionSteps); + } else if (toCalculate == calcPortionSize) { + _portionSizeController.text = + Utils.toStringMatchingTemplateFractionPrecision( + Utils.calculatePortionSize(carbsRatio!, totalCarbs!, + step: Settings.nutritionSteps), + Settings.nutritionSteps); + } + }); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(_isNew ? 'New Meal for Log Entry' : _logMeal!.value), + ), + drawer: const Navigation(currentLocation: LogMealDetailScreen.routeName), + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _logMealForm, + fields: [ + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: _mealController, + selectedItem: _meal, + label: 'Meal', + items: _meals, + onChanged: onSelectMeal, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _meal == null + ? const MealDetailScreen() + : MealDetailScreen(id: _meal!.id), + ), + ).then((result) { + onSelectMeal(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_meal == null ? Icons.add : Icons.edit), + ), + ], + ), + TextFormField( + controller: _valueController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty name'; + } + return null; + }, + ), + Row( + children: [ + Expanded( + flex: 10, + child: NumberFormField( + controller: _amountController, + label: 'Amount', + suffix: _mealPortionType?.value, + onChanged: updateAmount, + ), + ), + Expanded( + child: TextButton( + onPressed: () => updateAmount(0.5), + child: Column( + children: const [ + Text( + '1', + style: TextStyle( + decoration: TextDecoration.underline, + decorationThickness: 2), + ), + Text('2'), + ], + ), + ), + ), + Expanded( + child: TextButton( + onPressed: () => updateAmount(0.33), + child: Column( + children: const [ + Text( + '1', + style: TextStyle( + decoration: TextDecoration.underline, + decorationThickness: 2), + ), + Text('3'), + ], + ), + ), + ), + Expanded( + child: TextButton( + onPressed: () => updateAmount(0.67), + child: Column( + children: const [ + Text( + '2', + style: TextStyle( + decoration: TextDecoration.underline, + decorationThickness: 2), + ), + Text('3'), + ], + ), + ), + ), + ], + ), + Row( + children: [ + Expanded( + child: NumberFormField( + label: 'Portion size', + suffix: Settings.nutritionMeasurementSuffix, + controller: _portionSizeController, + showSteppers: false, + autoRoundToMultipleOfStep: true, + step: Settings.nutritionSteps, + onChanged: (value) async { + await Future.delayed(const Duration(seconds: 1)); + calculateThirdMeasurementOfPortionCarbsRelation( + portionSizeUpdate: value); + }, + ), + ), + const SizedBox(width: 10), + Expanded( + child: NumberFormField( + label: 'Carbs ratio', + suffix: '%', + controller: _carbsRatioController, + showSteppers: false, + onChanged: (value) async { + await Future.delayed(const Duration(seconds: 1)); + calculateThirdMeasurementOfPortionCarbsRelation( + carbsRatioUpdate: value); + }, + ), + ), + const SizedBox(width: 10), + Expanded( + child: NumberFormField( + label: 'Total carbs', + suffix: Settings.nutritionMeasurementSuffix, + controller: _totalCarbsController, + showSteppers: false, + autoRoundToMultipleOfStep: true, + step: Settings.nutritionSteps, + onChanged: (value) async { + await Future.delayed(const Duration(seconds: 1)); + calculateThirdMeasurementOfPortionCarbsRelation( + totalCarbsUpdate: value); + }, + ), + ), + ], + ), + Expanded( + child: BooleanFormField( + value: _setManually, + label: 'set carbs ratio manually', + onChanged: (value) { + setState(() { + _setManually = value; + calculateThirdMeasurementOfPortionCarbsRelation(); + }); + }, + ), + ), + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, + ), + const Divider(), + GestureDetector( + onTap: () => setState(() { + _isExpanded = !_isExpanded; + }), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Text( + 'ADDITIONAL FIELDS', + style: Theme.of(context).textTheme.subtitle2, + ), + const Spacer(), + Icon(_isExpanded + ? Icons.expand_less + : Icons.expand_more), + ], + ), + ), + Column( + children: _isExpanded + ? [ + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5.0), + child: Row( + children: [ + Expanded( + child: + AutoCompleteDropdownButton( + controller: _mealSourceController, + selectedItem: _mealSource, + label: 'Meal Source', + items: _mealSources, + onChanged: updateMealSource, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _mealSource == + null + ? const MealSourceDetailScreen() + : MealSourceDetailScreen( + id: _mealSource!.id), + ), + ).then((result) { + updateMealSource(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_mealSource == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton< + MealCategory>( + controller: _mealCategoryController, + selectedItem: _mealCategory, + label: 'Meal Category', + items: _mealCategories, + onChanged: updateMealCategory, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _mealCategory == + null + ? const MealCategoryDetailScreen() + : MealCategoryDetailScreen( + id: _mealCategory!.id), + ), + ).then((result) { + updateMealCategory(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_mealCategory == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton< + MealPortionType>( + controller: _mealPortionTypeController, + selectedItem: _mealPortionType, + label: 'Meal Portion Type', + items: _mealPortionTypes, + onChanged: updateMealPortionType, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _mealPortionType == + null + ? const MealPortionTypeDetailScreen() + : MealPortionTypeDetailScreen( + id: _mealPortionType!.id), + ), + ).then((result) { + updateMealPortionType(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_mealPortionType == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: + _portionSizeAccuracyController, + selectedItem: _portionSizeAccuracy, + label: 'Portion Size Accuracy', + items: _portionSizeAccuracies, + onChanged: updatePortionSizeAccuracy, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + _portionSizeAccuracy == null + ? const AccuracyDetailScreen() + : AccuracyDetailScreen( + id: _portionSizeAccuracy! + .id), + ), + ).then((result) { + updatePortionSizeAccuracy(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_portionSizeAccuracy == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: _carbsRatioAccuracyController, + selectedItem: _carbsRatioAccuracy, + label: 'Carbs Ratio Accuracy', + items: _carbsRatioAccuracies, + onChanged: updateCarbsRatioAccuracy, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + _carbsRatioAccuracy == null + ? const AccuracyDetailScreen() + : AccuracyDetailScreen( + id: _carbsRatioAccuracy! + .id), + ), + ).then((result) { + updateCarbsRatioAccuracy(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_carbsRatioAccuracy == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + ] + : [], + ), + ], + ), + ], + ), + ), + ), + bottomNavigationBar: DetailBottomRow( + onCancel: handleCancelAction, + onAction: _isSaving ? null : handleSaveAction, + ), + ); + } +} diff --git a/lib/screens/log/log_entry/log_meal_list.dart b/lib/screens/log/log_entry/log_meal_list.dart new file mode 100644 index 0000000..b9a63ec --- /dev/null +++ b/lib/screens/log/log_entry/log_meal_list.dart @@ -0,0 +1,127 @@ +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/log_entry.dart'; +import 'package:diameter/models/log_meal.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/screens/log/log_entry/log_meal_detail.dart'; +import 'package:flutter/material.dart'; + +class LogMealListScreen extends StatefulWidget { + final LogEntry logEntry; + final List logMeals; + final Function() reload; + + const LogMealListScreen( + {Key? key, required this.logEntry, this.logMeals = const [], required this.reload}) + : super(key: key); + + @override + _LogMealListScreenState createState() => _LogMealListScreenState(); +} + +class _LogMealListScreenState extends State { + final ScrollController _scrollController = ScrollController(); + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + widget.reload(); + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void handleEditAction(LogMeal meal) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => LogMealDetailScreen( + logEntryId: widget.logEntry.id, + id: meal.id, + ), + ), + ).then((result) => reload(message: result?[0])); + } + + void onDelete(LogMeal logMeal) { + LogMeal.remove(logMeal.id); + reload(message: 'Meal deleted'); + } + + void handleDeleteAction(LogMeal meal) async { + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( + context: context, + onConfirm: () => onDelete(meal), + message: 'Are you sure you want to delete this Meal?', + ); + } else { + onDelete(meal); + } + } + + @override + Widget build(BuildContext context) { + return widget.logMeals.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + padding: const EdgeInsets.all(10.0), + controller: _scrollController, + shrinkWrap: true, + itemCount: widget.logMeals.length, + itemBuilder: (context, index) { + final meal = widget.logMeals[index]; + return Card( + child: ListTile( + onTap: () => handleEditAction(meal), + title: Row( + children: [ + Expanded(child: Text( + meal.value.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, + )), + Expanded( + child: Column( + children: ((meal.totalCarbs ?? 0) > 0) + ? [ + Text(meal.totalCarbs!.toStringAsPrecision(3)), + Text( + '${Settings.nutritionMeasurementSuffix} carbs', + textScaleFactor: 0.75), + ] + : [], + ), + ), + ], + ), + trailing: IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => handleDeleteAction(meal), + ), + ), + ); + }, + ), + ) + : const Center( + child: Text( + 'You have not added any Meals to this Log Entry yet!'), + ); + } +} diff --git a/lib/screens/log/log_entry_form.dart b/lib/screens/log/log_entry_form.dart deleted file mode 100644 index c969c2b..0000000 --- a/lib/screens/log/log_entry_form.dart +++ /dev/null @@ -1,185 +0,0 @@ -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/settings.dart'; -import 'package:diameter/utils/utils.dart'; -import 'package:flutter/material.dart'; - -class LogEntryForm extends StatefulWidget { - final GlobalKey formState; - final Map controllers; - - const LogEntryForm( - {Key? key, required this.formState, required this.controllers}) - : super(key: key); - - @override - _LogEntryFormState createState() => _LogEntryFormState(); -} - -class _LogEntryFormState extends State { - void convertBetweenMgPerDlAndMmolPerL({GlucoseMeasurement? calculateFrom}) { - int? mgPerDl; - double? mmolPerL; - final _mgPerDlController = widget.controllers['mgPerDl']; - final _mmolPerLController = widget.controllers['mmolPerL']; - - if (calculateFrom != GlucoseMeasurement.mmolPerL && - _mgPerDlController!.text != '') { - mgPerDl = int.tryParse(_mgPerDlController.text); - } - if (calculateFrom != GlucoseMeasurement.mgPerDl && - _mmolPerLController!.text != '') { - mmolPerL = double.tryParse(_mmolPerLController.text); - } - - if (mgPerDl != null && mmolPerL == null) { - setState(() { - _mmolPerLController!.text = - Utils.convertMgPerDlToMmolPerL(mgPerDl!).toString(); - }); - } - if (mmolPerL != null && mgPerDl == null) { - setState(() { - _mgPerDlController!.text = - Utils.convertMmolPerLToMgPerDl(mmolPerL!).toString(); - }); - } - } - - @override - Widget build(BuildContext context) { - // final _timeController = widget.controllers['time']; - final _mgPerDlController = widget.controllers['mgPerDl']; - final _mmolPerLController = widget.controllers['mmolPerL']; - final _bolusGlucoseController = widget.controllers['bolusGlucose']; - final _delayedBolusRateController = widget.controllers['delayedBolusRate']; - final _delayedBolusDurationController = - widget.controllers['delayedBolusDuration']; - final _notesController = widget.controllers['notes']; - - return SingleChildScrollView( - child: Column(crossAxisAlignment: CrossAxisAlignment.stretch, children: < - Widget>[ - StyledForm( - formState: widget.formState, - fields: [ - // TODO: insert time picker - // Expanded( - // child: StyledTimeOfDayFormField( - // label: 'Time', - // controller: _timeController, - // onChanged: (newEndTime) { - // if (newEndTime != null) { - // setState(() { - // _endTime = newEndTime; - // }); - // updateEndTime(); - // } - //), - Row( - children: [ - glucoseMeasurement == GlucoseMeasurement.mgPerDl || - glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == GlucoseDisplayMode.bothForDetail - ? Expanded( - child: TextFormField( - decoration: const InputDecoration( - labelText: 'mg/dl', - suffixText: 'mg/dl', - ), - controller: _mgPerDlController, - onChanged: (_) => convertBetweenMgPerDlAndMmolPerL( - calculateFrom: GlucoseMeasurement.mgPerDl), - keyboardType: const TextInputType.numberWithOptions(), - validator: (value) { - if (value!.trim().isEmpty && - _mmolPerLController!.text.trim().isEmpty) { - return 'How many mg/dl or mmol/l does the rate make up for?'; - } - return null; - }, - ), - ) - : Container(), - glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == GlucoseDisplayMode.bothForDetail - ? IconButton( - onPressed: () => convertBetweenMgPerDlAndMmolPerL( - calculateFrom: GlucoseMeasurement.mmolPerL), - icon: const Icon(Icons.calculate), - ) - : Container(), - glucoseMeasurement == GlucoseMeasurement.mmolPerL || - glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == GlucoseDisplayMode.bothForDetail - ? Expanded( - child: TextFormField( - decoration: const InputDecoration( - labelText: 'mmol/l', - suffixText: 'mmol/l', - ), - controller: _mmolPerLController, - onChanged: (_) => convertBetweenMgPerDlAndMmolPerL( - calculateFrom: GlucoseMeasurement.mmolPerL), - keyboardType: const TextInputType.numberWithOptions( - decimal: true), - validator: (value) { - if (value!.trim().isEmpty && - _mgPerDlController!.text.trim().isEmpty) { - return 'How many mg/dl or mmol/l does rhe rate make up for?'; - } - return null; - }, - ), - ) - : Container(), - glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == GlucoseDisplayMode.bothForDetail - ? IconButton( - onPressed: () => convertBetweenMgPerDlAndMmolPerL( - calculateFrom: GlucoseMeasurement.mgPerDl), - icon: const Icon(Icons.calculate), - ) - : Container(), - ], - ), - TextFormField( - decoration: const InputDecoration( - labelText: 'Bolus Units', - suffixText: 'U', - ), - controller: _bolusGlucoseController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - ), - // TODO: change field functionality according to time format - TextFormField( - decoration: const InputDecoration( - labelText: 'Delayed Bolus Duration', - suffixText: ' min', - ), - controller: _delayedBolusDurationController, - keyboardType: TextInputType.number, - ), - TextFormField( - decoration: const InputDecoration( - labelText: 'Delayed Bolus Units', - ), - controller: _delayedBolusRateController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - ), - TextFormField( - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, - ), - keyboardType: TextInputType.multiline, - ), - ], - ), - ]), - ); - } -} diff --git a/lib/screens/log/log_event/log_event_detail.dart b/lib/screens/log/log_event/log_event_detail.dart new file mode 100644 index 0000000..93ec4ab --- /dev/null +++ b/lib/screens/log/log_event/log_event_detail.dart @@ -0,0 +1,511 @@ +import 'package:diameter/components/detail.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/components/forms/date_time_form_field.dart'; +import 'package:diameter/components/forms/time_of_day_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; +import 'package:diameter/models/basal_profile.dart'; +import 'package:diameter/models/bolus_profile.dart'; +import 'package:diameter/models/log_event.dart'; +import 'package:diameter/models/log_event_type.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/navigation.dart'; +import 'package:diameter/screens/basal/basal_profile_detail.dart'; +import 'package:diameter/screens/bolus/bolus_profile_detail.dart'; +import 'package:diameter/utils/date_time_utils.dart'; +import 'package:flutter/material.dart'; + +class LogEventDetailScreen extends StatefulWidget { + static const String routeName = '/log-event'; + + final int logEntryId; + final int endLogEntryId; + final int id; + final DateTime? suggestedDate; + + const LogEventDetailScreen( + {Key? key, this.logEntryId = 0, this.endLogEntryId = 0, this.id = 0, this.suggestedDate}) + : super(key: key); + + @override + _LogEventDetailScreenState createState() => _LogEventDetailScreenState(); +} + +class _LogEventDetailScreenState extends State { + LogEvent? _logEvent; + bool _isNew = true; + bool _isSaving = false; + + List _bolusProfiles = []; + List _basalProfiles = []; + + final GlobalKey _logEventForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); + + late DateTime _time; + DateTime? _endTime; + + final _timeController = TextEditingController(text: ''); + final _endTimeController = TextEditingController(text: ''); + + final _dateController = TextEditingController(text: ''); + final _endDateController = TextEditingController(text: ''); + + final _reminderDurationController = TextEditingController(text: ''); + final _notesController = TextEditingController(text: ''); + + LogEventType? _eventType; + final _eventTypeController = TextEditingController(text: ''); + + bool _hasEndTime = false; + + BolusProfile? _bolusProfile; + BasalProfile? _basalProfile; + final _bolusProfileController = TextEditingController(text: ''); + final _basalProfileController = TextEditingController(text: ''); + + List _logEventTypes = []; + + @override + void initState() { + super.initState(); + + reload(); + + _bolusProfiles = BolusProfile.getAll(); + _basalProfiles = BasalProfile.getAll(); + + if (widget.id != 0) { + _reminderDurationController.text = + (_logEvent!.reminderDuration ?? '').toString(); + _hasEndTime = _logEvent!.hasEndTime; + _notesController.text = _logEvent!.notes ?? ''; + + _eventType = _logEvent!.eventType.target; + _eventTypeController.text = (_eventType ?? '').toString(); + + _basalProfile = _logEvent!.basalProfile.target; + _basalProfileController.text = (_basalProfile ?? '').toString(); + + _bolusProfile = _logEvent!.bolusProfile.target; + _bolusProfileController.text = (_bolusProfile ?? '').toString(); + + _time = _logEvent!.time; + _endTime = _logEvent!.endTime; + } else { + _time = widget.suggestedDate ?? DateTime.now(); + } + + _logEventTypes = LogEventType.getAll(); + + updateTime(); + updateEndTime(); + } + + @override + void dispose() { + _scrollController.dispose(); + _timeController.dispose(); + _endTimeController.dispose(); + _dateController.dispose(); + _endDateController.dispose(); + _reminderDurationController.dispose(); + _notesController.dispose(); + _eventTypeController.dispose(); + _bolusProfileController.dispose(); + _basalProfileController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _logEvent = LogEvent.get(widget.id); + }); + } + _isNew = _logEvent == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void updateTime() { + _timeController.text = DateTimeUtils.displayTime(_time); + _dateController.text = DateTimeUtils.displayDate(_time); + } + + void updateEndTime() { + _endTimeController.text = DateTimeUtils.displayTime(_endTime); + _endDateController.text = DateTimeUtils.displayDate(_endTime); + } + + void updateBasalProfile(BasalProfile? value) { + setState(() { + _basalProfile = value; + _basalProfileController.text = (_basalProfile ?? '').toString(); + }); + } + + void updateBolusProfile(BolusProfile? value) { + setState(() { + _bolusProfile = value; + _bolusProfileController.text = (_bolusProfile ?? '').toString(); + }); + } + + void onSelectEventType(LogEventType? eventType) { + setState(() { + _eventType = eventType; + _eventTypeController.text = (_eventType ?? '').toString(); + }); + + if (eventType != null) { + setState(() { + _hasEndTime = eventType.hasEndTime; + if (eventType.defaultReminderDuration != null) { + _reminderDurationController.text = + eventType.defaultReminderDuration.toString(); + } + }); + + if (eventType.basalProfile.target != null) { + updateBasalProfile(eventType.basalProfile.target); + } + if (eventType.bolusProfile.target != null) { + updateBolusProfile(eventType.bolusProfile.target); + } + } + } + + Future checkIfActiveEventOfTypeExistsBeforeSaving() async { + if (_eventType != null && + LogEvent.eventTypeExistsForTime(_eventType!.id, _time)) { + await showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + content: const Text( + 'An Event of this type is already active within the set time frame. What would you like to do?'), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, 'DISCARD'), + child: const Text('DISCARD'), + ), + TextButton( + onPressed: () => Navigator.pop(context, 'EDIT'), + child: const Text('KEEP EDITING'), + ), + ElevatedButton( + onPressed: () => Navigator.pop(context, 'SAVE'), + child: const Text('SAVE'), + ) + ], + ); + }).then((value) async { + if (value == 'DISCARD') { + Navigator.pop(context); + } else if (value == 'SAVE') { + onSave(); + } + }); + } else { + onSave(); + } + } + + void onSave() { + LogEvent event = LogEvent( + id: widget.id, + time: _time, + endTime: _endTime, + hasEndTime: _hasEndTime, + reminderDuration: int.tryParse(_reminderDurationController.text), + notes: _notesController.text, + ); + event.eventType.target = _eventType; + event.basalProfile.target = _basalProfile; + event.bolusProfile.target = _bolusProfile; + LogEvent.put(event); + Navigator.pop(context, ['${_isNew ? 'New' : ''} Event Saved', event]); + } + + void handleSaveAction() async { + setState(() { + _isSaving = true; + }); + if (_logEventForm.currentState!.validate()) { + await checkIfActiveEventOfTypeExistsBeforeSaving(); + } + setState(() { + _isSaving = false; + }); + } + + void handleCancelAction() { + if (Settings.get().showConfirmationDialogOnCancel && + ((_isNew && + (_notesController.text != '' || + _eventType != null || + _hasEndTime)) || + (!_isNew && + (_notesController.text != (_logEvent!.notes ?? '') || + _eventType != _logEvent!.eventType.target || + _hasEndTime != _logEvent!.hasEndTime)))) { + DialogUtils.showCancelConfirmationDialog( + context: context, + isNew: _isNew, + onSave: handleSaveAction, + ); + } else { + Navigator.pop(context); + } + } + + @override + Widget build(BuildContext context) { + final now = DateTime.now(); + return Scaffold( + appBar: AppBar( + title: Text(_isNew ? 'New Event' : 'Edit Event'), + ), + drawer: const Navigation(currentLocation: LogEventDetailScreen.routeName), + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _logEventForm, + fields: [ + AutoCompleteDropdownButton( + controller: _eventTypeController, + selectedItem: _eventType, + label: 'Event Type', + items: _logEventTypes, + onChanged: onSelectEventType, + ), + Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.only(right: 5), + child: DateTimeFormField( + date: _time, + label: _hasEndTime ? 'Start Date' : 'Date', + controller: _dateController, + onChanged: (newTime) { + if (newTime != null) { + setState(() { + _time = DateTime(newTime.year, newTime.month, + newTime.day, _time.hour, _time.minute); + }); + updateTime(); + } + }, + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 5), + child: TimeOfDayFormField( + time: TimeOfDay.fromDateTime(_time), + label: _hasEndTime ? 'Start Time' : 'Time', + controller: _timeController, + onChanged: (newTime) { + if (newTime != null) { + setState(() { + _time = DateTime(_time.year, _time.month, + _time.day, newTime.hour, newTime.minute); + }); + updateTime(); + } + }, + ), + ), + ), + ], + ), + BooleanFormField( + value: _hasEndTime, + onChanged: (value) { + setState(() { + _hasEndTime = value; + }); + }, + label: 'has end time', + ), + Column( + children: _hasEndTime + ? [ + Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.only(right: 5), + child: DateTimeFormField( + date: _endTime ?? now, + label: 'End Date', + controller: _endDateController, + onChanged: (newTime) { + if (newTime != null) { + setState(() { + _endTime = DateTime( + newTime.year, + newTime.month, + newTime.day, + _endTime?.hour ?? 0, + _endTime?.minute ?? 0); + }); + updateEndTime(); + } + }, + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 5), + child: TimeOfDayFormField( + time: TimeOfDay.fromDateTime( + _endTime ?? now), + label: 'End Time', + controller: _endTimeController, + onChanged: (newTime) { + if (newTime != null) { + setState(() { + _endTime = DateTime( + _endTime?.year ?? now.year, + _endTime?.month ?? now.month, + _endTime?.day ?? now.day, + newTime.hour, + newTime.minute); + }); + updateEndTime(); + } + }, + ), + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: TextFormField( + controller: _reminderDurationController, + keyboardType: + const TextInputType.numberWithOptions(), + decoration: InputDecoration( + labelText: 'Default Reminder Duration', + suffixText: ' min', + enabled: _hasEndTime, + ), + ), + ), + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton< + BolusProfile>( + controller: _bolusProfileController, + selectedItem: _bolusProfile, + label: 'Bolus Profile', + items: _bolusProfiles, + onChanged: updateBolusProfile, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _bolusProfile == + null + ? const BolusProfileDetailScreen() + : BolusProfileDetailScreen( + id: _basalProfile!.id), + ), + ).then((result) { + updateBolusProfile(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_bolusProfile == null + ? Icons.add + : Icons.edit), + ), + ], + ), + Padding( + padding: const EdgeInsets.only(top: 10.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton< + BasalProfile>( + controller: _basalProfileController, + selectedItem: _basalProfile, + label: 'Basal Profile', + items: _basalProfiles, + onChanged: updateBasalProfile, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _basalProfile == + null + ? const BasalProfileDetailScreen() + : BasalProfileDetailScreen( + id: _basalProfile!.id), + ), + ).then((result) { + updateBasalProfile(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_basalProfile == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ) + ] + : []), + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, + ), + ], + ), + ], + ), + ), + ), + bottomNavigationBar: DetailBottomRow( + onCancel: handleCancelAction, + onAction: _isSaving ? null : handleSaveAction, + ), + ); + } +} diff --git a/lib/screens/log/log_event/log_event_list.dart b/lib/screens/log/log_event/log_event_list.dart new file mode 100644 index 0000000..6ab1dc9 --- /dev/null +++ b/lib/screens/log/log_event/log_event_list.dart @@ -0,0 +1,366 @@ +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/log_event.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/screens/log/log_event/log_event_detail.dart'; +import 'package:diameter/utils/date_time_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:diameter/navigation.dart'; + +class LogEventListScreen extends StatefulWidget { + static const String routeName = '/log-events'; + const LogEventListScreen({Key? key}) : super(key: key); + + @override + _LogEventListScreenState createState() => _LogEventListScreenState(); +} + +class _LogEventListScreenState extends State { + List _activeEvents = []; + late List _logEvents; + + final ScrollController _scrollController = ScrollController(); + + final TextEditingController _dateController = TextEditingController(text: ''); + + late DateTime _date; + bool _showActive = true; + + @override + void initState() { + super.initState(); + + _date = DateTime.now(); + _dateController.text = DateTimeUtils.displayDate(_date); + + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + _dateController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + setState(() { + _activeEvents = LogEvent.getAllActiveForTime(DateTime.now()); + _logEvents = LogEvent.getAllForDate(_date); + }); + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void handleAddNewEvent() async { + final now = DateTime.now(); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return LogEventDetailScreen( + suggestedDate: _date.isAtSameMomentAs(DateTime(now.year, now.month, now.day)) ? now : _date, + ); + }, + ), + ).then((result) => reload(message: result?[0])); + } + + void handleEditAction(LogEvent event) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => LogEventDetailScreen( + id: event.id, + ), + ), + ).then((result) => reload(message: result?[0])); + } + + void onDelete(LogEvent logEvent) { + LogEvent.remove(logEvent.id); + reload(message: 'Event deleted'); + } + + void handleDeleteAction(LogEvent logEvent) async { + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( + context: context, + onConfirm: () => onDelete(logEvent), + message: 'Are you sure you want to delete this Event?', + ); + } else { + onDelete(logEvent); + } + } + + void onStop(LogEvent event) async { + event.endTime = DateTime.now(); + LogEvent.put(event); + reload(message: 'Event ended'); + } + + void handleStopAction(LogEvent event) async { + if (Settings.get().showConfirmationDialogOnStopEvent) { + DialogUtils.showConfirmationDialog( + context: context, + onConfirm: () => onStop(event), + message: 'Are you sure you want to end this Event?', + confirmationLabel: 'END EVENT', + ); + } else { + onStop(event); + } + } + + void onChangeDate(DateTime? date) { + if (date != null) { + setState(() { + _date = DateTime(date.year, date.month, date.day); + _dateController.text = DateTimeUtils.displayDate(date); + }); + reload(); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Log Events'), + actions: [ + IconButton( + onPressed: () => onChangeDate(DateTime.now()), + icon: const Icon(Icons.today)), + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) + ], + ), + drawer: const Navigation(currentLocation: LogEventListScreen.routeName), + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + GestureDetector( + onTap: () => setState(() { + _showActive = !_showActive; + }), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + child: Text( + 'ACTIVE EVENTS', + style: Theme.of(context).textTheme.subtitle2, + textAlign: TextAlign.center, + ), + ), + Icon(_showActive + ? Icons.expand_less + : Icons.expand_more), + ], + ), + ), + ), + !_showActive ? Container() : + _activeEvents.isNotEmpty + ? ListView.builder( + shrinkWrap: true, + padding: const EdgeInsets.all(10.0), + itemCount: _activeEvents.length, + itemBuilder: (context, index) { + LogEvent event = _activeEvents[index]; + return Card( + child: ListTile( + onTap: () { + handleEditAction(event); + }, + title: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + DateTimeUtils.displayDateTime(event.time), + ), + const SizedBox(width: 24), + Expanded( + child: Text( + (event.title ?? + event.eventType.target?.value ?? + '') + .toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, + ), + ), + ], + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + event.hasEndTime && event.endTime == null + ? IconButton( + icon: const Icon( + Icons.stop, + color: Colors.blue, + ), + onPressed: () => handleStopAction(event), + ) + : const SizedBox(width: 50), + IconButton( + icon: const Icon( + Icons.edit, + color: Colors.blue, + ), + onPressed: () => handleEditAction(event), + ), + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => handleDeleteAction(event), + ), + ], + ), + ), + ); + }, + ) + : const Center( + child: Text('There are no Active Events!'), + ), + const Padding( + padding: EdgeInsets.all(10.0), + child: Divider(), + ), + Row( + children: [ + IconButton( + onPressed: _date.isAtSameMomentAs(DateTime(2000, 1, 1)) + ? null + : () => + onChangeDate(_date.subtract(const Duration(days: 1))), + icon: const Icon(Icons.arrow_back), + ), + Expanded( + child: GestureDetector( + onTap: () async { + final newTime = await showDatePicker( + context: context, + initialDate: _date, + firstDate: DateTime(2000, 1, 1), + lastDate: DateTime.now().add(const Duration(days: 365)), + ); + onChangeDate(newTime); + }, + child: Expanded( + child: Text( + DateTimeUtils.displayDate(_date).toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, + textAlign: TextAlign.center, + ), + ), + ), + ), + IconButton( + onPressed: + _date.add(const Duration(days: 1)).isBefore(DateTime.now()) + ? () => onChangeDate(_date.add(const Duration(days: 1))) + : null, + icon: const Icon(Icons.arrow_forward), + ), + ], + ), + Expanded( + child: _logEvents.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + controller: _scrollController, + shrinkWrap: true, + padding: const EdgeInsets.all(10.0), + itemCount: _logEvents.length, + itemBuilder: (context, index) { + LogEvent event = _logEvents[index]; + return Card( + child: ListTile( + onTap: () { + handleEditAction(event); + }, + title: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + DateTimeUtils.displayTime(event.isEndEvent + ? event.endTime + : event.time), + ), + const SizedBox(width: 24), + Expanded( + child: Text( + (event.title ?? + event.eventType.target?.value ?? + '') + .toUpperCase(), + style: + Theme.of(context).textTheme.subtitle2, + ), + ), + ], + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + event.hasEndTime && event.endTime == null + ? IconButton( + icon: const Icon( + Icons.stop, + color: Colors.blue, + ), + onPressed: () => + handleStopAction(event), + ) + : const SizedBox(width: 50), + IconButton( + icon: const Icon( + Icons.edit, + color: Colors.blue, + ), + onPressed: () => handleEditAction(event), + ), + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => handleDeleteAction(event), + ), + ], + ), + ), + ); + }, + )) + : const Center( + child: Text('There are no Events for that date!'), + ), + ), + ], + ), + floatingActionButton: FloatingActionButton( + onPressed: handleAddNewEvent, + child: const Icon(Icons.add), + ), + ); + } +} diff --git a/lib/screens/log/log_event/log_event_type_detail.dart b/lib/screens/log/log_event/log_event_type_detail.dart new file mode 100644 index 0000000..eb584c5 --- /dev/null +++ b/lib/screens/log/log_event/log_event_type_detail.dart @@ -0,0 +1,304 @@ +import 'package:diameter/components/detail.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/components/forms/duration_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; +import 'package:diameter/models/basal_profile.dart'; +import 'package:diameter/models/bolus_profile.dart'; +import 'package:diameter/models/log_event_type.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/navigation.dart'; +import 'package:diameter/screens/basal/basal_profile_detail.dart'; +import 'package:diameter/screens/bolus/bolus_profile_detail.dart'; +import 'package:flutter/material.dart'; + +class EventTypeDetailScreen extends StatefulWidget { + static const String routeName = '/log-event-type'; + final int id; + const EventTypeDetailScreen({Key? key, this.id = 0}) : super(key: key); + + @override + _EventTypeDetailScreenState createState() => _EventTypeDetailScreenState(); +} + +class _EventTypeDetailScreenState extends State { + LogEventType? _logEventType; + bool _isNew = true; + bool _isSaving = false; + + List _bolusProfiles = []; + List _basalProfiles = []; + + final GlobalKey _logEventTypeForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); + + final _valueController = TextEditingController(text: ''); + final _notesController = TextEditingController(text: ''); + + bool _hasEndTime = false; + int _defaultReminderDuration = 0; + BolusProfile? _bolusProfile; + BasalProfile? _basalProfile; + final _bolusProfileController = TextEditingController(text: ''); + final _basalProfileController = TextEditingController(text: ''); + + @override + void initState() { + super.initState(); + + reload(); + + _bolusProfiles = BolusProfile.getAll(); + _basalProfiles = BasalProfile.getAll(); + + if (_logEventType != null) { + _valueController.text = _logEventType!.value; + _defaultReminderDuration = + _logEventType!.defaultReminderDuration ?? 0; + _hasEndTime = _logEventType!.hasEndTime; + _notesController.text = _logEventType!.notes ?? ''; + _basalProfile = _logEventType!.basalProfile.target; + _basalProfileController.text = (_basalProfile ?? '').toString(); + _bolusProfile = _logEventType!.bolusProfile.target; + _bolusProfileController.text = (_bolusProfile ?? '').toString(); + } + } + + @override + void dispose() { + _scrollController.dispose(); + _valueController.dispose(); + _notesController.dispose(); + _bolusProfileController.dispose(); + _basalProfileController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _logEventType = LogEventType.get(widget.id); + }); + } + _isNew = _logEventType == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void updateBasalProfile(BasalProfile? value) { + setState(() { + _basalProfile = value; + _basalProfileController.text = (_basalProfile ?? '').toString(); + }); + } + + void updateBolusProfile(BolusProfile? value) { + setState(() { + _bolusProfile = value; + _bolusProfileController.text = (_bolusProfile ?? '').toString(); + }); + } + + void handleSaveAction() async { + setState(() { + _isSaving = true; + }); + if (_logEventTypeForm.currentState!.validate()) { + LogEventType eventType = LogEventType( + id: widget.id, + value: _valueController.text, + notes: _notesController.text, + defaultReminderDuration: _defaultReminderDuration, + hasEndTime: _hasEndTime, + ); + eventType.basalProfile.target = _basalProfile; + eventType.bolusProfile.target = _bolusProfile; + LogEventType.put(eventType); + Navigator.pop( + context, ['${_isNew ? 'New' : ''} Log Event Type Saved', eventType]); + } + setState(() { + _isSaving = false; + }); + } + + void handleCancelAction() { + bool isNew = _logEventType == null; + if (Settings.get().showConfirmationDialogOnCancel && + ((isNew && + (_valueController.text != '' || + _defaultReminderDuration != 0 || + _notesController.text != '' || + _hasEndTime)) || + (!isNew && + (_valueController.text != _logEventType!.value || + _defaultReminderDuration != + _logEventType!.defaultReminderDuration || + _notesController.text != (_logEventType!.notes ?? '') || + _hasEndTime != _logEventType!.hasEndTime)))) { + DialogUtils.showCancelConfirmationDialog( + context: context, + isNew: isNew, + onSave: handleSaveAction, + ); + } else { + Navigator.pop(context); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(_isNew ? 'New Log Event Type' : _logEventType!.value), + ), + drawer: + const Navigation(currentLocation: EventTypeDetailScreen.routeName), + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper(formState: _logEventTypeForm, fields: [ + TextFormField( + controller: _valueController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty name'; + } + return null; + }, + ), + BooleanFormField( + value: _hasEndTime, + label: 'has end time', + onChanged: (value) { + setState(() { + _hasEndTime = value; + }); + }, + ), + Column( + children: _hasEndTime + ? [ + Padding( + padding: const EdgeInsets.only(bottom: 10.0), + child: DurationFormField( + minutes: _defaultReminderDuration, + label: 'Default Reminder Duration', + onChanged: (value) => _defaultReminderDuration = value ?? 0, + showSteppers: true, + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 10.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton< + BolusProfile>( + selectedItem: _bolusProfile, + controller: _bolusProfileController, + label: 'Bolus Profile', + items: _bolusProfiles, + onChanged: updateBolusProfile, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _bolusProfile == + null + ? const BolusProfileDetailScreen() + : BolusProfileDetailScreen( + id: _bolusProfile!.id), + ), + ).then((result) { + setState(() { + updateBolusProfile(result?[1]); + }); + reload(message: result?[0]); + }); + }, + icon: Icon(_bolusProfile == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + Row( + children: [ + Expanded( + child: + AutoCompleteDropdownButton( + controller: _basalProfileController, + selectedItem: _basalProfile, + label: 'Basal Profile', + items: _basalProfiles, + onChanged: updateBasalProfile, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _basalProfile == + null + ? const BasalProfileDetailScreen() + : BasalProfileDetailScreen( + id: _basalProfile!.id), + ), + ).then((result) { + updateBasalProfile(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_basalProfile == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ] + : []), + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, + ), + ]), + ], + ), + ), + ), + bottomNavigationBar: DetailBottomRow( + onCancel: handleCancelAction, + onAction: _isSaving ? null : handleSaveAction, + ), + ); + } +} diff --git a/lib/screens/log/log_event/log_event_type_list.dart b/lib/screens/log/log_event/log_event_type_list.dart new file mode 100644 index 0000000..07be148 --- /dev/null +++ b/lib/screens/log/log_event/log_event_type_list.dart @@ -0,0 +1,123 @@ +import 'package:diameter/models/log_event_type.dart'; +import 'package:diameter/navigation.dart'; +import 'package:diameter/screens/log/log_event/log_event_type_detail.dart'; +import 'package:flutter/material.dart'; + +class LogEventTypeListScreen extends StatefulWidget { + static const String routeName = '/log-event-types'; + const LogEventTypeListScreen({Key? key}) : super(key: key); + + @override + _LogEventTypeListScreenState createState() => _LogEventTypeListScreenState(); +} + +class _LogEventTypeListScreenState extends State { + List _logEventTypes = []; + + final ScrollController _scrollController = ScrollController(); + + @override + void initState() { + super.initState(); + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + setState(() { + _logEventTypes = LogEventType.getAll(); + }); + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('Log Event Types'), actions: [ + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) + ]), + drawer: + const Navigation(currentLocation: LogEventTypeListScreen.routeName), + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: _logEventTypes.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + controller: _scrollController, + padding: const EdgeInsets.all(10.0), + itemCount: _logEventTypes.length, + itemBuilder: (context, index) { + final logEventType = _logEventTypes[index]; + return Card( + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => EventTypeDetailScreen( + id: logEventType.id), + ), + ).then((result) => reload(message: result?[0])); + }, + title: Text( + logEventType.value.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, + ), + subtitle: Text(logEventType.notes ?? ''), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + onPressed: () async { + LogEventType.remove(logEventType.id); + reload(message: 'Log Event Type deleted'); + }, + icon: const Icon(Icons.delete, + color: Colors.blue), + ) + ], + ), + ), + ); + }, + ), + ) + : const Center( + child: + Text('You have not created any Log Event Types yet!'), + ), + ), + ], + ), + floatingActionButton: FloatingActionButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const EventTypeDetailScreen(), + ), + ).then((result) => reload(message: result?[0])); + }, + child: const Icon(Icons.add), + ), + ); + } +} diff --git a/lib/screens/log/log_event_detail.dart b/lib/screens/log/log_event_detail.dart deleted file mode 100644 index 61145d9..0000000 --- a/lib/screens/log/log_event_detail.dart +++ /dev/null @@ -1,172 +0,0 @@ -import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/models/log_entry.dart'; -import 'package:diameter/models/log_event.dart'; -import 'package:diameter/models/log_event_type.dart'; -import 'package:diameter/navigation.dart'; -import 'package:flutter/material.dart'; - -class LogEventDetailScreen extends StatefulWidget { - static const String routeName = '/log-event'; - final LogEntry? logEntry; - final LogEntry? endLogEntry; - final LogEvent? logEvent; - const LogEventDetailScreen( - {Key? key, this.logEntry, this.endLogEntry, this.logEvent}) - : super(key: key); - - @override - _LogEventDetailScreenState createState() => _LogEventDetailScreenState(); -} - -class _LogEventDetailScreenState extends State { - final GlobalKey _logEventForm = GlobalKey(); - - final _notesController = TextEditingController(text: ''); - LogEventType? _eventType; - bool _hasEndTime = false; - - List _logEventTypes = []; - - bool _isSaving = false; - - @override - void initState() { - super.initState(); - - if (widget.logEvent != null) { - _notesController.text = widget.logEvent!.notes ?? ''; - _eventType = widget.logEvent!.eventType.target; - _hasEndTime = widget.logEvent!.hasEndTime; - } - - _logEventTypes = LogEventType.getAll(); - } - - void handleSaveAction() async { - setState(() { - _isSaving = true; - }); - if (_logEventForm.currentState!.validate()) { - bool isNew = widget.logEvent == null; - // isNew - // ? await LogEvent.save( - // logEntry: widget.logEntry!.objectId!, - // eventType: _eventType!, - // time: widget.logEntry!.time, - // hasEndTime: _hasEndTime, - // notes: _notesController.text, - // ) - // : await LogEvent.update( - // widget.logEvent!.objectId!, - // eventType: _eventType!, - // time: widget.logEntry!.time, - // hasEndTime: _hasEndTime, - // notes: _notesController.text, - // ); - LogEvent event = LogEvent( - id: widget.logEvent?.id ?? 0, - time: widget.logEntry!.time, - hasEndTime: _hasEndTime, - notes: _notesController.text, - ); - event.eventType.target = _eventType; - LogEvent.put(event); - Navigator.pop(context, '${isNew ? 'New' : ''} Event Saved'); - } - setState(() { - _isSaving = false; - }); - } - - void handleCancelAction() { - bool isNew = widget.logEvent == null; - if (showConfirmationDialogOnCancel && - ((isNew && - (_notesController.text != '' || - _eventType != null || - _hasEndTime)) || - (!isNew && - (_notesController.text != (widget.logEvent!.notes ?? '') || - _eventType != widget.logEvent!.eventType.target || - _hasEndTime != widget.logEvent!.hasEndTime)))) { - Dialogs.showCancelConfirmationDialog( - context: context, - isNew: isNew, - onSave: handleSaveAction, - ); - } else { - Navigator.pop(context); - } - } - - @override - Widget build(BuildContext context) { - bool isNew = widget.logEvent == null; - return Scaffold( - appBar: AppBar( - title: Text(isNew ? 'New Event' : 'Edit Event'), - ), - drawer: const Navigation(currentLocation: LogEventDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _logEventForm, - fields: [ - StyledDropdownButton( - selectedItem: _eventType, - label: 'Event Type', - items: _logEventTypes, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _eventType = value; - }); - }, - ), - // StyledFutureDropdownButton( - // selectedItem: _eventType, - // label: 'Event Type', - // items: _logEventTypes, - // getItemValue: (item) => item.objectId, - // renderItem: (item) => Text(item.value), - // onChanged: (value) { - // setState(() { - // _eventType = value; - // }); - // }, - // ), - StyledBooleanFormField( - value: _hasEndTime, - onChanged: (value) { - setState(() { - _hasEndTime = value; - }); - }, - label: 'active', - ), - TextFormField( - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, - ), - keyboardType: TextInputType.multiline, - ), - ], - ), - // ActiveLogEventListScreen(onSetEndTime: onSetEndTime) - ], - ), - ), - bottomNavigationBar: DetailBottomRow( - onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, - ), - ); - } -} diff --git a/lib/screens/log/log_event_list.dart b/lib/screens/log/log_event_list.dart deleted file mode 100644 index bd9503d..0000000 --- a/lib/screens/log/log_event_list.dart +++ /dev/null @@ -1,113 +0,0 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/models/log_entry.dart'; -import 'package:diameter/models/log_event.dart'; -import 'package:diameter/screens/log/log_event_detail.dart'; -import 'package:diameter/utils/date_time_utils.dart'; -import 'package:flutter/material.dart'; - -class LogEventListScreen extends StatefulWidget { - final LogEntry logEntry; - final Function() reload; - - const LogEventListScreen({Key? key, required this.logEntry, required this.reload}) - : super(key: key); - - @override - _LogEventListScreenState createState() => _LogEventListScreenState(); -} - -class _LogEventListScreenState extends State { - void reload({String? message}) { - widget.reload(); - - setState(() { - if (message != null) { - var snackBar = SnackBar( - content: Text(message), - duration: const Duration(seconds: 2), - ); - ScaffoldMessenger.of(context) - ..removeCurrentSnackBar() - ..showSnackBar(snackBar); - } - }); - } - - void handleEditAction(LogEvent event) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => LogEventDetailScreen( - endLogEntry: widget.logEntry, - logEvent: event, - ), - ), - ).then((message) => reload(message: message)); - } - - void onDelete(LogEvent logEvent) { - LogEvent.remove(logEvent.id); - reload(message: 'Event deleted'); - } - - void handleDeleteAction(LogEvent logEvent) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( - context: context, - onConfirm: () => onDelete(logEvent), - message: 'Are you sure you want to delete this Event?', - ); - } else { - onDelete(logEvent); - } - } - - @override - Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - // TODO: add button for active events - Expanded( - child: (widget.logEntry.events.isNotEmpty || widget.logEntry.endedEvents.isNotEmpty) - ? ListView.builder( - shrinkWrap: true, - itemCount: widget.logEntry.events.length + widget.logEntry.endedEvents.length, - itemBuilder: (context, index) { - final event = (widget.logEntry.events + widget.logEntry.endedEvents)[index]; - return ListTile( - onTap: () { - handleEditAction(event); - }, - title: Row( - mainAxisSize: MainAxisSize.max, - children: [ - Expanded( - child: Text(event.eventType.target?.value ?? '')), - ], - ), - subtitle: Text( - '${DateTimeUtils.displayDateTime(event.time)}${event.hasEndTime ? ' - ${DateTimeUtils.displayDateTime(event.endTime, fallback: '(ongoing)')}' : ''}'), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () => handleDeleteAction(event), - ), - ], - ), - ); - }) - : const Center( - child: Text('You have not added any Events to this Log Entry yet!'), - ), - ), - ], - ); - } -} diff --git a/lib/screens/log/log_event_type_detail.dart b/lib/screens/log/log_event_type_detail.dart deleted file mode 100644 index 9bfa4db..0000000 --- a/lib/screens/log/log_event_type_detail.dart +++ /dev/null @@ -1,171 +0,0 @@ -import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/models/log_event_type.dart'; -import 'package:diameter/navigation.dart'; -import 'package:flutter/material.dart'; - -class LogEventTypeDetailScreen extends StatefulWidget { - static const String routeName = '/log-event-type'; - final LogEventType? logEventType; - const LogEventTypeDetailScreen({Key? key, this.logEventType}) - : super(key: key); - - @override - _LogEventTypeDetailScreenState createState() => - _LogEventTypeDetailScreenState(); -} - -class _LogEventTypeDetailScreenState extends State { - final GlobalKey _logEventTypeForm = GlobalKey(); - final _valueController = TextEditingController(text: ''); - final _defaultReminderDurationController = TextEditingController(text: ''); - final _notesController = TextEditingController(text: ''); - bool _hasEndTime = false; - - bool _isSaving = false; - - @override - void initState() { - super.initState(); - - if (widget.logEventType != null) { - _valueController.text = widget.logEventType!.value; - _defaultReminderDurationController.text = - (widget.logEventType!.defaultReminderDuration ?? '').toString(); - _notesController.text = widget.logEventType!.notes ?? ''; - _hasEndTime = widget.logEventType!.hasEndTime; - } - } - - void handleSaveAction() async { - setState(() { - _isSaving = true; - }); - if (_logEventTypeForm.currentState!.validate()) { - bool isNew = widget.logEventType == null; - // isNew - // ? await LogEventType.save( - // value: _valueController.text, - // notes: _notesController.text, - // defaultReminderDuration: - // int.tryParse(_defaultReminderDurationController.text), - // hasEndTime: _hasEndTime, - // ) - // : await LogEventType.update( - // widget.logEventType!.objectId!, - // value: _valueController.text, - // notes: _notesController.text, - // defaultReminderDuration: - // int.tryParse(_defaultReminderDurationController.text), - // hasEndTime: _hasEndTime, - // ); - LogEventType.put(LogEventType( - id: widget.logEventType?.id ?? 0, - value: _valueController.text, - notes: _notesController.text, - defaultReminderDuration: - int.tryParse(_defaultReminderDurationController.text), - hasEndTime: _hasEndTime, - )); - Navigator.pop(context, '${isNew ? 'New' : ''} Log Event Type Saved'); - } - setState(() { - _isSaving = false; - }); - } - - void handleCancelAction() { - bool isNew = widget.logEventType == null; - if (showConfirmationDialogOnCancel && - ((isNew && - (_valueController.text != '' || - int.tryParse(_defaultReminderDurationController.text) != - null || - _notesController.text != '' || - _hasEndTime)) || - (!isNew && - (_valueController.text != widget.logEventType!.value || - int.tryParse(_defaultReminderDurationController.text) != - widget.logEventType!.defaultReminderDuration || - _notesController.text != - (widget.logEventType!.notes ?? '') || - _hasEndTime != widget.logEventType!.hasEndTime)))) { - Dialogs.showCancelConfirmationDialog( - context: context, - isNew: isNew, - onSave: handleSaveAction, - ); - } else { - Navigator.pop(context); - } - } - - @override - Widget build(BuildContext context) { - bool isNew = widget.logEventType == null; - return Scaffold( - appBar: AppBar( - title: Text(isNew ? 'New Log Event Type' : widget.logEventType!.value), - ), - drawer: - const Navigation(currentLocation: LogEventTypeDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _logEventTypeForm, - fields: [ - TextFormField( - controller: _valueController, - decoration: const InputDecoration( - labelText: 'Name', - alignLabelWithHint: true, - ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty name'; - } - return null; - }, - ), - StyledBooleanFormField( - value: _hasEndTime, - label: 'has end time', - onChanged: (value) { - setState(() { - _hasEndTime = value; - }); - }, - ), - TextFormField( - controller: _defaultReminderDurationController, - keyboardType: const TextInputType.numberWithOptions(), - decoration: InputDecoration( - labelText: 'Default Reminder Duration', - suffixText: ' min', - enabled: _hasEndTime, - ), - ), - TextFormField( - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, - ), - keyboardType: TextInputType.multiline, - ), - ], - ), - ], - ), - ), - bottomNavigationBar: DetailBottomRow( - onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, - ), - ); - } -} diff --git a/lib/screens/log/log_event_type_list.dart b/lib/screens/log/log_event_type_list.dart deleted file mode 100644 index e6c7cfb..0000000 --- a/lib/screens/log/log_event_type_list.dart +++ /dev/null @@ -1,109 +0,0 @@ -// import 'package:diameter/components/progress_indicator.dart'; -import 'package:diameter/models/log_event_type.dart'; -import 'package:diameter/navigation.dart'; -import 'package:diameter/screens/log/log_event_type_detail.dart'; -import 'package:flutter/material.dart'; - -class LogEventTypeListScreen extends StatefulWidget { - static const String routeName = '/log-event-types'; - const LogEventTypeListScreen({Key? key}) : super(key: key); - - @override - _LogEventTypeListScreenState createState() => _LogEventTypeListScreenState(); -} - -class _LogEventTypeListScreenState extends State { - List _logEventTypes = []; - - void refresh({String? message}) { - setState(() { - _logEventTypes = LogEventType.getAll(); - }); - setState(() { - if (message != null) { - var snackBar = SnackBar( - content: Text(message), - duration: const Duration(seconds: 2), - ); - ScaffoldMessenger.of(context) - ..removeCurrentSnackBar() - ..showSnackBar(snackBar); - } - }); - } - - @override - void initState() { - super.initState(); - refresh(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar(title: const Text('Log Event Types'), actions: [ - IconButton(onPressed: refresh, icon: const Icon(Icons.refresh)) - ]), - drawer: - const Navigation(currentLocation: LogEventTypeListScreen.routeName), - body: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - child: _logEventTypes.isNotEmpty ? ListView.builder( - padding: const EdgeInsets.all(10.0), - itemCount: _logEventTypes.length, - itemBuilder: (context, index) { - // final logEventType = snapshot.data![index]; - final logEventType = _logEventTypes[index]; - return ListTile( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - LogEventTypeDetailScreen( - logEventType: logEventType), - ), - ).then((message) => refresh(message: message)); - }, - title: Text(logEventType.value), - subtitle: Text(logEventType.notes ?? ''), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - onPressed: () async { - LogEventType.remove(logEventType.id); - // await logEventType.delete().then((_) { - refresh( - message: 'Log Event Type deleted'); - // }); - }, - icon: const Icon(Icons.delete, - color: Colors.blue), - ) - ], - ), - ); - }, - ) : const Center( - child: Text('You have not created any Log Event Types yet!'), - ), - ), - ], - ), - floatingActionButton: FloatingActionButton( - onPressed: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => const LogEventTypeDetailScreen(), - ), - ).then((message) => refresh(message: message)); - }, - child: const Icon(Icons.add), - ), - ); - } -} diff --git a/lib/screens/log/log_meal_detail.dart b/lib/screens/log/log_meal_detail.dart deleted file mode 100644 index 540e302..0000000 --- a/lib/screens/log/log_meal_detail.dart +++ /dev/null @@ -1,561 +0,0 @@ -import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/models/accuracy.dart'; -import 'package:diameter/models/log_entry.dart'; -import 'package:diameter/models/log_meal.dart'; -import 'package:diameter/models/meal.dart'; -import 'package:diameter/models/meal_category.dart'; -import 'package:diameter/models/meal_portion_type.dart'; -import 'package:diameter/models/meal_source.dart'; -import 'package:diameter/navigation.dart'; -import 'package:diameter/settings.dart'; -import 'package:diameter/utils/utils.dart'; -import 'package:flutter/material.dart'; - -class LogMealDetailScreen extends StatefulWidget { - static const String routeName = '/log-meal'; - final LogEntry logEntry; - final LogMeal? logMeal; - const LogMealDetailScreen({Key? key, required this.logEntry, this.logMeal}) - : super(key: key); - - @override - _LogMealDetailScreenState createState() => _LogMealDetailScreenState(); -} - -class _LogMealDetailScreenState extends State { - final GlobalKey _logMealForm = GlobalKey(); - - final _valueController = TextEditingController(text: ''); - final _carbsRatioController = TextEditingController(text: ''); - final _portionSizeController = TextEditingController(text: ''); - final _carbsPerPortionController = TextEditingController(text: ''); - final _bolusController = TextEditingController(text: ''); - final _delayedBolusRateController = TextEditingController(text: ''); - final _delayedBolusDurationController = TextEditingController(text: ''); - final _notesController = TextEditingController(text: ''); - Meal? _meal; - MealSource? _mealSource; - MealCategory? _mealCategory; - MealPortionType? _mealPortionType; - Accuracy? _portionSizeAccuracy; - Accuracy? _carbsRatioAccuracy; - - List _meals = []; - List _mealCategories = []; - List _mealPortionTypes = []; - List _mealSources = []; - List _portionSizeAccuracies = []; - List _carbsRatioAccuracies = []; - - bool _isSaving = false; - - @override - void initState() { - super.initState(); - - _portionSizeAccuracies = Accuracy.getAllForPortionSize(); - _carbsRatioAccuracies = Accuracy.getAllForCarbsRatio(); - _meals = Meal.getAll(); - _mealCategories = MealCategory.getAll(); - _mealPortionTypes = MealPortionType.getAll(); - _mealSources = MealSource.getAll(); - - if (widget.logMeal != null) { - _valueController.text = widget.logMeal!.value; - _carbsRatioController.text = - (widget.logMeal!.carbsRatio ?? '').toString(); - _portionSizeController.text = - (widget.logMeal!.portionSize ?? '').toString(); - _carbsPerPortionController.text = - (widget.logMeal!.carbsPerPortion ?? '').toString(); - _bolusController.text = (widget.logMeal!.bolus ?? '').toString(); - _delayedBolusRateController.text = - (widget.logMeal!.delayedBolusRate ?? '').toString(); - _delayedBolusDurationController.text = - (widget.logMeal!.delayedBolusDuration ?? '').toString(); - _notesController.text = widget.logMeal!.notes ?? ''; - - // _meal = widget.logMeal!.meal; - // _source = widget.logMeal!.source; - // _category = widget.logMeal!.category; - // _portionType = widget.logMeal!.portionType; - // _portionSizeAccuracy = _portionSizeAccuracies.firstWhere((element) => - // element.id == - // int.tryParse(widget.logMeal!.portionSizeAccuracy ?? '')); - // _carbsRatioAccuracy = _carbsRatioAccuracies.firstWhere((element) => - // element.id == int.tryParse(widget.logMeal!.carbsRatioAccuracy ?? '')); - // _portionSizeAccuracy = widget.meal!.portionSizeAccuracy; - // _carbsRatioAccuracy = widget.meal!.carbsRatioAccuracy; - } - } - - Future onSelectMeal(Meal meal) async { - setState(() { - _meal = meal; - _valueController.text = meal.value; - if (meal.carbsRatio != null) { - _carbsRatioController.text = meal.carbsRatio.toString(); - } - if (meal.portionSize != null) { - _portionSizeController.text = meal.portionSize.toString(); - } - if (meal.carbsPerPortion != null) { - _carbsPerPortionController.text = meal.carbsPerPortion.toString(); - } - if (meal.delayedBolusRate != null) { - _delayedBolusRateController.text = meal.delayedBolusRate.toString(); - } - if (meal.delayedBolusDuration != null) { - _delayedBolusDurationController.text = - meal.delayedBolusDuration.toString(); - } - if (meal.mealSource.hasValue) { - _mealSource = meal.mealSource.target; - } - if (meal.mealCategory.hasValue) { - _mealCategory = meal.mealCategory.target; - } - if (meal.mealPortionType.hasValue) { - _mealPortionType = meal.mealPortionType.target; - } - if (meal.portionSizeAccuracy.hasValue) { - _portionSizeAccuracy = meal.portionSizeAccuracy.target; - } - if (meal.carbsRatioAccuracy.hasValue) { - _carbsRatioAccuracy = meal.carbsRatioAccuracy.target; - } - }); - } - - void handleSaveAction() async { - setState(() { - _isSaving = true; - }); - if (_logMealForm.currentState!.validate()) { - bool isNew = widget.logMeal == null; - // isNew - // ? await LogMeal.save( - // logEntry: widget.logEntry.objectId!, - // meal: _meal, - // value: _valueController.text, - // source: _mealSource, - // category: _category, - // portionType: _portionType, - // carbsRatio: double.tryParse(_carbsRatioController.text), - // portionSize: double.tryParse(_portionSizeController.text), - // carbsPerPortion: double.tryParse(_carbsPerPortionController.text), - // // portionSizeAccuracy: _portionSizeAccuracy, - // // carbsRatioAccuracy: _carbsRatioAccuracy, - // portionSizeAccuracy: _portionSizeAccuracy?.id.toString(), - // carbsRatioAccuracy: _carbsRatioAccuracy?.id.toString(), - // bolus: double.tryParse(_bolusController.text), - // delayedBolusDuration: - // int.tryParse(_delayedBolusDurationController.text), - // delayedBolusRate: - // double.tryParse(_delayedBolusRateController.text), - // notes: _notesController.text, - // ) - // : await LogMeal.update( - // widget.logMeal!.objectId!, - // meal: _meal, - // value: _valueController.text, - // source: _mealSource, - // category: _category, - // portionType: _portionType, - // carbsRatio: double.tryParse(_carbsRatioController.text), - // portionSize: double.tryParse(_portionSizeController.text), - // carbsPerPortion: double.tryParse(_carbsPerPortionController.text), - // // portionSizeAccuracy: _portionSizeAccuracy, - // // carbsRatioAccuracy: _carbsRatioAccuracy, - // portionSizeAccuracy: _portionSizeAccuracy?.id.toString(), - // carbsRatioAccuracy: _carbsRatioAccuracy?.id.toString(), - // bolus: double.tryParse(_bolusController.text), - // delayedBolusDuration: - // int.tryParse(_delayedBolusDurationController.text), - // delayedBolusRate: - // double.tryParse(_delayedBolusRateController.text), - // notes: _notesController.text, - // ); - LogMeal logMeal = LogMeal( - id: widget.logMeal?.id ?? 0, - value: _valueController.text, - carbsRatio: double.tryParse(_carbsRatioController.text), - portionSize: double.tryParse(_portionSizeController.text), - carbsPerPortion: double.tryParse(_carbsPerPortionController.text), - bolus: double.tryParse(_bolusController.text), - delayedBolusDuration: - int.tryParse(_delayedBolusDurationController.text), - delayedBolusRate: double.tryParse(_delayedBolusRateController.text), - notes: _notesController.text, - ); - logMeal.meal.target = _meal; - logMeal.mealSource.target = _mealSource; - logMeal.mealCategory.target = _mealCategory; - logMeal.mealPortionType.target = _mealPortionType; - logMeal.portionSizeAccuracy.target = _portionSizeAccuracy; - logMeal.carbsRatioAccuracy.target = _carbsRatioAccuracy; - - LogMeal.put(logMeal); - Navigator.pop(context, '${isNew ? 'New' : ''} Meal Saved'); - } - setState(() { - _isSaving = false; - }); - } - - void handleCancelAction() { - bool isNew = widget.logMeal == null; - if (showConfirmationDialogOnCancel && - ((isNew && - (_valueController.text != '' || - _meal != null || - _mealSource != null || - _mealCategory != null || - _mealPortionType != null || - double.tryParse(_carbsRatioController.text) != null || - double.tryParse(_portionSizeController.text) != null || - double.tryParse(_carbsPerPortionController.text) != null || - _carbsRatioAccuracy != null || - _portionSizeAccuracy != null || - double.tryParse(_bolusController.text) != null || - int.tryParse(_delayedBolusDurationController.text) != - null || - double.tryParse(_delayedBolusRateController.text) != null || - _notesController.text != '')) || - (!isNew && - (_valueController.text != widget.logMeal!.value || - _meal != widget.logMeal!.meal.target || - _mealSource != widget.logMeal!.mealSource.target || - _mealCategory != widget.logMeal!.mealCategory.target || - _mealPortionType != widget.logMeal!.mealPortionType.target || - double.tryParse(_carbsRatioController.text) != - widget.logMeal!.carbsRatio || - double.tryParse(_portionSizeController.text) != - widget.logMeal!.portionSize || - double.tryParse(_carbsPerPortionController.text) != - widget.logMeal!.carbsPerPortion || - // _carbsRatioAccuracy != widget.logMeal!.carbsRatioAccuracy || - // _portionSizeAccuracy != - // widget.logMeal!.portionSizeAccuracy || - _carbsRatioAccuracy != - widget.logMeal!.carbsRatioAccuracy.target || - _portionSizeAccuracy != - widget.logMeal!.portionSizeAccuracy.target || - double.tryParse(_bolusController.text) != - widget.logMeal!.bolus || - int.tryParse(_delayedBolusDurationController.text) != - widget.logMeal!.delayedBolusDuration || - double.tryParse(_delayedBolusRateController.text) != - widget.logMeal!.delayedBolusRate || - _notesController.text != (widget.logMeal!.notes ?? ''))))) { - Dialogs.showCancelConfirmationDialog( - context: context, - isNew: isNew, - onSave: handleSaveAction, - ); - } else { - Navigator.pop(context); - } - } - - void calculateThirdMeasurementOfPortionCarbsRelation( - {PortionCarbsParameter? parameterToBeCalculated}) { - double? carbsRatio; - double? portionSize; - double? carbsPerPortion; - - if (parameterToBeCalculated != PortionCarbsParameter.carbsRatio && - _carbsRatioController.text != '') { - carbsRatio = double.tryParse(_carbsRatioController.text); - } - if (parameterToBeCalculated != PortionCarbsParameter.portionSize && - _portionSizeController.text != '') { - portionSize = double.tryParse(_portionSizeController.text); - } - if (parameterToBeCalculated != PortionCarbsParameter.carbsPerPortion && - _carbsRatioController.text != '') { - carbsPerPortion = double.tryParse(_carbsPerPortionController.text); - } - - if (carbsRatio != null && portionSize != null && carbsPerPortion == null) { - setState(() { - _carbsPerPortionController.text = - Utils.calculateCarbsPerPortion(carbsRatio!, portionSize!) - .toString(); - }); - } - if (carbsRatio == null && portionSize != null && carbsPerPortion != null) { - setState(() { - _carbsRatioController.text = - Utils.calculateCarbsRatio(carbsPerPortion!, portionSize!) - .toString(); - }); - } - if (carbsRatio != null && portionSize == null && carbsPerPortion != null) { - setState(() { - _portionSizeController.text = - Utils.calculatePortionSize(carbsRatio!, carbsPerPortion!) - .toString(); - }); - } - } - - @override - Widget build(BuildContext context) { - bool isNew = widget.logMeal == null; - return Scaffold( - appBar: AppBar( - title: Text(isNew ? 'New Meal' : widget.logMeal!.value), - ), - drawer: const Navigation(currentLocation: LogMealDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _logMealForm, - fields: [ - TextFormField( - controller: _valueController, - decoration: const InputDecoration( - labelText: 'Name', - ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty name'; - } - return null; - }, - ), - StyledDropdownButton( - selectedItem: _meal, - label: 'Meal', - items: _meals, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - if (value != null) { - onSelectMeal(value); - } - }, - ), - StyledDropdownButton( - selectedItem: _mealSource, - label: 'Meal Source', - items: _mealSources, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _mealSource = value; - }); - }, - ), - StyledDropdownButton( - selectedItem: _mealCategory, - label: 'Meal Category', - items: _mealCategories, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _mealCategory = value; - }); - }, - ), - StyledDropdownButton( - selectedItem: _mealPortionType, - label: 'Meal Portion Type', - items: _mealPortionTypes, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _mealPortionType = value; - }); - }, - ), - Row( - children: [ - Expanded( - child: TextFormField( - decoration: const InputDecoration( - labelText: 'Carbs ratio', - suffixText: '%', - ), - controller: _carbsRatioController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true), - onChanged: (_) => - calculateThirdMeasurementOfPortionCarbsRelation(), - ), - ), - IconButton( - onPressed: () => - calculateThirdMeasurementOfPortionCarbsRelation( - parameterToBeCalculated: - PortionCarbsParameter.carbsRatio), - icon: const Icon(Icons.calculate), - ), - ], - ), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: TextFormField( - decoration: InputDecoration( - labelText: 'Portion size', - suffixText: - nutritionMeasurement == NutritionMeasurement.grams - ? 'g' - : nutritionMeasurement == - NutritionMeasurement.ounces - ? 'oz' - : '', - alignLabelWithHint: true, - ), - controller: _portionSizeController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true), - onChanged: (_) => - calculateThirdMeasurementOfPortionCarbsRelation(), - ), - ), - IconButton( - onPressed: () => - calculateThirdMeasurementOfPortionCarbsRelation( - parameterToBeCalculated: - PortionCarbsParameter.portionSize), - icon: const Icon(Icons.calculate), - ), - ], - ), - StyledDropdownButton( - selectedItem: _portionSizeAccuracy, - label: 'Portion Size Accuracy', - items: _portionSizeAccuracies, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _portionSizeAccuracy = value; - }); - }, - ), - // StyledFutureDropdownButton( - // selectedItem: _portionSizeAccuracy, - // label: 'Portion Size Accuracy', - // items: _portionSizeAccuracies, - // getItemValue: (item) => item.objectId, - // renderItem: (item) => Text(item.value), - // onChanged: (value) { - // setState(() { - // _portionSizeAccuracy = value; - // }); - // }, - // ), - Row( - children: [ - Expanded( - child: TextFormField( - decoration: InputDecoration( - labelText: 'Carbs per portion', - suffixText: - nutritionMeasurement == NutritionMeasurement.grams - ? 'g' - : nutritionMeasurement == - NutritionMeasurement.ounces - ? 'oz' - : '', - ), - controller: _carbsPerPortionController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true), - onChanged: (_) => - calculateThirdMeasurementOfPortionCarbsRelation(), - ), - ), - IconButton( - onPressed: () => - calculateThirdMeasurementOfPortionCarbsRelation( - parameterToBeCalculated: - PortionCarbsParameter.carbsPerPortion), - icon: const Icon(Icons.calculate), - ), - ], - ), - StyledDropdownButton( - selectedItem: _carbsRatioAccuracy, - label: 'Carbs Ratio Accuracy', - items: _carbsRatioAccuracies, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _carbsRatioAccuracy = value; - }); - }, - ), - // StyledFutureDropdownButton( - // selectedItem: _carbsRatioAccuracy, - // label: 'Carbs Ratio Accuracy', - // items: _carbsRatioAccuracies, - // getItemValue: (item) => item.objectId, - // renderItem: (item) => Text(item.value), - // onChanged: (value) { - // setState(() { - // _carbsRatioAccuracy = value; - // }); - // }, - // ), - TextFormField( - decoration: const InputDecoration( - labelText: 'Bolus Units', - suffixText: ' U', - ), - controller: _bolusController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - ), - TextFormField( - decoration: const InputDecoration( - labelText: 'Delayed Bolus Duration', - suffixText: ' min', - ), - controller: _delayedBolusDurationController, - keyboardType: const TextInputType.numberWithOptions(), - ), - TextFormField( - decoration: const InputDecoration( - labelText: 'Delayed Bolus Units', - suffixText: ' U', - alignLabelWithHint: true, - ), - controller: _delayedBolusRateController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - ), - TextFormField( - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, - ), - keyboardType: TextInputType.multiline, - ), - ], - ), - ], - ), - ), - bottomNavigationBar: DetailBottomRow( - onCancel: handleCancelAction, - onSave: _isSaving ? null : handleSaveAction, - ), - ); - } -} diff --git a/lib/screens/log/log_meal_list.dart b/lib/screens/log/log_meal_list.dart deleted file mode 100644 index cb0c0ea..0000000 --- a/lib/screens/log/log_meal_list.dart +++ /dev/null @@ -1,107 +0,0 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; -import 'package:diameter/models/log_entry.dart'; -import 'package:diameter/models/log_meal.dart'; -import 'package:diameter/screens/log/log_meal_detail.dart'; -import 'package:flutter/material.dart'; - -class LogMealListScreen extends StatefulWidget { - final LogEntry logEntry; - final Function() reload; - - const LogMealListScreen({Key? key, required this.logEntry, required this.reload}) - : super(key: key); - - @override - _LogMealListScreenState createState() => _LogMealListScreenState(); -} - -class _LogMealListScreenState extends State { - void reload({String? message}) { - widget.reload(); - - setState(() { - if (message != null) { - var snackBar = SnackBar( - content: Text(message), - duration: const Duration(seconds: 2), - ); - ScaffoldMessenger.of(context) - ..removeCurrentSnackBar() - ..showSnackBar(snackBar); - } - }); - } - - void handleEditAction(LogMeal meal) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => LogMealDetailScreen( - logEntry: widget.logEntry, - logMeal: meal, - ), - ), - ).then((message) => reload(message: message)); - } - - void onDelete(LogMeal logMeal) { - LogMeal.remove(logMeal.id); - reload(message: 'Meal deleted'); - } - - void handleDeleteAction(LogMeal meal) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( - context: context, - onConfirm: () => onDelete(meal), - message: 'Are you sure you want to delete this Meal?', - ); - } else { - onDelete(meal); - } - } - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Expanded( - child: widget.logEntry.meals.isNotEmpty ? ListView.builder( - shrinkWrap: true, - itemCount: widget.logEntry.meals.length, - itemBuilder: (context, index) { - final meal = widget.logEntry.meals[index]; - return ListTile( - onTap: () => handleEditAction(meal), - title: Row( - children: [ - Expanded(child: Text(meal.value)), - Expanded( - child: Text(meal.carbsPerPortion != null - ? '${meal.carbsPerPortion} g carbs' - : '')), - Expanded( - child: Text(meal.bolus != null - ? '${meal.bolus} U' - : '')) - ], - ), - trailing: IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () => handleDeleteAction(meal), - ), - ); - }, - ) : const Center( - child: Text( - 'You have not added any Meals to this Log Entry yet!'), - ), - ), - ], - ); - } -} diff --git a/lib/screens/meal/meal_category_detail.dart b/lib/screens/meal/meal_category_detail.dart index 0414f45..b498ac0 100644 --- a/lib/screens/meal/meal_category_detail.dart +++ b/lib/screens/meal/meal_category_detail.dart @@ -1,17 +1,16 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:flutter/material.dart'; import 'package:diameter/models/meal_category.dart'; class MealCategoryDetailScreen extends StatefulWidget { static const String routeName = '/meal-category'; - final MealCategory? mealCategory; + final int id; - const MealCategoryDetailScreen({Key? key, this.mealCategory}) - : super(key: key); + const MealCategoryDetailScreen({Key? key, this.id = 0}) : super(key: key); @override _MealCategoryDetailScreenState createState() => @@ -19,45 +18,79 @@ class MealCategoryDetailScreen extends StatefulWidget { } class _MealCategoryDetailScreenState extends State { + MealCategory? _mealCategory; + bool _isNew = true; + final GlobalKey _mealCategoryForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); + final _valueController = TextEditingController(text: ''); final _notesController = TextEditingController(text: ''); @override void initState() { super.initState(); - if (widget.mealCategory != null) { - _valueController.text = widget.mealCategory!.value; - _notesController.text = widget.mealCategory!.notes ?? ''; + reload(); + + if (_mealCategory != null) { + _valueController.text = _mealCategory!.value; + _notesController.text = _mealCategory!.notes ?? ''; } } + @override + void dispose() { + _scrollController.dispose(); + _valueController.dispose(); + _notesController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _mealCategory = MealCategory.get(widget.id); + }); + } + _isNew = _mealCategory == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + void handleSaveAction() async { if (_mealCategoryForm.currentState!.validate()) { - bool isNew = widget.mealCategory == null; - // isNew - // ? await MealCategory.save( - // value: _valueController.text, notes: _notesController.text) - // : await MealCategory.update(widget.mealCategory!.objectId!, - // value: _valueController.text, notes: _notesController.text); - MealCategory.put(MealCategory(id: widget.mealCategory?.id ?? 0, - value: _valueController.text, notes: _notesController.text)); - Navigator.pop(context, '${isNew ? 'New' : ''} Meal Category saved'); + MealCategory mealCategory = MealCategory( + id: widget.id, + value: _valueController.text, + notes: _notesController.text, + ); + MealCategory.put(mealCategory); + Navigator.pop(context, [ + '${_isNew ? 'New' : ''} Meal Category saved', mealCategory + ]); } } void handleCancelAction() { - bool isNew = widget.mealCategory == null; - - if (showConfirmationDialogOnCancel && - (isNew && + if (Settings.get().showConfirmationDialogOnCancel && + (_isNew && (_valueController.text != '' || _notesController.text != '')) || - (!isNew && - (widget.mealCategory!.value != _valueController.text || - (widget.mealCategory!.notes ?? '') != _notesController.text))) { - Dialogs.showCancelConfirmationDialog( + (!_isNew && + (_mealCategory!.value != _valueController.text || + (_mealCategory!.notes ?? '') != _notesController.text))) { + DialogUtils.showCancelConfirmationDialog( context: context, - isNew: isNew, + isNew: _isNew, onSave: handleSaveAction, ); } else { @@ -67,48 +100,52 @@ class _MealCategoryDetailScreenState extends State { @override Widget build(BuildContext context) { - bool isNew = widget.mealCategory == null; return Scaffold( appBar: AppBar( - title: Text(isNew ? 'New Meal Category' : widget.mealCategory!.value), + title: Text(_isNew ? 'New Meal Category' : _mealCategory!.value), ), drawer: const Navigation(currentLocation: MealCategoryDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _mealCategoryForm, - fields: [ - TextFormField( - controller: _valueController, - decoration: const InputDecoration( - labelText: 'Name', + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _mealCategoryForm, + fields: [ + TextFormField( + controller: _valueController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty name'; + } + return null; + }, ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty name'; - } - return null; - }, - ), - TextFormField( - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, ), - keyboardType: TextInputType.multiline, - ), - ], - ), - ], + ], + ), + ], + ), ), ), bottomNavigationBar: DetailBottomRow( onCancel: handleCancelAction, - onSave: handleSaveAction, + onAction: handleSaveAction, ), ); } diff --git a/lib/screens/meal/meal_category_list.dart b/lib/screens/meal/meal_category_list.dart index ead7fde..d4c8211 100644 --- a/lib/screens/meal/meal_category_list.dart +++ b/lib/screens/meal/meal_category_list.dart @@ -1,6 +1,5 @@ -import 'package:diameter/components/dialogs.dart'; -// import 'package:diameter/components/progress_indicator.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:diameter/screens/meal/meal_category_detail.dart'; import 'package:flutter/material.dart'; @@ -18,7 +17,21 @@ class MealCategoryListScreen extends StatefulWidget { class _MealCategoryListScreenState extends State { List _mealCategories = []; - void refresh({String? message}) { + final ScrollController _scrollController = ScrollController(); + + @override + void initState() { + super.initState(); + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { setState(() { _mealCategories = MealCategory.getAll(); }); @@ -37,12 +50,12 @@ class _MealCategoryListScreenState extends State { void onDelete(MealCategory mealCategory) { MealCategory.remove(mealCategory.id); - refresh(message: 'Meal Category deleted'); + reload(message: 'Meal Category deleted'); } void handleDeleteAction(MealCategory mealCategory) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(mealCategory), message: 'Are you sure you want to delete this Meal Category?', @@ -52,12 +65,6 @@ class _MealCategoryListScreenState extends State { } } - @override - void initState() { - super.initState(); - refresh(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -65,7 +72,7 @@ class _MealCategoryListScreenState extends State { title: const Text('Meal Categories'), actions: [ IconButton( - onPressed: refresh, + onPressed: reload, icon: const Icon(Icons.refresh), ), ], @@ -76,41 +83,48 @@ class _MealCategoryListScreenState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( - child: _mealCategories.isNotEmpty ? ListView.builder( - padding: const EdgeInsets.only(top: 10.0), - itemCount: _mealCategories.length, - itemBuilder: (context, index) { - final mealCategory = _mealCategories[index]; - - return ListTile( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - MealCategoryDetailScreen( - mealCategory: mealCategory, - ), + child: _mealCategories.isNotEmpty ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + controller: _scrollController, + padding: const EdgeInsets.all(10.0), + itemCount: _mealCategories.length, + itemBuilder: (context, index) { + final mealCategory = _mealCategories[index]; + return Card( + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + MealCategoryDetailScreen( + id: mealCategory.id, + ), + ), + ).then((result) => reload(message: result?[0])); + }, + title: Text( + mealCategory.value.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, ), - ).then((message) => refresh(message: message)); - }, - title: Text(mealCategory.value), - subtitle: Text(mealCategory.notes ?? ''), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () => - handleDeleteAction(mealCategory), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => + handleDeleteAction(mealCategory), + ), + ], ), - ], - ), - ); - }, + ), + ); + }, + ), ): const Center( child: Text('You have not created any Meal Categories yet!'), ), @@ -124,7 +138,7 @@ class _MealCategoryListScreenState extends State { MaterialPageRoute( builder: (context) => const MealCategoryDetailScreen(), ), - ).then((message) => refresh(message: message)); + ).then((result) => reload(message: result?[0])); }, child: const Icon(Icons.add), ), diff --git a/lib/screens/meal/meal_detail.dart b/lib/screens/meal/meal_detail.dart index c7ca8b3..83a5588 100644 --- a/lib/screens/meal/meal_detail.dart +++ b/lib/screens/meal/meal_detail.dart @@ -1,136 +1,191 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/components/forms/number_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; import 'package:diameter/models/accuracy.dart'; import 'package:diameter/models/meal.dart'; import 'package:diameter/models/meal_category.dart'; import 'package:diameter/models/meal_portion_type.dart'; import 'package:diameter/models/meal_source.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; -// import 'package:diameter/objectbox.g.dart'; -import 'package:diameter/settings.dart'; +import 'package:diameter/screens/accuracy_detail.dart'; +import 'package:diameter/screens/meal/meal_category_detail.dart'; +import 'package:diameter/screens/meal/meal_portion_type_detail.dart'; +import 'package:diameter/screens/meal/meal_source_detail.dart'; import 'package:diameter/utils/utils.dart'; import 'package:flutter/material.dart'; class MealDetailScreen extends StatefulWidget { static const String routeName = '/meal'; + final int id; - final Meal? meal; - const MealDetailScreen({Key? key, this.meal}) : super(key: key); + const MealDetailScreen({Key? key, this.id = 0}) : super(key: key); @override _MealDetailScreenState createState() => _MealDetailScreenState(); } class _MealDetailScreenState extends State { + Meal? _meal; + + bool _isNew = true; + bool _isSaving = false; + bool _isExpanded = false; + bool _setManually = false; + final GlobalKey _mealForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); final _valueController = TextEditingController(text: ''); final _carbsRatioController = TextEditingController(text: ''); final _portionSizeController = TextEditingController(text: ''); final _carbsPerPortionController = TextEditingController(text: ''); - final _delayedBolusRateController = TextEditingController(text: ''); final _delayedBolusDurationController = TextEditingController(text: ''); final _notesController = TextEditingController(text: ''); + double _delayedBolusPercentage = 0; + MealSource? _mealSource; MealCategory? _mealCategory; MealPortionType? _mealPortionType; Accuracy? _portionSizeAccuracy; Accuracy? _carbsRatioAccuracy; + final _mealSourceController = TextEditingController(text: ''); + final _mealCategoryController = TextEditingController(text: ''); + final _mealPortionTypeController = TextEditingController(text: ''); + final _portionSizeAccuracyController = TextEditingController(text: ''); + final _carbsRatioAccuracyController = TextEditingController(text: ''); + List _mealCategories = []; List _mealPortionTypes = []; List _mealSources = []; List _portionSizeAccuracies = []; List _carbsRatioAccuracies = []; - bool isSaving = false; - @override void initState() { super.initState(); + reload(); + _portionSizeAccuracies = Accuracy.getAllForPortionSize(); _carbsRatioAccuracies = Accuracy.getAllForCarbsRatio(); _mealCategories = MealCategory.getAll(); _mealPortionTypes = MealPortionType.getAll(); _mealSources = MealSource.getAll(); - if (widget.meal != null) { - _valueController.text = widget.meal!.value; - _carbsRatioController.text = (widget.meal!.carbsRatio ?? '').toString(); - _portionSizeController.text = (widget.meal!.portionSize ?? '').toString(); + if (_meal != null) { + _valueController.text = _meal!.value; + _carbsRatioController.text = (_meal!.carbsRatio ?? '').toString(); + _portionSizeController.text = (_meal!.portionSize ?? '').toString(); _carbsPerPortionController.text = - (widget.meal!.carbsPerPortion ?? '').toString(); - _delayedBolusRateController.text = - (widget.meal!.delayedBolusRate ?? '').toString(); + (_meal!.carbsPerPortion ?? '').toString(); + _delayedBolusPercentage = _meal!.delayedBolusPercentage ?? 0; _delayedBolusDurationController.text = - (widget.meal!.delayedBolusDuration ?? '').toString(); - _notesController.text = widget.meal!.notes ?? ''; + (_meal!.delayedBolusDuration ?? '').toString(); + _notesController.text = _meal!.notes ?? ''; - _mealSource = widget.meal!.mealSource.target; - _mealCategory = widget.meal!.mealCategory.target; - _mealPortionType = widget.meal!.mealPortionType.target; - _portionSizeAccuracy = widget.meal!.portionSizeAccuracy.target; - _carbsRatioAccuracy = widget.meal!.carbsRatioAccuracy.target; + _mealSource = _meal!.mealSource.target; + _mealSourceController.text = (_mealSource ?? '').toString(); + _mealCategory = _meal!.mealCategory.target; + _mealCategoryController.text = (_mealCategory ?? '').toString(); + _mealPortionType = _meal!.mealPortionType.target; + _mealPortionTypeController.text = (_mealPortionType ?? '').toString(); + _portionSizeAccuracy = _meal!.portionSizeAccuracy.target; + _portionSizeAccuracyController.text = + (_portionSizeAccuracy ?? '').toString(); + _carbsRatioAccuracy = _meal!.carbsRatioAccuracy.target; + _carbsRatioAccuracyController.text = + (_carbsRatioAccuracy ?? '').toString(); } } + @override + void dispose() { + _scrollController.dispose(); + _valueController.dispose(); + _carbsRatioController.dispose(); + _portionSizeController.dispose(); + _carbsPerPortionController.dispose(); + _delayedBolusDurationController.dispose(); + _notesController.dispose(); + _mealSourceController.dispose(); + _mealCategoryController.dispose(); + _mealPortionTypeController.dispose(); + _portionSizeAccuracyController.dispose(); + _carbsRatioAccuracyController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _meal = Meal.get(widget.id); + }); + } + _isNew = _meal == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void updateCarbsRatioAccuracy(Accuracy? value) { + setState(() { + _carbsRatioAccuracy = value; + _carbsRatioAccuracyController.text = + (_carbsRatioAccuracy ?? '').toString(); + }); + } + + void updatePortionSizeAccuracy(Accuracy? value) { + setState(() { + _portionSizeAccuracy = value; + _portionSizeAccuracyController.text = + (_portionSizeAccuracy ?? '').toString(); + }); + } + + void updateMealCategory(MealCategory? value) { + setState(() { + _mealCategory = value; + _mealCategoryController.text = (_mealCategory ?? '').toString(); + }); + } + + void updateMealPortionType(MealPortionType? value) { + setState(() { + _mealPortionType = value; + _mealPortionTypeController.text = (_mealPortionType ?? '').toString(); + }); + } + void handleSaveAction() async { setState(() { - isSaving = true; + _isSaving = true; }); if (_mealForm.currentState!.validate()) { - bool isNew = widget.meal == null; - // isNew - // ? await Meal.save( - // value: _valueController.text, - // source: _mealSource, - // category: _mealCategory, - // portionType: _mealPortionType, - // carbsRatio: double.tryParse(_carbsRatioController.text), - // portionSize: double.tryParse(_portionSizeController.text), - // carbsPerPortion: double.tryParse(_carbsPerPortionController.text), - // // portionSizeAccuracy: _portionSizeAccuracy, - // // carbsRatioAccuracy: _carbsRatioAccuracy, - // portionSizeAccuracy: _portionSizeAccuracy?.id.toString(), - // carbsRatioAccuracy: _carbsRatioAccuracy?.id.toString(), - // delayedBolusDuration: - // int.tryParse(_delayedBolusDurationController.text), - // delayedBolusRate: - // double.tryParse(_delayedBolusRateController.text), - // notes: _notesController.text, - // ) - // : await Meal.update( - // widget.meal!.objectId!, - // value: _valueController.text, - // source: _mealSource, - // category: _mealCategory, - // portionType: _mealPortionType, - // carbsRatio: double.tryParse(_carbsRatioController.text), - // portionSize: double.tryParse(_portionSizeController.text), - // carbsPerPortion: double.tryParse(_carbsPerPortionController.text), - // // portionSizeAccuracy: _portionSizeAccuracy, - // // carbsRatioAccuracy: _carbsRatioAccuracy, - // portionSizeAccuracy: _portionSizeAccuracy?.id.toString(), - // carbsRatioAccuracy: _carbsRatioAccuracy?.id.toString(), - // delayedBolusDuration: - // int.tryParse(_delayedBolusDurationController.text), - // delayedBolusRate: - // double.tryParse(_delayedBolusRateController.text), - // notes: _notesController.text, - // ); Meal meal = Meal( - id: widget.meal?.id ?? 0, + id: widget.id, value: _valueController.text, carbsRatio: double.tryParse(_carbsRatioController.text), portionSize: double.tryParse(_portionSizeController.text), carbsPerPortion: double.tryParse(_carbsPerPortionController.text), delayedBolusDuration: int.tryParse(_delayedBolusDurationController.text), - delayedBolusRate: double.tryParse(_delayedBolusRateController.text), + delayedBolusPercentage: _delayedBolusPercentage, notes: _notesController.text, ); meal.mealSource.target = _mealSource; @@ -140,17 +195,16 @@ class _MealDetailScreenState extends State { meal.carbsRatioAccuracy.target = _carbsRatioAccuracy; Meal.put(meal); - Navigator.pop(context, '${isNew ? 'New' : ''} Meal Saved'); + Navigator.pop(context, ['${_isNew ? 'New' : ''} Meal Saved', meal]); } setState(() { - isSaving = false; + _isSaving = false; }); } void handleCancelAction() { - bool isNew = widget.meal == null; - if (showConfirmationDialogOnCancel && - ((isNew && + if (Settings.get().showConfirmationDialogOnCancel && + ((_isNew && (_valueController.text != '' || _mealSource != null || _mealCategory != null || @@ -162,29 +216,28 @@ class _MealDetailScreenState extends State { _portionSizeAccuracy != null || int.tryParse(_delayedBolusDurationController.text) != null || - double.tryParse(_delayedBolusRateController.text) != null || + _delayedBolusPercentage != 0 || _notesController.text != '')) || - (!isNew && - (_valueController.text != widget.meal!.value || - _mealSource != widget.meal!.mealSource.target || - _mealCategory != widget.meal!.mealCategory.target || - _mealPortionType != widget.meal!.mealPortionType.target || + (!_isNew && + (_valueController.text != _meal!.value || + _mealSource != _meal!.mealSource.target || + _mealCategory != _meal!.mealCategory.target || + _mealPortionType != _meal!.mealPortionType.target || double.tryParse(_carbsRatioController.text) != - widget.meal!.carbsRatio || + _meal!.carbsRatio || double.tryParse(_portionSizeController.text) != - widget.meal!.portionSize || + _meal!.portionSize || double.tryParse(_carbsPerPortionController.text) != - widget.meal!.carbsPerPortion || - _carbsRatioAccuracy != widget.meal!.carbsRatioAccuracy.target || - _portionSizeAccuracy != widget.meal!.portionSizeAccuracy.target || + _meal!.carbsPerPortion || + _carbsRatioAccuracy != _meal!.carbsRatioAccuracy.target || + _portionSizeAccuracy != _meal!.portionSizeAccuracy.target || int.tryParse(_delayedBolusDurationController.text) != - widget.meal!.delayedBolusDuration || - double.tryParse(_delayedBolusRateController.text) != - widget.meal!.delayedBolusRate || - _notesController.text != (widget.meal!.notes ?? ''))))) { - Dialogs.showCancelConfirmationDialog( + _meal!.delayedBolusDuration || + _delayedBolusPercentage != _meal!.delayedBolusPercentage || + _notesController.text != (_meal!.notes ?? ''))))) { + DialogUtils.showCancelConfirmationDialog( context: context, - isNew: isNew, + isNew: _isNew, onSave: handleSaveAction, ); } else { @@ -192,299 +245,445 @@ class _MealDetailScreenState extends State { } } - Future onSelectMealSource(MealSource mealSource) async { + void onSelectMealSource(MealSource? mealSource) { setState(() { _mealSource = mealSource; + _mealSourceController.text = (_mealSource ?? '').toString(); + }); + if (mealSource != null) { if (mealSource.defaultCarbsRatioAccuracy.hasValue) { - _carbsRatioAccuracy = - mealSource.defaultCarbsRatioAccuracy.target; + updateCarbsRatioAccuracy(mealSource.defaultCarbsRatioAccuracy.target); } if (mealSource.defaultPortionSizeAccuracy.hasValue) { - _portionSizeAccuracy = - mealSource.defaultPortionSizeAccuracy.target; + updatePortionSizeAccuracy(mealSource.defaultPortionSizeAccuracy.target); } if (mealSource.defaultMealCategory.hasValue) { - _mealCategory = mealSource.defaultMealCategory.target; + updateMealCategory(mealSource.defaultMealCategory.target); } if (mealSource.defaultMealPortionType.hasValue) { - _mealPortionType = mealSource.defaultMealPortionType.target; + updateMealPortionType(mealSource.defaultMealPortionType.target); } - }); + } } void calculateThirdMeasurementOfPortionCarbsRelation( - {PortionCarbsParameter? parameterToBeCalculated}) { - double? carbsRatio; - double? portionSize; - double? carbsPerPortion; + {double? carbsRatioUpdate, + double? portionSizeUpdate, + double? carbsPerPortionUpdate}) { + if (!_setManually) { + double? carbsRatio = + carbsRatioUpdate ?? double.tryParse(_carbsRatioController.text); + double? portionSize = + portionSizeUpdate ?? double.tryParse(_portionSizeController.text); + double? carbsPerPortion = carbsPerPortionUpdate ?? + double.tryParse(_carbsPerPortionController.text); - if (parameterToBeCalculated != PortionCarbsParameter.carbsRatio && - _carbsRatioController.text != '') { - carbsRatio = double.tryParse(_carbsRatioController.text); - } - if (parameterToBeCalculated != PortionCarbsParameter.portionSize && - _portionSizeController.text != '') { - portionSize = double.tryParse(_portionSizeController.text); - } - if (parameterToBeCalculated != PortionCarbsParameter.carbsPerPortion && - _carbsRatioController.text != '') { - carbsPerPortion = double.tryParse(_carbsPerPortionController.text); + int toCalculate = 0; + const calcCarbsRatio = 1; + const calcCarbsPerPortion = 2; + const calcPortionSize = 3; + + if (carbsRatioUpdate != null) { + if (portionSize != null && portionSize != 0) { + toCalculate = calcCarbsPerPortion; + } else if (carbsPerPortion != null && carbsPerPortion != 0) { + toCalculate = calcPortionSize; + } + } else if (portionSizeUpdate != null) { + if (carbsRatio != null && carbsRatio != 0) { + toCalculate = calcCarbsPerPortion; + } else if (carbsPerPortion != null && carbsPerPortion != 0) { + toCalculate = calcCarbsRatio; + } + } else if (carbsPerPortionUpdate != null) { + if (carbsRatio != null && carbsRatio != 0) { + toCalculate = calcPortionSize; + } else if (portionSize != null && portionSize != 0) { + toCalculate = calcCarbsRatio; + } + } else { + if (carbsRatio != null && carbsRatio != 0) { + if (portionSize != null && portionSize != 0) { + toCalculate = calcCarbsPerPortion; + } else if (carbsPerPortion != null && carbsPerPortion != 0) { + toCalculate = calcPortionSize; + } + } else if (portionSize != null && + portionSize != 0 && + carbsPerPortion != null && + carbsPerPortion != 0) { + toCalculate = calcCarbsRatio; + } } - if (carbsRatio != null && portionSize != null && carbsPerPortion == null) { setState(() { - _carbsPerPortionController.text = - Utils.calculateCarbsPerPortion(carbsRatio!, portionSize!) - .toString(); - }); - } - if (carbsRatio == null && portionSize != null && carbsPerPortion != null) { - setState(() { - _carbsRatioController.text = - Utils.calculateCarbsRatio(carbsPerPortion!, portionSize!) - .toString(); - }); - } - if (carbsRatio != null && portionSize == null && carbsPerPortion != null) { - setState(() { - _portionSizeController.text = - Utils.calculatePortionSize(carbsRatio!, carbsPerPortion!) - .toString(); + if (toCalculate == calcCarbsRatio) { + _carbsRatioController.text = + Utils.calculateCarbsRatio(carbsPerPortion!, portionSize!) + .toString(); + } else if (toCalculate == calcCarbsPerPortion) { + _carbsPerPortionController.text = Utils.calculateCarbs( + carbsRatio!, portionSize!, + step: Settings.nutritionSteps) + .toString(); + } else if (toCalculate == calcPortionSize) { + _portionSizeController.text = Utils.calculatePortionSize( + carbsRatio!, carbsPerPortion!, + step: Settings.nutritionSteps) + .toString(); + } }); } } @override Widget build(BuildContext context) { - bool isNew = widget.meal == null; return Scaffold( appBar: AppBar( - title: Text(isNew ? 'New Meal' : widget.meal!.value), + title: Text(_isNew ? 'New Meal' : _meal!.value), ), drawer: const Navigation(currentLocation: MealDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _mealForm, - fields: [ - TextFormField( - controller: _valueController, - decoration: const InputDecoration( - labelText: 'Name', + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + children: [ + FormWrapper( + formState: _mealForm, + fields: [ + TextFormField( + controller: _valueController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty name'; + } + return null; + }, ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty name'; - } - return null; - }, - ), - StyledDropdownButton( - selectedItem: _mealSource, - label: 'Meal Source', - items: _mealSources, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - if (value != null) { - onSelectMealSource(value); - } - }, - ), - StyledDropdownButton( - selectedItem: _mealCategory, - label: 'Meal Category', - items: _mealCategories, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _mealCategory = value; - }); - }, - ), - StyledDropdownButton( - selectedItem: _mealPortionType, - label: 'Meal Portion Type', - items: _mealPortionTypes, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _mealPortionType = value; - }); - }, - ), - Row( - children: [ - Expanded( - child: TextFormField( - decoration: const InputDecoration( - labelText: 'Carbs ratio', - suffixText: '%', + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: _mealSourceController, + selectedItem: _mealSource, + label: 'Meal Source', + items: _mealSources, + onChanged: onSelectMealSource, ), - controller: _carbsRatioController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true), - onChanged: (_) => - calculateThirdMeasurementOfPortionCarbsRelation(), ), - ), - IconButton( - onPressed: () => - calculateThirdMeasurementOfPortionCarbsRelation( - parameterToBeCalculated: - PortionCarbsParameter.carbsRatio), - icon: const Icon(Icons.calculate), - ), - ], - ), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: TextFormField( - decoration: InputDecoration( - labelText: 'Portion size', - suffixText: - nutritionMeasurement == NutritionMeasurement.grams - ? 'g' - : nutritionMeasurement == - NutritionMeasurement.ounces - ? 'oz' - : '', - alignLabelWithHint: true, + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _mealSource == null + ? const MealSourceDetailScreen() + : MealSourceDetailScreen(id: _mealSource!.id), + ), + ).then((result) { + onSelectMealSource(result?[1]); + reload(message: result?[0]); + }); + }, + icon: + Icon(_mealSource == null ? Icons.add : Icons.edit), + ), + ], + ), + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: _mealPortionTypeController, + selectedItem: _mealPortionType, + label: 'Meal Portion Type', + items: _mealPortionTypes, + onChanged: updateMealPortionType, ), - controller: _portionSizeController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true), - onChanged: (_) => - calculateThirdMeasurementOfPortionCarbsRelation(), ), - ), - IconButton( - onPressed: () => - calculateThirdMeasurementOfPortionCarbsRelation( - parameterToBeCalculated: - PortionCarbsParameter.portionSize), - icon: const Icon(Icons.calculate), - ), - ], - ), - StyledDropdownButton( - selectedItem: _portionSizeAccuracy, - label: 'Portion Size Accuracy', - items: _portionSizeAccuracies, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _portionSizeAccuracy = value; - }); - }, - ), - // StyledFutureDropdownButton( - // selectedItem: _portionSizeAccuracy, - // label: 'Portion Size Accuracy', - // items: _portionSizeAccuracies, - // getItemValue: (item) => item.objectId, - // renderItem: (item) => Text(item.value), - // onChanged: (value) { - // setState(() { - // _portionSizeAccuracy = value; - // }); - // }, - // ), - Row( - children: [ - Expanded( - child: TextFormField( - decoration: InputDecoration( - labelText: 'Carbs per portion', - suffixText: - nutritionMeasurement == NutritionMeasurement.grams - ? 'g' - : nutritionMeasurement == - NutritionMeasurement.ounces - ? 'oz' - : '', + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _mealPortionType == null + ? const MealPortionTypeDetailScreen() + : MealPortionTypeDetailScreen( + id: _mealPortionType!.id), + ), + ).then((result) { + updateMealPortionType(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon( + _mealPortionType == null ? Icons.add : Icons.edit), + ), + ], + ), + Row( + children: [ + Expanded( + child: NumberFormField( + label: 'Carbs ratio', + suffix: '%', + controller: _carbsRatioController, + showSteppers: false, + onChanged: (value) async { + await Future.delayed(const Duration(seconds: 1)); + calculateThirdMeasurementOfPortionCarbsRelation(carbsRatioUpdate: value); + }, ), - controller: _carbsPerPortionController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true), - onChanged: (_) => - calculateThirdMeasurementOfPortionCarbsRelation(), ), + const SizedBox(width: 10), + Expanded( + child: NumberFormField( + label: 'Portion size', + suffix: Settings.nutritionMeasurementSuffix, + controller: _portionSizeController, + showSteppers: false, + onChanged: (value) async { + await Future.delayed(const Duration(seconds: 1)); + calculateThirdMeasurementOfPortionCarbsRelation(portionSizeUpdate: value); + }, + ), + ), + const SizedBox(width: 10), + Expanded( + child: NumberFormField( + label: 'Carbs per portion', + suffix: Settings.nutritionMeasurementSuffix, + controller: _carbsPerPortionController, + showSteppers: false, + onChanged: (value) async { + await Future.delayed(const Duration(seconds: 1)); + calculateThirdMeasurementOfPortionCarbsRelation(carbsPerPortionUpdate: value); + }, + ), + ), + ], + ), + Expanded( + child: BooleanFormField( + value: _setManually, + label: 'set carbs ratio manually', + onChanged: (value) { + setState(() { + _setManually = value; + calculateThirdMeasurementOfPortionCarbsRelation(); + }); + }, ), - IconButton( - onPressed: () => - calculateThirdMeasurementOfPortionCarbsRelation( - parameterToBeCalculated: - PortionCarbsParameter.carbsPerPortion), - icon: const Icon(Icons.calculate), + ), + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', ), - ], - ), - StyledDropdownButton( - selectedItem: _carbsRatioAccuracy, - label: 'Carbs Ratio Accuracy', - items: _carbsRatioAccuracies, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _carbsRatioAccuracy = value; - }); - }, - ), - // StyledFutureDropdownButton( - // selectedItem: _carbsRatioAccuracy, - // label: 'Carbs Ratio Accuracy', - // items: _carbsRatioAccuracies, - // getItemValue: (item) => item.objectId, - // renderItem: (item) => Text(item.value), - // onChanged: (value) { - // setState(() { - // _carbsRatioAccuracy = value; - // }); - // }, - // ), - // TODO: display according to time format - TextFormField( - decoration: const InputDecoration( - labelText: 'Delayed Bolus Duration', - suffixText: ' min', + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, ), - controller: _delayedBolusDurationController, - keyboardType: const TextInputType.numberWithOptions(), - ), - TextFormField( - decoration: const InputDecoration( - labelText: 'Delayed Bolus Units', - suffixText: ' U', + const Divider(), + Padding( + padding: const EdgeInsets.only(bottom: 10.0), + child: Row( + children: [ + Text( + 'BOLUS DELAY', + style: Theme.of(context).textTheme.subtitle2, + ), + const Spacer(), + ], + ), ), - controller: _delayedBolusRateController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - ), - TextFormField( - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, + Row( + children: [ + Expanded( + child: TextFormField( + decoration: const InputDecoration( + labelText: 'Duration', + suffixText: ' min', + ), + controller: _delayedBolusDurationController, + onChanged: (value) => setState(() {}), + keyboardType: const TextInputType.numberWithOptions(), + ), + ), + Expanded( + child: Slider( + label: + '${_delayedBolusPercentage.floor().toString()}%', + divisions: 100, + value: _delayedBolusPercentage, + min: 0, + max: 100, + onChanged: + _delayedBolusDurationController.text != '' + ? (value) { + setState(() { + _delayedBolusPercentage = value; + }); + } + : null), + ), + const Text('%', textScaleFactor: 1.5), + ], ), - keyboardType: TextInputType.multiline, - ), - ], - ), - ], + const Divider(), + GestureDetector( + onTap: () => setState(() { + _isExpanded = !_isExpanded; + }), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + child: Text( + 'ADDITIONAL FIELDS', + style: Theme.of(context).textTheme.subtitle2, + ), + ), + Icon(_isExpanded + ? Icons.expand_less + : Icons.expand_more), + ], + ), + ), + Column( + children: _isExpanded + ? [ + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton< + MealCategory>( + controller: _mealCategoryController, + selectedItem: _mealCategory, + label: 'Meal Category', + items: _mealCategories, + onChanged: updateMealCategory, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _mealCategory == + null + ? const MealCategoryDetailScreen() + : MealCategoryDetailScreen( + id: _mealCategory!.id), + ), + ).then((result) { + updateMealCategory(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_mealCategory == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: + _portionSizeAccuracyController, + selectedItem: _portionSizeAccuracy, + label: 'Portion Size Accuracy', + items: _portionSizeAccuracies, + onChanged: updatePortionSizeAccuracy, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + _portionSizeAccuracy == null + ? const AccuracyDetailScreen() + : AccuracyDetailScreen( + id: _portionSizeAccuracy! + .id), + ), + ).then((result) { + updatePortionSizeAccuracy(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_portionSizeAccuracy == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5.0), + child: Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: _carbsRatioAccuracyController, + selectedItem: _carbsRatioAccuracy, + label: 'Carbs Ratio Accuracy', + items: _carbsRatioAccuracies, + onChanged: updateCarbsRatioAccuracy, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + _carbsRatioAccuracy == null + ? const AccuracyDetailScreen() + : AccuracyDetailScreen( + id: _carbsRatioAccuracy! + .id), + ), + ).then((result) { + updateCarbsRatioAccuracy(result?[1]); + reload(message: result?[0]); + }); + }, + icon: Icon(_carbsRatioAccuracy == null + ? Icons.add + : Icons.edit), + ), + ], + ), + ), + ] + : [], + ), + ], + ), + ], + ), ), ), bottomNavigationBar: DetailBottomRow( onCancel: handleCancelAction, - onSave: isSaving ? null : handleSaveAction, + onAction: _isSaving ? null : handleSaveAction, ), ); } diff --git a/lib/screens/meal/meal_list.dart b/lib/screens/meal/meal_list.dart index d0f37b6..579b77b 100644 --- a/lib/screens/meal/meal_list.dart +++ b/lib/screens/meal/meal_list.dart @@ -1,7 +1,6 @@ -import 'package:diameter/components/dialogs.dart'; -// import 'package:diameter/components/progress_indicator.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; import 'package:diameter/models/meal.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:diameter/screens/meal/meal_detail.dart'; import 'package:flutter/material.dart'; @@ -18,7 +17,21 @@ class MealListScreen extends StatefulWidget { class _MealListScreenState extends State { List _meals = []; - void refresh({String? message}) { + final ScrollController _scrollController = ScrollController(); + + @override + void initState() { + super.initState(); + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { setState(() { _meals = Meal.getAll(); }); @@ -37,12 +50,12 @@ class _MealListScreenState extends State { void onDelete(Meal meal) { Meal.remove(meal.id); - refresh(message: 'Meal deleted'); + reload(message: 'Meal deleted'); } void handleDeleteAction(Meal meal) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(meal), message: 'Are you sure you want to delete this Meal?', @@ -52,53 +65,107 @@ class _MealListScreenState extends State { } } - @override - void initState() { - super.initState(); - refresh(); - } - @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Meals'), actions: [ - IconButton(onPressed: refresh, icon: const Icon(Icons.refresh)) + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) ]), drawer: const Navigation(currentLocation: MealListScreen.routeName), body: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( - child: _meals.isNotEmpty ? ListView.builder( - padding: const EdgeInsets.all(10.0), - itemCount: _meals.length, - itemBuilder: (context, index) { - final meal = _meals[index]; - - return ListTile( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - MealDetailScreen(meal: meal), + child: _meals.isNotEmpty ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + controller: _scrollController, + padding: const EdgeInsets.all(10.0), + itemCount: _meals.length, + itemBuilder: (context, index) { + final meal = _meals[index]; + String portionType = meal.mealPortionType.hasValue ? ' per ${meal.mealPortionType.target!.value}' : ''; + return Card( + child: ListTile( + isThreeLine: true, + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + MealDetailScreen(id: meal.id), + ), + ).then((result) => reload(message: result?[0])); + }, + title: Text( + meal.value.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, ), - ).then((message) => refresh(message: message)); - }, - title: Text(meal.value), - subtitle: Text(meal.notes ?? ''), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - onPressed: () => handleDeleteAction(meal), - icon: const Icon(Icons.delete, - color: Colors.blue), - ) - ], - ), - ); - }, + subtitle: Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: Column( + children: [ + Row( + children: [ + Expanded( + child: Text(meal.mealSource.target?.value ?? ''), + ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: ((meal.carbsPerPortion ?? 0) > 0) + ? [ + Text(meal.carbsPerPortion!.toStringAsPrecision(3)), + Text( + '${Settings.nutritionMeasurementSuffix} carbs', + textScaleFactor: 0.75), + ] + : [], + ), + ), + Expanded( + child: Column( + children: (meal.mealPortionType.hasValue) + ? [ + Text(meal.portionSize?.toStringAsPrecision(3) ?? ''), + Text( + '${Settings.nutritionMeasurementSuffix}$portionType', + textAlign: TextAlign.center, + textScaleFactor: 0.75 + ), + ] + : [], + ), + ), + ], + ), + meal.notes != null && meal.notes!.trim() != '' ? Padding( + padding: const EdgeInsets.only(top: 10.0), + child: Row( + children: [ + Expanded(child: Text(meal.notes ?? '')), + ], + ), + ) : Container(), + ], + ), + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + IconButton( + onPressed: () => handleDeleteAction(meal), + icon: const Icon(Icons.delete, + color: Colors.blue), + ) + ], + ), + ), + ); + }, + ), ): const Center( child: Text('You have not created any Meals yet!'), ), @@ -112,7 +179,7 @@ class _MealListScreenState extends State { MaterialPageRoute( builder: (context) => const MealDetailScreen(), ), - ).then((message) => refresh(message: message)); + ).then((result) => reload(message: result?[0])); }, child: const Icon(Icons.add), ), diff --git a/lib/screens/meal/meal_portion_type_detail.dart b/lib/screens/meal/meal_portion_type_detail.dart index 1b6ef56..eb5ffb8 100644 --- a/lib/screens/meal/meal_portion_type_detail.dart +++ b/lib/screens/meal/meal_portion_type_detail.dart @@ -1,7 +1,7 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:flutter/material.dart'; import 'package:diameter/models/meal_portion_type.dart'; @@ -9,10 +9,9 @@ import 'package:diameter/models/meal_portion_type.dart'; class MealPortionTypeDetailScreen extends StatefulWidget { static const String routeName = '/meal-portion-type'; - final MealPortionType? mealPortionType; + final int id; - const MealPortionTypeDetailScreen({Key? key, this.mealPortionType}) - : super(key: key); + const MealPortionTypeDetailScreen({Key? key, this.id = 0}) : super(key: key); @override _MealPortionTypeDetailScreenState createState() => @@ -21,53 +20,79 @@ class MealPortionTypeDetailScreen extends StatefulWidget { class _MealPortionTypeDetailScreenState extends State { + MealPortionType? _mealPortionType; + bool _isNew = true; + final GlobalKey _mealPortionTypeForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); + final _valueController = TextEditingController(text: ''); final _notesController = TextEditingController(text: ''); @override void initState() { super.initState(); - if (widget.mealPortionType != null) { - _valueController.text = widget.mealPortionType!.value; - _notesController.text = widget.mealPortionType!.notes ?? ''; + reload(); + + if (_mealPortionType != null) { + _valueController.text = _mealPortionType!.value; + _notesController.text = _mealPortionType!.notes ?? ''; } } + @override + void dispose() { + _scrollController.dispose(); + _valueController.dispose(); + _notesController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _mealPortionType = MealPortionType.get(widget.id); + }); + } + _isNew = _mealPortionType == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + void handleSaveAction() async { if (_mealPortionTypeForm.currentState!.validate()) { - bool isNew = widget.mealPortionType == null; - // isNew - // ? MealPortionType.save( - // value: _valueController.text, - // notes: _notesController.text, - // ) - // : MealPortionType.update( - // widget.mealPortionType!.objectId!, - // value: _valueController.text, - // notes: _notesController.text, - // ); - MealPortionType.put(MealPortionType( - id: widget.mealPortionType?.id ?? 0, + MealPortionType mealPortionType = MealPortionType( + id: _mealPortionType?.id ?? 0, value: _valueController.text, notes: _notesController.text, - )); - Navigator.pop(context, '${isNew ? 'New' : ''} Meal Portion Type saved'); + ); + MealPortionType.put(mealPortionType); + Navigator.pop(context, + ['${_isNew ? 'New' : ''} Meal Portion Type saved', mealPortionType]); } } void handleCancelAction() { - bool isNew = widget.mealPortionType == null; - if (showConfirmationDialogOnCancel && - ((isNew && + if (Settings.get().showConfirmationDialogOnCancel && + ((_isNew && (_valueController.text != '' || _notesController.text != '')) || - (!isNew && - (_valueController.text != widget.mealPortionType!.value || + (!_isNew && + (_valueController.text != _mealPortionType!.value || _notesController.text != - (widget.mealPortionType!.notes ?? ''))))) { - Dialogs.showCancelConfirmationDialog( + (_mealPortionType!.notes ?? ''))))) { + DialogUtils.showCancelConfirmationDialog( context: context, - isNew: isNew, + isNew: _isNew, onSave: handleSaveAction, ); } else { @@ -77,49 +102,53 @@ class _MealPortionTypeDetailScreenState @override Widget build(BuildContext context) { - bool isNew = widget.mealPortionType == null; + bool isNew = _mealPortionType == null; return Scaffold( appBar: AppBar( - title: Text( - isNew ? 'New Meal Portion Type' : widget.mealPortionType!.value), + title: Text(isNew ? 'New Meal Portion Type' : _mealPortionType!.value), ), drawer: const Navigation( currentLocation: MealPortionTypeDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _mealPortionTypeForm, - fields: [ - TextFormField( - controller: _valueController, - decoration: const InputDecoration( - labelText: 'Name', + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _mealPortionTypeForm, + fields: [ + TextFormField( + controller: _valueController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty name'; + } + return null; + }, ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty name'; - } - return null; - }, - ), - TextFormField( - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, - ), - keyboardType: TextInputType.multiline, - ) - ], - ), - ], + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, + ) + ], + ), + ], + ), ), ), bottomNavigationBar: DetailBottomRow( onCancel: handleCancelAction, - onSave: handleSaveAction, + onAction: handleSaveAction, ), ); } diff --git a/lib/screens/meal/meal_portion_type_list.dart b/lib/screens/meal/meal_portion_type_list.dart index c59a96e..7e453d5 100644 --- a/lib/screens/meal/meal_portion_type_list.dart +++ b/lib/screens/meal/meal_portion_type_list.dart @@ -1,6 +1,5 @@ -import 'package:diameter/components/dialogs.dart'; -// import 'package:diameter/components/progress_indicator.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:diameter/screens/meal/meal_portion_type_detail.dart'; import 'package:flutter/material.dart'; @@ -19,7 +18,21 @@ class MealPortionTypeListScreen extends StatefulWidget { class _MealPortionTypeListScreenState extends State { List _mealPortionTypes = []; - void refresh({String? message}) { + final ScrollController _scrollController = ScrollController(); + + @override + void initState() { + super.initState(); + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { setState(() { _mealPortionTypes = MealPortionType.getAll(); }); @@ -38,12 +51,12 @@ class _MealPortionTypeListScreenState extends State { void onDelete(MealPortionType mealPortionType) { MealPortionType.remove(mealPortionType.id); - refresh(message: 'Meal Portion Type deleted'); + reload(message: 'Meal Portion Type deleted'); } void handleDeleteAction(MealPortionType mealPortionType) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(mealPortionType), message: 'Are you sure you want to delete this Meal Portion Type?', @@ -52,20 +65,14 @@ class _MealPortionTypeListScreenState extends State { onDelete(mealPortionType); } } - - @override - void initState() { - super.initState(); - refresh(); - } - + @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Meal Portion Types'), actions: [ - IconButton(onPressed: refresh, icon: const Icon(Icons.refresh)) + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) ], ), drawer: const Navigation( @@ -74,43 +81,50 @@ class _MealPortionTypeListScreenState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( - child: _mealPortionTypes.isNotEmpty ? ListView.builder( - padding: const EdgeInsets.only(top: 10.0), - itemCount: _mealPortionTypes.length, - itemBuilder: (context, index) { - final mealPortionType = _mealPortionTypes[index]; - - return ListTile( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => - MealPortionTypeDetailScreen( - mealPortionType: mealPortionType, - ), + child: _mealPortionTypes.isNotEmpty ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + controller: _scrollController, + padding: const EdgeInsets.all(10.0), + itemCount: _mealPortionTypes.length, + itemBuilder: (context, index) { + final mealPortionType = _mealPortionTypes[index]; + return Card( + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + MealPortionTypeDetailScreen( + id: mealPortionType.id, + ), + ), + ).then( + (message) => reload(message: message)); + }, + title: Text( + mealPortionType.value.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, ), - ).then( - (message) => refresh(message: message)); - }, - title: Text(mealPortionType.value), - subtitle: Text(mealPortionType.notes ?? ''), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () => - handleDeleteAction(mealPortionType), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () => + handleDeleteAction(mealPortionType), + ), + ], ), - ], - ), - ); - }, - ) : const Center( + ), + ); + }, + ), + ) : const Center( child: Text('You have not created any Meal Portion Types yet!'), ), ), @@ -123,7 +137,7 @@ class _MealPortionTypeListScreenState extends State { MaterialPageRoute( builder: (context) => const MealPortionTypeDetailScreen(), ), - ).then((message) => refresh(message: message)); + ).then((result) => reload(message: result?[0])); }, child: const Icon(Icons.add), ), diff --git a/lib/screens/meal/meal_source_detail.dart b/lib/screens/meal/meal_source_detail.dart index 595286c..fb26892 100644 --- a/lib/screens/meal/meal_source_detail.dart +++ b/lib/screens/meal/meal_source_detail.dart @@ -1,130 +1,152 @@ import 'package:diameter/components/detail.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; -// import 'package:diameter/main.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; import 'package:diameter/models/accuracy.dart'; import 'package:diameter/models/meal_category.dart'; import 'package:diameter/models/meal_portion_type.dart'; import 'package:diameter/models/meal_source.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; -// import 'package:diameter/objectbox.g.dart'; +import 'package:diameter/screens/accuracy_detail.dart'; +import 'package:diameter/screens/meal/meal_category_detail.dart'; +import 'package:diameter/screens/meal/meal_portion_type_detail.dart'; import 'package:flutter/material.dart'; class MealSourceDetailScreen extends StatefulWidget { static const String routeName = '/meal-source'; - final MealSource? mealSource; + final int id; - const MealSourceDetailScreen({Key? key, this.mealSource}) : super(key: key); + const MealSourceDetailScreen({Key? key, this.id = 0}) : super(key: key); @override _MealSourceDetailScreenState createState() => _MealSourceDetailScreenState(); } class _MealSourceDetailScreenState extends State { + MealSource? _mealSource; + bool _isNew = true; + List _portionSizeAccuracies = []; List _carbsRatioAccuracies = []; List _mealCategories = []; List _mealPortionTypes = []; final GlobalKey _mealSourceForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); final _valueController = TextEditingController(text: ''); final _notesController = TextEditingController(text: ''); + Accuracy? _defaultCarbsRatioAccuracy; Accuracy? _defaultPortionSizeAccuracy; MealCategory? _defaultMealCategory; MealPortionType? _defaultMealPortionType; + final _defaultCarbsRatioAccuracyController = TextEditingController(text: ''); + final _defaultPortionSizeAccuracyController = TextEditingController(text: ''); + final _defaultMealCategoryController = TextEditingController(text: ''); + final _defaultMealPortionTypeController = TextEditingController(text: ''); @override void initState() { super.initState(); + reload(); + _portionSizeAccuracies = Accuracy.getAllForPortionSize(); _carbsRatioAccuracies = Accuracy.getAllForCarbsRatio(); _mealCategories = MealCategory.getAll(); _mealPortionTypes = MealPortionType.getAll(); - if (widget.mealSource != null) { - _valueController.text = widget.mealSource!.value; - _notesController.text = widget.mealSource!.notes ?? ''; + if (_mealSource != null) { + _valueController.text = _mealSource!.value; + _notesController.text = _mealSource!.notes ?? ''; _defaultPortionSizeAccuracy = - widget.mealSource!.defaultPortionSizeAccuracy.target; - _defaultCarbsRatioAccuracy = widget.mealSource!.defaultCarbsRatioAccuracy.target; + _mealSource!.defaultPortionSizeAccuracy.target; + _defaultPortionSizeAccuracyController.text = (_defaultPortionSizeAccuracy ?? '').toString(); + _defaultCarbsRatioAccuracy = + _mealSource!.defaultCarbsRatioAccuracy.target; + _defaultCarbsRatioAccuracyController.text = (_defaultCarbsRatioAccuracy ?? '').toString(); - _defaultMealCategory = widget.mealSource!.defaultMealCategory.target; - _defaultMealPortionType = - widget.mealSource!.defaultMealPortionType.target; + _defaultMealCategory = _mealSource!.defaultMealCategory.target; + _defaultMealCategoryController.text = (_defaultMealCategory ?? '').toString(); + _defaultMealPortionType = _mealSource!.defaultMealPortionType.target; + _defaultMealPortionTypeController.text = (_defaultMealPortionType ?? '').toString(); } } + @override + void dispose() { + _scrollController.dispose(); + _valueController.dispose(); + _notesController.dispose(); + _defaultCarbsRatioAccuracyController.dispose(); + _defaultPortionSizeAccuracyController.dispose(); + _defaultMealCategoryController.dispose(); + _defaultMealPortionTypeController.dispose(); + super.dispose(); + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _mealSource = MealSource.get(widget.id); + }); + } + _isNew = _mealSource == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + void handleSaveAction() async { - bool isNew = widget.mealSource == null; - if (_mealSourceForm.currentState!.validate()) { - // isNew - // ? await MealSource.save( - // value: _valueController.text, - // defaultCarbsRatioAccuracy: _defaultCarbsRatioAccuracy?.id.toString(), - // defaultPortionSizeAccuracy: _defaultPortionSizeAccuracy?.id.toString(), - // // defaultCarbsRatioAccuracy: _defaultCarbsRatioAccuracy, - // // defaultPortionSizeAccuracy: _defaultPortionSizeAccuracy, - // defaultMealCategory: _defaultMealCategory, - // defaultMealPortionType: _defaultMealPortionType, - // notes: _notesController.text, - // ) - // : await MealSource.update( - // widget.mealSource!.objectId!, - // value: _valueController.text, - // defaultCarbsRatioAccuracy: _defaultCarbsRatioAccuracy?.id.toString(), - // defaultPortionSizeAccuracy: _defaultPortionSizeAccuracy?.id.toString(), - // // defaultCarbsRatioAccuracy: _defaultCarbsRatioAccuracy, - // // defaultPortionSizeAccuracy: _defaultPortionSizeAccuracy, - // defaultMealCategory: _defaultMealCategory, - // defaultMealPortionType: _defaultMealPortionType, - // notes: _notesController.text, - // ); - MealSource mealSource = MealSource( - id: widget.mealSource?.id ?? 0, - value: _valueController.text, - notes: _notesController.text, - ); - mealSource.defaultCarbsRatioAccuracy.target = _defaultCarbsRatioAccuracy; - mealSource.defaultPortionSizeAccuracy.target = - _defaultPortionSizeAccuracy; - mealSource.defaultMealCategory.target = _defaultMealCategory; - mealSource.defaultMealPortionType.target = _defaultMealPortionType; - MealSource.put(mealSource); - Navigator.pop(context, '${isNew ? 'New' : ''} Meal Source saved'); - } + MealSource mealSource = MealSource( + id: widget.id, + value: _valueController.text, + notes: _notesController.text, + ); + mealSource.defaultCarbsRatioAccuracy.target = _defaultCarbsRatioAccuracy; + mealSource.defaultPortionSizeAccuracy.target = _defaultPortionSizeAccuracy; + mealSource.defaultMealCategory.target = _defaultMealCategory; + mealSource.defaultMealPortionType.target = _defaultMealPortionType; + MealSource.put(mealSource); + Navigator.pop(context, ['${_isNew ? 'New' : ''} Meal Source saved', mealSource]); } void handleCancelAction() { - bool isNew = widget.mealSource == null; - if (showConfirmationDialogOnCancel && - ((isNew && + if (Settings.get().showConfirmationDialogOnCancel && + ((_isNew && (_valueController.text != '' || _defaultCarbsRatioAccuracy != null || _defaultPortionSizeAccuracy != null || _defaultMealCategory != null || _defaultMealPortionType != null || _notesController.text != '')) || - (!isNew && - (_valueController.text != widget.mealSource!.value || + (!_isNew && + (_valueController.text != _mealSource!.value || _defaultCarbsRatioAccuracy != - widget.mealSource!.defaultCarbsRatioAccuracy.target || + _mealSource!.defaultCarbsRatioAccuracy.target || _defaultPortionSizeAccuracy != - widget.mealSource!.defaultPortionSizeAccuracy.target || + _mealSource!.defaultPortionSizeAccuracy.target || _defaultMealCategory != - widget.mealSource!.defaultMealCategory.target || + _mealSource!.defaultMealCategory.target || _defaultMealPortionType != - widget.mealSource!.defaultMealPortionType.target || - _notesController.text != - (widget.mealSource!.notes ?? ''))))) { - Dialogs.showCancelConfirmationDialog( + _mealSource!.defaultMealPortionType.target || + _notesController.text != (_mealSource!.notes ?? ''))))) { + DialogUtils.showCancelConfirmationDialog( context: context, - isNew: isNew, + isNew: _isNew, onSave: handleSaveAction, ); } else { @@ -134,118 +156,225 @@ class _MealSourceDetailScreenState extends State { @override Widget build(BuildContext context) { - bool isNew = widget.mealSource == null; return Scaffold( appBar: AppBar( - title: Text(isNew ? 'New Meal Source' : widget.mealSource!.value), + title: Text(_isNew ? 'New Meal Source' : _mealSource!.value), ), drawer: const Navigation(currentLocation: MealSourceDetailScreen.routeName), - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - StyledForm( - formState: _mealSourceForm, - fields: [ - TextFormField( - controller: _valueController, - decoration: const InputDecoration( - labelText: 'Name', + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FormWrapper( + formState: _mealSourceForm, + fields: [ + TextFormField( + controller: _valueController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty name'; + } + return null; + }, ), - validator: (value) { - if (value!.trim().isEmpty) { - return 'Empty name'; - } - return null; - }, - ), - StyledDropdownButton( - selectedItem: _defaultCarbsRatioAccuracy, - label: 'Default Carbs Ratio Accuracy', - items: _carbsRatioAccuracies, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _defaultCarbsRatioAccuracy = value; - }); - }, - ), - StyledDropdownButton( - selectedItem: _defaultPortionSizeAccuracy, - label: 'Default Portion Size Accuracy', - items: _portionSizeAccuracies, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _defaultPortionSizeAccuracy = value; - }); - }, - ), - // StyledFutureDropdownButton( - // selectedItem: _defaultCarbsRatioAccuracy, - // label: 'Default Carbs Ratio Accuracy', - // items: _carbsRatioAccuracies, - // getItemValue: (item) => item.objectId, - // renderItem: (item) => Text(item.value), - // onChanged: (value) { - // setState(() { - // _defaultCarbsRatioAccuracy = value; - // }); - // }, - // ), - // StyledFutureDropdownButton( - // selectedItem: _defaultPortionSizeAccuracy, - // label: 'Default Portion Size Accuracy', - // items: _portionSizeAccuracies, - // getItemValue: (item) => item.objectId, - // renderItem: (item) => Text(item.value), - // onChanged: (value) { - // setState(() { - // _defaultPortionSizeAccuracy = value; - // }); - // }, - // ), - StyledDropdownButton( - selectedItem: _defaultMealCategory, - label: 'Default Meal Category', - items: _mealCategories, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _defaultMealCategory = value; - }); - }, - ), - StyledDropdownButton( - selectedItem: _defaultMealPortionType, - label: 'Default Meal Portion Type', - items: _mealPortionTypes, - // getItemValue: (item) => item.objectId, - renderItem: (item) => Text(item.value), - onChanged: (value) { - setState(() { - _defaultMealPortionType = value; - }); - }, - ), - TextFormField( - controller: _notesController, - decoration: const InputDecoration( - labelText: 'Notes', - alignLabelWithHint: true, + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + selectedItem: _defaultCarbsRatioAccuracy, + controller: _defaultCarbsRatioAccuracyController, + label: 'Default Carbs Ratio Accuracy', + items: _carbsRatioAccuracies, + onChanged: (value) { + setState(() { + _defaultCarbsRatioAccuracy = value; + _defaultCarbsRatioAccuracyController.text = + (_defaultCarbsRatioAccuracy ?? '').toString(); + }); + }, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + _defaultCarbsRatioAccuracy == null + ? const AccuracyDetailScreen() + : AccuracyDetailScreen( + id: _defaultCarbsRatioAccuracy!.id), + ), + ).then((result) { + setState(() { + _defaultCarbsRatioAccuracy = result?[1]; + _defaultCarbsRatioAccuracyController.text = + (_defaultCarbsRatioAccuracy ?? '').toString(); + }); + reload(message: result?[0]); + }); + }, + icon: Icon(_defaultCarbsRatioAccuracy == null + ? Icons.add + : Icons.edit), + ), + ], ), - keyboardType: TextInputType.multiline, - ) - ], - ), - ], + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + selectedItem: _defaultPortionSizeAccuracy, + controller: _defaultPortionSizeAccuracyController, + label: 'Default Portion Size Accuracy', + items: _portionSizeAccuracies, + onChanged: (value) { + setState(() { + _defaultPortionSizeAccuracy = value; + _defaultPortionSizeAccuracyController.text = + (_defaultPortionSizeAccuracy ?? '') + .toString(); + }); + }, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + _defaultPortionSizeAccuracy == null + ? const AccuracyDetailScreen() + : AccuracyDetailScreen( + id: _defaultPortionSizeAccuracy!.id), + ), + ).then((result) { + setState(() { + _defaultPortionSizeAccuracy = result?[1]; + _defaultPortionSizeAccuracyController.text = + (_defaultPortionSizeAccuracy ?? '') + .toString(); + }); + reload(message: result?[0]); + }); + }, + icon: Icon(_defaultPortionSizeAccuracy == null + ? Icons.add + : Icons.edit), + ), + ], + ), + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + selectedItem: _defaultMealCategory, + controller: _defaultMealCategoryController, + label: 'Default Meal Category', + items: _mealCategories, + onChanged: (value) { + setState(() { + _defaultMealCategory = value; + _defaultMealCategoryController.text = + (_defaultMealCategory ?? '').toString(); + }); + }, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => _defaultMealCategory == null + ? const MealCategoryDetailScreen() + : MealCategoryDetailScreen( + id: _defaultMealCategory!.id), + ), + ).then((result) { + setState(() { + _defaultMealCategory = result?[1]; + _defaultMealCategoryController.text = + (_defaultMealCategory ?? '').toString(); + }); + reload(message: result?[0]); + }); + }, + icon: Icon(_defaultMealCategory == null + ? Icons.add + : Icons.edit), + ), + ], + ), + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + selectedItem: _defaultMealPortionType, + controller: _defaultMealPortionTypeController, + label: 'Default Meal Portion Type', + items: _mealPortionTypes, + onChanged: (value) { + setState(() { + _defaultMealPortionType = value; + _defaultMealPortionTypeController.text = + (_defaultMealPortionType ?? '').toString(); + }); + }, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + _defaultMealPortionType == null + ? const MealPortionTypeDetailScreen() + : MealPortionTypeDetailScreen( + id: _defaultMealPortionType!.id), + ), + ).then((result) { + setState(() { + _defaultMealPortionType = result?[1]; + _defaultMealPortionTypeController.text = + (_defaultMealPortionType ?? '').toString(); + }); + reload(message: result?[0]); + }); + }, + icon: Icon(_defaultMealPortionType == null + ? Icons.add + : Icons.edit), + ), + ], + ), + TextFormField( + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + keyboardType: TextInputType.multiline, + minLines: 2, + maxLines: 5, + ) + ], + ), + ], + ), ), ), bottomNavigationBar: DetailBottomRow( onCancel: handleCancelAction, - onSave: handleSaveAction, + onAction: handleSaveAction, ), ); } diff --git a/lib/screens/meal/meal_source_list.dart b/lib/screens/meal/meal_source_list.dart index c72ed19..479fcc9 100644 --- a/lib/screens/meal/meal_source_list.dart +++ b/lib/screens/meal/meal_source_list.dart @@ -1,7 +1,6 @@ -// import 'package:diameter/components/progress_indicator.dart'; -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/utils/dialog_utils.dart'; import 'package:diameter/models/meal_source.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; import 'package:diameter/screens/meal/meal_source_detail.dart'; import 'package:flutter/material.dart'; @@ -18,7 +17,21 @@ class MealSourceListScreen extends StatefulWidget { class _MealSourceListScreenState extends State { List _mealSources = []; - void refresh({String? message}) { + final ScrollController _scrollController = ScrollController(); + + @override + void initState() { + super.initState(); + reload(); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + void reload({String? message}) { setState(() { _mealSources = MealSource.getAll(); }); @@ -37,12 +50,12 @@ class _MealSourceListScreenState extends State { void onDelete(MealSource mealSource) { MealSource.remove(mealSource.id); - refresh(message: 'Meal Source deleted'); + reload(message: 'Meal Source deleted'); } void handleDeleteAction(MealSource mealSource) async { - if (showConfirmationDialogOnDelete) { - Dialogs.showConfirmationDialog( + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( context: context, onConfirm: () => onDelete(mealSource), message: 'Are you sure you want to delete this Meal Source?', @@ -52,19 +65,13 @@ class _MealSourceListScreenState extends State { } } - @override - void initState() { - super.initState(); - refresh(); - } - @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Meal Sources'), actions: [ - IconButton(onPressed: refresh, icon: const Icon(Icons.refresh)) + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) ], ), drawer: const Navigation(currentLocation: MealSourceListScreen.routeName), @@ -72,41 +79,49 @@ class _MealSourceListScreenState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( - child: _mealSources.isNotEmpty ? ListView.builder( - padding: const EdgeInsets.only(top: 10.0), - itemCount: _mealSources.length, - itemBuilder: (context, index) { - final mealSource = _mealSources[index]; - - return ListTile( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => MealSourceDetailScreen( - mealSource: mealSource, - ), + child: _mealSources.isNotEmpty ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + controller: _scrollController, + padding: const EdgeInsets.all(10.0), + itemCount: _mealSources.length, + itemBuilder: (context, index) { + final mealSource = _mealSources[index]; + + return Card( + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => MealSourceDetailScreen( + id: mealSource.id, + ), + ), + ).then((result) => reload(message: result?[0])); + }, + title: Text( + mealSource.value.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, ), - ).then((message) => refresh(message: message)); - }, - title: Text(mealSource.value), - subtitle: Text(mealSource.notes ?? ''), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: const Icon( - Icons.delete, - color: Colors.blue, - ), - onPressed: () async { - handleDeleteAction(mealSource); - }, + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon( + Icons.delete, + color: Colors.blue, + ), + onPressed: () async { + handleDeleteAction(mealSource); + }, + ), + ], ), - ], - ), - ); - } + ), + ); + } + ), ) : const Center( child: Text('You have not created any Meal Sources yet!'), ), @@ -120,7 +135,7 @@ class _MealSourceListScreenState extends State { MaterialPageRoute( builder: (context) => const MealSourceDetailScreen(), ), - ).then((message) => refresh(message: message)); + ).then((result) => reload(message: result?[0])); }, child: const Icon(Icons.add), ), diff --git a/lib/screens/recipe/recipe_detail.dart b/lib/screens/recipe/recipe_detail.dart new file mode 100644 index 0000000..6c08173 --- /dev/null +++ b/lib/screens/recipe/recipe_detail.dart @@ -0,0 +1,322 @@ +import 'package:diameter/components/detail.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/components/forms/form_wrapper.dart'; +import 'package:diameter/models/ingredient.dart'; +import 'package:diameter/models/meal.dart'; +import 'package:diameter/models/recipe.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/navigation.dart'; +import 'package:diameter/screens/meal/meal_detail.dart'; +import 'package:flutter/material.dart'; + +class RecipeDetailScreen extends StatefulWidget { + static const String routeName = '/recipe'; + final int id; + + const RecipeDetailScreen({Key? key, this.id = 0}) : super(key: key); + + @override + _RecipeDetailScreenState createState() => _RecipeDetailScreenState(); +} + +class _RecipeDetailScreenState extends State { + Recipe? _recipe; + List _ingredients = []; + + bool _isNew = true; + bool _isSaving = false; + + final GlobalKey _recipeForm = GlobalKey(); + final ScrollController _scrollController = ScrollController(); + + final _nameController = TextEditingController(text: ''); + final _notesController = TextEditingController(text: ''); + + double _servings = 1; + + final List _ingredientControllers = []; + + List _meals = []; + + @override + void initState() { + super.initState(); + + reload(); + + _meals = Meal.getAll(); + + if (_recipe != null) { + _nameController.text = _recipe!.name; + _servings = _recipe!.servings ?? 1; + _notesController.text = _recipe!.notes ?? ''; + + if (_ingredients.isNotEmpty) { + for (Ingredient ingredient in _ingredients) { + _ingredientControllers.add( + TextEditingController(text: ingredient.ingredient.target?.value)); + } + } + } + } + + void reload({String? message}) { + if (widget.id != 0) { + setState(() { + _recipe = Recipe.get(widget.id); + _ingredients = Ingredient.getAllForRecipe(widget.id); + }); + } + _isNew = _recipe == null; + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void onAddIngredient() { + final newIngredient = Ingredient(amount: 0); + setState(() { + newIngredient.recipe.target = _recipe; + _ingredients.add(newIngredient); + _ingredientControllers.add(TextEditingController(text: '')); + }); + } + + void handleSaveAction({bool close = false}) async { + setState(() { + _isSaving = true; + }); + if (_recipeForm.currentState!.validate()) { + Recipe recipe = Recipe( + id: widget.id, + name: _nameController.text, + servings: _servings, + notes: _notesController.text, + ); + Recipe.put(recipe); + List ingredients = _ingredients.map((ingredient) { + if (ingredient.id != 0 && + (!ingredient.ingredient.hasValue || ingredient.amount == 0)) { + ingredient.deleted = true; + } + return ingredient; + }).toList(); + ingredients.retainWhere((ingredient) { + return ingredient.id != 0 || + (ingredient.amount > 0 && ingredient.ingredient.hasValue); + }); + Ingredient.putMany(ingredients); + + if (close) { + Navigator.pop(context, ['${_isNew ? 'New' : ''} Recipe Saved', recipe]); + } else { + if (_isNew) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => RecipeDetailScreen(id: recipe.id), + ), + ).then((result) => Navigator.pop(context, result)); + } else { + reload(message: 'Recipe saved'); + } + } + + setState(() { + _isSaving = false; + }); + } + } + + void handleCancelAction() { + if (Settings.get().showConfirmationDialogOnCancel && + ((_isNew && + (_nameController.text != '' || + _servings != 1 || + _notesController.text != '')) || + (!_isNew && + (_nameController.text != _recipe!.name || + _servings != _recipe!.servings || + _notesController.text != (_recipe!.notes ?? ''))))) { + DialogUtils.showCancelConfirmationDialog( + context: context, + isNew: _isNew, + onSave: handleSaveAction, + ); + } else { + Navigator.pop(context); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(_isNew ? 'New Recipe' : _recipe!.name), + ), + drawer: const Navigation(currentLocation: RecipeDetailScreen.routeName), + body: Scrollbar( + controller: _scrollController, + child: SingleChildScrollView( + controller: _scrollController, + child: Column( + children: [ + FormWrapper( + formState: _recipeForm, + fields: [ + TextFormField( + controller: _nameController, + decoration: const InputDecoration( + labelText: 'Name', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty title'; + } + return null; + }, + ), + // NumberFormField( + // value: _servings, + // label: 'Servings', + // suffix: ' portions', + // min: 0, + // onChanged: (value) { + // if (value != null && value >= 0) { + // setState(() { + // _servings = value.toDouble(); + // }); + // } + // }, + // ), + TextFormField( + keyboardType: TextInputType.multiline, + controller: _notesController, + decoration: const InputDecoration( + labelText: 'Notes', + ), + minLines: 2, + maxLines: 5, + ), + const Divider(), + GestureDetector( + onTap: onAddIngredient, + child: Row( + children: [ + Text( + 'INGREDIENTS', + style: Theme.of(context).textTheme.subtitle2, + ), + const Spacer(), + IconButton( + onPressed: onAddIngredient, + icon: const Icon(Icons.add), + ), + ], + ), + ), + ], + ), + !_isNew && _ingredients.isNotEmpty + ? ListBody( + children: _ingredients.map((item) { + final ingredient = item.ingredient.target; + final index = _ingredients.indexOf(item); + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10.0, vertical: 5.0), + child: Column( + children: [ + Row( + children: [ + Expanded( + child: AutoCompleteDropdownButton( + controller: _ingredientControllers[index], + selectedItem: ingredient, + label: 'Meal Category', + items: _meals, + onChanged: (value) { + setState(() { + _ingredients[index] + .ingredient + .target = value; + _ingredientControllers[index].text = + value?.value ?? ''; + }); + }, + ), + ), + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + ingredient == null + ? const MealDetailScreen() + : MealDetailScreen( + id: ingredient.id), + ), + ).then((result) { + _ingredients[index].ingredient.target = + result?[1]; + _ingredientControllers[index].text = + result?[1].value ?? ''; + reload(message: result?[0]); + }); + }, + icon: Icon(ingredient == null + ? Icons.add + : Icons.edit), + ), + ], + ), + // Padding( + // padding: const EdgeInsets.only(top: 10.0), + // child: NumberFormField( + // controller: + // _ingredients[index].amount, + // label: 'Amount', + // suffix: Settings.nutritionMeasurementSuffix, + // min: 0, + // onChanged: (value) { + // if (value != null && value >= 0) { + // setState(() { + // _ingredients[index].amount = value.toDouble(); + // }); + // } + // }, + // ), + // ), + ], + ), + ); + }).toList(), + ) + : Center( + child: Text(_isNew + ? 'Save the Recipe in order to add ingredients!' + : 'You have not added any Ingredients yet!'), + ) + ], + ), + ), + ), + bottomNavigationBar: DetailBottomRow( + onCancel: handleCancelAction, + onAction: _isSaving ? null : handleSaveAction, + onMiddleAction: _isSaving ? null : () => handleSaveAction(close: true), + ), + ); + } +} diff --git a/lib/screens/recipe/recipe_list.dart b/lib/screens/recipe/recipe_list.dart new file mode 100644 index 0000000..b4de28f --- /dev/null +++ b/lib/screens/recipe/recipe_list.dart @@ -0,0 +1,200 @@ +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/models/ingredient.dart'; +import 'package:diameter/models/recipe.dart'; +import 'package:diameter/models/settings.dart'; +import 'package:diameter/navigation.dart'; +import 'package:diameter/screens/recipe/recipe_detail.dart'; +import 'package:flutter/material.dart'; + +class RecipeListScreen extends StatefulWidget { + static const String routeName = '/recipes'; + + const RecipeListScreen({Key? key}) : super(key: key); + + @override + _RecipeListScreenState createState() => _RecipeListScreenState(); +} + +class _RecipeListScreenState extends State { + List _recipes = []; + + final ScrollController _scrollController = ScrollController(); + + @override + void initState() { + super.initState(); + reload(); + } + + void reload({String? message}) { + setState(() { + _recipes = Recipe.getAll(); + }); + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } + }); + } + + void onDelete(Recipe recipe) { + Recipe.remove(recipe.id); + reload(message: 'Recipe deleted'); + } + + void handleDeleteAction(Recipe recipe) async { + if (Settings.get().showConfirmationDialogOnDelete) { + DialogUtils.showConfirmationDialog( + context: context, + onConfirm: () => onDelete(recipe), + message: 'Are you sure you want to delete this Recipe?', + ); + } else { + onDelete(recipe); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('Recipes'), actions: [ + IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) + ]), + drawer: const Navigation(currentLocation: RecipeListScreen.routeName), + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: _recipes.isNotEmpty + ? Scrollbar( + controller: _scrollController, + child: ListView.builder( + controller: _scrollController, + padding: const EdgeInsets.all(10.0), + itemCount: _recipes.length, + itemBuilder: (context, index) { + final recipe = _recipes[index]; + final carbsRatio = + Ingredient.getCarbsRatioForRecipe(recipe.id); + final carbsPerPortion = Recipe.getCarbsPerPortion(recipe.id); + return Card( + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + RecipeDetailScreen(id: recipe.id), + ), + ).then((result) => reload(message: result?[0])); + }, + title: Text( + recipe.name.toUpperCase(), + style: Theme.of(context).textTheme.subtitle2, + ), + subtitle: Padding( + padding: + const EdgeInsets.symmetric(vertical: 10.0), + child: Row( + children: [ + Column( + children: [ + Text(recipe.notes ?? ''), + ], + ), + Expanded( + child: Column( + mainAxisAlignment: + MainAxisAlignment.center, + crossAxisAlignment: + CrossAxisAlignment.center, + children: + ((carbsRatio ?? 0) > 0) + ? [ + Text(carbsRatio!.toString()), + const Text('% carbs', + textScaleFactor: 0.75), + ] + : [], + ), + ), + Expanded( + child: Column( + mainAxisAlignment: + MainAxisAlignment.center, + crossAxisAlignment: + CrossAxisAlignment.center, + children: + (recipe.servings != null) + ? [ + Text(recipe.servings! + .toStringAsPrecision(3)), + const Text('servings', + textScaleFactor: 0.75), + ] + : [], + ), + ), + Expanded( + child: Column( + mainAxisAlignment: + MainAxisAlignment.center, + crossAxisAlignment: + CrossAxisAlignment.center, + children: + ((carbsPerPortion ?? 0) > 0) + ? [ + Text(carbsPerPortion! + .toStringAsPrecision(3)), + Text( + '${Settings.nutritionMeasurementSuffix} carbs per serving', + textScaleFactor: 0.75), + ] + : [], + ), + ), + ], + ), + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + IconButton( + onPressed: () => handleDeleteAction(recipe), + icon: const Icon(Icons.delete, + color: Colors.blue), + ) + ], + ), + ), + ); + }, + ), + ) + : const Center( + child: Text('You have not created any Recipes yet!'), + ), + ), + ], + ), + floatingActionButton: FloatingActionButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const RecipeDetailScreen(), + ), + ).then((result) => reload(message: result?[0])); + }, + child: const Icon(Icons.add), + ), + ); + } +} diff --git a/lib/settings.dart b/lib/settings.dart index f17dd65..4c856da 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -1,87 +1,12 @@ -import 'package:diameter/components/dialogs.dart'; -import 'package:diameter/components/forms.dart'; -import 'package:diameter/config.dart'; +import 'package:diameter/components/forms/boolean_form_field.dart'; +import 'package:diameter/components/forms/number_form_field.dart'; +import 'package:diameter/utils/dialog_utils.dart'; +import 'package:diameter/components/forms/auto_complete_dropdown_button.dart'; +import 'package:diameter/models/settings.dart'; import 'package:diameter/navigation.dart'; +import 'package:diameter/utils/utils.dart'; import 'package:flutter/material.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -enum GlucoseDisplayMode { activeOnly, bothForList, bothForDetail, both } - -enum GlucoseMeasurement { - mgPerDl, - mmolPerL, -} - -enum NutritionMeasurement { - grams, - ounces, - cups, -} - -class Settings { - static void loadSettingsIntoConfig() async { - nutritionMeasurement = await getNutritionMeasurement(); - glucoseMeasurement = await getGlucoseMeasurement(); - glucoseDisplayMode = await getGlucoseDisplayMode(); - } - - static Future getGlucoseDisplayMode() async { - final settings = await SharedPreferences.getInstance(); - int? index = settings.getInt('glucoseDisplayMode'); - return index != null && index < GlucoseDisplayMode.values.length - ? GlucoseDisplayMode.values[index] - : GlucoseDisplayMode.bothForList; - } - - static Future getGlucoseMeasurement() async { - final settings = await SharedPreferences.getInstance(); - int? index = settings.getInt('glucoseMeasurement'); - return index != null && index < GlucoseMeasurement.values.length - ? GlucoseMeasurement.values[index] - : GlucoseMeasurement.mgPerDl; - } - - static Future getNutritionMeasurement() async { - final settings = await SharedPreferences.getInstance(); - int? index = settings.getInt('nutritionMeasurement'); - return index != null && index < NutritionMeasurement.values.length - ? NutritionMeasurement.values[index] - : NutritionMeasurement.grams; - } - - static void setGlucoseDisplayMode( - GlucoseDisplayMode? glucoseDisplayMode) async { - final settings = await SharedPreferences.getInstance(); - if (glucoseDisplayMode != null) { - settings.setInt('glucoseDisplayMode', glucoseDisplayMode.index); - } - } - - static void setGlucoseMeasurement( - GlucoseMeasurement? glucoseMeasurement) async { - final settings = await SharedPreferences.getInstance(); - if (glucoseMeasurement != null) { - settings.setInt('preferredGlucoseMeasurement', glucoseMeasurement.index); - } - } - - static void setNutritionMeasurement( - NutritionMeasurement? nutritionMeasurement) async { - final settings = await SharedPreferences.getInstance(); - if (nutritionMeasurement != null) { - settings.setInt( - 'preferredNutritionMeasurement', nutritionMeasurement.index); - } - } - - static void resetAll() async { - final settings = await SharedPreferences.getInstance(); - - settings.remove('glucoseDisplayMode'); - settings.remove('preferredGlucoseMeasurement'); - settings.remove('preferredNutritionMeasurement'); - } -} +import 'package:intl/intl.dart'; class SettingsScreen extends StatefulWidget { static const String routeName = '/settings'; @@ -93,29 +18,156 @@ class SettingsScreen extends StatefulWidget { } class _SettingsScreenState extends State { - final GlobalKey _settingsForm = GlobalKey(); + late Settings _settings; - void onReset() { - Settings.resetAll(); + final ScrollController _scrollController = ScrollController(); + + bool _measurementsIsExpanded = true; + bool _promptsIsExpanded = true; + bool _formatIsExpanded = true; + + final _nutritionMeasurementLabelController = TextEditingController(text: ''); + final _glucoseMeasurementLabelController = TextEditingController(text: ''); + final _dateFormatController = TextEditingController(text: ''); + final _longDateFormatController = TextEditingController(text: ''); + final _timeFormatController = TextEditingController(text: ''); + final _longTimeFormatController = TextEditingController(text: ''); + + final _insulinIncrementsController = TextEditingController(text: ''); + final _nutritionIncrementsController = TextEditingController(text: ''); + final _mmolPerLIncrementsController = TextEditingController(text: ''); + final _targetGlucoseMgPerDlController = TextEditingController(text: ''); + final _targetGlucoseMmolPerLController = TextEditingController(text: ''); + + late bool _onlyDisplayActiveGlucoseMeasurement; + late bool _displayBothGlucoseMeasurementsInDetailView; + late bool _displayBothGlucoseMeasurementsInListView; + + late bool _showConfirmationDialogOnCancel; + late bool _showConfirmationDialogOnDelete; + late bool _showConfirmationDialogOnStopEvent; + + @override + void initState() { + super.initState(); + _settings = Settings.get(); + _nutritionMeasurementLabelController.text = + nutritionMeasurementLabels[_settings.nutritionMeasurementIndex]; + _glucoseMeasurementLabelController.text = + glucoseMeasurementLabels[_settings.glucoseMeasurementIndex]; + _insulinIncrementsController.text = _settings.insulinIncrements.toString(); + _nutritionIncrementsController.text = + _settings.nutritionIncrements.toString(); + _mmolPerLIncrementsController.text = + _settings.mmolPerLIncrements.toString(); + _targetGlucoseMgPerDlController.text = + _settings.targetGlucoseMgPerDl.toInt().toString(); + _targetGlucoseMmolPerLController.text = + _settings.targetGlucoseMmolPerL.toString(); + _onlyDisplayActiveGlucoseMeasurement = _settings.glucoseDisplayModeIndex == + GlucoseDisplayMode.activeOnly.index; + _displayBothGlucoseMeasurementsInDetailView = + _settings.glucoseDisplayModeIndex == GlucoseDisplayMode.both.index || + _settings.glucoseDisplayModeIndex == + GlucoseDisplayMode.bothForDetail.index; + _displayBothGlucoseMeasurementsInListView = + _settings.glucoseDisplayModeIndex == GlucoseDisplayMode.both.index || + _settings.glucoseDisplayModeIndex == + GlucoseDisplayMode.bothForList.index; + _dateFormatController.text = _settings.dateFormat; + _longDateFormatController.text = _settings.longDateFormat ?? ''; + _timeFormatController.text = _settings.timeFormat; + _longTimeFormatController.text = _settings.longTimeFormat ?? ''; + _showConfirmationDialogOnCancel = _settings.showConfirmationDialogOnCancel; + _showConfirmationDialogOnDelete = _settings.showConfirmationDialogOnDelete; + _showConfirmationDialogOnStopEvent = + _settings.showConfirmationDialogOnStopEvent; + } + + @override + void dispose() { + _scrollController.dispose(); + _nutritionMeasurementLabelController.dispose(); + _glucoseMeasurementLabelController.dispose(); + _dateFormatController.dispose(); + _longDateFormatController.dispose(); + _timeFormatController.dispose(); + _longTimeFormatController.dispose(); + _insulinIncrementsController.dispose(); + _nutritionIncrementsController.dispose(); + _mmolPerLIncrementsController.dispose(); + _targetGlucoseMgPerDlController.dispose(); + _targetGlucoseMmolPerLController.dispose(); + super.dispose(); + } + + void reload({String? message}) { setState(() { - Settings.loadSettingsIntoConfig(); + _settings = Settings.get(); + }); + + setState(() { + if (message != null) { + var snackBar = SnackBar( + content: Text(message), + duration: const Duration(seconds: 2), + ); + ScaffoldMessenger.of(context) + ..removeCurrentSnackBar() + ..showSnackBar(snackBar); + } }); } + void saveSettings() { + Settings.put(Settings( + id: _settings.id, + nutritionMeasurementIndex: nutritionMeasurementLabels + .indexOf(_nutritionMeasurementLabelController.text), + glucoseMeasurementIndex: glucoseMeasurementLabels + .indexOf(_glucoseMeasurementLabelController.text), + glucoseDisplayModeIndex: _onlyDisplayActiveGlucoseMeasurement + ? GlucoseDisplayMode.activeOnly.index + : _displayBothGlucoseMeasurementsInDetailView && + _displayBothGlucoseMeasurementsInListView + ? GlucoseDisplayMode.both.index + : _displayBothGlucoseMeasurementsInDetailView + ? GlucoseDisplayMode.bothForDetail.index + : GlucoseDisplayMode.bothForList.index, + targetGlucoseMgPerDl: + int.tryParse(_targetGlucoseMgPerDlController.text) ?? _settings.targetGlucoseMgPerDl, + targetGlucoseMmolPerL: + double.tryParse(_targetGlucoseMmolPerLController.text) ?? _settings.targetGlucoseMmolPerL, + insulinIncrements: + double.tryParse(_insulinIncrementsController.text) ?? _settings.insulinIncrements, + nutritionIncrements: + double.tryParse(_nutritionIncrementsController.text) ?? _settings.nutritionIncrements, + mmolPerLIncrements: + double.tryParse(_mmolPerLIncrementsController.text) ?? _settings.mmolPerLIncrements, + dateFormat: _dateFormatController.text, + longDateFormat: _longDateFormatController.text, + timeFormat: _timeFormatController.text, + longTimeFormat: _longTimeFormatController.text, + showConfirmationDialogOnCancel: _showConfirmationDialogOnCancel, + showConfirmationDialogOnDelete: _showConfirmationDialogOnDelete, + showConfirmationDialogOnStopEvent: _showConfirmationDialogOnStopEvent, + )); + reload(message: 'Settings updated'); + } + + void onReset() { + Settings.reset(); + reload(message: 'Settings have been reset to default'); + } + void handleResetAction() async { - Dialogs.showConfirmationDialog( + DialogUtils.showConfirmationDialog( context: context, onConfirm: onReset, message: 'Are you sure you want to reset all settings?', ); } - @override - initState() { - super.initState(); - Settings.loadSettingsIntoConfig(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -124,93 +176,399 @@ class _SettingsScreenState extends State { ), drawer: const Navigation(currentLocation: SettingsScreen.routeName), body: SingleChildScrollView( + controller: _scrollController, + padding: const EdgeInsets.all(10.0), child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - StyledForm( - formState: _settingsForm, - fields: [ - StyledDropdownButton( - selectedItem: nutritionMeasurement, - label: 'Preferred Nutrition Measurement', - items: NutritionMeasurement.values, - renderItem: (item) => Text(item.toString().split('.')[1]), - onChanged: (value) { - if (value != null) { - Settings.setNutritionMeasurement(value); - setState(() { - nutritionMeasurement = value; - }); - } - }, + Padding( + padding: const EdgeInsets.only(bottom: 10.0), + child: GestureDetector( + onTap: () => setState(() { + _measurementsIsExpanded = !_measurementsIsExpanded; + }), + child: Row( + children: [ + Expanded( + child: Text( + 'MEASUREMENTS', + style: Theme.of(context).textTheme.subtitle2, + ), + ), + Icon(_measurementsIsExpanded + ? Icons.expand_less + : Icons.expand_more), + ], ), - StyledDropdownButton( - selectedItem: glucoseMeasurement, - label: 'Preferred Glucose Measurement', - items: GlucoseMeasurement.values, - renderItem: (item) => Text(item.toString().split('.')[1]), - onChanged: (value) { - if (value != null) { - Settings.setGlucoseMeasurement(value); - setState(() { - glucoseMeasurement = value; - }); - } - }, + ), + ), + Column( + children: _measurementsIsExpanded + ? [ + AutoCompleteDropdownButton( + controller: _nutritionMeasurementLabelController, + selectedItem: _nutritionMeasurementLabelController.text, + label: 'Preferred Nutrition Measurement', + items: nutritionMeasurementLabels, + onChanged: (value) { + _nutritionMeasurementLabelController.text = + value ?? ''; + saveSettings(); + }, + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: AutoCompleteDropdownButton( + controller: _glucoseMeasurementLabelController, + selectedItem: _glucoseMeasurementLabelController.text, + label: 'Preferred Glucose Measurement', + items: glucoseMeasurementLabels, + onChanged: (value) { + _glucoseMeasurementLabelController.text = + value ?? ''; + saveSettings(); + }, + ), + ), + Settings.glucoseMeasurement == GlucoseMeasurement.mgPerDl + ? NumberFormField( + label: 'Target glucose', + suffix: 'mg/dl', + controller: _targetGlucoseMgPerDlController, + showSteppers: false, + onChanged: (_) async { + await Future.delayed( + const Duration(seconds: 1)); + if (Settings.glucoseMeasurement == + GlucoseMeasurement.mgPerDl) { + final value = int.tryParse( + _targetGlucoseMgPerDlController.text); + _targetGlucoseMmolPerLController.text = Utils + .toStringMatchingTemplateFractionPrecision( + Utils.convertMgPerDlToMmolPerL(value ?? 0), + Settings.mmolPerLSteps); + await Future.delayed( + const Duration(seconds: 1)); + saveSettings(); + } + }, + ) + : NumberFormField( + label: 'Target glucose', + suffix: 'mmol/l', + controller: _targetGlucoseMmolPerLController, + showSteppers: false, + onChanged: (_) async { + await Future.delayed( + const Duration(seconds: 1)); + if (Settings.glucoseMeasurement == + GlucoseMeasurement.mmolPerL) { + final value = double.tryParse( + _targetGlucoseMmolPerLController.text); + _targetGlucoseMgPerDlController.text = + Utils.convertMmolPerLToMgPerDl(value ?? 0) + .toString(); + saveSettings(); + } + }, + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: NumberFormField( + controller: _insulinIncrementsController, + showSteppers: false, + label: 'Insulin increment', + onChanged: (value) { + _insulinIncrementsController.text = + (value ?? 0).toString(); + saveSettings(); + }), + ), + NumberFormField( + controller: _nutritionIncrementsController, + showSteppers: false, + label: 'Nutrition increment', + onChanged: (value) { + _nutritionIncrementsController.text = + (value ?? 0).toString(); + saveSettings(); + }), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: NumberFormField( + controller: _mmolPerLIncrementsController, + showSteppers: false, + label: 'Mmol/L increment', + onChanged: (value) { + _mmolPerLIncrementsController.text = + (value ?? 0).toString(); + saveSettings(); + }), + ), + BooleanFormField( + value: _onlyDisplayActiveGlucoseMeasurement, + label: 'only display active glucose measurement', + onChanged: (value) { + _onlyDisplayActiveGlucoseMeasurement = value; + saveSettings(); + }, + ), + BooleanFormField( + value: _displayBothGlucoseMeasurementsInDetailView, + enabled: !_onlyDisplayActiveGlucoseMeasurement, + label: + 'display both glucose measurements in detail view', + onChanged: (value) { + _displayBothGlucoseMeasurementsInDetailView = value; + saveSettings(); + }, + ), + BooleanFormField( + value: _displayBothGlucoseMeasurementsInListView, + enabled: !_onlyDisplayActiveGlucoseMeasurement, + label: 'display both glucose measurements in list view', + onChanged: (value) { + _displayBothGlucoseMeasurementsInListView = value; + saveSettings(); + }, + ), + ] + : [], + ), + const Divider(), + Padding( + padding: const EdgeInsets.only(bottom: 10.0), + child: GestureDetector( + onTap: () => setState(() { + _promptsIsExpanded = !_promptsIsExpanded; + }), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + child: Text( + 'CONFIRMATION PROMPTS', + style: Theme.of(context).textTheme.subtitle2, + ), + ), + Icon(_promptsIsExpanded + ? Icons.expand_less + : Icons.expand_more), + ], ), - StyledBooleanFormField( - value: glucoseDisplayMode == GlucoseDisplayMode.activeOnly, - label: 'only display active glucose measurement', - onChanged: (_) { - GlucoseDisplayMode mode = - glucoseDisplayMode == GlucoseDisplayMode.activeOnly - ? GlucoseDisplayMode.both - : GlucoseDisplayMode.activeOnly; - Settings.setGlucoseDisplayMode(mode); - setState(() { - glucoseDisplayMode = mode; - }); - }, + ), + ), + Column( + children: _promptsIsExpanded + ? [ + BooleanFormField( + value: _showConfirmationDialogOnCancel, + label: + 'on cancelling edit or creation of a record if changes have already been made', + onChanged: (value) { + _showConfirmationDialogOnCancel = value; + saveSettings(); + }, + ), + BooleanFormField( + value: _showConfirmationDialogOnDelete, + label: 'on deleting a record', + onChanged: (value) { + _showConfirmationDialogOnDelete = value; + saveSettings(); + }, + ), + BooleanFormField( + value: _showConfirmationDialogOnStopEvent, + label: 'on stopping (ending) an event', + onChanged: (value) { + _showConfirmationDialogOnStopEvent = value; + saveSettings(); + }, + ), + ] + : [], + ), + const Divider(), + Padding( + padding: const EdgeInsets.only(bottom: 10.0), + child: GestureDetector( + onTap: () => setState(() { + _formatIsExpanded = !_formatIsExpanded; + }), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + child: Text( + 'TIME & DATE FORMAT', + style: Theme.of(context).textTheme.subtitle2, + ), + ), + Icon(_formatIsExpanded + ? Icons.expand_less + : Icons.expand_more), + ], ), - StyledBooleanFormField( - value: glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == GlucoseDisplayMode.bothForDetail, - enabled: glucoseDisplayMode != GlucoseDisplayMode.activeOnly, - label: 'display both glucose measurements in detail view', - onChanged: (_) { - GlucoseDisplayMode mode = glucoseDisplayMode == - GlucoseDisplayMode.both - ? GlucoseDisplayMode.bothForList - : glucoseDisplayMode == GlucoseDisplayMode.bothForList - ? GlucoseDisplayMode.both - : GlucoseDisplayMode.activeOnly; - Settings.setGlucoseDisplayMode(mode); - setState(() { - glucoseDisplayMode = mode; - }); - }, - ), - StyledBooleanFormField( - value: glucoseDisplayMode == GlucoseDisplayMode.both || - glucoseDisplayMode == GlucoseDisplayMode.bothForList, - enabled: glucoseDisplayMode != GlucoseDisplayMode.activeOnly, - label: 'display both glucose measurements in list view', - onChanged: (_) { - GlucoseDisplayMode mode = glucoseDisplayMode == - GlucoseDisplayMode.both - ? GlucoseDisplayMode.bothForDetail - : glucoseDisplayMode == GlucoseDisplayMode.bothForDetail - ? GlucoseDisplayMode.both - : GlucoseDisplayMode.activeOnly; - Settings.setGlucoseDisplayMode(mode); - setState(() { - glucoseDisplayMode = mode; - }); - }, - ), - // TODO: add fields for date and time formats - // TODO: add fields for glucose target - ], + ), + ), + Column( + children: _formatIsExpanded + ? [ + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: TextFormField( + controller: _dateFormatController, + decoration: const InputDecoration( + labelText: 'Date Format', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty title'; + } + return null; + }, + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 5.0, bottom: 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('Example', textScaleFactor: 0.75), + Text( + DateFormat(_dateFormatController.text) + .format(DateTime.now()), + textScaleFactor: 1.25, + ), + ], + ), + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: TextFormField( + controller: _longDateFormatController, + decoration: const InputDecoration( + labelText: 'Long Date Format', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty title'; + } + return null; + }, + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 5.0, bottom: 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('Example', + textScaleFactor: 0.75), + Text( + DateFormat(_longDateFormatController.text) + .format(DateTime.now()), + textScaleFactor: 1.25, + ), + ], + ), + ), + ), + ], + ), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: TextFormField( + controller: _timeFormatController, + decoration: const InputDecoration( + labelText: 'Time Format', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty title'; + } + return null; + }, + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 5.0, bottom: 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('Example', textScaleFactor: 0.75), + Text( + DateFormat(_timeFormatController.text) + .format(DateTime.now()), + textScaleFactor: 1.25, + ), + ], + ), + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: TextFormField( + controller: _longTimeFormatController, + decoration: const InputDecoration( + labelText: 'Long Time Format', + ), + validator: (value) { + if (value!.trim().isEmpty) { + return 'Empty title'; + } + return null; + }, + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 5.0, bottom: 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('Example', + textScaleFactor: 0.75), + Text( + DateFormat(_longTimeFormatController.text) + .format(DateTime.now()), + textScaleFactor: 1.25, + ), + ], + ), + ), + ), + ], + ), + ), + ] + : [], ), ], ), diff --git a/lib/utils/date_time_utils.dart b/lib/utils/date_time_utils.dart index 9023e30..d213d58 100644 --- a/lib/utils/date_time_utils.dart +++ b/lib/utils/date_time_utils.dart @@ -1,14 +1,17 @@ -import 'package:diameter/config.dart'; +import 'package:diameter/models/settings.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +final DateTime dummyDate = DateTime(2000); + class DateTimeUtils { static String displayDateTime(DateTime? date, {String fallback = ''}) { if (date == null) { return fallback; } DateTime localDate = date.toLocal(); - final DateFormat formatter = DateFormat('$dateFormat $timeFormat'); + final DateFormat formatter = + DateFormat('${Settings.get().dateFormat} ${Settings.get().timeFormat}'); return formatter.format(localDate); } @@ -17,7 +20,8 @@ class DateTimeUtils { return fallback; } DateTime localDate = date.toLocal(); - final DateFormat formatter = DateFormat(longDateFormat ?? dateFormat); + final DateFormat formatter = + DateFormat(Settings.get().longDateFormat ?? Settings.get().dateFormat); return formatter.format(localDate); } @@ -27,8 +31,9 @@ class DateTimeUtils { return fallback; } DateTime localDate = date.toLocal(); - final DateFormat formatter = DateFormat( - longFormat == true ? longTimeFormat ?? timeFormat : timeFormat); + final DateFormat formatter = DateFormat(longFormat == true + ? Settings.get().longTimeFormat ?? Settings.get().timeFormat + : Settings.get().timeFormat); return formatter.format(localDate); } @@ -37,8 +42,9 @@ class DateTimeUtils { if (time == null) { return fallback; } - final DateFormat formatter = DateFormat( - longFormat == true ? longTimeFormat ?? timeFormat : timeFormat); + final DateFormat formatter = DateFormat(longFormat == true + ? Settings.get().longTimeFormat ?? Settings.get().timeFormat + : Settings.get().timeFormat); return formatter.format(convertTimeOfDayToDateTime(time)); } diff --git a/lib/components/dialogs.dart b/lib/utils/dialog_utils.dart similarity index 99% rename from lib/components/dialogs.dart rename to lib/utils/dialog_utils.dart index 79380fd..4be8235 100644 --- a/lib/components/dialogs.dart +++ b/lib/utils/dialog_utils.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -class Dialogs { +class DialogUtils { static void showCancelConfirmationDialog( {required BuildContext context, required bool isNew, diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 1e5e6e4..be9e234 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -1,31 +1,67 @@ import 'dart:math'; class Utils { - static double roundToDecimalPlaces(double value, int places) { - double mod = pow(10.0, places).toDouble(); - return ((value * mod).round().toDouble() / mod); + // static double roundToDecimalPlaces(double value, int precision) { + // double mod = pow(10.0, precision).toDouble(); + // return ((value * mod).round().toDouble() / mod); + // } + + static double roundToMultipleOfBase(double value, double base) { + double result = value; + double remainder = value % base; + int precision = Utils.getFractionDigitsLength(base); + + if (remainder != 0) { + result = Utils.addDoublesWithPrecision(result, -remainder, precision); + if (remainder > base / 2) { + result = Utils.addDoublesWithPrecision(result, base, precision); + } + } + + return result; } - static double convertMgPerDlToMmolPerL(int mgPerDl) { - return Utils.roundToDecimalPlaces(mgPerDl * 0.0555, 2); + static double addDoublesWithPrecision(double a, double b, int precision) { + double mod = pow(10.0, precision).toDouble(); + double difference = (a * mod) + (b * mod); + return difference.round() / mod; + } + + static int getFractionDigitsLength(double value) { + final fractionDigits = value.toString().split('.'); + return fractionDigits[1] == '0' ? 0 : fractionDigits[1].length; + } + + static String toStringMatchingTemplateFractionPrecision( + double value, double template) { + final precision = getFractionDigitsLength(template); + return value.toStringAsFixed(precision); + } + + static double convertMgPerDlToMmolPerL(int mgPerDl, {double step = 0.01}) { + return Utils.roundToMultipleOfBase(mgPerDl * 0.0555, step); } static int convertMmolPerLToMgPerDl(double mmolPerL) { return (mmolPerL * 18.018).round(); } - static double calculateCarbsPerPortion( - double carbsRatio, double portionSize) { - return Utils.roundToDecimalPlaces(carbsRatio * portionSize / 100, 2); + static double calculateCarbs(double carbsRatio, double portionSize, + {double step = 0.01}) { + return Utils.roundToMultipleOfBase(carbsRatio * portionSize / 100, step); } static double calculateCarbsRatio( - double carbsPerPortion, double portionSize) { - return Utils.roundToDecimalPlaces(carbsPerPortion * 100 / portionSize, 2); + double carbsPerPortion, double portionSize, {double step = 0.01}) { + return portionSize > 0 + ? Utils.roundToMultipleOfBase(carbsPerPortion * 100 / portionSize, step) + : 0; } static double calculatePortionSize( - double carbsRatio, double carbsPerPortion) { - return Utils.roundToDecimalPlaces(carbsPerPortion * 100 / carbsRatio, 2); + double carbsRatio, double carbsPerPortion, {double step = 0.01}) { + return carbsRatio > 0 + ? Utils.roundToMultipleOfBase(carbsPerPortion * 100 / carbsRatio, step) + : 0; } } diff --git a/objectbox/data.mdb b/objectbox/data.mdb new file mode 100644 index 0000000000000000000000000000000000000000..c30d7a2ea6074145830d2220428cf93b68226537 GIT binary patch literal 1277952 zcmeFa2S5}_(*Qaf*@XpGMMXtj5ET^^G3PO3KvB$b2}@9t1Vu&N^$eIXomo-w%!=_a zW5$dbGiE(K55t+mtLmBAogEfW{O`eE}RCQHXS9e!e_fQlU6y)M|#$WqI zToQXOg=aNIDJat&(-rfOgnjlNd*)KPbS3+OlD!{aiMeoNKAqNUMP{@Ho4is{rkOPGrDCEGu#sSkf{@)q@dzk=29wqR{1mXBUh8_Pm zW$$z2|C)v4f0iSKr$P=Ca-fg{g&Zj4Kp_VTIZ()fLJkyippXNF94O?#zsCWw5tNv! zL}kl!?L6(GZ8KE4Hk6H{wYO5QNVCe8Yh?-2`H~EAj>t_EN@Xau${f2ay9~QDyA-=* zJH1`Boz~9Rj)r$Nc3IZGR(g4kBt@*YqwI2Rb8IuL)2!179tGt{Q8?va*PX@dN`+HF zl$Pp7b);I6G@7bSxl^u`6Xie^qok1L%0A0KVLArx%$W^1dqX+qHu*(d!6bB}ndAZN zxeGZvKw@3yhVj=1uKYs7A~jw8BZkLEQftT^WB%)y^4|~g?n~~rBELVEe;Ij~GJ063 z*f^e?xNEu>jhC3;I(Weg#o*dEY{UqEO{*~fp;6&cn!(|^ut+M4JY&pvZBxFZ{}sM- z`R3%P2ro~baQ(bXdb#m7?dhv4qnlU{45w>hcwLvq$3PaKtn&sm4R!Jl42{yX@E@$x zM1;j@{9?jlAjLm0Mi-&e#772cIvh@o)lpO?dEH1~EfanJj$D0@KEy@DO5TMADxYWx63l*U zK&->zy)gk{u^wH+Vx!{Xq6o1ex&Z&c!8)YXJ8JM?|FEE_VenY6EFYcBs> zJuA!04Cal|+txIb?8uz;9mpB;k7XhZs4oS2;lC!|p2UwI>EP-|e(fyL*Vat`fYK(>q~5P_qcK}Z2bUj=bD=m~^w5R) zM?#5o(js3>S{Lv+E1_lAeZF|AV!sOhNiFnB(PfH2Zo^?#dA z=ryF5tJs+)*`PZPUjgNmqm`7Ltp0*a#+D1kN!ev}s7?naEHqzr}q6fzmzU1zI(l6)QQ%miuhCs(3lfFQv3Iob| zA6;0u4$f)hrZK;jP5BL_`cb{$Zo$SuoZjZ@6L;qH1Q$oNro4I67^gB~$Qk)w8RLRr z4{@kR(9h9D#xVUIVg4(b^8fGX1&$tW9EZA=3#hM2(6^__nI6N8Cu&tBaipUXxncf; zJb+;w(bLQT%gFzV|5pCFd<)wfMWOFLlp#3}uYGfn=g?k*IDM}1u-~`1Qd)hu5#`6lhG+S@m z994o!ty*J4+hkiuTPv(nl=YQ4iUdWjG)bzFrb~P!PsDn$qc}~}OGJt0Q{L8@N^fPR zqP`;C>X7O;)nrwcDqWSLN>W9udZ}oY8$f$+lVg)m)>vg*XIQVX#+tzDDJ<5rH$4B6`Q7@m|9wzjpMWBiDI><+puZF-*@jZ z8Vctz8|O~mAk`8C#W!xJ;@Z9@8p1TFb!_ZTT9>T)aEEjb{dhUK7 zPfkJckoM5JCS40)V`%y6b9cm(Lt>^M0pIQv6c4e()T%+3V(}y;*CBZBm{5=_0iN3h z#Y4u|H>=XGIJnd01kY_Q&YlH$ZWR;{vAf)LqQ|oER$uZV<#X%%cy1OH55u=gbS4Y; zitRK%ET5a-$8)2gc!c%za``7+5zh?)9)X^@&d2j3`s=l#Dyje11#kuBag7i6NAwJ7 z=RP{qD_FR{FA@_x*S?P@yP$X&J{6_0?ZhzP_=V2Mr)(x_{1wo1wV-$yIj%xKWg%9o zUydR&*REF*$Ie z%0OEtB~S5f<7TfxgzGOlvNz~ikJgR?escXA?s+}AFyfa9@nbI*^H7T&dAd>+NNb8Y zK>Pwe71oc!`td{kx*x3{0{OaJ(0a(!cXwI}vX9|Rha6H5FEdf&uK>@bg5n|L;lUN? z%`8Nfb0Z(rUzdy+m_{{EiJ}fUF0_I~o>Pwf%zSpi&ue4XLL{gL*bjAu(}=$S0sdkgLn zJZHX-=X62w5W8Ts1Kp2>TV_#Jg6H)2@ti6s9$|k!<@V)v$hTA9$8)lvc!cz@l=}%jo*yaq-s@KqxF-Z~rN+1zTI*!1Bzv{}e3->wW9w;~4kPwV7@=odYptIs zqm}PrgsxB|TRB>#$lc^=vihG}Dqn(!^cQg0Ea%%r)L@NNv7>A3XQC;{=7QPIOSQNbF&IRD5X|Ck_6 zi>UB;Pyzz^mGk-Y5ArL*XBqvdp?_s@_iK4f^Zm1RvM`Vv~h*N%{DGoGwQ?iUnAv#qR`PC;nM{hjCi^kTadafTb3=hZ6cY z`zM<$vnZvcnZ!#YSuZi67hrG}H6oFHR@UY0R!J3*it9#b1?&axK6VmM95b7Hq zUM$8^8u-EB2$a%PeX#YqQ5uM;*|O%!nBza0pL4s}Ou@Xy{yNa?1+CvVf6z^c=xh3h z*;4Puy-uynFjd&S8?`@^aSciR zM|w$J#Yg{<&n$nra>lt>3;PcX3)H2>81;txXdQrDv5YVgEkklV9U#7h~ z+Dy=%(hQiq^s;S?5U+hf@fMU`dzLN%y>&_OIb=G2L1&UxuYU5!D2*H%MP zf1J;j@w(Cs7{Du#XKtQSfLHbJ;BAmEUKNueA-y*L4&MCfwXuxX`rpB8p?rtM5q)KC z8L#r+!P|~zz(e`6_&9yVwOfMnRTLC2GtRK48#9R5-~8!Suull^S``$pWqIb|70}Df zsOG6h@`B>EOm8ciAuDe^k~24i@+|v7yvF{VWxVbtyj(jtHa-&jIb3@w;Is7K!ON>h zEI#VX8`7`i`bPr1l7iy3T)rl}96r6>eu9^4KRCK^{@;sARwUbN?9;%LKg(8Yo2$~p ze0_?Ir%i^nuXPSs04Qa$LM>OzQly^J3>fw2h@-`nI9a3-`6{y%zKSd>y)1=#0<-=} z@&th34ORq4TgnzwI6nYKE6OTe{!iWjj2A$%bu@*6^zWVE;(vXfLyPDc{MZ$)?MmYK zQ<}`MFzXbU#JuDE9yH#;cbIwVvh+kufS{@LjLfUlW}?PlEx9s|i)$4K9}5NF5!#jY zSsCkbyjqKWhC6A=g%O`uf$-@~^f7*+rRiZTU`<+=b%@W4L&To7|GLJ2}2j@S4>OCm;mot^~eV%+|aIGbABfc61!pFkGcbNH8 zS9%|tmhv@*&{u7y**lvD%3SDiz|p0(s`#OLv|_?UjI z3%!G3S!DiPNSzA79d_N*mmBR;pE#mD%q zR-qrUaL;;lA^6Q@CijRkD~z8t|TzIJ^ zaU;HRKZ}p)FO{SR6L|3R#(6cCpU{^}fUoR-hOZdio5h#1xdy?{0?$}Ali(}EM+Vng5;x*2{j>O(`cRw> zWZ~;$*Aje2-Oi>9@Rj;me2hM`p__8}N~IHg+&mJS%$r{qQw^zXS*X3MeLp)#J8xU5 zt&=L-#@j|}lVDxjdOM8%FDa50@8#R&PV#J7hShWV8o5HjU-{3i_s_D;uuZc~u}!ws z+eU*Gz}J=rJAlSk4VHjhRSwt!GE`}>Dj*r`3(+dA$`||$JXIR7HBhkcK#on8O$MwF zNU=$V6#~&VTJS)i!3LqRQNx}Dxz;(>S+GJN%{s+8*;)^)60~5OpshWvHP&it$~sq> zqs&rfDASZF%4DS;a;;VRDru#sQlnIZjUq#lrbq!g^onSO7AzLD!c(D9s1=kV*DA*< z%PPYv%__wz*-CE}ZKbvHwW6&&tu$6@uvz5FbL3g_40#&(G$hOQ@@TnM?klI|o^p*` zEvMwUvK(2KEJKziOOYkZ^s;D~R^}_CWu7vPOf92ixzZeImNY|}CQXqhOZC!dsaEPM zrNNS-0UruVnk&hXWJxk4X_6F4vP3V5mT1AkLQ6a)8i^V}J1DXCg6 zHs}mGvv`mp$SfXc2sDca7y``V{sw=uxYnRGiw`smG>Z=~3^0rLH}p4)_cQb}i}yA3 zHH-H#^f8O~HuN@&_cHV{i}y72G>i8z^e~HeH*`0PcQbS|i~AY;%;H@QUCrWM3|-9P zz6M{jcxOXrvv?;%C$qSZ!N)A#(a_N>-oenpEZ*MG-YnkE(9SIGZSXdWw>7jii?=bf zF^ji0v^I;kGPE*_w=}dgi?=YeFpD=gG&hUW2HGs%%)rjuvhvo{(A4aH6GIcTcw<9j zvv?yzBeQrzLqoH8149F|czr{Cvv@s2J+pXSLtV3Y9YYBWh6*Cj3u`nc2k$>P=} zmp`OLMdbtu<^6KTo2O@&e0Duu$NtMQ+ch%Dg})k&Z7{A?%HoPe?dmN{B#&8y0Snbc zqQTcQe66gD>h%$n+m0GvH2R7XYP+W3I@yJ*^8|vqN*}!DkZhYkoYL)Rb)@uim5|aF)2KmSO!@6F$R#SsKUv;~E`dIX#%Zn#Wd^^Ei zQ$AA_v}Km`Xp5Vw>9ck}`cj&P#(XQH9+YFhtas4-!ekJUK$uvwR-9up2P2tJ|xqu=L~E>#_7HQ0W6 z&5RDJvysz7pT27RZO_%k^Zs}dsXNnq?Yghy2j&d#eO2f5&hL8Emq`O#C??K4AJV{} zzN7skeeZ}Nfyc9F?D)N6Y|r4mUs5|y9oLNdD_W(t%{V%4uGf4Yy?2p?32s)Utf}8l zHlDr7&v}?KdwU65tw~?^w?5={Mlp7cDxs&zk?QB?KAAH}z2VNL@<$s|qK~X(G=D6a z(8Mia%!uCpqwCe#>>bv4WwBdX&1c4)d{u8!mA~fbktGaIgfIwC+MoANBXS$f%54(~ zC6zf^E?W`y*euH}3_pzBtQ7AlWz2!zjy`Hvz4^J{1~=SXvayIyU+pII69yiB za^SGvw>QCQHz<)rN-|C*?ippftl>6o&XCS-OZK6R4gXosv=Uevy4GDpShJ?#v$~Aw@GLX>F3u!R=L;@ML zV3`)TK8q0@C8g2dqU*&*kLtWJ!#}ImjD^>xP@VbosP2_~?c1~c3YRZWWs46{q8SW1 zRIyG|yVQ!8E?w()wd9mNB-`y%{lyaXfkiFo?_@Ij!A+^aL~X z{3)j5r1?o4<`pC^4?WBn9()kZoevcZQLmS7)t5;LDOYD(Nzqb%8OiLL&s}Wy&1LrM z>^8-BZKFiFEKMg{r1(s9EjvA9{`-yhhpjGi!mXs&<%5%yt|L#+Y3BE2BV%hMawdd9 zXlnLVS{Lh4u6{3}DtC#Da#fbKT#w{d(hs&TK{{-dYJDc;06pYFDJ`se_qF89g>od4 z%cNp5Gx6C+JDMg-N;kQw(1zS6J}?lr=L(CBkB(;cQX(5dd31=33JAv~(;hASL*ikJ z08pm3)E=ts!zE#vN3!XmE#u`|^@%;Fj#d7;yN;&4#7)BE)uLCccb~Uj*gZ7);KHiY z8xEmFtJwCW=awXES!9Jhcaq-UA23VXy>zVYjQFl;QC?d+XH#L92buJ69vBqWL?rqg zR$>sNhgT3@y*VSL#%7kQ7VSS4l>MdQU2BOHD^fI9T>jFxy_*v_U96hdPP|~OzG1Nw z6Z)6%mri&r`nKot;<=!QQy)!Tw{FbclHoU2h4uXPOR=|pWA05nyQ@LbB1LVNjy`;U zN|{DGM^E*bvDjz9md|aMzEh0J*mvGh0yV@H&jpu1Xn=k}fDB;l0k71PO}Tt0d1+;io?up`CKDK_@G6yj0! zcf0s=Czp7{8yrUsd2`Iv#^!-RcydAKx0B(?LWU>Pq*Q=+*~-b)6glCq*1EO0?!T?o z4e_LEl4@-ZCy%LI)2BwX^PQw~Z#6G_*d4I?w&&8~Ie)yUzWC9&b?chlwGUb_-v8G* z2jae5obi6(;6F>*k6m>uDm~!XwDn~N9(O)fxyJNw6Yt;5vD#i|!J+#uE5=n#UNyGV z@S;mH+XN(t1T9igZFKi%qH}uQOlUa%K{8>|Nig>iCy z@cU1I5wSOnhj9k~35?SKMy{mTX$z#6as>;M;eA+DY1Krenalk9ZjbEX_rv#mAy&M^1vW&^~aTrtwqzhP;Z**3EU4Ekq@oy?Fi~ zFE+)W34_k=#4)*}7CsK^|E}kaF<+)YXV?C874Ow!Q~g}}m7UkO-e^^WMz8ADd-&qi z^j&uxCZ7l6ReAe>t)h%nuQ` zmj?#v@BaREz#HgWMfWGA9=%FTJ&@$5ITZlQMxyq0f)N&PHG_jlRMV@vXU*zf#9>82 zbx`Olq@C)!rK3*asD1S1It)#CWi{Nh+l@vxuF_4SFNdxUE!T+>#jvy-uuok0wd~xn z)dzJ9uX|y>i0KZ?z+Pr8?%9*uZ-t5X=wTl3-rYRjt($q=&(A#GwX1o&OBeIFudjK$ zb7xbWuoQTpVU}%R6e(cc(9P1(T7V-02qYa@hyl~t>4!Y&>@-21bk>}oC!ICB=SgSH z<0PHsFbJACUVb_sFF&1+m!HnZ%TLb_FKa%}lOJ|kJWqN_WE9IcK74kWL7wON{O3Q< z=RbQ*$_u2@2%k$wkt=E;9m}hTg>=NDwvdiJ8+!}s2#0mEHp@SDCHVQ_@{iB+^TSWK zlph@au9JxLG>FKrnK9n(;zA>>JCdop>_S(!IWM;Pqr!7Lr0MOlYn zmW~NbbHb!^^#XD7^TSW)!{^cwKA&&=bUq*W>HPe2>6jNw`9Yj~zH!eZP5g4E{`04!m#ZTwgFMc||e(}@!^^2d*mlJ+Eza07L{Bq={v)6g}! z^1x5$%O^jbFQ5E$e!bwQ^W}<#NpSM{&!r;_KL7dYeE##(`TXan^ZC!EV_x|D=cn`e z&rj#`pP$asNchiBx8jIr{QoamMccdEFShGtx7hZQ)g_prSE!D_%==9kVP8_#hIwX3 z#Rlu`F!%iZF+Ml4r!DOGrw407DA*G;u$MrtRW^+D(X!x;v+c&c0KYfB&#PMlj?0HPa+ioUEK> zTdcJAsM%v5kE%@B*s1k;5VQKQ&n&xYxiY1J-UYL4xhjeZilIcT5jCZ$&+M{cYpVV{ z{e-IXm35>{1%vTSQMqA|*f5A64-*^0`0-G&A(S5v5gS7I@nEqbm><`HhXFqxBsK)` zoJA8~XF({ltcT{CHonp)Wt) zM{MZBkM|ZEdh_GG#D-pOz)fau>e4Uq4t_aQ<#x-SHVrU*8%BxBuv%~WmL&q0PCn4&Vwx;s;z7Z|L)fLB{(d*A8dqWq)kE|0k#!%k#25XlBZx z1RZ?h+!iu9+l$~f`i+D`RBocF{=9{^y`L>Bex$d$*{Lo|yHKLCEKPrZ`ckq>qop6I zPn%jcouYUlq%qD&Qyv(ErcG^Hc?;)HELkuZ#g6mmO0j;Oew|r-t$wXpe2spMS$wsA zwORZ({cmRRReG>3U|`{=>Ql|)EA=almeMJUf-2 z^^}drFP``4(_sE;pX%!lQzCb^+-_~wh+8bmSl9o?xt>nvl`8uw*>xwndBj!Sm05Fq z+XgN662Mq)-G1#nYVMGEv)|ni=iGgqz6x%@eAX}X172XcJ=d=z<@VfGMqRRUv0QG7 zQKd(fA3N*A)6cT6q}(z92$oyI_sebJg7P%wKog4(HbYi0A1D#KX85VGzvKtsgNcvu z@C^$ep@S$@#0|?v?Rf0@(O)v&?a@>}YrC`YwaLSq4wA>d3UmA;=M6k$lId=9Pu+IR z9o>F~#C>Pb=mU!>(O|>@p+uu7ZS@k(CkUv<}a{9Ahx2&}nZ%wHo-q5yYucY$h z$Ww$jLKtK&XL{qIYmhgo@l0Es3a!|o@x@*Awr-k~ki(wp3Qzae)%7k~rsI~Yb5=}s zUU|eSQZ-9D3armPcU(BG993zO-{-TPBt>^lnc6n9O2y*mhn%XakPj5?yzb~)YL?ES zh=28kHkWd{HSE?%YDKkN)hn!BrJ>Pdr4>7!JH1H4o6qjnHbTAr_TK}q78@AR{c(dD zl&B@!gU+GsUJsk^wcjoNV&&e7@VFY69&~nfc~eBWjr+nt_R##-_?y~B7CwAF{b9WaP&xX0oIXIX3EypUT_jv!ga}I19 z{j}cav>hd~zf3q@q}qUvXR<$D-_khd-m||#Zx{RArA(}I?W&p+6JPmO`c?fnZFrDI z=BPBA#>~;Lm)a*hvIS2Iep&n7to-M-qHQ#~CaPbXm8|VXi58PGq^LEGrtb8-K5AM+ zb=a5sYJJUNzqYD&txovLNhic1{!W$7BpJ&(4-C>SML285ARm$vn6ge9C83VUEVWGF z10}Zp2zpDZ4#h5(g?(bMF~N-2!u<|9(Y)OaV0AX$z{5%tJ-e*5jwE>NE%nV~G6L-kiX-o8C3Tls2N-%~wf-}lkizr1)!mbbH3 zR5c-CT`bf?3|QWIU=W$k)a;j|jeQ_vW8Z=P82Q=QkqjFfwXY+XdC<;I_V&UNvdB*t z9uOM`pD7p|1)G(lnV_vqe?RTi$T<}~HIM#w$tY&3pMKSBe>vkcD>+WJLvi`@m~xcp z94ot9UF&PV4C-|M%FN`_w_o=@)AIQG*h)_REm}XUBfaOWf3*QgVQ3M;AheWkHsc9)iDTMnxy*-Rs#U&Hi9=({{oGnEbZVnRWmn>Q3anvhCgl8tdTun#PFbBroN9P9 zT^{gg`sRUUM&7wo%k4z9C`xpayhl+Pd$xJq?dMV^G_`rii|c`EdRg~UIWDL4d&^wO zzL2Zm!=p(EgXj~*vjd}r{oMTO8II0?qWt}YxXs=eqAdCeu?7QxB!(|f^b>WoSJ;Q! zx!EO3>Pxh?PPX$^-BgL<`r0zUmHnb^cv)f8+ z<05%vebRcUWRvwQ>!H?{q6Sf@+n*4O2KDEG_HD&I)9Dp$yVRVKAyXnoyz=Y(H%1=k?#TVb05oJssMh zeMiH@3s;k#q<37l?d{h!=j(2nE=eSEg>@hg3{nTqR672Y)B!WUk$l=8(I}{Tmg@le zjX2PKcP#2#P#@eUR?A=Z^tCCyKcjAkSGM(al;}LGr$_(NrN_5Tsb^RJshqWZN}O6T%?0z5KT738UX;GWxBxlyc2izj%Z4$?8&^Rjdjltm2(^6^*N~C#1@puh2_cXm(3nmrh3Rf&3UtU-mKn7D=s=$YE?|8 zyiw+d2L}V+wM#ehBo7S2lXahih|l30{cl7j-uwwZ9^lU$-Q^dUE>R73r}WJodTA>6 zEq%Mmf}x4-y<5y*Qq(7eD%rAac4)sMNAA4^f95NTe+9p>?q}M8i^qg9Im3Hh^>=#L z;o3mr&uqWJdB1J#h^B`w3~BK9y<^iimk$}-_R-SQy*{;E;%IY#+H}H6Q<6IQq-gJ| z^Yt?hZ5!e`TlGB;4}M$t#O5BAOqVM8#b?9qcm02zN{K$85{DqEsITky`EtT98-oJ& z9~fS5%(p)(tPx30*!HU%Q+ZLRTBh+>9vFl#5EGR7C`M2x5R=Got>Z}L6ce#YO2e<{|3?W5Yg%^vf3bZB?? z{-vw58?hoqzI0>7da$a3g>n8v*+H@6B4fTh|Mcb7-syl=ZH<@BYrN9T zJ#FHV5C+k;y4kzNB9Gqd_mO(_9vok5EAz1*%l-O~6<_`G<;QI>?O-s&%-&#ML=K~P z;?{e*8}~sdkSd_q}x3ar?gW)ZM!%(K@Cd1f8|ADTh~guf4fm zP*&Hcel?ax{#Gk+&g|5wqsrBZ7(eL)wjfNu^NA1!k*BU*6CWb4a`Y*LS2_EnR5z>q z{GJuk55*rtDWSazwc9`1tC|vCVgCU0D*+d1=A%(9X+Kaj6x9O14;dK;ABKtmZm55$ zd82&JvSF8Vr8k~m*>dgZ^E$b9D(hus!q+)J;jcG%5_Gmjr7fT0`@NX4`D9(`OiI)a zfMHnK-u`{M_afip^V8<9xS7(XZ1DBdQy-~zKf3NU_x-(R+f9AeJTM49vZj0OMt&p* zG5zr5TVkqPzWs1AI#j5mUBS7bKD5+s@a-`t7!Q|(aiUb?Bm(bJ7&hr*!lHt7VEL(U zw@2z$LRaF3Ozd!axNL}CMd>lqWL%J^P7zuDt$NX2iZK`ZXWv$KqLxh5V{tIw?Yh>C+Hj89pOxK54DaE=lfSAS%FI&dEA1Tm>D;v-`%j?j zSu{}->h~@4$GCl)_BYO)S8dnq86_tw9y*@8*LKj})^_O+7NnBrh&~g-AoP`+exCUA zoz~AK@^@M%r7p=!TOPkkyKyb8D5E zHSX2uWGd(lF%%<#V#it%TBOoMi{lg3X|Zc=-QIGyeYc1+EBv)nH{O^K(D7zv6AvCg z@!VxkoqT$Buebk!yY*^PqJanl!oe%04;ewbRc$NEDd^Amda4O`tx1~hFBATHFfijTB|63!{;95|0xv}CZDs|p z?^F7{$a&k+NmOdZJCbhc#|~Z-oy~k;vPI;9LE7#AJ|FnU?stxSZcwV#`%<*SgRE0q zDG|51?#v5gUk3-AYBm1DnuTXX`*WM@whnGqUSDJHUpr@dJ4v(krZN@6VA|rmx_wbPF)y%KkJ0{uX$@CzhN%C$?K_ zlygdUg4pM{bnXQKez7}ugPebUzbkgQYQ&#%aqB9y53*|Ch$Vqs8Rc2UFJI$YMD}TB z*MFlkDcF*s2_Oq8#B>!7B1@-=jXT3R!ap(|KHmvu^9WsREPM;p%}*B@8x;ee|J1Yw ziv_-`CC?l4;lj^HLB8KmxK9vaq>!J5`vd`7SSM(T0%IX^31y7gm#A=`AT2V)r04%X zw@(m9A9sev4BIou|4h%A_QBTrog(`aAy9tkMIuJMR+5kJAM~pTpJn!yDnpNCfquAQ zL-4SUzeZF7JS7T>hZ&-K(LU_>CZ*OAvL6`hNSq&@;swRS=w~5w-l9Q32_65QR8(-k-_zttLt}DF*6Clv{juU*WV>FWpzglu-#AjC^e7yFC zk$=|13VHT&vR#to}S-;`dbSZ=1%a3|0X?Wr6T9Ac)*D^ufeG zo5s!mo94qU;!_j|A0xM<9bzU9)O1G{-^2%@2=@Q?wQH=%uuZg`D)*LekcG-}REuF}zP&c#R&G}HZQj5>d#9C06ncf$ zI!Bcy&tP}NONJc)qV2S>2LNs73A+HO?I_p>AjdZAe{eUz|7btI|7a&c#_Jx&X1yrU zICiiYoj&m8L#2e?8nf)#zCBw9r6mUR`Xw|))N)3rpcc>UMs6pJN1Ns==PJjhbX_ne zuEf((ooWFL;?L7uckCeAzuxFqGIN`krPS6WX0N6xw?;ny>*A}|mB!4NHmBp(AkR8$ zCl4=E-1>ym^+6rC%xiwOQ<)*Jajzz_d_6Lr-K&XRzU~Lh*OPFsrm5~!ktZu0JC>c- zvu~})#eXI&Y7|rN;nAC&Umfv&FNr>TEH`s;)!#OZ+Y%~nF=<9>tp=Ij*|5N5=Y1WP z?RY2R;^mZsU%D*rK0rx{d{~}jDX#^GpEx{j@_YAywGAG4_p4U-h)u-AzU`dHSF;+n zs+ox=d0-IxsBTN2iVROo`=)I5E?-seqo&SX-znbw%;oE&X~{+RX1HhOs8cguPIXlV zNpspBxi;w&{h?Ft9f|ph{_)LtEBbN!s>kXT7pSeJl$)lX+E}vQ(8XU87WIu8raN}C z^G9HbDA(?|`b3KR>eJ(Pg%)fNhu7medNkK>{Hj~qK4bFrcl#)jJ0M9BlvUZY?beT(?H^Nn*(DxNgfNJm^i-eb&lsMV_Vl{oUA_u4*IQR3 zql$K==Iog6Juot4!@gST#kObEeJTf^coN&sCf9k%gLlFmy>dq_c&zLHt~2cDm9%WE z+Ag7y_q3!>nFlWp`D4)0sbvBiUAaBsrpNG?Z-1#@v*=f<@h>$SyQiK|*mQTBH>>jb zyLF4SlYMUnoF^v@SDrk%zWbY_*8>|~Onldz5`C32+Q>%V#;N?^WZC;2O?qD{*D&Jc zqivnuJnT35WR)p@_44$on{KQ-uZ1v(oZM&^V#V;p+%Lei&)KccPde z9{zrjxok+cmiJ#?dq2x%aX))XBx32i*tEUN^!4`wYd6T%?&^T;EEyA%3`uya1GC6q({ep)a@%4dF{4L#!!d^hx5ZF-nUQ!8nL zg$V+?0mbQxD$~Yort%Yd^}xI`Td#wf-0#;WWPH!%-(Eg^Rs8X6p;wQoUgv>9Wca_= z-{HN3P-Rj-%tvJ+i`uvYW z97F^Dp4YnwkFT#iDZe(_njI?+49;%!Jb)5yXZwQB&vfYdte%hS!rjX4(PvwC%~&$$ zRf@~R>-D~Vi;N7|r+aR!7jK0yh}`th-a_97gIa$J+f}WaS|X<$Z1UU8vBW2`zJzS% z_yj)Vgr;*ad7QG<7U7x6_m3(ya^7{7E2gUomtfTkh&C$QzI%BwX z%947%e|35l)zS&}HtWIiskz*$RJpHZFWhoH+}S>9)wTc&lv@xN` zCgOvT2L|cO6^WNE13%u--h@k`W#yT7lxQAH$Nbapd}g-S{IwwP@>b`4YrEB$QzX7x zhn~AOoO^ivb?IXl^Z=QqLkNS=@krN_^fmNRtj?_?q2A={+tCJK<)d?ZuzLrg@6_L$ zOs>|59-5RPi5L2tYg|5ke}8FwsBy#On2}Q-y;#t&C9LGC!RnV?S7Ucxf9)x5{8q13 zH|lsXb54bq6RwL6+?DrM2Oakc*CTvVPI+Ju-7x&T-PQuMDOvf_7fcfk(4rhc8}@lD*y9D=v{3=BpG651 z1NEU)^-3G&91It?nw)i{3BOweTgOkR+EC+r8{m@@2KVN_BLfOc0 z-zrm3g9)Cjt$`%G&)E1x&#@8n|)-k1R*9Xt+V!!Q4>+eGYI(3ip`#ST{Ix^ddc5 z`*j#vDlxqgT#}7Q@SZ0eXiI{f^x>QI@LfwdRB&X$%|tld;5ZHUaVU<^5m(2kkk&)N z(+)1FdtbhNlfw)c!oL_!SN5+_uPWM7@HrC?nKFpcMTEh$Y)q^87=LW^;Soyw?HjIH zr4)b@r%urBviS8||E?2WmO(g3`pjb;7TlEkHN$x}AzZX?2Egvn;l43Z!C~RLc0rH; z`DqNf#huJFK%p!6)5)RzQ-CK2GgrsqD?w=A=GSG{GM{a>h!54Lp=+;(Mc!_6K}gtF zv4}G&JU*6(^N+9JzKH-Q+R5%(?^#M;SQT%H510nN^tw15X0$ZqjLRqX0cx}P^c3W? zD9HnT;a)w*IS*VoxNXantJP-phGLj!VIGl>IxM7a!=sTY4S~-}C=qu+@ z0@Ggjoh!5ZU23bR-*oM!wO19flm^v-ypOfU5%L1tYY-Vi3h^EuTwuyN*grlzj$%Hb zfSe{lu7Q&ip-n?-F>@zx9d?E1IJm^-`(VY#`emZ6k&Bp)_Yu!&h$O(_3P%>i=fEMX zv)~&$9FnP%Agc<{ehBZ^wtLpQq#Pl#jxdF?faMz!9v>JLtLp~dwLuW2tcgr8vOeD9 z(3|q7Mv-YlOYbv0VC208kwHe5hx#0}KI2)c55lwb9$yAe!g~r<2HSsGxkPjGY?!5Y zFz*o&QQ_bu3!;&~?4b^j1Er{2>>IYS-+O6GKTGg1?-3yYtrbdGY2Y==A4($z4J*q| zq^?>6M3k+f=T6GvCjUY9QL_XSD^DD$9k?eq)_o16U~mHnsH1SVZVYl(mZanyQ7LJ| zguT0fF3bEv++k2UIZ*z*dL`39te|ZL^1f{BZ~A-XI*x!#qB9UIwkvqg7b2hGyatYL za3DuePFnDEB19=HZxP(VcRJ)uTJbK~JsQ(7E|fFAoQxoH!swg_^X@J>GTg3ee(xbH zMpu2myhUtzyL#kaQk9(_5mM zrxz<2d@>)@@F#jFKX~zxVR6`|V?M0e`mm$O^5fE$?oBMcgLwy)&o<`YuV0-0+vpye zUa6RKTTAdzmSW?;j6)z6tUlC8S{bqG2sx z!6m6;AoBmL|9JgSe2=gHBI?z6)4kU_l7DP>EXfJiFXZdLTq^w9_7u85!n5=q=CvUD z&w2OzL(MA`8EFaD&*;DCp2Ix)%i7h}1UWkOkf%EU#5D$U_l|Ayk1(r9QQICjNeK2)> z*A?$?_>%7veXopB-~CwMpV1eShnDZtt#cFdoh2;0E-AW-#R8thK(_M8QhsBi@AY3e zJ+gdf=TFXm9ti=kq(3910qM4+M~dzb*X$o~m3$XU_|DJhktu;wOCFN1v%Ek#I5w#93=u^p6f0vxVzq=VAH4=g@`7qEYf zHnSt}P7)kAV8i!O2ZG(qM+YrN*UvbfbtCqQQa$H7T*@4ji1>uM2*>AfQE~p^ElEd^ z`uGXot3)=T9$-7Wd#6rEg5eR;M;E?J+VY5~c(l@a0X`9oE77-d$T!`@m5O`1{NBTS za{Z85(5{(mb1sCAIimXQq6c3I!2F^a^!1ac>7@pYLU3dZD9i`iMMyukE1LY82L^)e zFK{^azA5UJ8GH?aH|XAAmzpC_`*H9aBr1P-__h&w9&K7e_~_po&CDVCg^kdeAu!K> zIcT9_53_B3R*v3tun)q=G3%{kQ<~(YE^m#z7Q#k;ML>bEbCj$ljiS)jXX1+!*_=D( z@%2pm;Po1Wi}`fy9FfvIu&)^7Lb#X@gxk_TP8Sjt!*b(C$3Kj%_15HXgLd4l-4fwr zTQ&SuYVS^O>SK3=;1l9RS`nvTRD4VzYbD(Z;{X#KjO}%KQs|^%i<*{3xX6>$9@8g{ z+A}>6LAPa^n10(P@s^u?Ex|&0;K?X;h~$H@Kc)8Ea8Go6u?AsVdKYOo)gOH7 z$Ltb=Zatp)#(5~QA6SBmd>QH=9pziBJ1I%bGo{eL zPeJuD%E5p(!7a-!wTr`RP^)B)8n5F3kp_+c%`Jtvu)jUi>5nB*75ti^4Ghx|J{R)qZ~vG*gRwvCTYmT2?bi#&AZ#of zuW^x0WA~58;)hk)`QQ}TGZ?!pW0#Q6S~_cbpY9#-eS|5@Ghff+IF*|l=$2I{;L$BN z(ymx~k6)i~oGNGSvO{}zc^`YB4YJB2J~R*q>4+`7t8f|!>jP(>qkoYP>2k=8*r_ey zM}`RJ7``{I;p}u<2VD!#MWtJL+CR5*w|ipiXnRRTt3KO= z+PK=J!dLcEm0D%8q9d&Re*<6TI|ARQ-yjYZ=UDGmM9bV|S)!?;R`3nJR!T}KRb*IY zSbbLARPBXz1Bt4Bs>Z4~D|c0pm6J*Z5TD!Jv^j0#Mv$T}eEcoL#IN-ydc7HA|GLxm z2Zt$9Z!CBSUzK%s*4ZHoj9B&Y&ZKoW;~p-n*iZg3zRA812Y-o(i4NLMp0Wtzzub2` z&$s&uzyDYG{lCKR|Iz<_-~Su>;lM~$^<`g*uKcUxlwnOb>Ww-p&o=~#zuw+@XTK4D z#2@qFUk2ma{Jz~lc9xi2nZ878E(|ug?O_J~$%kKCZ8y+H& z%Kb%YUZNWfM>Evi9nGA|S+}gVS(K)QY+e&s+c@Q`XKItYl9)z{qNh1`E>P6^|xNXEZ-lR zc|P3zQJllm7FAZw8PT~(53k-fK_#2@+tR7~!mW>P9~k|poYTB>Psdlg7Yd8N{LVc+ za8Rnr**xGA{g-v?=;(yh>4t57sTb5@+!JYrY;dwei+Q_Y!QU`X+tI+~EG} zwVGCT8>=6^sy=Dz=N-~ZYMx%!t)N`@05sUX=ruwc1)^& z`4iW+CFTzCk)JJduzl8qYg;BwtnPg%w(qs+y!tAHL1-BGXlW%Z!(_I;CPRJA_q)tu z5sbs3zD8qxZ7i&>B1()lJVy~3JLqDG%2H_P!&bZB_bwy);FCJO%Gjh%a(;bnG3CbX z28%w=t^cjVx9izZUr~)<7-e6kdv}i`QI3O))d$DZjjy`DoFdy@x8J0_cSkNsY@N!Z zO9+F=X6e2$!DP>~P{@(x9STLL8sK{Yu>OGyc0~7}H4^PN+!%#uAc$kNVXF>#0qu@t z=}cJ2U|m=opRQ`2xdHtfpE&bH|H1Fb>&N ztkmp@!J1n3BS#I)5%Khp5C+jh|GjH<56-QwQq}u&g%RWEZRc?vzx5|DiU!_g%bbpmeF7m)2_1JHp$0n@D zZ}g_MxrbnXYFvl9?EK`%E3$ZNxMy#u`Y58C;*9kApl+KzsAFv$TW)?h{5xy7al!I| z=%m?-pe+Sz>p^Nj^;D&vo(Vjdq*OgERA3ryh2B@p^27F8D6$(69yc zdD~%U&{Rx5<}HMW^J(n75IfDDXBwY!f%ze557{+B%>34pYI~+P9~c>>hG{rr)#QbMtK>S(B#}uV#lLmoL1ZnQyyLZss4gR(}o5 z4=!iFPa+**q=E#M22KT?f5z_L!!_^c+?(%H7RwkxVp(GPXE@ft(G3nvLs=ITF7XrR z)=q6p@7N@``K3?M_cP^k z!0Sf(iI^vtO^f-=r(A3_@chq|%Xtr%DyOPns)lvod*y=VhULNuK19vRMYq}DQ~7f= zf+6+kN6Y2n)ehmM{`RPu-+KiummPiPUOBXOFxhSoGb7B$&z6f~OFf6SjqGaWmrt%- zh|>YViceD38u%$_xnLdG@b{dtJ_~$g*v4SF&~V^5H4Z9`296`3Y?9z`ha(4&8f~?I$W(w7zbbb0ayJI zKJrHh|9k#$>&)6w#^0-%qQhp12T74y>NTphIyHZCS(FhWK1@S=T;1jT%zn(ThFPEZ?OfAqK8dS4BR*_1 z(-WKP4z#TA2bUJxCFB9(H1m^#a#6DVqi)&$Lq&(`gU? z6~xWTB3w{KWE~~eEhgajUn9!4)+**pG@>I&(ErauC^Cge8zH=i22PgJ3ObHK-5O=% zwRord+tvsf^$WHcu5jSJY>1451O2HlK|C1_ta#Yp!n)j+U6<@16QYZQcxljYa?pzS zZj!C;_RTQ{(w-t*p-f{v4U7tp!Up6c)Njr&G;`0;1|!NSJS@F~MIRUCV_ac88Svry zZ-g~@Vn2sm?*(pfX;JT^UI~tgiZH#+tgYw#=iH9(UAJp}Qi3JCSP1|xyAt{P{-4~s z<_B@9t$Ux@(kj3FV4WuUAy7L)?E88`L^11|i;cMUaDJnyp_cN=Zz~aALHtUG#9Q~+ z)8s2zmtzSwS1;4CLtv6cwFY7Zl{@rBTy*45*{`4b)q_jYj-uSraA2F`1~^Vb|0Eg? z2RO0-c_JKca9}?L#}?>snhVdS!qE#3)ZZv$e!4jLI9Et4TvD@0Kf@Eg-~@7eX~#<6 z=yG0|j=DuCk0>AUvAS0NF@w8>!uJgDxeKJfQyu0qU|jyS*@wny4{Kt&rT4MjhozNJ z5!hP66SUG~j}CV-{ywA|{>zK)Wg_!~gLIg~F)o0o0tlR{gx1H$N=WOpvFV#19Hg1u zHvqbCvGK6?2Xw#M!S){s)H(u(S^uCrmz2Fh5;O7#;Is;hjfM`L4}AZMfzux9t(;vC zvAp`lui3KgYD>JqJv<`g<6^>a(~&&6fpP*koc$wf(JlK%D{oY_1jiZR#D+!|3j2`+e*(E_*vv&Rb=)(oO`N3>O_6ea#zmQvB z_-?9AgD*vHkXm3VkKcpW(myf~KI2JMCF6cZZ}}x`y4Q1eX=6PQ$|cr^@TkZTT(a9H z3W=tuLF9eL9#LXg?dY}1CoAMfAJLh-cmGMxaQ28HYn@_FR0^qLiAF9@tzi8GmnVe# zBX)^Vu6OH{IMTZL_wpMgfLjnfw*FLD^ZELYz-7zz6jTW5UkKVydkv%)bi9T7*0)dR z#9nJ{q}cZZm1Jx?Z$bq1lsg|tVU zz}*FYYXT9jrT4M_0q>h^i9aZR%aWo_G`+l>*h4MBMLzvZzxMZeP0m!yT?Mt%a(+3v zb3_ED_R~%Sv4Xar*r`fLK0NLA#>6PNByA?jo;Ms=Hc6nJYQvEOZD%SRp>SY3ngN;U zh8cll1H2Fl2kuvs14)bF;J2f&c7xkaf_g>TL1x{Xm2-u?2QF(uvHXOxiTUF8X=oW0 z0~<;*yG+H9_nGx?k`N( z%anV+Wjy2o7T|3q?VX0m(al;h?~j*rR$6)&`#tP_GyLpRUgUkoUZGp#*W-9>CuFt7 z{G(j5Fu3efG30&5UNJ69dtun4vK8`spU}@V`CRs?7@{8-d&J=q`$m>LuW4Z^|9stm z`uNAj>5Ls>So5lJi#FXMaIwGJN;{>C&TU0Q%qRBuh2?}g2gm7X6EI)L#@HEjr4I~S z|NLEj%qNH3ePLGbsD^`IZ0mq{Fi&kaJ-9t( zZ{04~XA|PVwvfM$&6>2M%)HC0R}IepKkU5+T$9NYKl}s&gb<3IQ`E>=u%|%+>KV%^ zdKMJ>SwKNS5fD(Z$98tb-cQcnyPjR_{q#J0JM8_$a_U*%?>xySPZHwciSOtA{r~UY zJ(6Vi+1;6)nVp@P-BlE*Toy&L9oL-7PbSCz7@nrDJ7ILW?8b?7|K#Wt-0IykGA^!< z={ytTeEzgZx31HR&!Gi@!+!8~3gjO}|0RGDtj$#p>DoT2LgONzdXKjQ{EM8FnARDY zWz-3`^@&|SRiE)3g3nuLoDa|%^Z!G=#9lF;7u@o@ zopQY(n}vj$@08_ll_-^rg^4%MtFvLDzImO^SmcJ zCEFrPmyMJq%35IuL4eE$cL-*B9LBDJ8K@`5Bg{kRA@`7YWJxbbGo(wUY0^~eF9?+? zq`ufeaL@ge`xbYDBt{Y@(Mi(XN8;AOR_=QD0Cykv*OE-hVaZy_3`wSIx-3m*KpPP< zoLC@J$mD2;lVzc$Qyv*;E8QavttEOypgp~Z0xkM@aA-4AdJ3(sm8PRzgESE>he`El zTaH@|IBAx9Cfd(%U+bRkp5=DREy7LVCU^63RlDC za#tT$&Na&=)8&*)hRa%)beA+2gG-`IgiDx9n!5r0k8lqI1bR1xyBtt(?pc7twqF^N zQ)na0Inz1kJrve1th@e{4@V59Q6-wCop$29u7eYu2GdfH{~p2rW%o>odX(h9(?2=6 zm#~hWO42*V`@f3nf1)3ddfsa>l0sH{;1Q+>{)@Ri-2Tf_PTFgsr_%I}?Y$OZSG0V4 ziJxvS;lH+LyqBb)zB6?IX+&`kzP*G`w-^6k+cO@#?yawDY>s=iJc~bnJ^s_}b^ovJ z73UlD&{s3H*Tw$<-(L4mw-@(c+cO_5Z)%U7FCX{m_PRN0kK`E5NMav%C&LQE3ajtS z4a=>*FEcE&`o7e#)av^Z!xF3Siw%pdzArK?viiQzKyDpN`wI*U7=MX)irXbnzJ*Ox4V3@rQh%F zGEP*HChlxfxOB{_Lx22Uu}$!dB@HVr-?^1_APZ>hw-k7 z;&tI(&TF`0n8w3@rMsA$;t>8C2j9OZ__v@|0@iViBY`dw^AV2f=e6{05W-7pO$!_k zkE6}IB}FFk2f^cj^Lx*l?V34s)lZ6jGM~{NqV=;cUL5^Y_bY$Gc{Kwm{T4i2S^TVe zi-)Zr^h)3T;5VoDjXBYMF$y5*o474c?tEw7q#9Wp2aNmi&J%ZCom#~MJPjQrKPn&p z7GvN`@pN$iW8M#~6ZXi9FFufdygHrIRZ1i(z3}W5!h<1a_c2U@CoKEDDs}X{7`mp? zHxu3bW>i{XPBg+KSG%8TKX3Iv1=}@UvGq`q%kyp)YNjd}k=P)q-p!7Mmpt#AV6foAwhlh7 zwL!TW{GIdGcZ)cR=nh704#v8L@tpL%1@s*=y8N}t?jZQV{qMAk)*tY)T)iQn<*TDs zUjFA+p^P0rc3;1E{pnMjD4&UzZ%GR5dFj2g^?_2COAiZ+^Q}B**OQ?;wvTQ7pzQKz zT!X*+Ti~;;gNLu${zj*XmS@Bn_sh&E>dc)HJ2)xb$@@9rbMr~9z!l?aWBsQ=?P~D$ zx1c5&t;6JgwD{*ORlcG+(K}lW6p7rpcHi_!_MN$JPrIU1bk#$@affhFQx|X z@?WvDTF-6E=D)|?I7*|i=MuO65dG{{K-t>6dL61II=b_r_U}Evl+Ap$u4eHzR~~uA zY_z~;TgU%oOtJtcl3>3E@ovgz8U5OKR6BC{l% zV4qf(Vu2e9iGJn`=Kk2pW4=Edo_ZeOWogd#{T+44Uv>1xZk5o_Z}|LJUrV>B1OK+~ z?@Eu-O~eJJ-(ozI%q{{G55u(}i2;Ry6w^A+D94+KH)_t>~jG4kHgvHRvlC&}XzdUhepKH2ZODxNiK ze=5;s!>m8DCTn4xkrzKKi&{6S=x>7;v}qUK-!ol?au!;=(ry#y_hFs8-;h?_C+EA7 z%83F@vbF2=!}$hHeq8Qy?TtU^4y@W+VDF0Fnw}|@>hEi@MRn}YM+Rz;pJ(jq;Poke zi~0ZXW1pitHcFr_hqCo$09`m*R6nBdGX7djQxEZqgF80JmS{|3{#>34{Fl=F`HyXR zOJxJtJL!ya4fYvT20lu{j%t*0rBSx1>23CBy6FR}SC8+hMkICCkc=qEFro;HY zTmIo1%>|T>meh6EyI>X#onexW36w*KfF(0L0L1OSj1uvW*wpcREe5ipFjMI&oHIqnMd zP@M#^#gIL|kjYa}A+>L`0~*ggA9?xXN5UPoVNx@>cJWJBiTu88W7{7;QyH=ezrg3i zcoOjtoMbzz7vCi*Ix3b-s+{B!Y)?E7df35f+YVj@c8q;PSIzNcM8|L)nCdh}7exr_ zC0`n))nPXjiFHF7(7Tk}^R^%Q?aB81XI3xqTGQxGv2@Z9{RZPRJ{#+-i8|?5)3n7c z2pw@gGOG<8BgfkeBTeVDN%?ZvrpDI{8~T>j#rIqf2&Au6R%l;61H2l?kDU|Faec3@ zx-=*Ha5pMTb;L#ihbTw1K;OykM=9?4xV)|-2|6yz0^M8AUQgz7xRU0L0L9lj5juSl)87n`=AbuEv4UYSA8d0 zu(&FHW_YE#;IfUQ-)PxmibLWNJBx20h9k;E>bPb6n-88fd(%5a1MJ+dy{2*u|L4*o z%AT!MCl8gQ$9O(1)<1kX3;uUDAKAM6H);ag4*$)r+T(wSZ@aN>9TcspPKN)H*DUl; z<41|brZ5{Li-9SLJStNgxX+I#6Q5V&Nu}TLkn9HA*~Pugze3~S%D;B^TQ3#&1)SQq+6WoaCQ@hxvmRNc z7OTMzJifD75j{TB!qX2OeuN6>+{a;f!tl_YDTmQue>}qT(TAaYC?1kwMAO3fkT&Qe z!DHJl^^fpt8xJy?FHbi&7!!*Lq4J-K|JcjF=gOC%H(3k_y+{3W6z}oI^d6O=#9}_^ zJ?gWg_zu;dMtWrOoyB4wv z$yA<=4~s>h@+AMQ;|>se!I!s;k1)o7!C;IjfLys{KRzsWfXcG*(ciYnMaGXp-#dz$ zV*p6L5$q}GaBV!K3o`jQ78PpnWMa(5;%SSA)(0<8ehZ#qc*5|o@e}&}3*RKXNqF59 zML5`E339e0f(skIFNj zK7FQlsNL-R`1OH%nvbXtl$bA{-l1`|_1pI~m8U#P%y(~w!^TfcANBDjD$$^TE#$)W_yC=5uHI9rMZKHFJH$ zUo6mr>SKQRu=|$&vH6bq)|tM?eDBmZ0sVZ>?m41%h5q)V=p)H7Do=^|+zB^AKA*&w zv&aqROQ(0JEa6A!Kli_599PPt#C+(iUgj^a&zG~T1DMa8l{5OsLD!~o#EX=KzHnBS zoxy+Qu0209A2*d{{OkjKRxo{M@Uy+1jK0{O(g2jBG7a!D-TRUSejSO&56@csUK}k79Q8r+8=?U(#JDvAv>1W0crlQtAsEU!i=b_2R$n9aY@3 zv_o}JVtYlIyk~n!DbG<`6xi^|{iBa8?J&KE?FnW2GutytZ4l3qY$5y!HiYuO3-)UY zvW#oV7(qKsF0(zLG~Sfh9#Pf~$pdPqmg&4{DnmFIw8OIaMxFs@#3yY2VS7Uv?Xh*$ zHd8r9r@}p-tSp;%hCQ&SQ?{3r$}&1lMLC7(JA;Sqon&&2?a4$j9$!>09Zw>j+ISq{ z_9%EjI1jUW>3yMWe8!ivz|ZzzQaPcV*k&rn;1}+#WM$3pgWkbDNS5^o+cQaJ&G4g~ zE&ObcB9qH(?<3Vlu+sbKc!cn0H|9ryTOs_cUV7gOe!iRqezw<|?I9%CSR2{VJH6jsAor*N z{a=>)8NS(`K&Dr)J%g?RPZNT@e{D?VDW4MC<42$AHySU&ICHFiun(Vvd;6$7 z;om}ch#NP-3-;oZaL*ogOU0_7P0vw2i_M+SMOqO^MyH z!N!5z!9jUcH;p&Z2b-serbzaXJWG9P!2^>g>@E$4cXrnX>nHsMtvg&NJwqQ!jxoHl zJ2t2fLOE9WxsmQ!yX;O4R?c{T2JVRF>!X`{jfvfrLEq>%TRD{1R4>?1jj{gm-o=Grn@C1bj&A8A|M~3EOrlkA7oy@%PV}?x3bT;w#&` zuxGrs&<7u!jWXl47SI&E!_%mo^ILQ2UL#gAbsl|$`L)%cQ#J!PH-mIIn$lv zC}Ot5D?qCl5`JHPIzFc03B@C%S7wK+i8ct+w)Im#h=xsmB=h~^Nql+Bc(Xgksl0Hk zXYu7M_B?i{IF%EQM@Lip^gAVXhd6zv--rg7O_+Xr#+P?Bj|aOWoV9PV({kJRa#9|5 z^q%nUZz@X<8;@b&4?>x6{m<_7rgCgNw!E{*5k_b1?rip*-OWw&1^sp$&m267cxvNu zB*TxsG4c_sht*5%3-S7lFXztpA6Xo`gPY3HyG&je224Z*Y@TL!Yg0L*9d?)Y4O4xL zZiRPdQ(1bL4}K-!x5X2?3!BO@JY`}}TLsg1CKrTvO(V;Er!|$MGW$_6#i-C403n9F zAL$l;Cs`YY#|IC=$L!IwOz_#(k0N}Zg*fv;91!iJq+L`pMB`9hOx`lM*&WqP4zW9| zg))e5+jdU3k%ubah^Us@r^N2Arq6^UTYBEhm$$4p*`3u?mg->i{J>N%qYrjRHI<{^ zc%2J>^8)wO3jI!r-9639G23(qU(O=egm+C-yG*XpxdJ487@mZ8NE7ZYcSeKOKiJa; zyBnI?XY}ENv7r6bG#b=b8V^P<3_f-zGoxR2=QHE0Gk7OkzOuRJ*&lr(KCrEq`Xi(f zIQQq?ac7T_=@&h3i*oN*-Yhxd^O8dAHy5FizFEHcPP_mIUXuUycU4x5k6<&3ByBULAYY~Cp&#K z!fRVEitumPjKRb1MrPx|?oOuqta#049JAA(i7x%{mM@?&&R-U~ zXLltN-l#1`_osPyEOgKAMyB?utdRDpemUy*GuLn719k^8d(V~^WSEUl|EA6MaB z$HK9#7|n70q;k1`2ckHoe~8@whwr}+lQ#>k7cQ?;ufg{vi^;p=V2`*;^6==i9XALQMmar6oGu5(;$rXRbEYN`T!>>rqLb0cj{rt4Cqz;5kBy>+RUt}EkX9S03sePa zwfI-53s&-Q^M&FflT#qQ6Qh$-a8)I}5EP=;D1tRXcuA+zD3w8)Af3kY0`Vvn<9WgI zbLY6oF4PAVVU({q(O9dnYxFzo9$&`TMP-OarBmvZK{{1nph~4x>w+{YbJcu7)+%0L z4e-CG;HE^h8f5h&>xT=YT!3GNTm(LKPqLA1Bgv?&X={P3DIh_T6K_0p;QKHv^uROSgWi1YWsK-da$`GAO8yu_+1eB^^jHO1awgEN?2QAW33&wy7GdY{o82=ms`e{zFqFV@x z=#=Q}iB~|TriR-w(EM3PdG>C{XPYRC(Xolm)gkI2r5Z!5P^*GfLBR@8SD+c8{`PDh z7@|{x?1|R3K{{;^UJSNi$)Al7&*ls-=5Dc3_;1_}n$V(MkcdX9(W;b6OS@J``%28N z4h#gQ0)w;=gh~}~pwXETWz{~90|qmnW1`9691@5+M5hbV1}pG?5b>TyqYSdhUaPi@ zOAqUQFb>FJYnqTCU={4G)~JHOf?7hZb&YIPdBx2->oY<7H2GM8_SI=$gBeSy)oK-i zDj-^+f@sxQt@~kOwVckUK_Nj( zttvPe+^thULsBSIDhHS}EsV2mE+~g$L>m%F0|$jf5lpaY)EGtU8krbjHYn@d&je2w zqJ@lv3KWd-(?RV7hd5}D_s^InBh2;LiDuSgk~c$@q$7JBGl+q8VzJwkVYMB z5n$FLGndr`jY^Fbfm#_1+EA-Wp>r@_e17)B}7vuoeT+tWQ3bjHLtk&o>m^HOf8osK&@Co|)f0y`!LbO;0tCe7MHBC{9 zz#z-|BpcdSDne9&ia=mX9i-L-2LfSArDa^q#LryR7C!niJsIm!T~MGFV?=@%u>3_%Y|gDMdENf4BCVA;Axb91KCldW?{02L~$DIwj_C zMUZukti3N+&4WXfLBRwYmV>mu3kn1cW#3p1=NZdH%T}HIAcO2+2>KW9up$(po=0J(ft>plg_h=1xRRXzKgIFZC6>cqo7Up5)^O*?Cq1p_qmx^qxfjZvarPBaJ zi$-PD;+M0y4igd-l37E=|W)qgpnF6?Vv!Ci&#^9a)#1{D0MLE z!h)z!=mLXuu&V@GXwz^-xYh>_#`J5F5yAqbr8VwAA zDp=oDDvjE~l$;yVTpI$(04YY41jMiG%$rUhXSde7Zer^a;6^tdAs9;LQ;#VCU1ao8dz*=JCt@BOd zET@KYIKUvlV9Uki3hTcL3t&fcm0%aq7d06KvnZxSjHenZss?6CEb*;tWD=B@GS*q2 z2_F{r!74={RJCA4Xz1YLg)7IpM%LJui)$?Fl~7PH^#;>YLxXhGT*nFWM!6ASs0;o#XZQF|!v-vHDD>i7s6bqvyPc*nffnWhl7S^pWd>VJJSm&8W z@AEwlm>Do3=}4D?Mx%fw9>#6!y6vIkg-}i*Lqv-X<}HmH?oEj1Kr;4!0y4HI(7F%* z89sP)w1i4%77(qV8c>f7on{Z8u^)oz;FH>mQVrz^8Z@F=Fw0Y53zmlt#3_xRWy^Rj z!O0uibYOhwG+LDc0R=(-N~AQ5tRp!F6oL)DTln)ar$MAb(7+354TO+Tt@hws7yHj+ z3UNS|D!>U{RRfwV!3+r<*^xEJGE=fva!uwcu~LS^0r79Z zIxSD_{9L&JDnuW-(h!KCQ6d(Nlp)*LEJn$>u?SE?6k&E&!cvA+Gh_vpAdVIt#!au; zQcg}45ap+JN-G7+vLE-~n*8rNF_;$XcG%B=>p(~+Xb(yY8)c^y!_AAC7YwI`K_VD4 zzFMcVNE)+J%uhy4IDesi0roDqckyo!)ON&d2ts$P5cZWc;vmv%pyt5%&iBHRV9gbU znB+H1?g+Sp0M#lHbYMOBjP@;TZk_*`3Zn*Vq9EAW0%6yrKo#iXmf^QTu0V=@QH!t* z>#(4rI3q}KzzRE+gB1o3qh<5|7d4AW%s|9&sS!j1s>P}sD^Q!Mn4uP8#eBy$JF6hu zwsY!B)FC_vl1xXd0B{Sspwrn*jI8Z1*UE!K;LC&lj~Gux_+h0(OAhPqv&Kl}$z{b3 z8W*Buz^mwkT8Wq$tVYx}!)rfDkg)hn%}#;f)L;a%B4hx{E3`WD0yqYfDO9;P7s4*5 z1hc}IgRlq~HDJO~~#Xd;{hJ-~Vz^N`YJ z?#TsU5r_-JE^NqPogl2uD8SpM6$WgsXm_91R;(sCq1eZy(+OUD?C-H2Zu{Bw3sf)g zHH>>I`13FwKw=}%N+80r(Y-WKy%1~(Q!(TXOmnb!SO~>R^D@hrT++bc{R2C~2BM-c zR#2)Vr^i=P!4P&ps{%x=K=ff&aTx!Z8#)*)1_=JAz+^Q-abUUDIha_!e6s%Jh}u%; z*WDh1#T_I(d=apCL3Mya2$Q`OaXPUZG1WdJvYb^hJG!yK_mNBs+kldg~toEVTQ}7$qKn$!>Wf@Pa#(Ni(f@AQ)FE<chx-p3Ig~bw3O14gfCbVu_w>Qw5Ea%}3h0AS zebFNrhiqfNvxiyGo1E&v#&By)?AZ2)z-d@{gnJFL8|PY)Ngb1I&Wg;X(N-ar8yY|K zR2Vs78v(6rZ9{SGA!iDCPC>>V8i;g69l~NxD`nm*Z4H6VNSp9V_qwyja&5F#aCD&; zYKjI9LIe>a>9C*3x;tME^QXnL%`kuE-LOiiUhw9Fw4r}Pt<=Gs`7bg4uoOcd#5Nc( zC)O|!OK=OCab(ta;AG?@?kqW977qY78BEgHn~hjX3Z=xl$y~J+&c4#z0<$Mp{7?)b znGp62u5ciczI@XhCVcE+gGL4ZhwTdXWu)wZ<(Inu}aIW+-l5k5{DD<4J;0S}SlXo?mb!=7!Eg3aKcgbxwGKqk~h zz^8-Z6Y7B@_`ZCmhSd?O7oue_QDEgjQ?(;6O0I_js8qZxRX_=Y_mMm}h|sevM0g&t z7hazo3!s3h9I8HrRe%K`BSAbituT5qp7@{r=zVrDwF+DT%O3^f1ZqgPQ^TKa!-DqU z8AVVI)egitV8aq>MQ~v-))?eY73|%!k}_m8&b@gD{s$=akfS);170{VBEkWz5oZq@ zhK`i0oKCe^*=k5>gS!~+6l2&!paZdz!$r*}8IPh4FjyqR5Ht;rfJ*MjTWi{mTdQYM zl5p1ukMYkGF__V?JB4=sVhIleEp1$KbcBbgS<`M+3p6-B<8xbuWf+b_EJ@+X(UDVF zrEuU^VX&I7HL)J&&uthU9n20e5F_dz_HhI~ARgYjO2&_D7xJgjoMR8J7Li9dg9fT9 zHj-mDhRf8^B*ohO1fFx;?5DL4YZf(aNUQZ}ObeR+f<-#EBm_e_K&U#109&dQ2>&*Z zLN-<-Ekf{cv<4QB@H@i@j18s&X=c`I=0fG8KV7v6?|_48n~ZjoDYyqWD7{ zpy@-*(oq2Dg#!tc8!L3+7PfqZ*^&VS3KeW8W;|L^iq*AC)iRN<*HZK=`Iit2hxI!G4IPl0*j)(KAFD=(8`E%w zO`U|K?vW{G(D^YnF<{PjrXZ{UvBiPG{3bYs0{f#a17k%cblINeGQ2Np6<%<7O0bGT zpfPktgyz5rU|l1dglUIpF2G4=hhaPs#Q_Nivp5;YKLKa6+-a2#@*=ud(t%|vI7kr$ zmpzz{ZeujwglPTFXUbUYT88Tjv#kzWfk5A|a0~W?Sq-tHUexAK8T+DMz!(ZYu?jJI zST#etg^kRS1=vw9%r{ehQAZHE2XinyRXEKGwth$?751E3SILMkzGq4j4na(a$HF1G zC${lH+pb3k!dVypTpbkAe4u!kgkhtBJS3&i(MdR_jqSEKgnm)`FjZnHioJJ`t{4f5 z$%E^|x=Mxt2REBq7yeB6VK&5(3}m3El`%OVuvOH7bt)wi$62P-jqBMdAvwBXE}YPS zWj`PEj}2-#Zv#6JXp^LkRh|KF-FR-C*YGdXniVq&FTKqc-vTA;3#Mk6ltBtO9fRV( zp@xG$1xju1JY+Crpt-$l*d10rMDAd^##UFvE+80Hhh2A;HyEm#Mt6$M zz0Kh`s5c0%d+fcz?pBx1g7#(gMe#bTfRbU}PP>Zc!i-DaxjE>+;9IvT{ zEreWYIA+z+UUa@$3w2v8Z#h-?p?i?(1GdHj6l19-=S=pf{qi*^_6Z;;ij*xnD;IWt z*liq1?8Jm5(zNR3+V){M7ogklp-Dg}`hoSN%|vf+B>pT5@uxY%icFKElX~H_?PP0A z+l!Ge;OyWK2yF#IilAI!wM_AWLO!*Rdw~rWA^>g)?BYYH95@Y26>|s86M4P(E=kc* zu|h-h7tZ21as{M-U=olRwLuPK)3Tt19xyhs-NM{8>>w(jW_OE2$e(o?gog51@ z6PCL;ISM<%9qHP+uu%vLYkp@YqKV-80bqfa0ky(x5-+WDjoH-L#fMn|VHkA!8TM!D zAZ2XkaeHPnO&KPd|F_fBKTWPy(1FuTB%6B>BJLIvlVW%vNf7Oz1o_w?*B(L}agrnM zMj`%eGJY=po=)L69iWe0V2(JPFUzk?0Wi)^Q#OxXNIJ5jquwA>1|2npP*2)x0^1WvNE>Xd3Q>p1Kr}2l8YvuBr88zg2S>M1 zA0q1!<%5VSjp+?YcI>0T>H|76`heYc#taIzM(h{LVkw8MQR+aG#~7daW9qP93id?o z5>uNnhTw5n`mtY(V#Z*DgMrpm6>Sv3-c-afQ{)_-Xl=~E7EYYnOIs_D1GNl?yBITI z)xut7cnx6L!TJ#$XK!FSqQkBLCVD{wW`YCps1$JsFC6efh|!ue5G@0nAkLD2fdI!5 z1)4Gtn+eYkLfy$}hdyBJjg715Of3uwfd<}$jf=rSW_EOvcBsLF1G+H20J(^Xj?DfT zEno!(c@r44DG|FWaIiFaB(bnHwT*GXu{|_Im@8o~!d@0rRfIj5Oc8L3t@hATO-%qS zpaKRS1UM5$&|y<&(ICbTOJ{68hTRj@nKD2k*fN572^GOps51e9^F}CS7zg+Pi?n4} zVWJ(7AP@_H=>#QAq$)NR70_!lY)Ci8(&(3seb2?fR= z#!S7LobbH$WpZ>pu0d`j=-H4>&G;R&NCEjsf0bXgI4Lnn28d;o2 zfJc9+P8#K|ahoG)CE4MY>UPT`-D9j*qE|C7otK~2JI^bgJ3Qxju9WomZ0lLo)6esr z?22rMY>uqItgWo7EXA#YEXvJKCX>DMc;s=#t3mO!~t8mg^Pw{qBBlE8VBK_jiwSZ{V(R_j9i*5xb|k zWk}Xa(j{rAH&GHH36tn03W;3eBjF@jZkcYU+%nLYbhk7&gIl6ogj<-K-c8{qck^-M z+_GFVT~E1YxUO|gcTICOxF)(rxQ4mvT@|i!S07wDmgSP^a>^ycWvxrPOPY(pCDA3q zCCo+dqHvMB__%N`S>jCbDRG8)tvFqrCN_u@#S!8#v0khY%f&uo&OJ+#$u3O$7Xk_3 z^Ye3J{h*HzzFjJEKH}LnD5=csMruyY?qrfui=GZNx-Jc@8vK47IQZw@^XpYeYpNbJ%7R7PJ5lhrhPa6)j!&U zm#R2NR$Msc+kX2i%xvFzp*~;y@PXbRw_lnw>%m`@rkxnIZ25iolLxo>Xw}K9!%Osbzp$}js3J|`)AnrN40S>#E{(F_Wx&$)2ah>L zuJ4h5;F?-xWD7abB@Y+_0HF$lMyeQjChH5;igFB`5O$XJFe6(@4B{*&eYxxf7Io>yh%Md*8#-_ zlp8Yc-fg;V%){Nsa2S6zxSuVRi{oOrwp=qopHuw?Ma|#;?&$l{<&}zjWxH^q1ExM7 zc-3%al@G68acukG{&(6%>koKUs&R60w~#f3aQUEROnSF3@S1CVq|A2EiYofXi;E2Zqw$Q?fBtydWqToUN^0d&E%)}()Gd?nOmZ{M44+*cJgxrvq5TUN zY2L(kJambRoVZ)gz7C+1pe_$*pD;hnbbt&0dZXuV`9&h7s**xkNu{F3B-{@Y!?$aX z{kX0{w8S^!&ihLlxFp>IOCLqE%T+u|idT!??>*nESR+o9WP)Y4cmG)*icTF;scVC{ zpwlx%z5dzVPgZH(`@9RDG#JzSyHy6N9_@yZRE2 z3o_^JKAw3+o6s;}T%uEe|HZaVK^NvcTgt#4)aJY@@rwps>Qwgp{jD2&2d(*dj^o~$ z^CoQ37rtBZAMc0_Z<|%?b!QkSdScGgHMoAN)vZ-!Y< zy2Y-3xNz&qmVKix;o`v^<~p*b-)y(}!i5HTCRQq5E_3@mj@x6-yL$g)-Vd!4_Q;Db zK9GLAdOJ>}<@4yyI{v!WnUDGJKDa54zZ#UjUBQzuoIYWs<;Ls!=nGv9oE%G^FxGgV zhE|bk`Hr7NK`uOT^Y0ml9zQ1S+Yw`-gX;?CF^eut_F6G$a%7Tb-Wg8hMHl2DJs;Mf zVhzKp57Eo&XNv*C(oJvoO+Q&$P{)elueFP}G-|g$prE08r6HWi ziEo$VTFw8n&aHVB@7>z9Yi6g?8&|)16!iO;JPW$_m)7&`zUi69z_&!>a^1ELp6?3{ z?pNBL?;UZ54{CG3_bv4Oi0$75=&xt4pS)-Q`e*7Q-uXAazdr72{@rQi!=m*kzFWFv z?cUZXg>*-60}TIpNseMNL}V$Gz;p7GI1@-{s?b&F2IMb7ffAwj3)(JBxcRpaxZn*@y$~&JX&xnI!~nxUlKr z`xhQbY`VyGl+$|O{30p$!|gq)gDq;+^5ven{L^Cnn8~q=GYfY zsO#cl{#@Lnt{@X<9uRI&X8q$0@3t%@ZhN}fjnT_PPWJD*y+D=6kxwP}FW()1)x$#1 zc6IRZo{kRRY@`DtJ-+}wcML6BCat_AGw#{4fSQ*gH`KoDG^)IF`8xa329;4ZtejZl z&ygoz%AdCI+U@pn`HM4jT+$V~T4u9BWOEH%Kz1(<*EAhLti`YqBSsxDa2d_s*Qv^0R zzB~BbXQ=XW@yvO>&nD)HiaA}acU(&3%Ofk73`*Ft%xxv~VIhs=DOtH&md~2m2S>U_ z?LE7m6ZJtprDcCt_L_BOi*iO}^DN+8B3DvBP+Ty_=hQ|yN~6+bBZ^QCy6u&sl~ zi>_hKwShzn;g^PFAYi#ZQZpF}xV5YQ`tkpNDP`Ob%Q9+9&X-D2)b zBi1l7gz8+EyEf_b^wdnzokKU1cBebF^Qcy+dd(-CXf5Awj#ED0SLWEN zecR{9{Zl$U{Nm(#x0=j;`F*|Q$PY(~SIQEVone8`whn&n(0W~gijqO6+ei%~IS1Oe zQ~oSKCH9Gto7(inZS#8E1*{N`9P)fk`D~tg1WF$M@b~H_^~01a(HlQxRX6OM(Up`T z!z|Zs^p|Lz9zQ(BJ_(loCGmFf$tAodB z@#+(980ExVe(t=rNX*@GEs{Myi0kfu=}hx~20;Gw{14_(pit+Q`iN9c=PM#k35$)! zrNHvA*uH&Z<+WoYdnLpr;AgBLy54)%to^AhX~$WfH;4VE8T+lP>PO|pZ@AwEFKE*) zyuWv*y9F1`>UQ^8aqaI8=ks;w-u!NGWlmJfgo{kh>v``Ps$Bs+|0vU15|>i>%&o>H z{a@s9-?Vppkzf0yFQvwK9onuAUN$sMl2jmEyf92N>Ji<=oc~Ba2lL00Ql|OiR8VOD zCaY=w_+!rG2YK#wIie4Z`nr+{E zWOne4g-4!#oO3&TLU~S9+=K`5tX=P3ZkD;13xCtG;FN@Jb^cCBn=>KpRmr^m*PnP) zdSF>|*ww+ykya=6PB!9Up%D*Pp-+VtFKe`21j${vyiK_&o5qKBi0`s;r`l(Z=Lw%S zWjY@@)2V;Il!?u6z52NQ{G92)MD&T)(58lW$Qm&7Zgjg>jV~pC2%yW!?{5)uGC&6&4&_*MsuZbNQ4u zC7_LIjR#EaF@5r@%TAfs?`~PdiT0ReYmrbz{%6S<>v~@_{N=Z^eUslKx=B_)N_>)7 zPjafVZ==roeA>s zJ^1Lr(2Q5x<&}Q(++6kI=sw?dbxnR2>-!+{1qxYk(|p6|#45*PPAtz?VsWwAZIqm7 zqX{=>Hr@M~i%vdpxmd_P|9y?SO^U19;KaZxPV3u*6!N6 zxXIzXv(C}HlNq7!QB8V&L87ldUar`Y{CV?E^IF?C71&iN&@FsV`HufY7Uo3jOz<`G zds4%_`Nl&o%bs@kxi}*=>gQteq=H2j9ow2G;QLh%9tq&Ht%HZJMa3#_J_Eirj^Km+ zho5G;mDF#^eDd*g;hX$j;)p>vewL4_wWmW?l}?;!kO{uS_ugN+S*`!1Zof`wT=Zb4 zmX9ws{urCDN%`Kh%YD07-{l6cnecM2xosUhZO=<9-uA!6PB?KT#g1m!d`|(N zn@?f|t{ATomgh?PalAsv=2G8?RRg*Y6p18Un{Rp~Pnmh~dIibRZ{#;ShwZn~f13|z ze7?nnVot}?zVZI>_uiMBDA}|Y*tkypUCQ%0dkR$U7v4uSF6&+Jvy){{PWq({9Q`u={U1h70#fR~wNJqD; zgV#yMSM9Zw#%^IxBRwvRcINgDFF@;7d3u+93ZHN9?+A)+owrDXb?2wdA6sI%oj&9~p!BHlcfU1q&bxWc*t&R$iJdu@V zd7Q~=7SgPW*o~{Ts8wve(!COgh)Xp(d3?5WW6Sv4=?VXr>Kfr!$~?Z9w~joznrvG2 zLYe?hG>0EUj$2w~>}JKK0pmh^V&Ch049ecqYL~wl7`I^55vMMZex*;0G>^4i9lUJq zUP3;I#(HF`ajZuUaOUZ7f9}V&Wmi|f4|}Bv&PvZVy?nXHWx=zpKOSqD z{JM=ncXrO)Q=ugyMCDRbmnUPLOo?dPt`45256gGCl8wCsFO3p6k%V<*NhB~lJbc1@ zIWMd)e6ZFg3p;)kg-6GAOiqz^iSCxrDF$NQjjQWoxViRNzbT~@@;iU~XXLZcuARRB zf8ClP9Vj!6iLD&x{T_YCZEi@kcg8S*AC)tKVou|5?Nj2`doitjXf;b~pE!rMPogp> zn#V%*8A+TXzsMb*Ya~T>>=+xF5{b{ATvvr@!P9(!cE5H*r}FQsRNU7mvDu1lqo0UK z(YK6a(?{Kg_fmWIr0$sR1ivBL$a@C(*=jqaN&+H#`?lI&zp%>Qq6;i`ZFf#? zxT@DCCk|-2YVhRrC8q*66cYU`faz@eJLA`MDAMoGKh*(8$|rClvhz~P*uFt^y{&(d zn1waE{B^05kA7bBZ!-Ol8Fmyocj0uFVY>h(+d6o8B6+xbAowh`Ge4rKkDa&_hY*qa z1c+LZr;bLH{8=)v+QLNALVfiKMQZ*!-vX4x2-NeR*BgqYcPYk$#1-XxP5(H-#tx*OZ>RruvW??=K0K4NSIF3-LBz72{_Z~3D-e$M06*;SIXw+~!t z{A_>dYv;t@4rU#mQ*QCfVe4X?YL1$)P#t{O$_Uy*?NOMZa~W4}A*KJ2w?_@Ucp#}uh@aNx?F6=!Z&-F#eTK*y5r zM5!Y>8Dh9frB_bb6X#TW^r`)|a)^^XQ!B}2+Q+NLwzzd*&5p;fIng7NuD|R2Jm2M$ zyG|^e_gKKCeL(^1E*Jf?OXn#;1&)NrwC|`Gw$Mx`c6IPPe|(6l8sX%EVJc527owpT zJM{Uuzp?mynA~&h^AXX+Wpwy(+^m^ftCP=%^yQj8Q&Py+<1IfmWckCc+jgw4a(9bt zV1Dt8#+?s$Y~=J~Xy?SzJ-2q)SJBxbBlfhI{kG-p!r}dEz8rL>_)IM)iZbD#R;TBa z8wR&kg>F|hX|d;A{mvg2&Q=#6yJ6yG-%Y#6i=HJ~a9~>pkAq6yHL6U8yZDLzB%&Lb*vd4yE=F}kGcEu zAdTtLenvUIbgDBq%%y1dYaMa<0UkpXVSviZ$6!FsI<6dNvXGYH%*Ji593h)#GG`~b zsO^Nke+T%5>D77l@N5_iza(WAmJauha$Vo{h`7<>nSbSRg8;XTUB*8fr;0CS4V`dv ze7)Cs(q?cX-UyD`E>!6BBv_PktK#sI+{3A56e&mY>qfP|`> zzK8FuxZ23m7TeTb`1(lB&HH`y-T9{ka&Gde_5gMebl7-&$*K_xXgJ zBc9%!IC8QiY8}Tj^|`S{x>UJ#=cg;x`Y2ybs7ltUIUAH!Ri*2f{Wh}PEJNCjeD_1W zR91qnpx(zK=qxzd({gjKl7F>$zCCr`r0Knj#Brh`rtyD!W0>MlLB-_LyPb;X;o7;p zySKI2+^~;j!WTSSJG#-$MHZac)$zZM6VHJ@n}aKkbosGm)tU_Sn|J^LX{HH(n8)tQ}zFiM5O1 z`*gAPea0P<&A#qi`pul>_X@=f@9=2NptrprR)z0#-0AV;`^?uOac$R~b&;XQ{&FoG?bl{I^^y>#a3_b=>6YzghuYZu2shHr3k-vb@2F| zpp9uv_%*aL>9_-cUx(36B=bD-QtXx=q#2pDD8fnXD@ut@PN9}0Tx)*8)%%YK`Qye~ zuJ&FiGlFrcf9z53w{A%>K}o&yX|pPEqM3aE@M6TZmj1m}?}n^fnt6P}^~_=s_1Cx` z8rrx?2kFMDiRu&slq=Yi=b>i(PWOY#oA&$;i5pRNhbMtxVRugdp<{nJQq z{A9g~zJed=9eMPvTkFuLghrqjEur{In?3q+@c9H zg5C!Q9(Oyuq^ZpcwLf2uc-(fCiww*K@?%^1IHrwpMp?D7s5AG%p&ecX?SbsoX?U5u z+s)wVu5Ih-rrA`4=xC0MPl)HeMsA$i-O#^-s;F*H)0!@-!p>0wKF*js~)iI)LTP;a->8^-7n zX4f}=rSf{wH~3vuSuO9C5HB~Kj3w`gaFk9l@zL=uW8<+Pk=IP<9VhP|n<8%7Pf#2QXeUK|05)NSGkvc1i%G&|Cf5E zd8T?sc!qi^JbgVm&wH{{vMsW7*+^NUtd&eJ%R)T;J=Xx4kLJ}&)n)rn#IJ2+eGJ!PdR5euXRp$PIERmCpu?(obt#(pVKKy2+5Zd z*EU9g_Zjj0=Xo06F|neFS@TyPF_~8^`Td;ph!#|xvePZhbHLWqL#x=nAOB0&jf?x% zFH^f?$H>?NK^JWE<1W13)#>8WDy6Iac!fgx9^?R^VY~$6DC((M@Ba!3;f;g{d!aU7~ce>V5g?`y%o8NCu+`xd) zvX`dauD-5V+5n@-5xn1LN%O=aXK(zqC9bhwc$Et+ZQoBRIVJqy;fW{O&(KE|eAS$U z3zDV%lvlepRC2lXc=Fw)g~qk^=i@ho`Mu6OnzT4EB|fXkvuUcxJ;pF>!TbH1o>0Wp zec$!<-n<#NuD-8rTYv8}?|RkWQ{dJ5k~@z!m)?3}o8Rx(p?`%;yY}n11Fv+++jDqz z+x(QE1wC4IS>oO4m*VPjZ>OHI&F_8eS&KR&dLz zirRm+-l`$HCQG!5ao7oFo8Mz~P`?vbV*bjT)MWnKMH}8{5zh+~@g03A7=R2rgHoIP=ZGKX%sAqw*R*m%^-+O%Pn4NOl{M1OpxtEVRU)9AN z?4~QVe6ekQx4N^(jH)^|{F+Xh&q+MHrfq(F#RaFrt32*}_K5e+%o2Vk@oni}-(zzo z@7iDHdeXLg8Sa+{Xl&n4)~@aMa9bbAt2=J{#MQLpZS#|y^Z|owJY0CS$v;Q?CCN-? zZA<+LtIw{C=+Nfie)u-M6{1OFED-n+)r%)up= zZ)lbF)15Mgt=&1%KPH>7_xO{~^PTl9a65EE@pWUSt3PzBT)f8G_rog7+ANmVnY(bK z89uu@cw5;odA(Z@d_p_<{E@}V8XEd=CojERJ8a(U+ntAmhE6*>U*=Uq>gPREbwrXe zVPuWcf7N=vddRzCrbzMCEALEMzI@R2LMcTL_PDV5eY2M>2i=(PWTz-uQ#({Mqj0h5 zmE#}1e$!)fuUp-Zj@>lq*5I@(w`)bliH0bf*DrLxV~(PSgvFSCmE3RU$+WACeL zwkEkm+kH?PSnFR zquTBOTi35t=)gjW`(G7lve~EaulEf+9(g%svjYqnSS$U0IIhiS$foaeJ@$3=V00VWC@Uvl)jjKn@dGAO+N|Q|^%e9cgHzb-T+RPo6l7 zi~alOGsi!?d2>0v=*_=6rtqbB_-yOo?LFt`SNA3#MHi!w;%_Hzm_t8iLDZF4NB5jSIY}G5Xl#AOTFab?{?W>hPh1w!T>hQD&k6 z6S9ZN7(iD-KR09B&S=YEW$T-@@Kmonn}4nw@U~&>oh!@YQePoS3)bL$89z|Dc1Tsn1M^ybe|%de!|o>!`^>zkg{cK)+xX!oSVD9hYxR|k)a=yh#M z8Ru4G%-svb+^r8SUd}kTZgyJp(Er1oacOyXWK=ku>9a87>DZF)QR2+H`!9}qtN*7_ z)}PKM*UajkCt@jZxO&zA-UZzfE@*Pi-1V7%np^*k`|9z>Ru$6rn)5z&_K!)uqYqwb z{01&)QI^*spCjoNmK-0pHKu6^mzW#B_(fTHW~^P%0=q}g-QMEPr7E%*23P^~61}G!R)9=dhAcvyE;Gm?U;~iLGMzXX zhy4S3w+O7tGqIxP#0J-Nk94uYBh$s;W^jr?{DIs?Q<8z*{&KNFqIXXh%VD$NU=c7lXJEg7 zI&1+lmnrTS#Qoi8xCl=P;E>q*pFRuq|K`Cv@U898YwE*IN3P}VRl0aen6F{U9r64yOa6X zKet=$dc&h4D1Z}B;e z$F|wO!MofY+xM3YYWiXHiXWm&RlZpxY}RitZS&XPt&x8C@tSoJRlIy}?3-u@-^y{F z3bpy6>ZZls-LNHP$oIDIFDPs{km7!!T>7668~=TAO�(^_r%~mrW}eI#o8me>dqB zJNn+Zc(P|}x72o}H$H#&a(+iU`@+hFmkf(Xw>#ms=iTXdfA_Up-!GamqFu(m-x}3> zv$9-t!KEi`+h2UA@S=35Q`Oe{Z^=8nM%PZZ`DJP0)Xviux0KuFZ;&kh zbGN>G`85jydn~O}#Wb^8=yT!1F`kRt`L8bXeeAdSCy1BZzP}_x`g)Z*VyWv>mo_!? z1WIi47eCZ4esr*C`1mC+Ha<}=wrhX&sfJ7c;<`?MQnSI`yw4t$vVDKU+?(SY&gk`1 z@Tx+8E$go-Yn#8YlWsx#Hq~oRO?XoD(y2mr^tEo+?f8))F0$$UCPhp(2r%>97@{VrI&5~TFLM`PrQF`l{ls8ge|`s?D%t&bHK(or3;N; zm@;us>e?lC^t-U$HFcf|)7@(22^6>6{KQWFEg4dxWm1;t($lb}ljnYaI*)Dp>$48u zf0M7y&cn)SeQ#bH?Pi<5RQ$u1qa~{USop@}^(PKKQ`+V)TQGiS=g^pgjV5(`8NBlD z9NYX=Eq=ZyuO7B=*3zMSsuj3m*S}3`YWXf4vhiW(y(QL6DY$p7?faWXR1xcDjBHT2 z*`PsD&8Ic8%Wpk>LBr84^3V2r?H?K!JH;-)?Chb7|7aPwEiH82upcHawawqSrr^_` zo|IoJ?y>h|^^j_I{Jn8jvB!pmm$yD#Q2*h&&Sz`ey+3$n`=WKrH>=sE`MGI>5{ua7 zci&!X-*0iv-ZwioxN!2ciFWy2V#|ILwr=|$voGff*f?{hU4FrrRrYQ?K5a$6>0Ndv zSKVrxzu}mBYRzS*3_*X*T$femT$o+{gqrD-=B%pdvmh;LZ=py#`MIHb$ur)QnkGLR z@ps0~3yXW(y&u3;>b$E*@nLWG)EskXn0@_DmqYU0`@Q1h6N|WZ{kp8TeSiJHtHU}( zMEzKQh4av~8binmgk+H~>x19vW-q`iOaupePG$f zcKX*k{gSLZbuVvOFkSlUPHf_jcJJ$U&uD$y`EOU>OEqJU>2BENtGpKGQH*KSte#Is zzLBNv}%(oUDY_u^VryZK{nzmD&I ziobhi!cW^`3!TmU*7p51f6lJbc})8^@8=dOu`qwfr*`>c4ljJNW5FuVLwP!NluvGI zo4-0w$)@7p`;KraT)W_qSc9E^VAZwjeSaIc*!|J+8Qz`dp1)-K{>tQq=l4|zd9pL^ za`f^}C12R)uei3fn|saBAnmPVYpy-d3bf1LmcMsWkQl>Cf85bAN{YmXZbk z%g=xRa{J!Wzb_dXv$<{l-B0ZD=Wm&CLtUZAFM+eY-mX1S(JsHkmh|(kE&8bL4~bdZ zpq!ojS{|nF{rt%4gtNbN*3Rzz|FHKaa5X(`;P|=w+9F8^S4dw%SwlFsN{gZ-gi5!4 zQ>iR*TP#_Uy$B)764^t@9zymILiR0dA^d0NoOAE#E|K?r|G)qH`@i$4d(J#F=XvIN zW}kWHnHehir+mI&8UGebpYlZe@|A6zyf3_0ML)m0j<=4C2+&gbzU6@JN9Or& zAHLK5L}g>1O8c`p*uVKOgR#1=%M0?JeryQl5zr~}ck}Si)&c7}g$%6Od!x~~Gb-)l z=Drh`3wodSIHBLeV{pjy6UyIjir;kU7c+yksa>Dxap@CO_AfV0IB>=OWCsJQnA08l zWIH7*f1efo%3x)vyY+pugOm1cW~-F{jky=w4?nrILCo=kaaZ{AOOQq4cNxRr{ z2hXpvZr)vGe6um;O4fWY#*8(qhxcB;`)+_T{f%}y)%muoozJG_rEMt7ROz2Kwpbb5 zt;rjEeW|EtU|4vC^7k8lv050NDa>GmrMARzW0{1A0DhU6HD<;t(D|gDr#+WFn60Z_ z40i8di;cvkz$PDGWX65YF%?z_9C&=5k)V_x&N5@U^Y!`e9DNS19nN*i`h@|7l>3UdYSg<#Xq9t2sr$o?a!p6xh(S1q;;AS#w!9 ztDITH%wzg9)oTj)gB^YeugA!o759gKx8+~aUOHK~3y=TY{XSuUXS-Pw= zri=+S3v|IM2BBS0TerZU!{>Oi^Y|s)d={l^fC+H5_WuZLeuJJcxXWIer*eu8EE$*K z(Dhzx?PYLz)fCAb&b9k|WjQ`Aoi}9q<31z9LUw+|7{kdK&$Ot>7q?sP)r!A-OggBV zRdXTG?%uhhT?{jyCnrBRXY9E^GY+&*go0IVUae3AhhzNZYT!))j2u7JvYiFTgk-;5 z3l4Q1$o{w%+z7zQaSno;0Y7w*E?IwT!MOlVs1p+Dr{Y8SO7IU{t@scRoi8fBGGBB! zoi7RwB~Ryzf)}V~ip)-x%$TGP{;PlvZPRt+(8^ zSlRs6=oX95wu-QN*4d}^>PJiR0Ww0*NCgL4H+NdFENoMHdBU813&W}y2iF~m?DC!M>+|aExVcmJ zhRfxmf&lToq0$}Nb6zqz}k4>om&%AH|{%u zF$S#>QR{^SByS6@$5RzKP^7bZtc8c^!Y){F1?J4lJld21Fff>X@1c9 zkM|N{)$>DaP@CcpGOd!vDwz7sUcy3e@4PQr=La7b@17(2`4r@l7Rgih{AnFM`V6FNvxmmLS^^U5DvDaNYdVO zr~a!u$C*~QwtRW@H0aFN(ZN^Nca3;92a~?F37)XK=c1ZzMFs0=h=O|PaXEo6AJiw!FV;}*pEFkwOn8B+Sj;ibn(46eVf!oJbnMYS4`Eq z>w}J09^1YA$%nz~uBWWxCztNtZoF0ZZXrteGEOUJ>tg11xqMV`pgdpBx%3{&r(BkSsabZTJ1c{iI1K2S{ZiQ+%SkR)=A6Ht`(hZ(kJO$zH8+@BscU7I1|l8 ziNgvVrpM|XZCPM@z3I@%^#&nV9yM6gVZOx+{c8I|H!5N-((+Ro2P*GJJI}}>@{_PV zR1Rzpwc%+vx5Tv?z2rVH$5ksoiL+=JVSx}?qae<4B6AeBC_iEE0|yOk4vSeBp{oO4 z?Y$zxfU;+3L_j2XhGE(gJh91L5p&Lz>|lO_uNk{;C*M0+*sMtZXwOpDlUHbG(iRqV z9TRI`Bzx+_!`PK&u;YW=kHm+kSvM-=0C74gLb*2 z9Dz*W_=ABg%algo(A-Mjd0llI1E5QIz{Dw%iT+Y)YkpPf6rk zJ-xTP6}w_-y4lB}zIO{&b#wT2KW__nCq$?yFAMEFlaEe2xU;do`Ipkvl6DxwpOjI> zgVD(&g&vLdew683+l~G9+23Pn!ribXLt8Ne@BMJ|QuJXeI8b@1y3lsvANOI6)VKLv z4e^k{LMt;xbN{X5&Vv0@N=rxfO>|m)S`6$>k?q;RX^*fs3#%xec7~?bP?~NB07`5Mvb;9B7PLexqF((cUZ0?4AH;cGcLeJd&sTa-NUC zE84Ex8it2>%YN^J#&a7?0oq76GM2x5`*!ffUdYl?`IJ$&#@+p5Q|g4y>^|FlGJ8r^ zaZk(Moz}S(=kMA#@pW*~-6f6ve)%4-@ zztcZk;5*_*Z%_TDHOU>CABxTf^NLcGZVbEWFy^Nx-uvM87PoI23>=z#Em#oXHm|)) zQkO{UQ45dHPeSn!f66#e84mxI)Ee@4inMKVO3K0_X6d)e6bT$oG-T+md7r9vGPz=7 zb?-9lXwszX1)Kfue<<&Ll(%S$bNXkuNhi+@A1b&#uxd!gCE2p9s0V$QW4hI2dagQt z!gyYio+L1$Nu2f??z7`#1Xvg!3(vdIG?-Jadnw)~S+{FgEjwxp#+I2qn_&59D`)Dw z#v!H;FvfN=4{b0$`|a}ruB+fcdFVFt zh&|--IoVG?2mSOZuBLXK&H8Tms)lIS3xV{0+m>0PcAde2ope7})S{0FkVZ;@RaqZz zWN{K}AgN3^^v1L>>E6`aS!Raj6Viv63_AADo(m~gqCYMEQC70KX+jHnd3HFHdTv|! z*%^j&PUuEHUWGBh-a2wIN?Lc{`)Rcev*SKla;?x)T6HhK6%h^mGBFdZl*`uvb9t>) zagnH6C=udpdQ^w zdUPA;BnUjzjA{VX4E&>ZUT8}i*m?p6I)noqDst2lPWqrD*~c0XUaSN8JWf7Wr31Hk z2L2B`8l2M_hhSas?*U&(2N%!mPi931_(>(8&y5Q61xG464h##6k^&PZz9$QUgQL*# zi-8egK|x``aIvNkeJkg8?BDWB7!otX5jxD6e1c&B0l?s}06GToK$B_s3MbppkqeWg zZEXSu4wT^Nt7}K|h-Lu|*a}1vnX(ddk!Nr};x};E-r^2|Tp?8BK=3hr0ZM zqbC|a?h1Yswr^1s^rM*{U*wwNWL)a`TYf0}A)Uw%Yx84D;E~y*Crm$8Vu1WHU_UcB zBp`UAza&N)aB>|u&=eXr+0P5*Q$7f%@ippi`9iuTvwGkN9oC6_D#{ntUMSZixcCJf z6<&)kyf2OdaiShUzDPw93?9g#n+;at!|iYRK;>;te}XR7oqX1xkNqHh(81;}eac`Q zd1!pNApq#jz?060QaKx`;G=%^hO)#!v~Trq$IZy}?IxdShU+RL+i{}2!FKI`awm-% z0$D(r{l6u5IHIK-n8ILgQa>+fF5gue+tCsHyLbho3a*qtu8Q(hzjli{FGW&|pJx z;;G69m2T>(+&`KVAIkYa`CaTvtpFjskPjC!9vmMKi$cT!(&(@dui&VFP-$l{((wXo zMZpszq#;sFsosxJ@K?WjKLVPk9SV#hAc=iIsE@xiAPT?>Q55+&VEEtig~pNTopFQ?YePO2 z?ed?F18Vctjle@22Mi|&pkI`aO2%}R>XWmApZe7&)X(txk$jNp092{+M&%1t4k^EK ze_4wk*&qTRt)Fp5oT&CQB?vCh7bgWD^($}x>UgFznLbj%jr7$X&%pBLM25fz9DDl* zgrGT`Bq%f>5*)~$imnNP1Dwc67^e{aDB6o*f6L#$Ykp9hzb-gR97Pu-#kZfdAV~?@KL{VhsK+2ok%`Z z+i~T3q&!b;Po^)Me4+S`?yKIBKAPQqS9wycgXuW&r80t(1_xfdMxoZ`OW5s*HJ$0wRZFpti zd_J@Sung?MvqgpAw!Ly-|6iuL=hr4QEyQT(IFmF z^i+6WxI?%^7%dzlY|rl}e9bWya)o!eF9k=rmjt^78@MY3Qw2A9;{^i+dOQMHyTLUv$wdX}j{qYh-IaOER&^|e}Bmk?>8X~)E!7TwSLk+wqfUTy%CB!@WT}6Y_ z@u#bS!=^M%4IBr_u?hs%Sr-)FYtaFg=Ua z;DPv4)xaU1MQY#>Pl_5i#IsNh99F>vYT)JoHeU_A2Y}5}1BduYeWhCY+X}$vs)-NN zIY$i~@-w#bR7*C2Ki1;SCI5=;d#AK7A3dcd!?AkM{M##KnsK1@ zTk(vH^{Q*|8c*thDy4o69@z6IhOG_oVUwmznOeU!_+a;)m-nAeu5pR~?lLFpX)MN= zM)GH{zwcq+n^K9b=bP_|eu*!d`9%vtA3bO`(2{rUmd)h(1#5b>}9Qzi-~ssmX}xKIvxVF&DNh zX!I>sx4ZUKMcxNnIVL>ow0?inX?v_DHejb>j3X?76F6Nj&qgn1oX$R9GF8vGM`6>_xHQ{)7q+v?sOU6sr=-hJHRC>`9ULmhMm1$FNp1ecOdw zUWa>|eY(Z+%3a`_@w&ktpWeP%{85%tcyH0~gWTNt5_>w1^&kP^5F~U@)H|VfqyY)Gp zx)uF0)qZng?-#56DOTGRGEv6yUv?>fL zXk*h7IUApbo_Cs{89dq1>vro@TKRwX4OJ|ep z$bgCy?Rrk~&bYKG^IBq^cXCef86YFjc&!_wDITfmG6n(>bvJl z%h(z7BRhKuUDj{;{AE?=(DByUHSM02jocemxLj+$N1XZOS?PRi2Cr|+MUj^r@9$0E zlroO5&)d~dzeQ7ilg47+OHO->_X=g{P2KP7%3~UGATcc|sZf$umrnsx^ioP#`uTFBhDgJUbwqNy+w~e0h z8{R+Mt+)#i8?DYwz1B+m%Nl!+=WM%~>-!JD80JXc7}oshB8j9@cq;^7bTF_wuD5Mc zhqMO?XIZ?SvTUo+;HNT0`BKJ#+S_>(hoXBJ|7_0_c020ZTbUc#-ZsVq!VWWY0aLfZ5PAlMZ^2j?W9ZAH9MVu$dC;D735Xt*pO zN(%PPNKE zT^;orIX}~vWxkxSPzDJAs%%^Z2P&5*WGQoDzWrIbggapx%B3%9W1$f~L9#HTo_q0u z4~rVkT>7T{-NAe9El=kH9m0P|{@J2}zT9=pl=O5>!%wL3{wzBg0{r3dK*X+r8+I z9ViJYgJE~P(G!Nje?|QZ+*FWj|MGRS2D5HG_V~PL9k_Q2#s}_EQ$Lowcat^7uihC9 ziEO;{`{AxG26)e&3&#g}J-u;o>0A^G@u!RfscQGjfKI+YALtM8 z`A9QA2k7R<@@#?4KTjUC{`Y&!e}z0~`>(ckKD7K-DJmCj7iI_-2&W5!g&smN-<4;? zaS&R8)r!~rVy;-|%>5*&;FbwoIj00hyzK(B-=65 z{Q=DQ0J`6w8ShW``!VDF=zd>jyf57^WyS;TBItCb!_=$ACH#6Rw?)PHG zd(r)#%y>__e*!ap0^L8J89$!xAIFRzNB4U$<2~s9vCR0fbpIG;{201_G&6oQ-S5tf zcc=SDG2=(k{cg;7H@bf$Gkzr9@5+pKrTbl&@h)`#2xj~Ux_>w`o;*$h3a}op5ff~P z5K~a(*Jpwbn;zep8ShN@J2B&(=>B2M_+fOvBQxHS?ss6uJJ9|1%y@gc-;Nn?NB0k9 z#t)_YZJF`5biWNV-iGe~gvx?^jW%l%^27F3S#uY|)}k=94q}d83D(EIk$>}Hbit0C zeTSFzd}(=kmoK#ce+-2o{9w4l7~MwUw*;>vjv_z8X@*{jZK?@GJ1_svmRNK`@dy+| zJX>OI8pVU%i_H;)1g8J1kCFZ2w~OAbPkh?&-Gi-@FovCi7NiXw?7EugqgOeOJ~ha% zI3M@eyZ?|GD@O7hQ<~jud*bNa3KR}$e0Ml7aKM6BS9)H~4&7N5_5#DIE{vL%bWIS3(tO zF$e-qpVqJXoAsZ%e(cu7_DOSBEtqJS4#q{)W*PY*_2?|>(tKgryVEa6j(btq?f#AH zC;;-Lf&=xdtL<)1h5c%c>=arbskz6&mI*Yjk93Z+NjP>Nsw1QIkrIF%u8%0zQ|YZK zktW0+C?n7@U@^=^uV54`frk~5V}MZ$Y5uM@JQBdS5pin84+b!zh}4b`hx=R9#E0-4 z8k~|h1ZC6URC+u$z&!wbvzqvDD|M3^xHEudX@GB310M=t8`QvI5nrzc4&!Ii;1pkM z0E0t0;A)jG*hE+(uqs@v0ZtTe)%auytc4%eJJ3=>rviu58+C9U4RAP}0!{@FX{80lRr~!^^fcMe>x6}Y{ zrvXl$FIPz?xgD(nC+mU=ys-xS1{&Z(4RBaifK$N_^OAy7^%2T)9Rd^a>2RX^Qiap^ zZ>acC_Vj%k3T_498EWuD+0)Ap72guT)78Z94q$0&;N1Xhg&KHQ0Hg2gQ261#!ZJ1S zVP8t$*P-IWK9cB4Ysu)f$qO8IQ<_E_M_9l95fH?q`UIV zwYzaoY1eRaw3E1%>;>9}+;Hvb99Qjfj-|Gdc8ykAO3V<^+j~~wUlz*N;rkUwm>E)6<9S4=Xe5L37lgNY$E7_o%~96IlBbdF34kNvQybI zpjV-ovCHQU{S^5@vz$lfkuIi#=5J)@1{QYQa2N!?Ar|nA@f-+%u5wZ=+^_5hYb(up zqIWsHz6yFU0F@8e9zzGmD)jz_g0lgf-mlQ%^nS=3A|V~UzoFto{Pg~Yg2ORb8u4AN z^guYhU!medJoJ8u4yX4kbU3{qqTrA(dVfQ~AzgZZLxHQ5I zJ{w|DgJ%{EPA?BhG`N{5^1%6=vh{b2VF;>bY^k?aTucu3Pbq=<(%F~L7VEkQ6FcjfJ;C;=wK5XNmMTMJuHIeaKJ$7W`ge- zJvu7BBZ?@oHIRHk5f9Q$AsQ2TxoMlE2#4inP&b8N7rZulsqpi`E03uBP}Y~H2Oe(J z=Z)8U{)@ZMQtpXB6R(I1agByQ3Maq$k_6GW8WpkNTYJ)*Lq6H$GXU|3VG_bm`ugF7 zx4Qpm;zj-|LvQjr;r_3tXA6nB&h*G^aUz-+cPHah4;gxqr)Si^nx1SDF|4rAd8(BU zl^#Amiijrvbw+O}JyzhAZ$yUZgI?MQEDbfr48VB;Voyq+2xGuFuu&%*g8|{NV9*_$ zSbBMZ^dO)dKTm-l-uI^#KgwH0Gs<8X0vrl@2qF4`69+$OsMlnmHyRTL-hkg9g~;h~ z|CAn;pP5#=8d`-|%&_xK*k2d&~`b?e(w26Hr zev_q8v)vPg$myXn4MBC3dn8Bn8TujQsGv`TKsiQ6d3j3$LM2iDQi+dOL=X%i+A%~A zR(bikI@r>|o9#VdB;>|ouH?DmK44WB<|?=)9gU-5n+Q!F6&JT6&dC%v#k(Tc8DCF+ z9ZNo&C?|}BQ{eIB3#?nfk-ks;-3Y(@S1H}{b9D7hH#(w=O*%dN`7u+IwS;~L6jdSobWcnU5FR?uMEA((=*~_u0DeP>%> zKR=dV$({@L#q+@~_;ax1ZOSZUxHBrjq|H*8FR&Ek^G*3VymDaAKT~AMFXcfCeyL!0 zAKv_@st+LF^9MQrmGT?^Y!z}c1h2>2$kW-Btif^s*_#rBItYdRC;ooN5IFxmu84-- z+|e(RKg3%|$E#=^h>wU~T7ehFCGPL&j1%Kya1P_ycxyBmed(a%{2Y^0AYPQ{9IY=M;(T;VoScAS$Gy5BI!EiKbELj>h&4h3yakGA=uJsZhv|6#B;SckcADVi0vk4OQEx=& zaNTqc)t3&jj$?}7C-KUd&jvv`9jcqo!TQo6Y{zkM3li^W>7s#<&cV9rgRLDGG;l4p4sbsZ2s9nQ#uk|k+lK1Cf!;-&Tav|wIcCT52gJ1U;X%B{ZJXl!IJ!^^+TyV?W}J- zB-%kkoTz6Q)?lmws)swN0!u!X=N5HCt}w%3;qF|GrKbxFMO9gbK*ezw<5XIp*g5aX5R_-qpItkFC~ zXItHLw$_&p(e8_JoWxr=HM0-oXKUSbw$zsnvRmU|ir*#iZd!&TI@Ee7MNX;T&7srz zlYaNxbYp}!heAj`mGV8Cj`vUcMgzm!Uf>;4xkjCe8(%7b8?r+N~WtKC-85kqA*1X@D`AC=rmk9sLd7`i6 z^Yf8(zM)nov3^IOR^1Qx#bF5i2CavE1I9BU065Bqrt-R$CkmC*bFCjeYaD(Kzd`3o znzX^G@pGL#$i7cm8=RWw+AOzt0O={OH+iCO zV+2p7MH9Ec}4r4~|oL%HzbrXrv1E{4|UcCGe{{ z9JL+|mN zlZqc0%jDNd$lovpDfFg9&#_+gNL=t6V!h57r}~RQGaZjXdX8iq>fwoAwAwmuT`X2rgXO!9dLtpC=O?8&DRy&-=~k7(a?ajL!c z+}w62q&K8)dV}jlkHiJPA;zh#acX{!-yVkO4X&HspnB1xwWrGCM%lX*L~l^t^alQG z^jhH?Nc{MlW_eJa1M8+Y;BV;>{b6f7kD}LnF`_r1ZhH9N(j&%eZSg`9f8p{@yC8pf z-SqnZEj{IV6!v~SqSwD}dVj6QOzcPU@a`mjnRV`N$X~y@>CyC<>!&wOtS{)|)ObQR z@7*3qudfn4rTMrOU7pmeR7`%OdERe|-y`GTKiZ&ilk&Q_CkmJMdwuA1emnoA^$P@F zMmTwp0;uLL>Kd+3J#)I1b|5@Gte@*lMcc=cR3(`0~0tZ1ifsw$9&lZ@2Bhi^GT|qUUxZ4l^ zI;`>m>(}AZjI@_;cTBz*0Iw(MUm3URS-`leQFmwlNS-i||4etoRcv>My2*y-E)~{*~Li*{YSLo_&-{2WRK!}?}STQi*3aoW2aa8+BDztja+U}gnLilvhB;8 z?9P{Tmp9OH-qb|p`z~)zrd*!fwD*QbkKT0u(o8vgwELb-{oZnCWU@^Q%S(YSK>=+L$|YaVtf$yrlVZn=R? zsu?KK?{8G-?2}u`o$*>+IajX{sqe1{A3gGQ(cljEdUSs};%7^Ceu*;v2@SS(Z1Hlo zVEJ-Zz>YEF$!RR@`&F$Qylj}W>cm!SzbnS)Nc9&*xJSyfouO7bPmPu*?m5!HA`;?P z~$UEm)cpRrG}vO#Z*QAKT_5ebq1RwUiX5*{u;KP+@hmQc%tw*ZB}yj8)0 z?3OJn*y9J!EayxkYz*ZrXJM`!4fiLpUE*dZT#su5?F`9e05h~Tgo9sm%#^MI+@1}> zKx2lnm=Z=;C%h33JtANkWc`QKUWPHlbB^N%k_UFtle%1tT4d?WrSn?W)NWIkq9e}d z`u}6_*tXd~jB$$Ob^QBvWAgjIkQ~3#WJIg>DeIDV`x+b+Y#Ox0q>tsV>ZmeeYyo*y z!GY|$xG&`8LSD;c#JyQ%o7k8>ubFxaMC`s7zx@;mb!GV=>9D1R+I^lF(&@v|L2Y75 zup!1~L2lVhj96RmgO^M3uATK6dI0R?9U0{ZuJDkC0t2ZL0YE1c!?dtK^AE1~i_e5F z3FvgpvTN$O;u)jFr>BIwZVQ_Cj$y@6jYbhE}5|wtHIcn!mE^UO6ol9LWAwO@KilEH9sA8_;?FPZ!x(LQ#tj;a&+KJFZU| z(Urm9kSV!o{7z=`uzX?)Q@nC0Gd)4pyWzRn;|#pmv!5}@d!|COo-WwBb>_py!FM+W zj9T%d;TM;gkLFxD*h{a0p4QqKCm+vm)@T2W1sxYt*X4 z2J4)bM~{ehtA};P7}bynaL+}LuvENB;~$RO?^lgmu|RL-^9R$f3L1A0NxpWvU-Af8 zW1u!18=t9+1GPDELz0dXa?K{>`k9SA;!8+diCXKyn(7Ib^NM~Os=oF-bEgl>t7F!( z*3(XzrH}W`!W)Lpg0>RxWUPAmw$qA>$l{bnrJsmV`X5i))##r#{Kt=mBQyB*;Z&#%*`w6+MBIL4=jd|NPZFLVm0<5rEhV6B0@H8Yeu5nDC0hO-DOrAK=KLDuwPYw?!FYE!= zEJ-`shlY6vdrh9`-*KQ9&?^Ub9Kx*xSz)J^p(lnnp4Fw)@#t~u7HF)rK#^|cI)=*j zW32(nFx_cnf0_pR)4d!`eN3yTH4KrKZma~H&VaqB8IY~qdKd#%Hx^SD{OU81K|7bp z;qX#{FyAPNi&v;m47gwj6JYrZC+tor#tk}jb7mf&)oW~tsHj#R^%~xFIJTTkcoCO5yF@K^Avj05pH zt zvalqMhCBAyR&l)&!lwXk|9rgL59g!NE|RkV`~6+)GZKfp{o0XrDf^9J$@*y(U|;(x z*;hYcw;7OD!1{5bxxm}GWX=8Oy!G!#Ig6SeE$m_cLCaE_iD;m_RK|hq5uIIU<^_2z zlcgeF%ld+QV!4{yqM^sWvgqSo;*MB#<6Q=eX^wZtCtwza47lNLBZbD8rQpi5$v*J1 zUmZza!q(S;hYCJ~T7pro;o`-;jNebc8{5F}WBK)$cGGp92*|vK3^2e*p-iV*r%b0* zrwG{pOXF*@0O-%JZ39ro&(YFk1(2}wSKAh#Grvfb2ksM)iTr^jyg#w{r_SCVasGch z`#)s?pzd=+|F@jKK}8qz&+NetGi?^OT|cwS`^D33Y~D1D<-EBvqcy2^qX?hj)HX4< z_f+nNFU|M98sJLmc__l;({3kz+I*$Y5v!->&tA=pR>q&`@T%paqboigN$a|~*POKV z%HgwQhsH%ae4A1>tdecg@T;>*c#?j?qs`k}n{1glm2WC}qa2=8^`fKj?wEqy#h(1H zU8aK>Ep&?XE%fxiW>bCjh40U}JDZ++`>BL$+e}NIWA1V3CbRePg8OmG;WJC;i1G@S zzIfkiswCreB2;Y!PJw?>wAt5}KK&eh*Usq>+H2UbKOmnZ}L>WPx{%= z!0Y6oTv@|W&pJBm6{&nbBP3I_|I3O8+R6Ktk2#sH9KOJ$Q?qmDCK~j(;^-v197A*y zwDc|NHey+?X(RYYIiI4ZUmgRdAkcyI1N)SD=pD_o+kn?P?f-2;aqD;fpRmg-pU3~l z?f)tIS@uAiobi{6L+pn3-aj?^39yIXo-DbD4cd>g#k*1z2Kycr9H^gNY&km^_B}PS zGpO&WdGqhHg(ufB_vH@9F>u!n17;VxnHwGR`!Wkh+i6~{#S#$U3fEuIZDYU)bc9qY znH=gP8RYL35+2|e8WxI{+H@t(C$IN#lD#X~pWFLk%EVzW-+p2>PIa9$K;y3re$_uvZn6+!d?ITL<_~NQR)`sK&%xM)tLxbY?9s|s z>5+Px%oq1H!ex!L@i|b<4-T&gC%_KJPk&neZO5I=-P~um)A}G^IMP<|#@=yt_cx=Z z$+x$hNLkTjaVf@Nk-Vion=>Hw@k5<44VoHl_Sv3$t)HE7%C<+|BDap0gPwIyQShdM z1Mya5&}*+UZ$zR{eUXqUgl$W%1~@U4C+vpM<8Ma(@*!@`oICO&L)i0WG# zKOBvb{Y5Q2a9bRVcA!&%2Wo(OYJgAB03W3RPO5FF&~?@j-%$gc+fmrK zSRI_~M^*6XXo#<+0nXO|Cub5W_{rH+EqD`vgX|Yo;1O!@!}t~&;3jI|us%vPzgh;14;NCyB&st@scgq5zfYbNJgJw<$IQuekOdi|&i5FQ>EMyi*Cf8@ zXz+74k zM&-xIc>j=3!v3Eje=e~1pQdf7ou*}|l?Jr`(?o{A_Mf3JO<)Lg{|)(;>^xxiJ`dQo z&tsS}as9NMFB$|sJI}DhyR~?@@@nADO+Dt!Bj*gc*?GR6emuKiLo?`yUVl8!Fg|z($nrguoLfzZ91;04b+$D3M1t02=K| zE5;yN30)xvZI!tf2HWd&P&~694)VdF1-hr^n&>if&Y=I4@Fo|`9G}2$0zOF}W6kpV4d6oB}*08fFR5gNR|v2? zs6<~Zkw^Z!@<;Wz6n)sI(H(4OoCCnk*dbn_q2OJKzDOdETtE60UFvg+KIE6~ApOA+ z5+`XC80dj_CHg{%JaYZodF6JNYUknjR@uS48tes@Vx=nd1rmAW`tdLSjC`T^hy2nV z^xH{&fPS8(N3I|L^3TW@ihpYSM-PYmPYjku!wgWO&y&a_){j1w|5QIm z(WmAmaovU&dWa|UnsiD;jnyk1pi8OnG*85-}JXs@xs*2TObOGE+u~oE%b*4 zDeMBn`F|(Ooo}i0NxMiZNvlYlB>n_;>C1#^!Wu!oKq4sPyYnIB6iWu~sVm@zbIdq{ z!L4+I1(<-%FXX}d0VRARtr~HexImmCo-VGRwf{fY_gA*^PuKM)?)M{Z_gf~IE}-l9 zm%^I{*`91$Hq`ci&MIN$vocw8S>Y^qaGRegxXZ7aSp;tJO9OZK`GXt$EW!PKihBkP z+2u^?bU+&46bTZpZ8T;_#ddBx>co_8HtoVb@E>E0HDuw68Q-WH8-1=_L80}UxSa=P zoY__q*I?+AUe&F>?6|J;vWS?=sl|cxMv@??$T}PM|v{m#v|9`6+ z%GMLe6mns;mGy9`xe=R~>*Ia&*p!|a;~SYLw@h~aQ}V-Nh=J&6nq^ z3XcDX&a5KMu|_j}Hk_(C|HGt%g?Yn&{4mC8GR>!}9Jl)zem5ME!l@{;oBh3T?pR$X zts%mf9(PkBdz`kH$3YPPyf&=BrfuG|)fqD`? z4%L(JO?Bx%@&PUpOV=6dK0^CBaFZ6C*V1P&EV^_ux9HTR3na$J?D?|Rc^Ag+a**;3 zJ)i!#1C>q{c{Rn{^==NX_tK1WaI|RAp;+@(v4^2Y?KaiYV>KqybDWvpuq{s zzi4F~h`+W)XV1Vk+m~pw!A;>&nzaTNq1@VkY1_pUt)52ZaBcc{%JjA2XibnuAjl*_k{Oz?3# zy>%!z+#zw*&&KJu)BIL`Tx%K?YPg)(oPlLh1qZ5MB0+T!%(D{Ne8g2rBR1BJtLbb~ zzc|N)S#kdIa=tP5V*BAImo|twelYIJp3ZP`)sewqTYt8NI?H1aM*oF%)mgYEDbmrk zh4q!Hvv8dVh>F2rz>!Rh7aYA>G7lFNK041gFTZ%Wo2(s8HXAdl+rGgJR$ERCP1x7* z>v)V2Massv>9MlB0o9$ZVjbGu=rj7Va{VPXoSxsByTtrpMLyQdtGK?0~O ztKdL+G&R>ZL$$7I(kyodxHRa%(C!zf?Agc%t{@koBFs1`ep>9tn>5U+fq%D79Z2Bc|K-7H!I3OB2`LsJY0Fy)=5Oo3vMCYzMU)(ifj$V<= zE{yGTa?7^d#$7Lk7F_(1KX$kGTb)S~qnh-fE}XNox;2p+i#QD{heku7f&Cp9gkpr zBD>)qx(pt9v!u5>Yt{3$*q3!#HL&SD^xNFY|%+Z1w{FS6|Bf`Z)rrt6v-(60C2(uXt_m5y+UAvCBY9?2 zpLB@B?DWsa&p+HR&iDD?GMqFPZmi$FIp=T@NRFjB4koZG2yn<&>GdsqJpw z<-qw&oqd@Zm#!604h}V*m2qjQ==~^@B?nSoZJsxINs;fW`Hr2E?6b>e^L^H@-h82d zyp{3I%Li{*1O!}j4fqv*Hf;F3f5cvnC^KFl^KF72@!` z4wg>aQLZ3)E8{>qb_+I583xN+DS5`V6rFK3Qh&yk)2Qk*7aZompx%ETc-DQ+6|OZf z*evD_8&JzSb-*2PWOZtwr9OiXf?NY4yh6a)D)0&p`Jgkd>2Iz}j+HXqv9GwVWPYPT zlUf+vc)99P5GL&aVt7-6Py6hr2k)A`=8ML=kqTU< z@jf5iJ5c)sfHQeYKaC&F+96ybj22#Jj}f-#_Y=P6Tw)pv^VwYC9qvoPQSK$dC)RGk z2JQ;Mbk0=4P2PCHK!G05L}145#1jg%`EU7R&Q<;x)_#5(XBFRvJ%ew`*~{_ff8bg3 zoqtbT;EJi*NeIM9QTfHeb*Rmm)8mM{y!%0VW$4MD~X zXL^Fw103i`NSL}zj9JMj7nOk95c0r%2&v%ILpZRf;4H$ytqKy6F1TB<45r36SJPnZehAQOfINjM8}APb357f7R0P!8l#D98g6NfpQh;Q~)^CnGK}2kSGs zU>&9s$mQ)_yJbJmwGMHO3|=|an8;g&{x`Ay#6kMhVa)h2x<8Z|A4>O!Fylk${$OT& zFx?--j1Qvw1DWxGbbkOdK7jIjqJ*G*JFs=l2ya6q4Ez!rvxMFbk**$CJ5&p~7+aUi zl>P8WaY2}_Hq#F4AaCi0hIiR}?(WBA{~-nX11)kqFvbuR6V}SqH!)7Ful3v2zrp=U zZ6?Hh$3QC%9SmdbIy~%>efN8(WEQIi=U4#ES|d5mPK=U~76HW;hgW^v{qA@QxMfT# z|1PGgm43$jbtc=q?QfpnHG37tXes}$_0f-8P5N7}`@nc~f6E?2dki}-|L%xu*r^N0 z@>-g&xPeCa+y`^~kRh*EW3K3k>@u|1M*B#mR)b z*)E}F=lh>teh~Dx9`dkoEne2qZhM-Yh%LVJahczBjA1Pg+to!otAY9aVXi}U3meWg zxri~c+BY8>!u!`R(5BlU<|H2Z0TT@Y}~Y7%I0$2iBTY-NeGH16^7u`g~RvvQkPegC4%0Sx;h z4?EEIz>JO~=9GK-U%uQwbUf%6&d9?~+UpkduV|3sKk|0R5rW-Iz&Uq$Sm%tR?-C0R zFBtvupRFG-htC+}tvt+gSAKT;ajyct55WuOk1Pgr&i3*!m41k{KLcfUthl_aXP9Hy z!f>Xk@okS0U|mT5o$|^MxYtS^)+cn+%sUhRx%J}U-k2Ucf87Kl8M#~*<>O7Cb^NO1 zx#zoU-{_}F7-OLPJ4=U$CGHiuhYg)aT^@GoKrUD#mVeji#I~4jlcPG>opj6Za^b;i z3@ea-=ihD89jBrRRTbGC^DXaWuBL4Ez*ddu$c~2W&(^vC2O8!q)1`4X95k(3TW_BZCx$Ix)k{J(h(!EtYVg2q ziLGkjy#Q>B8n`)t<XjMFV`01~^guYV!r7;u_+^JOB>KO@dyDA4}q)0w+2g z)%dM6#FuD*H`4%bssRrAdgxTrL#i37z)AH#6}V6X9%6W*il3<=K5EIx^icHz%5noO zJ_U!e%uoaG31FaggAS#Wir)hO<{@xxcy|CxPy>hc)K?80mhnV2a0>tflSt@l(S`Lc z6GGL%=WBpZ*8rcS0UoLWK2ZbQMGYL*QLtVOU9I#(cp3t$!ksk0ZPmcxjC_d(_#zGP z*&5)}G{9ptz=Jfv-8H~%)WBhTE7bt^(EuN!25tsmBh|n=0GNjwI2?vJsDb|jV0LQY zup3{h0UoOXK1KuFUIQG~4d7~(6WE5WM_^U>at&}R4RCrtLe*c0AC^VnYSA?T0GKzx zslcJEmEmmxpbrAqjt}9mEdZ_-9tekJ7r0vRHUI$YHgGC%n3u}%)&M{rAE*@{!dJrB zN_ZfAG06aUWrD*zsaS!|bL}kcGOaYN9I*CQ1LpD90ko96jB6w=6%{aJnPu!Wb`dLy zmCuXfxq|ttOlT#n26N_Mfhjm4;L0cF{%d)6wED3Uct^E-c^kB5YYpZEY7NusqQ&PL zXq9ljiSLU~h&PLuu;z(F#UsRaydL7F;tcjrkz$OPR?6Oa_Jhaz@e2l|rj42nW_NEn zkOv^FF23u%9KYXhBn^ImN4r$ds!YkOGT*i1Y9DSBVQA$T#rmcS4m3vGurwj~kJmS^ zt6$$F?0h%Ey)Ue?z%P-=^|%w5;eAKYGvbV-GT)DaM5=IMDj$aQlpXa9mhH+Q_Q7$i|{H+EjDO|M3H^ zH5CGB!nG#NHYQjg2C%6H%OPP_%@vnP!8E&T^9xQtC($4)mB?rg6oe#idK&Nb4X z2xisCNtygSYI(2CtNkUpYn*embUdc*yx=|X`k;mF?NTq_(cWFLb34F8%;i*Ypt16_ z)h*T#YjCU4Sh;jL8@tZcvdH!L!+SXmfQ_9E?O2Wj;OB+`{PC&oSMt6L<1g zm|K83Hz^Bgse9YSY@WO9(A5pDGrPsN+%b-8F{X z>rmKG+ilyjz06S;yL@LqbLT7LpHCO2>J=246_x8|6~154M&QFPw>fn?`TPG_TbSu? z_E>C4u7ua`(9YoT2cKe$$7~>3;Lh{U7Ju#WbK^&wCi@?p>UZ^LY~^Mz-jU&a9g`Nh z&)TpHP%JoyR>6VV0mopg_ON`smTgDn<8^Z|SLGY4U!w)~|Kdy&Hhg_i!}*Dc1Vr6| zXT4*=;bVW$u~N4TQ|G^%5jL-op%9yYa0y)g2XzVj^Ux7_^FkM0G4Q!e^!J(^($P5} zc&Ze5F+BfvnPGm@h;CA4QmkXwV2aD)FrV!Y&^;Gsf+{h_c{C4 zg+K1Y!DwFH9wlLW-2iNf#GV_YVC*-0l<5`t)XNJS1-^cLE3aaD0azQHPR=$PcKtqP z`9e?Gug~jW$9q>S8nXQxZWq&UC05(M|4x5Sh#a+ZA;29{Dg6=#j z0yIaMwxm44;$yS&r7wx&Qek*0wr|)-r54sx` zK7QS?8eqS~laz__I((-S_Crrwm@kzcPfT&+j`gMGvoa2}kH(lgtSiiCKh#3Uer94x znzbt$s?TS%PZny9n=(Eyi#n)eG;f_yp-@BPY5w)o{qG;pN_^I+W2xaQBha?O!4PnZ zoYx#@EM7S4B!87#L+{IDBHA_naTh-u>t0rJqkKfeTz?b`^*hQqP(F)qzVHM*g}Wo3 z!sD3OUY177A}tY5;69pv zbZ<_V30q$t8vAZ^gQNQd7_e-M5{P9RC+`dIRngDyuH&sEBLcJ*UzKei`0@3RqvAW+ zu5Bh4%H({g;6UT6Hlbxi8yZIHzI10{pV*r8L*O)1!&<8wj;=-g+zg-5q7Yp_N~REe z0=fvG05h%;-d0Rg522O4wBjnq#deZ+=@W14ZgpgfE5=A8zvjF9+A<6N8G7eOh_l<9u1Z7b{>H<{& zTezoq67^$2ZX6>HONfQ7FDTPsELhL>7tHqQ4e+o2>RVvlM2ovE%h$!+s5G9N7i{u2 zG|G4F(jhwE?uWbRxPt~*(N?7m+}Ww$zJ{-4*dpWt`o0q# z%qzXeS)IH1L-y6>)KXYTyE7OAq-Ty3Ws%s|_;iDf?Vd~MV$Hud?e)8BD!N$0b4GUp z9d@l8aA{bxNgqF0k;eK%Ctn;5jrC6;jrF@gT`XX%f6f9ktikgQh7QeFjvCuFG~-R| z>OK)YpPVjp`T&gev%)W(sVvH9zj=GoE`R30xi6p6{k~Vc!$R1IaFs+JITI_UNP$ZG1 z2q6g}OJs>`*+TXtjBMFMWC{Os?!7Z}o6+0y{`|iG-}m+VoY!mS+~=HopXV&k*`M<~ zGe+GC(r@spiXaRaEJ<~~ppx{7<8|io4WRnEY;Hk`dDda8hp#%#@i%H@OkWUyhaeWl z1Xj$`h=5!ZNAESCDJ^Ah6HT?3!NX3zPi? z;G?hUo8RjoL`m5|umdjS+`?s0rt%%7{p${Z4W z)_*WM#v?e=IQHQ9ljby?7stKVeD!(U#%s3g$GGe5vcMgLK&lMf0^Vl~viG&}IBYf4 z`}ocN!QXS&Shq{vyY!B3(XlkfyGTHiDg#9vL>X9Uq$R>RQ2;q7x`84_&CiK4iBVTc zJ}(%UxXoGEIYd4iQb7pu;^@dZLw1z*XF)^KkVqMX^f26yWLjb zKp69=`H+aW+H~MI$I*hq4uOuJzN+5)o{?B|YfjSM!GV5X&b{TN%JQRxgW&U!ryt8; zoziU|G_MP`%N(@?OHYui-`54pAgnm*dt%ltF`!W!$2UYt+NjRc2;}VXJ;xfHm-V^@ z_dLBnE&aT21*@tqammB9exF*TXCe#{mDftMfH(Gxm`CRGjF1;AI$6e?)3Qq$_w$EoWTp+jS!9cW~$x<$9qraSNELJtzn5%x0c_L?7iKbtc?42?%-#- z8c(m$eC8prYSPhZV?w!A5_$bA$!;+8s51FllVo{D+cM+oF|=I^WGuU}_MpL9&mWz< zHoYrcIQZdad6_8T_}^Y8>T`wr?ahBlX>;;U(g@X|M$-jRh9OH8#}@11O9 z`*n-g&?HB*%THEMw3-Knj=Q_BRL#@skBjtE7%fzh0gsPcm3h0l=_2pgpS|}i$_UMq zoQ}7eE^E6dit6^h|5`uspuYR20LS^UAOgto^UYqjf$2;RA=8=s4Mmo-ey-b?#!HI* z+Q04_JM8J0CCAU`aB%v&3(pqy*fp~2ybl_^5XNF^!rddj``1=$CHCyb@fpkNd>(zT zZS-{Bw<~SP7oT37DR1`9mgQFo2hmsYqSxue{NhdI{hM18K=pdfu6eA1)hWu_lzcVt zYk7a9=qumF*2(#6BL8SYucu;!QAdp{SDe1Q?B%C2TJ_=lF13~1<7a~HCzWh6$XwV^ z<)kxyPzU+gs)U2!xty~x=V9LHV{1~gW2;8J^4QwEZ5G+siXf%l*eFbk0e2h*`GrPD z$DGWKniNEds!p8{Ro&$@#@(Xz!r8 zGlM@X1K2gdWWp(iS+m7JY`jcNb=u=tleyS%>Eh343(QvD?#31DusD572!<)zydO!> z)L+)tw0=;5SFfarI-LkGlGl;A$c(VLA{pMdQwC;~obcR#Q4Z5!UgF_elTu5M zWv+RmoJ&rce7zQoB*N%Q6YE*h2|2W$wGa$ct1^YT15B6e`nFv)#(HX_o!&d!hDYHS z79TvuTDY{1D_NIjxQ9`ivnRv&q>8S&`|=@=Ma(7x6@5ldwIaZ@#ov`UhlNd78lv)nnYV2u9WkJA`YUjvx>e% z@J20umMD|jZ){{w|IXb!H4>4!Z!1CNTB{bOez~^^$4br|4b<%aJ%3uqx99rn^vYs) ze(&@|ccEd=s(s5-xN)TyZSw73jcB~;BjB&>FATL>f5&#y;i!{0-C#e~$$DIy27A80 z_N?$lU91;RwOih~>z9fgP1R{`Ot&3BP8@H%&SW%RYR5LK+jsoX2{oSqzJ=dAx4(wh zyHw0)8;;ggF|jgV)rz;`qNH-UQL3+@_Vr#WNY(K9+pT7u(+FgI-uZ~hd~&205Nf9L z(sY+cdwZx)QePF_j=LnA5AHEjZ7MG;r0rnsF~XOUBZW`iYu1GY)G)f+bz5W75eY^^ z+JBXg5r`rVqR;Hxt%WM&rOXNB7?BBf@oZRae!jM5s<|A7bGzx#rj@cqE0826syl*# z!L+F&o^K^puVTVZt7L{F&MV>{7_Hqpc}i0|F^Vf-gpotkGlG0?`C*^0Ve5M*);%am z7`1M;;wm~>&JPN!Xb=I`thrBD66>?%Y1G&k%S4tpcdr&z`wYecmM}yF^u2i?l(jAd zLPD^~#U(mOYi%qLF#`Lu_-f9iYCr`q$(#st3V&cj=MABe=6i7DEU_Df?3ETz+Qd^YZ0YHx;_Ye_N0@nUH8n_0+&0&c(Fbxr~ z2PhGg3UatP0$d;#U;+`?6~I_xwnV*Dy_6&7h}aS?!pc#{)pIyvbukxH7lAtfr7Q_Y z!pAsbW+`97#CRAphmZ5cd=X2;m9R>g7$0Ye_&68gOMqm24m(E;=iq8MTMXpl#XON( zDHll~jo8_p?}|mowe^_1&rEQ!nq!`Umb4X5Bb=Z-27Sw#BvwqYy?p)xWP8;MUV=kN)E| z=L2g7J)hh9_4ILNtA#l!?Lr#EiiXDd76T&W8d3=d(U&cD`Ti8<^AVm;^kt8}f%{O+ z$_u!k{A+oEzF1Fq5xKV*3x3iItf!&mU+<_ue{j}dPTrpac7H;F+(1+q!YAYg?rjKT zl>w^|hZUs;u3i96^#GqJoXba)VrFa&Vz{u3AY4R510 zd&-rCmq#11EA~%YPP_y6>y>a&U(4@LxLp~|weM6pTD`icyH>p)Ib?t~EVZBD@NLq> zqOFrRTq}IC@_6y|(8eYMke!%P=Aiv~{qJto24d)KPwZq`L?4dPW{ zAJ8P;dFRZ~o|oLNnRTDIbL6w*a5~T=-pRQ2zIeaTr@cb6-xOW>O35L~@jFcA=zjQ= z-v7AP`H!8~#keYdZ#SvIBl=OwCE*RX5k5Pag^KZxD?C#>?QS1mW&A94Ou%&?#dzC~ z**(83n||qK zJ?QJy!sEIl731CR$6eC(HJrGu{nt(dmv*XEjJF$i$K}fB4)J3zu6gTp=Dm$#yi2o+-GF8T0!F~x!M{P)lt7a=_9Vt(*wgz17-HXjtf?^(2=M<#o3ueDVtou3_T zY^4qs`|{}5gk!^NK9_lNZYak0ih4OJrg(68NyACY@BVwiqz5{A{v6sz zZEe5mgXWzZeOy}&Qwvs%w;S=}`CuO7pruoq#r}eb?uzj}gU<dbzW|*u=D&s<(KSGbKkTPoI5_OWN4LwJUeb zPwTwB%frEn-`iZV5gxTH9y96VRL55>HNzC+9SduZYmoYGM=|)qs=d-)`cgg|DAD8LYlE z=+%~|@8&7SV`aNc=Fhd6D)zaacVOF|sfzKv&W}Bv*l~a3!&}wXBc7aXRE&2he|ma+ z`7XQg>UW}TZ*WYMDcs1Zu> z9i9%XtGmqF@>HdNO!PFR^t&}+-l_K%n)H47)FEWoM5X>q(bk$GepmhNMu9&%xal0~ zdv*DcU{A&PUUh})yIL|MT7BLg)}hYsuyTC&(4DLd+#s%ztNr=fE2a2j+$m>@x0l5| z&}__{euLUUlh;qLyuAW;mC6`z!`}Qa!=5YUzgN=QH!880j@(&tAA2Sl@b0Rixb(^_$bl8`b zAC>T{VIETkMFu}eZ~IE+RUjqLEiWIJz?8A=oLv^Vr!4DzOY5YI;`h$aZ<{_H_C4ju z!LGwTy)*+eVCdxEJ15QBvj5=IM8SH^Yi_ymO8uAfkhH<;j%Zb3y>-eG<^Jhr%bPK+6Z%a# zvu?dHu5PD@-)UA_)OFL>>TMS236F1krPMzt-%5iRb|zmD zzoXSF--zPHWpiuvt;ZA_DwVH81S5Iu4WB+YZ2K1V{fsHKUk9DCf<+w;t3Jfi2zd$~$Xb)NpLhi7*NWo%MRpWR)PK zUmlp)=gtH#W=!o8pG9n?{>`?Jp1Y5YM_P^g7L-@GXO`0Uoz*U!_v~><-D^XD)%X=f zO7SX<({@Cc6xnWg+p>G^K;?L(G&U^G!DfEP5KGU~MoRO`?hRpieOPA#teG#n2F1)x zQ^eoB{>q%$`P=r-_O$raZ2=}xihnz5^x;cuH?I<$OI>rEDO8G&IJx(`$62)}uaYZg zez*2jiZ^mTVvatU5#qG#%Lok$pOXhZKCInWG}UK z<(5wyJ;h1*RVg0Rdd~ZOtRotq1p5R=0*QJ(tB~cS{)r#PH{mCNRXIHCf24AX zd!3!m)>obMf1GoX;01N8Xe+(@pN>&eBqmRu3AJb-W|oC;1Ur;wAwN$234NU$^E z$-y|591%yzK{$163A=(_$}VK*fb`?+NVb^m$;Q~0Y!O??M%Z;M39Eut3i6!8N@wA$ zNT4Us^DplIOa2FM`osJFLPGz5h|(hG`=q#?t{knk?;2? zT69Agpq&#=(W2X~-r+uzcNJUDTVkPgF6@yhPP_&8dz5exdt+l9reSbz>^EhnpEi5O z7mSgz(;cu~lG#>&c!#_oXMILv+!SFClkDwr<9dEW7#*p-zasYe*8^X$M(kSQ&^YAG z@*U|_fwo8Op6-fGZ5=f?c#E^NZL=^X9K;#dit&#LeQx!59(lI&iiH5ZSESwd1{)C@ zK}RFQYC}D~T;CpG?#w+gx?ku1ACpH}O>s|g)fv?r+I_#Bo%Q_n>vl%EjmwZdP5A43%S*er=3&mFq~jv=X&|P?u|2tZ;af30AY-xMp^d4 zcY^%Ni-$%y`E$0M;@x>XY}CY6k792n#m0^pGpN7D5m~(};UMaL*OR_&VZHz6eGt_- zDhXkKd>@3AbZw96!VP_LW1qYaV)7rj4^pr$Bg52f`n-1^oa(3PY#t9ZjZkH?-Msv; zb{G2*`s>*Z72^6TM$+AZtUDK5j(c-0qv(3ODf{GQV`lD?dU@@VM<>2K9#o=hOPBQp|QG<65|a+=(c84k`npi&c1 z7~o)(F9HvvgF>OPko9P=eQcUKSZsXKF{BDn4h=3@KE{S z)V^=$PD?Igyw2bVcV+~H7-@>%A1r`mh&v=oIEZ$1HOOl}ER(;HpB4NM%Fj-h=R=V{ zh%=9(g_8(9f9av*nMXRCi3B!#J}0aPcMiD1NHfHMsL3vfk<1V%?5!CHs#|K*(icjW zfg?ImU4rUIloOe@I$~`%NkIAwxUAh`BKC|vS(KZfY#B3GbDJ+nDU4aj~{y|5xs z=agPphAv=A5ETQAFhOcS$)w=$kyd)8d^>UQ*M#Hre0ZhlySjdUq?$ajlf#ROGKA5O z;cPlU}Ziz2j38)Z%tI|yZhp|=58363^9{@rig<$XY9D~@CL|d zxzsshE;whjVgFpl24U$1Cz=0=Y@7#Xtwx+l!ShtRX_BgZiRMJhboSW;%f@C8w7wf4 zfcFLD^|k$8{v;Jw58ED(F6_GZz7E*DcOue{AknqA+aRxAxoOV`@ldP73BA~Fnq(ibbF?bXZ~?aTXetw)G1aMW0u&1oYL}{X!zyI05$7Ju`4@V z_;yQxFmQ@L?<6)nuhGmBf4`ZNnSbZbpmQFD8yH;}yVurlD(DeV>Q8V!!Jpd|aS-`5 ze=bOc@~FS1^H!gjEh)*Pf+Iq3PH2EF!mE?J$%RsXaTja*Y@z<`3p?Bbd{nO0T;FGg zFj`Z2vj6&hUM0 z1kWV6Q8EYI#cEFHE!V7P$!4p<_82=Z)=t%vuy zl1u9cENRiVOV3=z-qw-h?>Zm$FDb0I$m=&36OTIeJ|+Z>{j z&O_LlEE85S(}P(FwB&zcBr|k@9Y9OfLZF4N5UkX5xDqC&&R74gnyqnD%~L&D@J?+m zpQn+}ch{&;!33Yw!})#G+*Om+x2d&JGv=2H8u=CKWvUYO;i>}uOx3geovP_z-w)2u z%~T&a&N)!^YWqDgkxr@pIHb3cEZsDV%TyR)co{rXN@)-T_r_op{D!>qC&Z|QDI(76 zxN8n*@4ev*G$$sWW%S(th#rLpezQ6YxYivoaxQ@&*zLgtJ$LFIsV62LWc1wrh#oC} zv*1mmFGg4ig&2R6M$mJU5~6%D;mhc`{yTbx*hUI3_DZi1mZvKPOFc31AfwmoZ|RXr z%{yR)6k@FHQi5JDDIv-i6TXZd_P6xN%e@`3QVMVB3X9z^e;5TzJu&ehqv!Is^vL=% z#x6?{zuiF4qYgTxp@;%K=f9;#UJ2!5-6_m?pB;N({+wl$$Oi>_J^z-THQ|8dtCSuk z0ozl7-bezLm8TP(o=jId^$i&Fi6?1$hwqYnVuIbJ-od^Z6~TN-=PFdNVmUg}=}1>8 zTGY!*{fb14!6^6*nJ;}T4hBGnW)t)rNl5lDCZ1&Za`+>9w02HjDAd71D9oZCPYHSs zGD_rwnDAuu?EjXYOy3EGzjVTDf*w?!MR#HXkkPaITYABS)5mZr^0^lKVg1=jVagX1 zzKmXvzokd=OM7e!g;$g^n4m`;pi!ZSBEQ)FEj@B$s3Ufq!fbMQHbKu;Mu~hN=gdU@ zz|0BZm^FzfS70yCVLqto@Dgdiu9%H zd24X{96G2cTMNv?S>PGcS8Q+a9l8TmN;nbeF~o!~tIz+o4^SS`evLkl`EUCm8AgF$ zy8mr^ByNaRcfxLwXc6B>?TP+PIxbSditXR#Z|RZSfNik_6k?I_3!?qmNC{ECnDAxo z!TOKrQ8?f?vW;je46i8N4*OGU3YL0e;z35w>W}Er#wU_Lfkg`nv8Zt9Hb{?Bye1{5 zSf1VfmR@I~0tJ{mg}HRTHjzK5G?DJa1R%?w<=@gH=Y>WXb%2XV77irn$=6dPRRwxo z|A-!mg6P>5=k+HP^V^@&v-l%=wE834Lr3g1m4=+$c!Hh<1xr0K@gOTt^S`A> z&M(?yTPei&t!)H7N`OL2PLW^C{+1rOF6)RLmD2O-SpfO7>G-BJ-go(1dW!AA8(&1w zqXZb5%b)4r(vvCFkmiq4tYIpnL_Wyd2ekiJ%!vfj{w9J*bqP3?FID5IO$QqIJylA1 zCcH>)F{c#eq0`c=c#1^z4XN@9xAmw6Ah7o2hRR0!O1^q4*={Qfb)5Tn*&bb zg`7fg;_eAf+ACSpS-Pxb=2>7{4_XTl0lR?}90|J?SmMhBy9qp0S3R9ew;+IV>R9>U zM4qxFz%cr4^+_y9-7M+JPD&-4_|5H(AO~R!Lux05n`rC4Z+eTTfO=RUru1~sQl@vW`IZAc;C?o@% z!jLYP@~Lv9f?1f6!UqcV-{Ei5{bDFkhd8OTEZyX~*a~|@(UYdzLz+N^bV%zzhYD|+ zZXVV_;r(O+mX&vV#rl`uw1O}Gx*fSv_@(JsO~F+AWeDi$#ztafv^LhBdQa-%#Dgqd zhKlL>)AsE~A!bp&v^|MPm`c@Pj09U^hUA0nU!j~tis|{oa-!@7kjJ)=2qh>)?MZ{X zH_eojNR}e<0Vh0JIki(vS99g0z_0&pXGBB$Z#(;4{^2U{p>!PmZ##np^UHoxcIGSX zCs$DADI$HU^?P6>$iv!^53+xpc#^eygMV9Z(tW1iO^@Q8(=?*6VS$g#TZF;2p1=4zrr-+G2pGpsqVIZ6urbop~J)C%urKiomO^MMy;YO6ig9-BIr;@LB7>!qo(Lc`AnZm5fv=+q`}cth%V_f z$aN|Ys--f}dO{SoRf8 zJjv=`$4(XlAO3uuCEbsZ*8fBbpNRCyRD;uf669ezK(f+sTk*?#U?KOm= zBqDtVQNBF}VkF4Nw8;nAzqEb9^M7rmSWqm;0k{4O1=p0rvoMz*#@W5eeukez>ClmHod=AlDy4*#MMV|Ev6M%YPEyS#Up~Ju{Q{ zMD@Jt|4HkAr2IbyEd0Tp2_evNNYciC!~Wm@=q&(HmvZ_1;>Yzb7gr^%ShjcJy!40f zG{}mU#~*8@U#D_sw$1hsHh=o$B0S!_ac|>M>E$c+wXlBAE>m;)rMzEqo+=W)cBq#Q%To z|0&x4OCieT{}20rVuCW!Z-FkB5oScd@bAy$Z^&_~1vZ5GKC-5gkc$sf=BKkI>>mg;5@L`4GxEv0VG+kGoVp zxqm;0{WGUN20DvOIpkX!iz;mwn3%_y9z5G^USE6H5HpvV8^&x)G)+ogof@Ex6eKi9p(ozrzr--KiL-ZFoXvfC8^`)}wK59SQT z5Fo_OfU7FPxB+1k=~elP@ob7cPxhX-i^gP*^yXX>OqTx~gNcKhnov%x)eBAv>JSYv>Hi4WCTPZsHx8$iC*aY}OJ|jbf;!TP8I^ zh>PICSTK-cXeGcDu73bUZ$Ry{=*w* zGb*b27Ub`za_lIe1G@)Z@s2r@=Q0>PWOVB((aW=LKQQB+Z!LNl?0G64&bw%JHfP8! z?@9x-JiWEX_YWsNB8+HqAVc=;wswwrpMAVl*I8aO7>nx~?cZJQT+wo3+R;AGdwevb z*=-r2h=a&e^g!}165S?1OtUrtJjW)O{-I3(V#A*6jDZO~Y&tOC&?o@z_EVz(bd}U0 zS9(qhi}Cw-u3$@CMDbQm0c`!WGI2Xx)as~3cdpm*F8-hW+8~VGR6P&Yf7454#J)4^ zt#2m_Z)Z*qTxTGP($?F2;b04s-aDSZ!~q^s{&R#P4uX%p%^kn|0Uz&bj*sy^)cq_Y ztXT5q$Di_Xi#Dy>_pY8G>ZzI`{;=mD!kAB_8$s4$b){(`6CIoz3w!iLeT;{t8Mqy3 zSnFw+J9A#U`e`^$ya)U25sEm7zNe*~A8`*UeG0|Lz5hwxzXj;6)zpQNA~1i4XGUhA z4rHfAu*4ZmR0upR2BHQ$kD#!y2vMJ?py&|LRErmn-;+>|X?N*!Jjp&n$T%ynzu}L4 zmgIMu)MuXL)UlKnZP*CInMgN+=pFB0G5_}Nlm!+ZC!)vPPE(Zom)n_D!U66x@E8*u zKiGi!OEihsgkzG}1Rcaf_6)S>CZ3dmcyv!;RNQ}i*~hbciiI#^>(}fPRr|W`(BTOJ z9mFF#8~2^$=5FS8WzWm08J$0`UwUkji2H0jCx|ukQ6ICtZ{x2o+;)4U&Y`zMQwvrF z2V9)@sbl(rB5mD{*|WxudFDHR!Cs$Jmgj%iS-8&Z-(%6PD%Gx|ijLu5JMAb*+M;?o z>BgAt&M7mrM?ULXbTcn!6LY0+UEuS?En64bAi^nacNX2;xVK-Su!n(-mX)`E0+ab5 z!T*Y7YnG8n#N=_#FxKWC?!@hFboXm31 z@zh3`tXkIT$^+XL{n%$~UHb5#_h0{8p4-Pko<7`BFK~a0(tr`O^JiXr~Uf8PbyBFLbWip zFt!OBC@WLdQms(QWr!J>tl=y(m2CcOJ|DdMQpJ~J#^H0SRmxS4s1&GVtE8&TRtZz_ zRT&8O6Ub`uGy%Q7K#&jgS@VUgXm9x97s68i@Q2TH4+&9{rSunHFyq22~_AQ zqRNT%T7v$R)|-OBmQ=iSjzGu_WZiawiW;jy9PTtU0{XDJ;ZL5wcX^qd#j$zsa2M^G z9~OXc})%SWEytabEYTPrS~E24qKw@23$Wp>{RPl z;$@nN?lVPfm|?IbpDjMNSNohO7%^>47O zbBNrR*>&WanY@|ua;P(R&#V3Jmw+;0VX}Qj) zQ+S!@w#*RrmZ9moZ6BTrdMls*Dd8acw5wt0f#1G|6hzDll z4uhHGbiJRkaZ$!0$Cs@Kfw{mEDo>SR7T3ybf84X0 z@^Dk<{fVDvUFtG0Ml!4T`_O>U&f{0TESA-+5)R_--?y%#B4FLVr0kNs1a?Vk78rEK zCu?ctO&P~Q7{+e4PrHjFV^}JU*UBB+9vm@Cr2XZG=GBFfgRAbFfBtb_ccL*rZ91b{ z!2z>n3yV<>{NdS8ut{k|8xuHvyWb^8x1RtP=eOEa+%cjH}EM_F25vpb5|K z-!-q-;zIX#=lb4{8OoZ2FcwkeqPhwzU#GWEF#qT$SF2rSBbVPd!83OpI#xbxpG&tn zyL9Ds{Z0`FQP)x8Sj*q8YaoRGGy7kp44)o0YwDGvUcX(}?`%1T^;Q`*UfkT}{g<-S zCE)%em8ak-M(Yz@(rbFY)En-bbV@wy(L0yRL-Y0>C@C$ItnO|gACr}E5PACFYa5`h z_StG{@%PFBwTpjruQ$j>7&cUyyfXJdt_PLwZg;=HxQoO%?WMr~sjbJblFrl1-rx2K zn*?8z_YI0YJ;GQ`^^xN`w~TGvXnA>|xvTEDr)Sx3vmq}qv}2Y=8% zW}7@{ed{7?grP&_fmfZzbo-+J*mt?;V5U#NndJ*TnJdv_i$@uycGmV@tBN-2f(W21 z_hh5-Y}hx|;v0xktv$^`Y?@n}a7@!HkDxc`>g1cNfjFQs?e{T526>G8-&S=WpiH z>SyC8&pk)4Eo)b75I6bjcWIv#CjQ=zt``1 z$9bC;Uv`$a-*QD9#9IAz{M1dbJm_on=I!^{3{PPH;aZ(I^i#C}VIOtuY6mGe zN4RTFzuxgy#>B0M+J%qSUi03wt&U!rTFMHO&*#T(#{qUKe~LJWe#<1F9btn9r}kHH zu)m_kZm#~|zI3zslODV4Geq2+_CKjW!MLWD3+4ULg-qX1J>AQ9+*Chq!BRutfkPE4 zf4z2&x)L50ci64%?LBDb{nk3R?;i$Z-Eb%Gg`e(S^f~}`a-{iF!~ychWlY^Mco*Q$ zgzNEaVt?g2<1QC@H^8i0$LH`qmE*)g=Q z)m2^3_Cs9{AuVs0Tx($5x8QOOxUct`eY9UTqg!`9)ea5av*Pz&4a+ZX@x#64hL1G{ zF;lir+>-i27$5e*Z2LP$p)sRm`K%J#S23BBs@CJ*v~KK=4BVO=K5@WBj`gdWyhg(j zV`p+kO3rb;Rt~lsy$546_G;v9`!c(C;{02T0FSUKY%6Q$`*PJ}I=8S2b#_&(_`d><$fo25_aaa>oozeYdiH(KE z++&kY+m$6vTgCm(qLq2HfnEIA$}W7#@m`ieRS)I@CDrN^)d#Cvsq;A6>R=B?(SW}tS6i>kqs{hg}IRHv$rRyE~0tG;BnSLLWyah|IjxW$L+%t0;33Z%tBrvkX1+rb^;=Sr2tQm zZcAV*KnOG$)bXYRn*tu-4udYRDNw6Yp;8RqGy(Pu@>#XaWbpn-@U{tfS91?pinJGEgjrIhy@ zs<>(-pzNuN0oo!}A)sETA_4SERhmz$gh$rXBC5KmDJ9a5>QF^wI0d<47t5hzVZEvM zr5;W^$mCDl?W7Te|L5{B3#sp^ZArvXAw8r#kyKucIR6(>pFq*5bn>}LI23VPLJNnp zP2d>D;BOi62yQ}%pwI*1i14M&gwyd$-|qn4{TY53p7s+wFnsY(!l6iGYBS+fHObTI zNxVpuJFLmJBJxA(zxjP8s@kddBrekZC4BtD@M;h$l?PP7uP>s$AiZDXC*`spx=8UN z2P!5*{Q49g1^jvx3wKwgT>1Ce{*@WR%en^+CEwIoH<%0S7&v+S`W93C?1$yH7pK%(cX)Ev>Os$~i3ZT6=poU1`w0}^bE9)PAmoC{qK=VX&C#Nf=hYOApbYWdU zr$ATMZ~QyDB8)%|WKN{?@ZmLt!6d2tFO832zt16g5q{N%cKeUSqM$#70pBI-S0uZ) z=Id6r5#A4#)<5|rf{2L+f{!2_Hl2=45`=nLNq-0s4gpaFJz~5bXomfu-u;qvl%OXa zSE*p2K@mC`Jre{Ej?1+%Mi;U(IQ!9Aw>SDX+9N-D3&8p2V~@*@Q1t{ zb<8r>LjIulKM)^n+=TrZN7^o6oDlRjgvL4;LBKGSL3BuTK7%s5ZV{0)L=nLvuNc4Z zK)(WCjXEZqzVre@U#9DKg6Zz==eQ|NTS|h z`7oQ}hj(;gt06fVcGSQz;ET`^ACQl-f5=ziLDPVRHRxn`(Lcqj$S+d73jJ9d5kcqQ zjvMlRRN9Y8#}DcK0R_6Pf0wSb{7L-?)h;|Ly`-mwQ6MIzhj;TN`fsWHzXDxd5%s~Z z`fn*+LJ+Wcr%Tgz0TsSN2l{V{o;2T5-c+EgBO>1aWjQmXbjjBxF4FUO64u2?pQn^x zshqw7U2PHh!LQ~8GP-0rA8}FOABrx5DdrcpZRix}wh|GczsxTp&F?SEnHnFZ_1ucW z-<|TI{QolhM-@_s=iuy9bpDFx#0VrDuj&!3R>mwN?09(%Q) ze6z9Y(0vX$&XW4`S!g_q4l~hsCLKo6c$5w^(0B$NM$mZq8m1)&|AFE^Xz}=W6#q_# zzoGayI^2lj;QR+VB0cz56#q(xzo7URlAobHORf-#tsw!V|jYsqxgF|{0_z6(c!l!{+15cp?Dn~euLs~=Gd<(^I(czmYev=O0K=B)N_&SPT zr^DA!oRCMC^7B;`ze+Nm)8TU{evS^GMe(zA_za4lp~Gb;UPgycqxfk$ds?+(G%SZW5`S%ctAEJMM z5XBGD;bIgoro#tN`~V%^kK+63a1n|Z(cyh4zK;&?Me)6Kcn^y2p~JgTd^a5~MDap8 zybHy5(czsazLO5`K=B=PxB$fq=FN6~zy5oErI+XL@F)HK|7m_)gW_xG^jD+!YC4>S z;#qV!6U8&>@G2BvMTb|S_)0pw0>xL*;pHg4oDOH8cm^F_hT_ZU@KO|CN{7=?Je>|N zL2*j#k(^(pp?DfSeldzKro*Wyo=S%oq4**?yb#3~(%}>oPocxfD4tA*7ohk8Iy@i6 z=hNYNC_ax4C!u%}9Zp2?L^_;+;t6y(9>wG7FplE5yg%c_p>g!_hcg$Q+XSA2&S?VA zMrSvHXQ8v2z%$XAP2d^mj3)4Obb1qb8ak~BJQbbV1dc_4vI1IqW6+o;a5M_`lW6f# zD7d{#gQuWVn!u50WD__71)GYr_ruZfCh%l*auYZV4Qm2VLcu;g?fZ!+xLi+zLs77a zNP|OAuxO^i6VM4w;9xYk2^@q5HGu=sz$S128qfsxNBx_?eyCp)Sd5CBz~j;JP2h3p zxF+yebZisY7xirdk3q*Yfk&gGo4}*cQBB~H=*T9p59-qd_C~#%z$4HRP2l0^a0JNw zOC5?BBefh%0~eG6JAD`*2U`Ens+{Fja%(xB?6Y7=X2}dea~L9^4X{)o(7;*m1V@-R z1&0Ld1PKCC4xoRj9R6c;uh7tmq?A5$L)?A(mdmo#W6gX09c2*+HEq$A6q!P%I^gVSu z8y?xg4`Ccjc}bUwfoS>|N*F&4v!KuHj(_hzpZ0mFPa6A?}SS^;o~ ze{{?QcmX?H7#tNF5CXb?#d_%}&kxj|`RDv4Eq|%6STFSaKw9Lvmm>xq5k#6F z>#hW>1%i6QaGHbnZ)kZLfxZ0!(^N%>%FO6FjGNJqAFq%;a6 zVe)(%@|hzU(BvQD=pE$`M6=BY`GrQCyT?W#g~S`OdU25F<3Gb+()4qwlo--d1Zk1y z)?G0P5iUzd>;H5**c4qUpR}N0=s{Y9u->*&7=#gFB1Q=QUMKq>7~h(RAbqQ@)}pBq z;Ub_WAtn^~!1!HIKu9%T}9<-(27?F(hg%~l8^z2B$FfEXWpo97Tr~JbD>=Wh}8{-#kC>j9r7a0{g zAxJbF7EM@~UsMEW{jgl>z>hlbgX5%*JimX}{t0xy`3KtzA?W;gEJl2SFTx1DZx&q$ z7{*J_mtg#_@(k1N6B-^96a`Lsr-c!fJ0u)(LZ7J67!VvSG8XlX@(cHi@rw)&3WGRn z;U9V43G=Tl&;Ng>o&AcxiF0@VF&In*5TnD0bN?&G7=&P2U|$E_uksEPKPYH==p?`J z&}bmTD)KsciH1QXS+*uS*;Kb3FkJc&=_g8YND2zlHt zju;u@OX@pzCFdD%{DNaI-SGf0JT%I0a%glc3|HtMwf=4TrTw9_zNEf14bpfBOKBmc z!!RNqm?0y4#Def)`r(i6;Cbr6&~VVl2l|D9XNB}@N^$<>{FEV0pETXla+jt-8V_OE zu1GmoJ_ca~amNS`X;1jDkAd@QMF+=<(bGbKQPD8P^tY6!|F7Cjv*}kHZ(*7sEi(PO z7=#fdl#<)!VGx3459d2{2l;1oY(PK=5Nm_s3gzG8Kb?L)MZCH6lX9J(sp<15N)O|E z0*2|QkAn~uiw+>8D_re)_x)z60^W$ys#F z$=s+(K}Zi6NH`R6Kt{5UfOGz8K@P{4!xNlRZ{!#A_4$=*b*cq~&cAH-NOlD;mA4Pv z3rOOm3UoPgeg7WnVs3N#|1t@!f1W%$U>}gjtK*h()49{RmcTwhEvJH0%*o*-bDHY) z4*@duc0i(@2WVFU$@xldK9HQJOYG+Ztprl3eW|p*E|)H^U#BWjE&WHC`eV!)>+C1L zo7I2m`#zu$x-%G0hn$E3_tip15jPq`=Ap==X77o@end@8=%I@UfSk0DkmVAMUV6ybv~524SqCIzC6l ztzqP$sM^+!;!BA~CWlQKvu>^S;$3&GGrdx{>qJ)jn#V!p<5*kMh44N~J-&&^N&O8L zvM0G+7qMR=5*K=-tn1~+E<@Lu&p(+Jd`|q_xAA;?Q>|t8`)=ef8Nk03o)+@#os*)5 z56O&Cw}SK=ynu!excRXp)%k)-(kG7Bna4L4={c6oEhsV1I&AguRi`=rMvaW=3j**E z#KO2>`SCE+ePP8ZH~X{yu=yb`6aJ3&nyoVy1dFUSX3ZHdVIYjTRGFOUVp-=u*6G~E zZ}?}gQyB%t=d>;m#Q!wGgA^j4}u zycl5p=lf=`&KSh(O1k@p`yjn_8E`J3xUZ**=&ut|8xr?Bm^Jr&^4-z7mtM;S2UbO%IWN~`S|NHiM zKZN*ZB;1Ku*3S@~c=wyPAJ7LwHI~Kw#VJQ;9o(g(W%;o(y`odBzlzyb11r5fr4!gE z*u$%j$oWDM2XPm%d)TdEzke6e?D5~;MI>xesgA_N$rvH_m~W!Xfa@Lapb389cD`tM z&~$UKmNWPA3-g0R;jiu@%K7Dk-Hgc3&*MY;tuXgGeQvl3!VpsvH+_rihobcDD?j9& zH8kDBi?ted?z6sA1S@ZL#?=s=tMzhzQNls+OF5Q)Op#ws{7mnaeM>vFZy&HoTN}5K zwV53=F1R;U2vhhj(waepFKkU1m z&q5d{DSnA#cdQ+<|M;T^^$lAN*=_uxVSRpwt%_zM8NV92%HqltnxX zKLX1_%tBVMk$Rrq&(%h;bXr!j)l`JI1fcz;LJN1O&;q8Di4xmmy?ijdx6lFvc!S*z zu$v`v4e|>Yx%o{B68VJ2gouXuMMr|ozo;1^pODbV$RMCDH7dvtoT6%ogq!ZD4`})6 z(cSr)M}n(Y+ZAke3#hT()ah%>R+w14srnD~Ak-JkWquLt2_F%?G=FtXBG9+;ipt;8fXoe7n1hQB zY<{e=5OY6(Eqk0-Hq>oXlnLI_?eL&Zw05D0<9}(pc>mVrX(z;+^L2TB_Nry0P9uyC z)Hs`76=-|Z?&+@B)YegRgSR->u6pJa^zwv($xN%pz#a=+;jDnHYb6{+T?bBf-$?cm z`D7pQ4eARNnML{~fJO3kKQ|U~JOyFz?(Mn7NtN3!T1))MXtBsk=sDqCcxBKEUH0my zjHail3*u;}sf)mZLZiI1$CiX#ulBxeSB>d0mv8U*&bG(n*B8 zqcqoQx$#LA-EQu!(mNV5e@|!N`)&8SrS;hE=XkvL+^#yyZy^jbibuYB?kg%Cyzs?I zlflD3PuFyK{@sKbThL8=Sy*z+z)78U;qr1(#6jqi=z1>f0MQ11OP9n{fUQ|w669pd z9OE-`T1FcFkuHh%`67+)Z&$Ssv~WJNZkeGr!q`Ei8_eVE?>CyC*|L4h_Gy|c%iBGF zYW!*Q>cYIpz?ydh_V4LQvpa_Z+ngcXK(PJ~0~P?2)G_riz6oEfrVnfY+Nh=joqagZ zi5J2xW|jgiewB>n42;_d^!wGaPa!xW;brrLyxHmqD@Pq;;_71Xy_h8edjg1hDObdl z@G&07!Z@Y;9H2{}lr83Cd=X2+k&pQnhlRbx;w}3IY8jt8Wc;8QVdPW1`_y`kkB8e_ z?Xi!zgC&}oH#}aC*uG`*n}*cPH^nsp_73tfUkL}%jvGU@Cz8A?pCcxmHRwX|?u=p9 z4Bo~Z(arX6@V*Zu0cj|IRX;Q<0e8?mH-D_QA8S5j-5c2}p1%&yeUiFuTigSkusfSW zeO7+c{OA=|v*6M}`<5+Qs;`@S@*!9V@1L7$z9f54*6zl>>l%1*r6pH%MY?$ZbM42P zWg+P`9i9yoST^NajAh2s-8r$RB&$aqTqn`WMBC1~?eiJu?2!zcvK`Np5ymvCOkQ<8 zb^DaZx!2o`U+=xU_vkb=(;*?P3tR0ivSTA3)~Aod3ipLubLEEDDZfkk&` zz3i&BJ&RARLhl znsZ#LYr92kQJaBnSNV+T8k~K1`Wn5chQQO+L!JZS2xi^lGD&H+NnSzB)<6_f8IsiD zH}?n3U*Of#0<1LOEY@657g<$^Fve45f+E$OV(W}WbNZ~w`w+N!N$ZFb$BP#e4BDym zKs86)KSS=-!S$394x&t6>;YhsopWcmT>>OS z?7kZ=iB58q>kAADOw0(h--N)-ug1q->m)?({D#=aQ4d9KM~M_5Ahgc^78@7MVXDNx0K6d0m4~^^$KX_ZM~(jBFX@VT|Tl7mp5~ zQ&PM;;MJMxyBQ_s)~~-0^EiK^U2>e$f@DstN|6_5Z@V>)iii@+hk*?kTQ1qk1cr%RHrWv9nS&?<8!m?`wYG=(y_2-5 zho8H*qV+VFXB|2|&^YC&&vZ{bl(}yhD3=ti4Jiwve!pBS=0Ew;)jnxcKeJhu$#Lpm z5ym8HZ8f3omm!T=uik$f>b%7JwoOdM{m`18k^ARFZG`pk@sbZsWjA8{&NLrf1s<}Vt`7gkN0)9UwL-5I`W6{IfP+E zmC2rsA#vH4fxfekLt=DH-(_{WGqY&S zn_V(IFn#+O^(P)D0-lWIdhy>R6YmjYlp+p-pZd>ZFM@3>c{-^ZK6wrkImK>n&ky|p z=9?^GhzRUp%Po9DNC;#FxNr^(8<92C>mUNFQ@S<<7y*A=QDjD2R(EFbp1Z>8vZO1W zX!8^E;gd4wm%Tqd@JsROc5`gj1AQITy!t@coYjJ)IGyjEyw{G^|5RhLa?6#*0{#%& zoB?zDomnHI#{F|V!}Kj%HnXYLF#pSeJCdpNt z|L@y-Q5qBfJFXIEd1epo>mRMkpYAZ{;Fr;dI_*OkcS!z1y4PQsGdq9V{@I=upSmr; zBzMkD_<(rM9Mq1phF3YkX^6ZnDB&P@#B9C6GT0Uhrjl);U@{Y7HQN?gXd?r*1&9^4 z1zEdqrZt#2*%lrQR-}ija^V`pJ?>TGl zeb%1W-h1t}*Shh#*llgBrToO|ic;ToW|1K!@XX#6l?Boz%k1E%C#IY|*6IA1qN6{4 z7+{Rm%5qLWbKs}TMUC>e@kO(K+IlXFNOw-$p*`dI(P8OV5(=YJ8pnagd|S)p7@((p zv;gG2F^b0dsibH`q7BkD5Tr}yNlD@w*4N`KC!zt$w~mAK$0+Z|E2*Daxdl%hqK`ay zyX$c)DZc0)u*Hx>5|HQFHZz{X@CG13wg7bevA3z~5AJ_xT;3WbHgCL-H&kbnavj$QIQXU563`)3# zK-M6en*rnv6hLOdo9o7v1GxhkR|;egpnO2#|AD!K9^wq=F z-{Dz0lRL?k{od-(%_dqh-?69MRAb@i)b=fVWdE4gUO0N2pikNsj8Q}Gts;7SD2X-N zd0B(Kx%uCK1` z8+86r??(yRJ|fAB1P*u~Hh&y#1Hs@6UAa3ET5)2#d=qSkc8OOXKzZ;7=4bDASMZn3~j3^08lcmo!9aKi?UHcS}u+@d*y&&v zt+#b`&aI|<9snMB5?Q`)>*pLA6S2~!Tgu=puOAUf6GBk1faYh1izqqaYrl&LBo z9S3Ub?j>)L4Z=^PeUeY}S=dk>dA^vUn4oLF{;FW$64Q^uEL~BrIR}#-e!`o5OyEtM zdv;97k8UJWEie`GUVoKv{nxGbBhDA6*K7<4ywG&iH_`G|?s+-uK6Lyt;b_^}qWAan z+Sas+;PmnzC0{l85HK<1_98#l-O z&Yu)p34R*TzOkQ2o}rWs@7s2j+$28k_4p+j%og+K=Dsw|w{}_CbDJ#VnxnQ*Uz0Hp zF{10-NK-Oh;f=J#fa#i?BHc2;JV_TGq1cAk+UtMpR9zNWkZ|-QYw-#&AEqxe0!Jtr z`&Ypu6f5VX!Ovw(dYw?m&#F4%Hs?j0AI2CvIAvh3FIxVfZ!Ck`Dd4uc#~2m)+s1QM@g=EU0{puD)OY?6iDE(8Sq}%Qli+nmiD1p=CGZEcRKug6!2>ve zJq8y8gp2r-f;D%2-DyBQF9=qy-K5~X7fo*({908m&S2JxVU9L~pDIQsEEInOwmf9y znr_AOy~jKCoUr%V`VmhID{gyDq$4tKE)144&|=^ZfCawTztYA&Ef3aEEX;kTC3{p~)WJqppOZx+sNOn;Q)ryZ*hG z%iE;#JFzEne_#w!DF?=%qvx~sZsaPjemsk%yW`ytye^*868{jpF?`N3rmK}_p{mX4 zI8d9fFW%$|>LeCZs_{CEzwCD#4o~fcp1BS&#-Pm4JILKmFOX!b84D zZl=p<4*~|9$qOD2Zd?tW95OvLbUL~*GRY5KzyxM80%b1Kr%v^m>^nUIL<5&70x_{H zKdwg=)Czw1{H)^em)R4$j9dG5>B7LY!^alyeY(2NyionZ^3DW_(cyLN#^=A}06q0R z$uVMkCv%b6*Qw23rVilge3%-y(PfnOm8>JWyl!m|+!D@Jqtj>AcMErpgMexCvTfI*}0&y1d2 zdr?>t<5X*JW7uWp%&~9n7X0GO(|Ddd!ftr88CN>>Ya$=EpF7uI#K$tEHSe^o-xg1s z8Gpv7_3^cD^*Mu8eS!V{?A{7a*7J?tGjGkF)3OrS93#sX)y#VT?*4{bci+0xsn@9I zr72gc2d?NZd%t$Vo&83~cMMmk%0|b5`a%_NP@g{^|1JPqqvO9NGBThc@8&%M+x>Ur zpS}2_IJ4;Lu@R2rIor?j9%78qB;9`W>X+6}kLjmmEw`P^xZ>os+h|fd`<~Y?>)yGL zduP<)BXB`PwjCV@Dqoo3Iq#3{daOXDt7mJA*putYBS&WVOj0dY{=u#XdtOrWd6zC6 zwKLf}rsQyXYmCu@q-o8Kd!$WbAHU?@bKJMH-#ea&ymr1|k#pBm&j(Mm)DbU#{Q$zKjZP3EN(5Aci&p@RiQH^+@5=U8)O9O-X$3aaRh?fKQM?p+moRUYzKCu<{Ig)y3wd(g!v zyWPrWZy9&7^YNX=o%s(HrB64X@?E)4J~Vo}N6qBSr6^Z$9aRqp+BfHvo=Am#H**%j zL&^l2Rzle=8eUPcJfc^{y@+m${RPjQ(Or(!l4?8w$2?iFz&wTDkyWPgakp=?wzpiX zf6Zm4#AzD1KEX-PkU3}B4aaX4J$(411<{Qe~(uo;UqE%!WX5gP}_Ske7^KjqRqhsP$ z9G{(F`6vWqNXYV~ety_#-=d;_@yFR?x&r!`c^>Co_ z^*+Ts{m1hSxR?cI(|Yp_VXUW_e9Bv|ynnKNrs~JGyDUe(i0PVkt0w=uBE4WF#z5D5 zKyBRk^78A35A99Xwq4oOO3~u&&mDPZn?2m|bc4=LKa(DM)6~W+9S15??yN}%(3p)P z$1KoR=F2v0WX#${+r>?QCHwPpE{5%aZsa+a22ee_@nd2aW;3_UQ}U*=C;h``z+*0Z zH;&qvwN2=Laqx5Dy>>qa>?IaPAuY`xeUuzn?v{3nu_9sq z8QwZ~?eW(~tJ<#~4pi2N4Z|Y-xcx>n+Jtz!Qx-Tqc$!au3}`W! z90Vr`&|;V@yP!HmqgUFDTe{gRI5fF8+mLVPOm^RkZsm74?6P&cDHubWJa66C^JA}q ztD7dSaJU|EbmNRF$=Dl_j}6mm)T{ zh1JLf?HW4X?#+ z9_=+ON|Yf4IMwKp-uSeA>+BYMd-rLjUhWhH#sHTTkxT3TuBc+d@*fV%et5X|b~4C& zBTBS7jyZ(b$v<{*9&uM~jM8zSF}gqEYs?>y(H6fOqdd8N#^#CEe?CSHWnW*L6>Ocs zcIRs%}nJ=Ad@uMJl&thJ;s?4>=d9<-?Q+1|o!R|A;n*zSJ z$ryGYtaHCpx%0=eHZfF7=8nP zs&Q)lanxrzQsWn)c&Xu6_7@RPRX@;!b^iOy6tX z9C}&Dvf#1;r3Txt9u724A06!d7WU~syLSPU0yfTDpv+xQ-KX11HC$l^{%NgeT_w}| zyl!LbvZlo$2@@2@fP5v&H--g$8?@zMYGLqdTYj8ui5%eEAQ-;D_gFZ^gQvN;WXiAuPI%(^&2=vFU`bk zu|bcRtzJgFme#D9DPL#k>~xxQW#FJQpDV1pt?xTOv-x7-=5DQy2Za^5`Hr=%UG8Y$ zF(xv&;`8CKtz%o+>m9$kXLIdzz3h$O%-&A#bAR=|!CztoKa(r^#En_aUG7(r)#sg- zmFKHpQzBxz#I)-c96Ml6bjjVl{n^qV5A%gNxdVPw;llEBalL!=cJSBL*5>zjj_b(p zma#9ZqqeWf^QJd-!5J1~F1PCq%>Wng6^C+}H^Qb)>vKB)-LP?!YWK~^KUCKBx~6T; z>36roMtC-Rd3FE0yBk-{-6#CvY4W7WlSQu%_rHDa=V`m6w*C*b-$%xs_2v!T|E^NF zJ#29Jw&h{r&9izwn;moHxOqF<>f<|Jg{(CPt>8em8QlNNF%y=jL|2k1b`=|liqM{a zI9tm81nkyXf}8r5z)GGghsW_}nXqL1VsO%4%MJQV{r|r`uNRgG3x)Z@Y;Z>)5!@08 z5_${Wz&!zLV0%z1#QwnY-hV&OCo~MW@#Nac zcJJG}Z(0S^21Lr7XRG$Y^>CmyNm%ShT{x$y^RMPL%D?It9TImWy7}Mig`MS6IjlM4 z04MZ0gOl{yI+1wNRba<|8^sx)2sWO3}s z^ST}K<0k(&Jh((-Vy0Q&lC|R0geOX zUbNeISa0?L#|fIOL=``v9u8E#sDRs2SiVn+Eof!^=@AP%eUZ?)g6>o~m&Ba?oa#`Z zx>Low%6c$m_};fY{`pQ7QaBsL)4VvIu@os?xw}+hTwd^1vyse=iU~v zYq~6!zxZ{2mCkHq3yUYJHm`>R?Y|u#A9*mkFMBKt31p z6FkRY!!cLP8HhDGpiL(7zJTbJkut(&1C9N06z;I5McJVtmi{On8sBsrsQ*vuQgR*aEB!~K z-tV9AJKaelfJ;LHWjb^K-$)0{h!RW;{J^aQ1_Noq^6~M(xR^bjo0ngDnP**cHP=p| ze)mA?u4i#1=w0OJCfWSJ`*%Gsh8tOqGi&^GW^It^kABS+&YCHHdOiBaz<%+m+!-N8 z{o*t_Hdml{s2p@0s2uL@tz2NAjVF2O@!kHB57zh{3xhzZjB+ia?urqk? zHPQOZwE|lC^b_VT`^4XxrM1KM?V+{9!M>RslcMXEvj%+J>%Sn}=FNc}Pq(?Q8;`Ng zSA`^+biZo0v1I#8Rr%;R(3t%2s~g;3#Yz?T(Edt_P2*s<1&wrCcGK@FIR%LN_e?Oj zdVq2YmRM`KN)04KsrS(*Af!RPrm%nhjowF*Ov>!gV#7Jz9u7f0jmlQ7Jy0ZMw@5t* z#1}RugL;Dah&`s1?>cRZ^MgmH2YK`#UC52Y7@8;yEDn8Fp1hy=toOT_b8ep~duQ-G z)*=2)Uhaw}pCZ!x=svg5LG_LL2^|OMCtOCrR_pDc9^-DuvQRzVX58Uo#;%suK?CMu zV=JCBOc~fH*6?v;Bt+5 z@6K3$>5;fQhwD}R=7HI>uJZJmHa5)*jH^4&jIBEDo0X#(Q#Ql$RrM_0PG60-uSgtw z`RdqR;avx~za3myt99parSp#XJyWJ$<+R^jx~;bLh_uC=Q6(3-1GWu{T(`-E&FK8? zY37vBrXszuTo(7t`9W@x{-(aJ)-Br1Gm=>|c^m`obLS0jv=*dQc3bOZ;Tm|sZcX;8 zxy#zN8a>WT1~oB5YZAEb^S8U9o2^FdFe=8sROKRq7j zkscL~;=%q?4+k2Dy?-_}M06&C;J3$zF|njZ?{W!i0LAh@I!q{uY*wfeAxltkF5YiYt*QkO>ljG=euzAqWz93)}=!0Vb&Am+%Yu`M=dWsLXQ^ud&+k z2Ko`GQ5vNPySvot8vkb>HSdG%&v>Q0UxQgRKSa49<8` zV#8#x&nc!5eNG`_Vp~{^uEACI%%o!64NS1a(HW=|01qCl4vTOjBXwAe4;rKni*T7t z9TwvQ2iApMUF*UF1`vAv$D%Guq}d;{fPEQp5BmjmIC$w{)gu4ic{)99GCeUyZxj=b zxWu;+gInF|PO_TOKGqurV%QGw97Vj>@dx`2Y^0jMC-IK<;p+b0q(6MP6Yq8KKre8D z30*z^;SKn21%AUC@gLfNKlB>XfIlQlrQ-IuYT11)#G<-B)+=8dOeU!!8+|24RAQB;Zfp`0)8aB zyiR-=l@y~x{_6OpFp$GP6|)UfrIu=#WedqVw!y)G0nb@m}cKcOtbGJM)rNw z@DIZQl~IF-;()rS!9#FBRn%ZN98eQAcrXsAhzb@N;YRAPcn}V#gIc%@m#M?zfjFQB zs&KI@4o15gJOBryTm_3-;^6F21&jORV6>~j{cteK)nFGKjAAvoFAhep8r%m5qf-s; zje}9C20P=<>aeH<-a;J~_rk#_Q;Xjd2ct_3?tz0*q6W)xc^%jZ2fbV^ygLqhu^QYB z2fb7ccEmw1RD&IG(EHTjt~ls*YH$}E^eQ#j9=ERpcg8!{fji-y>cAcGj&)!=+^!C6 zi`&+LJK!Daz&5x|9oQPTt^>En+t-2H;qB_cR=8Ci*b?j^)yrdnThxKgaq~K`8E#ew zHpNZVVJQm-m7}U3DHCU^!{WAhTXk59`Ycr$fa zM91G0Z>kxB!F-%wCw(5yQ-?Ka{YR75Uo;swLp{Ef21{u5BcauggjPQi zTK!09^&_FxkAzk~5?cL8X!RqZ)sKW$KN4E~NNDvVq1BIsi*wb>FG2RCRrM=j4|CSiD~JHY3Ye+>4|9LNkkh@BHDNo(Z-XAKAvdf zM?~u%B3l0t(fWso);~nF{vo3E4-x7gkPaVewC8@6TPMzO6r%r9YLOzlN;*DQ)~IE&R>lDXsgdB>Rh?)d7|_%Y|hP7F;ix zh0Gjg1~Z-+!~|#hOjD+mS%Y81vvFWo754{sAM9}%9>gETC(iqIStWQ4ILp5X^bMr& zz|;a9+-Wvrg+{h-J@WKSyS{Cwf8;&G7->W&$0Eiyslhxhwav@#lNP=A$ei=L3Zpgq zJ?~Ou^kvU&$?J=ejpIOk=tZSlt)ZOO6vXR_1UvQH2(v2fm|w43WiptTM4p|3+pZr3 zbf4CcX}{Dc#S-PsoBbG=^|;z=%~Gx8mrtT@@|$&>w&>Qm?u&-zP-)l0fp}BVz2}{P ze1cDk?I`t6pIKNbPe$r~6Kw=T`!v&SP4`XJUpt?F;K1~;+LF|2_F2odV^zA}9;B`V zYJt~WU4(SMNf#LKf}d26d9>lj;$J}bTg|i9E^T|x8>Savb@Kegikc6d$^zeCda_1; z_DM4nKcM8STiRUb&BwNM8qPW3kf6J+-{4J3u^}I7H-*!4ni?2}C3$wMN)3Dk* zk#l$Zjz4j7W@n7?jjWe@ZT6ZK{;=uo>6_bZ`%$CA^m!p2(LY!b#eN9Orl^}sA&-S4_Xm$A!=`!D#OA3sJqSkzna+VkPEkWS|YD5$oq zhXeJa7W=}#AfC^k-3>U}=owreIU$0rC!Z-izaZ@I&RyxF0i3~+<=f>TAG}R}{;k0& zkza3pn3PK&Q2|u>>fu0ba^&aOPmm|&e-|b{l?ZZGP{%B%=Fn1w@bNMm-#;t@1iw`}G%XwV~0ra+f2MbBo)` zZ_8yjr~X}A(Q}P4W{~Bh=X&4l)-H3J1)Z(dA97ea>&Por`Rd_7<-2h)VD$e``H%@c z9aH)Je^I_M?Y8Yal-OoZ<%*0ka=|H#F@h}L{H~8PyW{;A<+d5I$-Z~bCq~j(M&@R} zUW1!_>anQwIsaJ7bFX72*D!_)S*D}MO=n)e zcYK_$`?;O{I6&lD>ow?_q|Lq|w7fYqEw;Ab)=P?N#|dp*dT$7>n)A#qIH!L~go=jN!-06vRhyY6 z#N1Lxf2Kvykhy?WBAjZ8DSGIPlC>S9_qf~I@F+`Rb-}3Y; zqrUe_)73bM?YU$iYldBZspVmwqF8?VzzmaB!avn3n!n=upd##5)rns#qJv{K-eQdR zV4V-$f$z1Yx%tVtShE>z2BeNE1vcin2R`)BJrq1k{aiVJw!_6Q4v&ipEBhoJo4e5j zW3(jeX#?A=#peaB+}3zp?v-@yb@cv?qIPzJMb&SUNABQg3}mZlNIe|rjB`y7cQ&LU zlL#8}8OP=|PD8>QrXhqPFdMluBmd(uuX;p;yFs8LBC0W;KYd1pw`Hu0%CzmP zwhwIk5>od`3DA9VmfOhvRF3zgIOo6A4T~=Kv0KYQLvui0;E-ej-LQmxVGH>%FuuY0 z7&NXM7#a+2Wne&pV6M%>mL(e^?o{FrEAH;Qe{TQui8en%<__%0>ZVpFu2GR%CtBvY z+}7(Cva#tjj1dC(LeMSW#oLQ-II<_Sc=4VsOP&l~W?R;-@7fuX>kl2r_ud_N9v%n~ zbA3J?2cm;%S(A|t4Rx8vPP`LvOrL$Kf1GGi_`$JEhoy(DA4Df~l}`R)FICupz5*O- ze>x5{_MN3wXbl?wM`zvq@1UH2a@O4so^?lrQmXr4S>dn2vu;(Jo-BELSN<3evY&4?)AouJ*yM)q?>ui>)`gM_8$+Wqj&z<;%712id&PvDAXrRP&U!dd zKR82@qN#s7z0!wa$|Sz2;ckq*);3fvQZAJbTXzdupguUdfxFp zCmb&(TO3_Q9;AS{3{a|KNsXjfQY5)3$&u`ou()gRREZ~NnPdwdCkdB);l$%pBzu@+ zB|{~BBrYs-$!lCJQLsLW^O$$V$HeL4IPpZW38%lflGRQ;g`*|@B1-2z5OrrNc>)~f z0+BPjA-=#$=3?P~JWx1P*q_@;7=Y^uQ&|Lmz?-e&5EL=pHKZ&hm%x}=F1RcRXYLWK z6odho#~dd}21lF|cGQc?LrEP2OncVO|P*9nY6FhiA%G@($#ze>%x0 zYFVXU?|=3GHLU;dur9EXjw%b%h~aAnN3WidysG*kUh?!s&Q^@k3Q;L=#;?VR?S!>O z5C=#ZaB#&BfArnIJO6jmd_2QsTr?OCTdCBU`*H_e8_@C5S%u9y=S-U-ptTsK2Xj_W zJ2%6R`Yxi{NGEm4hBmv#54d}I--2~u#;3k(b)sr#8>c=SJ~B!l?>L|fPO>gj-_h^u z0nLL{*qpgT+<)!aa&7xt{>qKB%K$!jOifUjKA)#2rY=vcHqkPE`d*{mYYe-H!eA}& z6$zLEK`__+TODk+RzFYd6+ScHlQVlh;Hy$O3p|DSgr%>%dHh%5a1$Q)6^8wyzDr$Q zb|&uO_F;j=mz~b7K3aw`JgKlC5qHZ8y94^CBdp#9K72mkb)- zPnxeC-{vaD*iL=NXlsyRTk_Pe27B0N$93ri_9_%hDe)oOjl$7=an0ka z!;SzO-c;C;)<@=84P98`?SK8cQ{dR`7~?z@c4mMypvng59URzvywS1M^O%xC-5 z6YuBd|LK0jw;)otLrxM`k=E%c4L@1^<9(GyCUquLfiE}U=@nAPbeYeJd=lpf7mF<+6(jC9L>K9|!HWY@ajp7_BtV2?p zrCHQ>yDhCoF1?<%yzKN3j%N4uYcK{lzy=PDfCA5IvsOK(inJ^{&3pPhAH&*Hd2ws* ze%GI~$(?6BY+kBv4LJ4dM}24RwQ^Y;HK{PPH95cLVRin| zZ@wOzS7VGT)ORv=P=cY}A?;67-xTu2t~iuACDBTM}{9|IP%sjy=@y^RV#%$t7V zFz=4Y`{ZGaVMT=+>>^=1; z$B?g^2-=;>=dQ`tufM;Mo_btywi*}UbBiS2BR zhbFahuQ0V0E3eGKI-|?@0xe|JcMHvDi!Vz#%k!;ve+_yc49LlTDr|1AuhI!CM_)H} zVLr(kaT5@buT+@A{!VIIp^K3>!#px_C)~aZs4_%j{dF$KF3Ig4J>b#Aj3r>)0wM++ z%*(7pQ38I{V-M361$l374gnn(2ziiUVJ9W5iG|Eq$B4FiOYM^PVvH&(EV$K-m(D-q zCIq(*-M-Eh>^B%csWAF|XAHYZg-s87xqQBlM>V_suA&Wdwg9ce->9%@33(efo0mR2 z*5jLDbv}@GWEfLnQ?};q9`L$CUvvJwXP%#z13qs@s(ce`S4Za*h7O)OW!AW--NM1@ zsTmdKyJfbey~q0_Etg-&?Q=S1B!<;cILG=A={xA*(dVP0&l!MYy!#A#}+QGN^CMQyJ?ew=U(!;Vp5{oi=~7`MoIch-@a&zxOMR$z=f zRG7;=i_SlDXsjL^$>U81J34;1X|g<-)|m_hF7r6!-&$=~d_W3f5;^IQxA%?lh%Pj^F9 zn}LzP0&UjJiCe>2m;_Eesj#LIz1@$s+_W>t#<57ES&)QbL#Z$wr%vk~PUdv7N)gP@ z@#KQGZ9(Nz^Mg;J*;HHOAFqxZ3HsLn!s9@FS6_m@GxeR=^HTD$e#7?7ULAPD-f(nJ zz{#V+G)9eoW3$!YZ=Uk$UG0&!^s53@}`Q zgDWN>&Se{;oI;2TM3;)FFb=M-brwN9^bh{Dq;+Aj1i+v%frG785Yoav)~m=uSaPa| zwcnMsKq)o~!!RfE3D5uAVKT0ZBnMdkO92x73gJZ!dyPz>?>`=B`;+ssf!2IeW(r;c zuC=6Kqkts<1(0{oScmCVHXr)7(xOpuE9H!Hr(!12MrY zb#HS}x5XyZeLg}bS$la7`ModsBzB|}QtE}wCP2-A5f($xtb@FiOi7vVKFSPIIUruxBs`UTD)UW%HBKZnOd*rvg2x{AmBz{Fsnb| zwEFqqaYok6|Bf@FB9!Z|e;Q|KeNp8iC%)2=6YE*BGQmTEUa4^?`LE-i;4Z1w1FmFJ zGV*B#3G1k#^6~^t*H6_ta=4yWcM1eh`4Ruu{3zF(%6>C|OiV^R$!W)#q>CK6m<(4w zX!DEc-_9?Dwt}YQI=HEvkVR@EpGYR8oL??06Q(_t`R`Bq>yl4m{rKHUM2oLLFjbGj z|5}gA^)EdiG9q1~9`lFFiS=?5xsdRu{v**Fl^+dye$;mzf3WXRE*H=xQiz&fFC&m+ z$Tg@O5HAY!pz?ggnVX zUZ&8VAIf)@6!PWb8d0FIkA|}#pKr%2 zLsDW;E3ppg2X)K9dQs9?3<$`10mfBKBc=xgg!%z7vPsa?%FLkYGQZ%EP+3UOnJqxbOy)D5 zFgE5FXa;b4BfO~J!hDDSRlXJOa`-v?rW@=S$F1bVSto{NXayO;e22pbYR((IQ|X2M z+w_QihN--S#O;0a07_5EM9mWQ6}qMH@)D$OK+kaeh$AO%BL$QII2ML;CMdLze;dlVJyOVqX$*K z8Go0as=pBF$>hX|8|a5D4b;zPkm)ENwDhL`+w_$BswR+#GrC`E0ozYm-bT_3{I}^5 z>k9*U42f9QZ#PO$$>(e&y=nh8J%Vl+$Q2~w4A)I4y=lsX$fq}YQtcP;Z_^{%&s<(f z;(c7*!4TGG00}D}-spu&Z|YyAM0|Phd99m2Tf_e0Q^}pj3)QhrTDXR>&!2ga@qBj0djZ<%w z97TU7snY{^JK?wMPBnT*T%Eq7t-=;^DPe(qML@Zl;3DG@2WkTfB8$GG=`TpDV2zt(!cU9tTx*4VC zOTx;BH+rGcoA6iZsqGtx^`eHnJBc{MWeG}8x!!3cz43pQo?@aL;(^}~<Zcy*&l6wI>I5_ApKfJD;7wRsi_| zIgl;D*d;)!AOlDgc(ddz84$oIVdjH7{R*ZxxX~|TV$2deAI|{y`Mq&DxXq72l`z0T znFuV>sq8>!(Ns}#NK5YWR3VUH0qqanwg7*_K~2X^ zV2lK^T%BV(es7Xi(uG|+Zq>@lk!3$$*1B~+xOds$ZzFqfX1qTTMU|@_4pc5)NIJ3) zrI!n^ z8tLjfLbPZ)JhW*#Z?tGSJ+x>#J+x^$YqV)PJhW*#JhW*#JhW*#JhW*#JhW*#JhW*# zJhW*#JhYJxkK0te*ONK|qD3r50-l})`cv!{#aVc($a@QRhmGO=jI9($dSKTNofvm7 z?E0h@HSwQDUL7#?`~7qMbrs!mqQwsu4!RSu-`At*iB@q*m#TkF?Ur&pNB8is^T!>p zjd#11`K!bZD;#iCKlI+Uw%K0aZP$$(8kV&Avg|~`+x*bxu?HR}Ic?cFI9|K`9HGao z(ZQdF_YlqB`MRp9VbhC=9+{>A@*cfTvtqmEJFn1@VRQMW6&$Ta?*?0exDtcL^L!+PHm-Jw*|6KmIKPlabYKo>R837~_? zz)wvVwJw99%L2inej%Z-m4KpHaV{&r%~r$w%86r6=WDCR9m~x0M#jvM?68!52R&;~ z&c+xk;TOOSy4~i+L;swdH2Lm?qCufIt=GGDn6iH9uq%$qE%$v0t@TB*U|H(nKxLWZ z(tHHeZ!i+wDGLh2vD?hXMjhPeDfJsD%L4YLx(xMFa9}B-EEb#^W&8dfCtX#B`Zr^g z=P4r-XG%tFYBk}UP5JeutF6N>9CV6uHC?^#lhcvxelnlaj)=yv!hoqVd#$~pHP9)~aF|J0Lb z2478e>3ud~?EbA6A9sjuIcZ`)-&-AwZ3e99_5IPg4zf63r>VCjakm#=ew8nL`y#W? z-HWgC?@ND~C2|9VPL~c$sOUe*)-iqA_5GH=HZJUaaKp_L>AQ{vm+$;`68k>xei(m4 zJDpV)_p-b0n4!DpQ_RCh!)|P4rhbeYIp{~ptsMjOQ)+Vyx)#0LQ+Cf}RHVK{Pte@T z=2UEKkk3B<6d`Vzu`hJK=_dbRox^veK#B4~u~z8obLW{OkA>AXxyziI_WpI5x7o%G zyUIcfBgW^rYu&er@mX0UYG>6iwEN^z-9CfzLefupMBME5Dtnb*_R0lcf2PlV>zMLo z><%AyP^W5bBkO8)w8N8XQL{1c*Ml257~>b}HyB2j`R)Cnrp47K%!z5b3tLnaY6%ro z|6(ZqQ=y=cs!f*N+qsx<8s|(wAZQm84z2-{G z*BE0DDh;@GR5oP&m)`wCe12YP*{+gdR+TA}{QQt??AxyUh4ht1O;b=j*w5#lRwq{j@N~ zFxc6Fqu)-HaL)^lHF>17)xz3Hd?;#HCW-~iT@MFpN5-9}>mfZXQmjEEtY{hwJIHC| zUOrp$iOK#3FhU!l+2Hwm^9ZoKFq_aus3n%~F87e@FkojG=mWG+gr3UI&fSw<2GLb?25T|%(S{+Ft{)737ISu+^uZVz zARIcnK6?7SpLh@l(k%E7B-j6staa7Wqv@;Drs=EGrs=EGrs*@(rs*@(rs*@(rs*@( zrs*@(rs*@(rs*@(rs*@(rs)^drs)^drteK?dl7B=UWBG!P@AS-kiOUXr@f694WAYb zpC&DTnkaugQTxL`9P5cWvlJ3XNtD=LoGKb6@?`6>G-+$(ScHxI1Ubo%FWvjKk~5pW2C0FS^8a0#pdpFoN@1%-fDkPWy6 ziGW`a1ULq6fM;M0xCThNnunPh2ARBNG5&{3Pe&>aY(U>!S{P}!w{Oo4(-~HRwe7dzRrm3+zalV( zK3tLkx9r8{kUh_beOuY=Mntcs6Vex->~<@gy=C0R&c}BecjiA-pjdGJs)qxu=V$Mj z=~jO|->8j;w_xsSa6J$BGz6QpseIz4>-!c${%GBE76#mgb5v!rPhR)f<;{jBXFa4& z1w+z-trSDDOrO91Xg0(l{TuduPp|Gvc<<Zm1$2OXBV)x`ZK+1?@@{B z=~W|m_L}m+L8V2gFhp_X$(e=w$`2%3mluBBQ-1sS znC4$&uj5%%->ZiMmFdz~!#A++l_^ru+NlgELuGOG8`kl~8k+y{r@C$RAj}u@#*isA znr(GBju^%kPq*n%YZwAL4FZ3kLkfvWxf3U{6hRD_)PUf0y|=C%FB<#Tlfc@ zTeL2|heaSeX!^uS7U!Q8cinlX-4u;7qxe1ys$q}N1R9)E9aiD$LNkj9+ur5B4w#PpK z+vEG=344Gslkc2wfBm`BkaVjBXVy-<{Vve& zst3?>H-B8oOpkkh2GzqJOh$uh0+z!v)wv8TdQp<>3 zI6>i$wQG}=bSeOMUR-##SC@-*%mKQ~#j>28pB0lHL;aQtsyy{>y`r|gJmu}z`gEl+ zP85{fXq2u{;vPyl52D+`4Ez(Hpv%bxiz`~3SR22wJk+@KDbU`sl2}w?t2)~34|~UE zuT-p5v=}|=d9#sY#L4=h=TF++Nw+d}PE$bih{n{zf%ZEY6ShR7{Z0^uH9{@%W*`M~FZ^Fw@*1=FI>nZ%g3HUrxS z89j-={zdk|U3`-JEBAJ4641GrT0U>*PN%05-?j67)+C(_{c&q~&A6#=n@i%hKAN60 z{(QnN!*Lgk3fi_`_G{s@;u7w`j%!apGu|}MJaKDW^O;&{7yFElWYp<~P32nNK_lKU zuII(Jty>p1B_(}4^$YqNe7N`I_(N-q(SvO3b-io)-Yb2 z&CT-B(rp*!?7q7~jh51JAlftRxYZtlme#key5Yv+7n=${R<(&)o{;3a-`9FomU;QK z;iPR|qR|r6+^pSMhxJVfAgRE=RUi zQxDiUc4*Vztd)=Xy1%ilYCmoIYR|0FdB3vmK8W2h@(0FH%AC!eWaqhO`JwQ#S>*{6 zx_3y}Kj+cBao)aT`tM@SP3#f3P65UOL9goJKy|Y6aSLRpGLh8loCxexve=EywR&%A znHnN#kPPrM9Radsb3l!LZl) zpPO1AyAyk}Mds9HTTm>xj;)6S&7ZMpo5#X7zoJ-$))H5MlHPfo#`?2XkNtmPSCzU) z`MHVQ6yBfo&BKTu4|c-35!Fr%5vEY2b;${LFdQ?Z^`Ju|n)Yx>8{g|(?Y7bDcO>vD z0Uc87_jH{}j2~pbH+^3evsl~GEBs4&$DT`qhtNl^uc{8{I8YtfcK?cay(0)-uOE&b zWHvH4F{1quopOPkc|tA`%tf$070*r#BFGa5Q((Cpy%p&*6<2!$bE>3{0GJ7&|BsQy zg8KjFaq}g4tVG@xNxUQg+|1A5*h&03x{`cuEwBtwBDUk471y#e#q&6otfgXIPLMc? zJzQMEwig?SYemJPJW;ABix(yG6gi3vM76?VVV*Em7$wYSdkP(epO2&4xLG=v(pf-8VC zV9BchTmU<69w&=cAt)AH5#$MKIoa$0c9tMjuv8Ew2mq1>Lf&w$0ozsJC@>LJ@UC!# z0yoYlei^5jKb(D*Z@|ssTe6e*MXV@(3fq^jvJ(Jn<0H2Z@4xQ?>npdPHAeKW^iyE3hRzpjU8g+EWcjY1&JsfPp6)TEfUu8`)`5@+qQ z+DB|GiEq^K{)HQD9o;uB|1q+UtFEIs6v$=!W1e6qLpYUwNZXY{ca6k~A@0~LuaYnQ zOX=a3;bk{2267xa3m(o|KJJGdJ>2L`$ew$(E5q9Q4(>Im;+76Q+@jwpm*;whk6AnP z_AigKUrZ0T?pK?0|5cHzSH{m}_ik)oS1qpS@*>w zKK2kybnodPB(Hy{%4a&lCc@T!=j4`dzjDU9yn_2R;8fuz;`k?i1M$4{TFX&=ug)Zv ztZLylC-uMdwR$oXyB)WE(~v9X)c1hDM940pJ`20v7UJ##Y|9&^nrRkGY+mWq3^;bD zEaED#?TbE?VloU&b%bMq$5_DZ01kfh(Ian9=AqoA&adsS@0-ZIjA3S|&r)N;113U_ zNqg`z^aO$tPD}JkTpt}5j{xdBmsP5G1PUUa%T851*p>SpM=;FGS6_nxE8Z=Czj1E4 z_WLJ0XJCx}DjYCv=-?b}n1fzXS`ddrErM0``)s^Z?>TEma0f2azuWrsiTHyk9H#Nz z^+?YiOW)k+e0_W1-smAK1bQVrk|65o^L&SALo|1v z@+uW>P1kk-D*|Hu0&%{1kDZ#d=I}koE&ZDh8(wr5%7sIR>c{}SVn9$G!&ZPG;NUk; z&se{lI(g5VEl019oaOr<6>R8Hy~D7|#yUa54KC8=PLE~E846%5<17cq!Yd?|pNyjF$tz$*-ouWB=k({QZ$JD%>!CBQL06nAYK82uAG*Vd&hzYo9RA3c_``|2bSVBP(jU$; zERia{E9nn?xEm0F;yaW6@X>6!%HNUnha4u>Qk6f^MTqL*TdVLZX&3Zq3bvuZA^b}E z!vY>$Z|F_tG^if}c^`T{^3WqR`QYFSGEI$(#hD;xpyEPzb z>abp?y0Bz!U6^U4f?@r*0`URhsJ_@Ev@YCfPF>hyN?lksq%PcacwJZnOiREa{4(&u zkg3WG>zmse{E^|Xe{P;#7hW-;E*ukE7Y>xyg}o-$glM$v_+vB=_d(dXbN=sBeRrp)~&4b+LX<8lmb!tqL zhgEM=Xx~4GoY>SNVe#nX>=_*o`L#L~KnuTQ+N{H!Q;YZ}v#%sM4STsen-+fP<55#? z!9bTOMQdvu|3CKL11yTASpc04Y+!du0)hdTC`b^{qnJlb97RDvMMWhiNfH$Eim0fl zm@y+JJfdPoMa7JYiW&2&m{Bofe%(DYJHsq1;{ETt?|Z|j# zCan0JpFFchCyQ2a;xe1yxP>Bz6~9LLKDGJ!ZH<@B+~9QQ{el6NtoV7C6nXCND!w0* z-rVSGm0aYwBN$$G)CEIK|3vwy+N#(3-2vxkice0+7^0*tdq7562g^~v=?Ax*C*4twzR=q(P$8Ka8(#B;UpWMp0H zGbpoVUyo--7}i=9$CgyVIP+9-ukp#b(|f$sJ)1bX!sE#ip#AcKDz4&OuYoUG_qJNL zU%V^+d^ey6|ClQ7g~O{|`}Wv2+`oM8tkuiz0g(-{D(;C*)%s=m8{$JAyzRATM+dMj z24XG1LE6jtf!pP;(iTg0J-z&K!4sgBx1lOd$$5P0VZz~T?odgG`kmZgW0(!96ZqZj zp}Vn0Keme-rTWDzsP`ZR47jTAZkk`uPajaevh5;^qw8K+9>X~2RdLsMcYf_{;<_%Ali5cITL2oE9jKnj^p$Aft}uin4$fzG9sKaQ{AA<{?u`Q-B75 zTwsa5Oglom3Y__yh;v19Ag%AgFXKf3dwJH^e@D z1DqHOz}AWB7=+IZl`~95xB%p-@HPHZd<1Pw}aY zf{~yp+ga4TcM2m5U&BAe$G!)q9Nrt*B5U~T@@!Byd|^1uH~fYuPi-7dK%jekxFfOt`gU^~B7DT05+Ol62hm)YL5X3wW|Jf>xQp84nK$A z5cphiUlRU9(-{aKMK4STT|D|n_~6>%|LmT=2?mZD!1@s`$Y^JVd6H*}n)DS={F(ly z`V&>Waw3=$fP7W?{@Xu5c{Cu(224`u@#x?FK@cX~ZL~D;||iQ4%C&T9ncsMPXuf z{*VMX>ykb)VM=JDr?9A%n|59C5VCyscohj!-t9^VEH}amgho8#y5d24jCMQYjwD0s zzo#$4L#)YYJRay##h*k>JWL%iFd2J3VhF+%ij7Eugs{YcfT2GYTwz_|7MXWKaD`<4 zDafpP7BJ!dPXC}~UkHel1dQOcshwkS$GKHA?#pL$kpiK))f!ISLk!u>}&539>V$o zji;OH5w8C;h4H!$x_&x_I`J|GS%9>WG)a;v%mZuxGVwxjm1vj9M07>y4ekesfTVvJ zkn_(4QvNAG#@|EcEHjZ|vZvBgX@N9bnl6o(`blxAE!aP(k|-s`Kn^}jlm+DABY+gV zn?x=VNh-C=fYf^~kaB-rWR9yFV3|iVMWqV6P!w>?g*>wqiYiSt%+8_X2XY z>68CopZovn)PJFved6y>Oj-Pk=lSt$d3wOkfdZV{mvLZT^aR;FTU1VPUuSCNoa|4| z+qYh7Cot8HtppZ2UJ@IpSXLQ-+o`wyYldZX&deG(&3{bs)t~*%d>>UT{CS|~rMNjyNmqkN)5o)(hEW_qA)M zb$6e3cz-jabnh;R3hlS4!9a2_dV;aeg#6c9R5sOQX>W{JGUWTR@*SG&3^6uz~kw+Ehn}jA9 z3}$~{Z@SLMSGx;en`j-}cU*gJE<4`n?wdC*E=yKkKV;l6@wx?Z9L|7mWYOSc_UZ*M z^dFsXZ8ooL3j2Fw59`TQ+O94unw#oHj3S9@%(Sm zWt(5m4}80-NpTM`$!_U00%M2s2~W-rXt@09m3JFQIs~)7*W2ED!sRU2eho}VSDKH= zTELDsx7s|dC~Q#3JFaUz`H^h_?0ET`h%3{ck@0G6)A6&6c8Pkwe*Q#j|Mr(Ct&1z?}ZVVrj4 z$64?1Om`jr&-495UJuegv|Bvu?$H)$XIh>X69j~d= zr|GT(JgL@r*MV57G{&de#oRhR2`~3FZqsfRmwfj`W z-mpI2XPM4|VRXgSa-V8maMqfOygs}4u74z+iFe%#Y^0KHvPtA#>)Y1u7b-K&h!V5RXVKbCqxMI!Q%r+*Y`{o|Ojpg@xjvDEDE@`ftw}2_% zJg+~uqRBs&9mM*tPA{`7`-X8Eki2M~*~nq5+B)UDSTUwm$Cdr8oLwy6Jiat@a&LK$ zg`azG`IJx7%7%gNEL5%i>lHDtTSLt2PVli*k(r&Mw;p!k=11iivqsG=MfwBUc5!v% z+r@uNIAe8;_buHo;6cZhubUOW=KMTxb;Tke)xYj>#y|f|x?ex~*80eSi@(?V=rifT z^z-{Tz4*bE?;Dy8uc+GoS4i}}@`^LFA2oSf*rSRUd;X-}=}ZU9UTOOxddg3PUs}^B zK#FZR(|*BLAM?@TvR%d=&QCcnv1ywJ>!v)GG3~9->pj8V@bKPlH9SU-(TGdPjjz^><9nXFJB@A|x6%%y|rba}90pne$|dVU%#k98?T z-LIPf>t2&gzj416mOyuyLII#c{b8h4fNC1VAj5!F%>!3C(5f9+l{!}bV^jzC^umAnN@kAG=gc+>KMa&+*r$nPVCnxwn|Sr@_?`<1%+Hx4aqgu6_0U z9MdK-?sLo>?k>_TvF>A0dV(wWY`kRPkk+GCd{0^4E}?bk$=jXY9`~!#ia-AtJDt^R zeMZ{$2(J6Ax$9bVE|##XUnuZT9#hmJ4yssVtaCD7j`p&=+;O|gx;Q70tp5#(rmfnw z*tpxd;m#wE#yOr_I%nDYueaKExfK^bZ1v%9nKWNkgMsRQTqooEzs;Ay#t|5G)c7)S zxvm-h5+Bgtz81dR9n};3gZBRlM1?^A|7~!Ozfe{o%>^?0#gcMxE4@^lA^s*R0Jrjs zgyV(zlH=eOd>%J~tJE$Ofor5%rJM{-SFm>PD#pZokfumT&q2fm!cn(ccWB)uyK`$n zZ_!kYGaj@dIzIW%lur<-fa)>r|4&1-=Xwr<}Eql1zUReBiJUi2% zu*jiUskg4^O@@^?gs<#z{Kky0_~$;A_jqIz+nRhX5?;UTL^iR3G9g$(NO(>QOtq-kD*@z^w;qx)Csh=Ko(*yI`)+BBBv_pHX-94vm$!@dmH!58Zv)AG@ zPf>$``c6np*Bqk0bBX%?4tR=(+#xMW%3GBkhj?BQcws-U1*j`)MB+)RS+-kPm zN6$O_ZERWSA``7;Prz`3E{TyfKAmDJu*PR0ref!@F?F4fg@5BELt0OiwrTgaRqIEu z&d%9)&v53&N{Ot<8DA;wp4MNNF@FBRb&5Di^cuqduZKC+~?V&^hqIQnp+P%I;Lfhrg3jY52ID|slh<=rM*9fy$3uqekiK-`1QZihb02A zDE)YFUmo6Vfw!bM92Zw7XBQ_|SAv#aB86rC*&*9KLq#S5kH6o9_oL~$8sqGHtDVG( zzm@a-==D)%z3;wm$!}4s``Yjy0}3RH8nVjL+|{JJ`9#I3r2=*ty<5&e~&Q{rKab8us0zH+Jtc znm#och`x)((S!d(^buS3w)l-dpl^uNhJSWv+H9?ympug6K7w(;)k5T^w!NF%k=t{| z0h|6gZr$APnd?pF0F4UCdaK>@HpRZc@G3RsHN%m`uVr zlS$r2K&Ss*^7=KTzvE)Jnj51oNr+6 z_(E}ebg*l^*R$(QuZ+K$Pmh6WFi_w4Z_`0QmkH5h>rxE{YO51Z&xZQkeoyDfSkx2M=3*-OsUkDeAvD9RWsSW3U_dWB z>(GWn4NG-?jBkzuxmmJ3c;4r@r?`#oy8FDP<4n<_gD;yOzj55-^sCJ_uXf(qd1y4< z9@Jo<_Ru->&uLL)Wp17`*fq5QJ&kEbUxpw;mCJyS@Z6x!x{7L zbTC9t&v3x>pXQjLX?Kg*6)(}W`_YNpUT?vqh!=nUWM%P+W*hR*w0j1acK=c*1*4vq zJ-GI>N5j#bhhJ##9<$;o#<@e*^QCJ`Z*7`9DDdpg;iF6Ln1t24BkCHqvE2CMfN#sP zT9@@IMy&?UiMF$0pf%{?c3sxPGWn+1henWZQ?;;lB6-bs{sa@6Ot4IycKIW0jLbWK zDXKevlvhBF9F?#Rf))%DYAe zj*5#8ly?aXN&qTNVAgf9F8WnV_eMo)$2OdKw&$UxOGh5Z!|WgT@75se$EJow8_X1D zjB;XeWQ-F}mJ^#JKfX6l@6z+p@y`nGb4;}^JyAep=nRI<)j=@W6FV(ySXl?&z3LZZ zlS(X0*`zQNI>-{SN1q5qb zv;G>Spb}QPGe~+47`7dR6Dn+aBt(V=M?@wDM}#KGd&Y%FBqt!gq$@8?{pUs0{=yyY zo)kzY8uGKe!it0XaEEw=#oHwB8-C1@aVELl{cV@C=W@d4wYxBS-Hl&0YyldPp ztHgMG`}F5pQ2RKePq-b<8uW*0g4w>95b zH{H2xjh7gQk{{d~mG)tNY-FOPo1X8*@PGui#>*avKKRGQY_JHShi-~azN`$K+IvgV zf%UyAk*z2~DAMxgr}OfGwLdw>4=V#F@JS{<2l-O)LY&!v+5yk*p`i((u}KNw7#t(^FI9A;({ww{a2O2ppAH{@gZosS69R*RA_J2G!E+J#k$1YR zz{7Mp|MYl;lAu4$`6ukTS>Qxk6Vj*afue(556nYA_-%E$Hd_Kt5m66%Af7yMg-H=z zY-t3@RT%V4qv@gf3`&CjG}A-f^B~jW)HhVS(nJsJ!O%GoUd{9WPq70y9wP82x1`3Q+GaxhP!KU(#qgpgsgY@+->ITt7sLJ~-ji{e}AScYO{;DEI)j zuQbMoLh$Sz8Xp{&5Q~+ea8p{em0rTf8F@mNMu0O0VmK|kUrf{H1&TrKl?@iApczn zI1GL^nT+|j+==o0|Lt;z#ShyRdmLf$TLs;Y>ek=?Q~Z`{N1FJp0ullodw#;AW77YK zj;XD1gamUUeY!ue`!V&-9yh)a0I;9Xb?QLCVT>D-$oN|5nD~E9$JbiuAant!*9WVg zPoU}e1OAG2B+8G$U&(B#JgOepK9zvD$4tDzen8v_#xOYEfIbm70_-(}gvQ3iB?DvD zAdJej#iQ}e_(R3?#6&d(V0L_*g?o#%;T|CBBy1}toc z6WMYl{kr#eiY`ZY>L=`e zV@u}y1?fW%_LCIGJLDCELnEVMfA>&@b1_%U8_EAK1RDLv%iLsHQeSDB#9O!vXr#{- zhlm#fZTt&`EyaE!Ly?02R_B_|ew|f1sXAdgR)U^7m3$|iD1m{_N7*XjOkbdc!xMg zuvk1^YpnR1aG2O#Y#_7|I|;SLI-*x1sn#XY9#NLoGEoSBqR3W@lJlo-6v#!nLJ#3n zU{_GCl_kPtMH=l3R0@=W(*HdR17H_LDT0+@$k?}XGIndx`1zRAZLkF`Pi}dhj&Vkl zjGn#kFKOl#VVZBW^Q7?VEcm`?*mQUTPKchJQqlY zxcxAno0!(A^l`K_Q;LWB&TumBjd{G8mt-@&el@Xy0k|NYS8wb7_R6KLtLq+ROG#jy zR%Cgwr6e3)bUo0fd9vfUIc9BkEPuJ380%3R;gt4wi7atBu zbs@^5nv7Pn_!vEGeB(Vc41w+}g`vmnO%?G$tyE>pY1$~eh4OxA6?UuprW-Cxz@14| z+>wEMMp?ZY@a{m$>iJ7XHw5D}aqkJ{LD(!Q=+XRj#|9+~kDb2O|1^d@QGGYyPMi9? zQ=0^q4gB9P`HMFP<7`sJu`L5)94A%W47=<`ePd3Ha5<#{5DW`f#kGrF zKj~($-Subtc8zYe?dLTN%TmS7Ex;Q*ar~?su=A^Lhf$ByFixH-j;)27xZq9DXLNM) z=$6SzPCbteC~!S{uL8pgRo_Ll9C_2Lc=)ICjgAFwH?x<+U0vwFd4ZmoJG5)1DrLj) zQR3JK_Zqsp2`^vokvt3I+*ifTJKKfZjqmEHK^s~`*`MsygrxRI#q=V6X5q9#4q^s{Zl z+mv=6Wc5RF0{e!b2tYmsTt&t#70fLTjsr6;tejhZ^t(X6?V`&s`_c9xw- z$P64>rQLs2L}@-G#$Sjve|(VNl!$Cjm$`jH++XN`^Xn;OzkF+McXC$0rIV73pH1k~ zBE}C(t=DLN<7V%B=lOI_i>hyzO=EG@S*PzjtB>#BdPVipZO(xR&@Z|6u3@lWUQx_J zeCmoLA8RSlBqOT#PV}X2wyD4=l|v(Fm`V)rc|^tpq5W|1EW^4eD}6_WCltCmhX=Np zjdA7o7FERSG`jkH*@JPI7f3?Wzg=?e)8wsBH`lvi5B8s406Fg?Jdgmmm(P}N7pK$!kc%Bn7N}z`NDfWHl~(M(-P5Rml_Oo<}yC|iXOq2)OCTQv8$_c((w-~ z+MT7xE>aix%g(irT{FPg^(0=TUmV2AP}c>%0ODk&1C>d@HYGa4E+g%3lmWXN$2Hn4(|^kodB1LPlVrjP{W~XZ_Bvd8b=< zZ>MMTCcz2tQ4!fbZu=+L_wTzRX0|!bi!bk7$krWCw+}TKs4V{5bj361VebvpZ3mWoAwt>TQIWEk(s;@W;^ycF>-{S_3pcoUSp?_CsP}5~FZ+PNDHvft=8jj|z0Q6m>-GmI+txn}?!2y9 ziVvCnrNDoIN=Clgo!3bW`!PtIwa~ibiKhu)L_Vh;U7g*e%gH%;2RkgiwF4NCnH=Qs zja#rWF*6!-w#i#}I-c7#L+_E#@5{*N>ouyBpUG}|v2fp&oZK`ZlhBh~tiJ4IIH*f( zj#I23^?)6--38gVowK+p==mPPGi#!WjZXE6{MYu70Awo z200C0#|gbtr-J&>Y-1fZNyvt|CY*XW!H-3l^QYX5%WcYf+JukdHofe5E{o?yk8Rto zWkwrB&pEd3$en`5Vv|g8-cBCm*h_N_N)K#)I!C+wTCZvAeYTgqEL)ms(s73M?Hr>A zkvU1IWkA~0U?AG&T=41!X;T1J32c4K6_2>UDxZdS&6ywtbO~y*#oGd?7`T>`WJ`;j zi7~n24&FL3e!{>llNV%fEd6U|ea@=CQGVbb7i)!;2nxad|ED@8I#+?QXxpm& zkblqrQ8|0y$YbnNQRhq~%TS&7lg&x>Zccpo@A*F}2UWZJ_xvBI-y$Upk-W@*>OAV- z^M9hl)m2{U-}8T>+^BtNimwsFDsdJIQ~amT{{cwGoiqE9*SQ7H_UsNEHL~y4tGkpK zCxXmSpDyEeO(~t@($@J+N7K-xLvJ@^31%m6c&q4S{NQKKt*i8$ObrH_leH~A{uGYS zRu1kh?hrHXF)kL{^^wmm>^oWZcMn@+FemtGGaZ+5tCSjfsd`r(;>~|h82y$7tYLw+fyyepO z;C_M&SuVGhyj&)qcc#qrlJ3jo1veA36jM9y)jqn^*I~=?PbXK0(rXko7^qxUtPBo@ z<)Ty&ckPtmu3eH)gPf>f0(V^MXizNw7iA(~m&wO#Uy}p0h8;4pTs0#3Sx2ycO0H49 zPjGz~X4zz2|6UWZ{x%JtzjXA#u7nnCZ*nis#$IVNhfyYM82^>)P)0l1xBB!jLl3k1 zNdX&Xt-CD4IFx?P>~VW{$A^{AzT~;2bJ!SJKrhLjiSAweo(~KQ{IZCjcb-C7RW@EsPp`GJE`gfwi)4^is~~heuBeDwN9f;b((>p z;q%(~x2iX~b=w8ugG!1vR35y)p+UYGv(HRk+-4^JLE z+9##{@Z5gAF~o_Sf6nlxDb557{IKR?{~$)aWC467=%krz!&7!tD{d+LTGYg zXtZPRF*hH8^ZR`Nn>Bb%BQ!bL;w@vL$I8(juV68qNxd%o$?6_0EzrXvi!=~EJ zzfQUX?#vjFyzOP6+r5b3S9{Z%f7c5d_<4Du`SOu%oL9;+zg&%fc29Dj=55W`F#gMV zTeES;lnefT$hm!BPDQEBleZYhh#UhK&h+Lj<{q9s$ST8r^U5AG%SA>$^yg*!qtA5i2^$k~ zT&x1i*Ltd3s#~C&4J`k~>-y>9y0*G{x>Y(#onoDQoicE*KTAiU69MD{+;j*zf20FY z$kqa=0FnZkU~j-#hzUyt*@AdMl~zrf0dawzpjfMl(hvAY+5xjf5y0Yr9PCC^3RA#t zgb6s!FF?ByO09e?N_SwoAYVjF1PtcYBohGhs{mRD1H|4y@1V0-4(>T%=v+Qt5Fqdt z-~wlX9OM`iWQyr@xR9Ch-~0b)m+61){y)K=(fS{$L*6F$no`C{qp{jySFr zvV>U=gI(MTg;)Qh_Fv#U89HjcLUteY9TCI$9`6e-Z^2V-!U_f4&9gl8?jM^@-B-Wm zJh;1QrwKS|K7&4kaR+_lj-Nf8Z#ijYisx(br6^z(R~0vLO5XuLx2`+C@uhhFnsMb| zlv<>UWA7hh7+@N}!E;NoVm5YNl~R1!)n)ysN10tljVbaMj04-9gx*q!J@yC|n7nHK zrGr09eXT^oXBhTV_1%g^<;PNQZS;w~eWufiMf-rgUVl{_dq*DQbXUcx-#6N*iu=!< z|9@1$R6qYG^vpu~)X)D3oyIV(Zs-4mjRE-GfA0LBK860zod2UD0cUM;3~Nt3qp9vd zMz|Xp4x2JFoSA+=4e4PQsVN-7>CZ^dgyYKyXX0gsGt>LjkRIY?hEwTb7wo4YJu{q2 z4`+CNHKb>TGt+x(NY4ysriVw|z@hS|=!N-bhBMRmLCMwAGsBtbduvFqDZFhB>0!A6 z{sUdLe8O;YxL0dG2q#!Xb-b{AnBh!%yD{J}%aa+-Oy8A}o(hLE zT4p&=;gH@=HKd2(9W{g#VmH<4h3QF{YUR_V1~{-Cx@!pUtRWoN5Kfkf8eV4&>6>c^ zchV5k>Ewhiad2@Mh+d8Lp3#tEbo15U!&kT&5u$ocBSemLIq)SW`H&+?e@@|UuOWRi4dHeg!kcOcH`fp@*ANcHT7Xl_rR(>y~I^x=NiQoouk~575EEsy{=!LL1Xj%A&PPWO=d-S+vX(=nBk`I!H?-(GsxL zDkzd+{A?M{QvkaFxGaD#mjwu+WWAiHl;R?sj|=47B48sxAuZAh05$^Td?nDZFPCCc zrKCur(8>n;00EK!5e}>bV3GiyTp-s{2m*k%!6KlG5EChYwE$dO4)hHcah2jCv4W@6 zQt-3En!HGW@d5+^VD*j(LgnvV{uKdvUqow%AwexVVupPwb$z zP+Z1mTLS=vfpr%J@V)ssUk~hHRQ{3VzvexHY%fn>fDZ1tt8@Sz2T-da5VgL^Q@O1{*rwDb4*sO zL+c}h*zq?mbHhu&KDjY(S___WgV3w&_-nI9@3!h`Rm?kLFzW8UO}p9gCDUDYPQ1hI z*0k5?nBACnHaotox&Fnk%`VSRo4mcpV;Ye01VO83m&xNUi1qdCrIoejl3HnYDk z<@kntIO)}_syJ=OEKjp(?D#9W6|GF$nwr>^xO$A=b^0qi{<@YSKioD$YBtewm|n=B zz3lkQ`fWYimGm;~@~*P0S%=(vezXX^P{u;VZ2 ze>Z4q5tSaYqQh~$5Z$-z`19{Yp1fm|hunHGb3wVAT~D?6b16o#kK*5N>7<))FxG(_ zpXvHN9q9P=)ifhNhf1%QoQjq!+23E;BF)*9S>C;@FRneH*;Ze8`4>UG!yI;|ceyLmNAdz5OFl zt$kl`>%C&9v+?|P!FX=E)1x))@2_lHn9#q^fwPsngQtxA5_OUtf6=G=-{-bXUbkUH zsg|L9E;&!8^H&z&%YXNGzk~bdJRD&Zqor0qSHApc9yuWXu*=wwv46c4q)v+Ez9rs2%6J8_lP6Q~J3QE?=lK5Bp&s9Be1I-NJR&1ZDp_vKhr9?V<%7~(uLeJVK5 z)F_i{^cv)iuNNT)+}{HuHCJQsO%LD~ase_9_!XEzk*2MkI6!Dl;rn33Z4jn7m=y)% z;7@?b*BNnn?TgCVHNT9lV${K&&L4m1UH@scC1hHnqbty^15E?l-XOB*W2?l{&^>Y(V%w4hJk3RjOn`( z)}2y8=wVj^<+Hv*4LawAV%}GsO5Qh>Op7x(Pmaa{zz)23O?AmZioMPeIi>sJ&vKof zDYAUO3&Z=r3$i-UNG*P|$pObPfg`U=-7XyaNSS=3zyDq_%lk#Ukhz^M+|Ss1Uqr5X z==dMm`z>|OK5)EtPH7wzvv|H5{35Bp`8;FO$9fYap=K?&d!q#CY(WGb1#;p8^4|d5 zNw=ljCkQ2(8)}9y5i(@4^hPJe3;P(@OfmWNXy{X2p9Nn_4%4Vy?eK}D%1#tqg^M?W zPcCjj*+ZwwKVOdCslVFc6L;MoccS1@-Hn{Avf=aU3ZKY{Qq_&Iu+6ADlY<-^KDVy$ zsr*xLvAhdWu>2t_fsR!^961bBx!TKzs$U8&WJ3@>WJAyyqJJRI;?2c8C-s39z2d2DR=Q>Vf=ms{(8{E~CAe1+l4xkNsVF}`O_u^f^P6kh{$ zE*3Bc<^|yQ;HcUr$`WIK{qxe&;ej0oopT%cW8q+)Eo|q&(S7D;ajxqktJ6v7N3;1hXX!1#V@K>532?I-ulnJMyWZKXCp`u zo__Q0xNF-SuP*~T3r4=)sTRLK*V3y}w^;J3B7SPxt!rxWoAA34X3<7{Z<-FV^EK?6uco_wre-QX z8-G@d@3iIQ22T6@OVh6hoY}_Ns21OhHzO>6Z|Ur-?h3nQDXD7l1|N3$o15M}y6XPH z)IqDpv*W)%F`j;}zir;e)Q(?n+H9KdNhARO@B&O8ze@MEZkn)2w~(JHS_h;6qIJD> zvjr`6BLpV8MZ#}7z9OYgOTlrSZ(6xJX@W|AhK`9KUT3_PuZ~j7O{bC0H`#4jp=^aL zPc&ZUFKaJrB>N`4EiII;kd6ndeSdJHAW7&T4G}g1wgtXPDkQfhC6Yo(o@9k2LvmXb zFKQ(ECcF*q;CB^Dg^V1b^se`d1|-U zw$iQ;l?bHT-hzME|FFWV?K^;Xy8ryU{{MIV|NqJLzky)#a@cf<`HdBLST_>A!#VB6 z2l^}RXSqBxtm?J@YWZj|)0~OostlK$*AQBQE+_Ua?2)!eiC%#Z*8`76&*^tK{}O^}8*q^R3*(~>7`1yD_(t^X){{ARKqUmCI2Dak zw$bmfjT$~g@9^74{RTxXDNnwhmYm#wNbjED#IbAjwA>!_J1no1KJ+^*uh-k@cbM;% z+4MV%zwJf8!|!7Vow}%8{ZSOr&UKcc7nrA~51fKuakh2bWWTmlVN)*=++(0&K$xeA zMVX4eps}iNFGq_b2h42dljfS(ec}KJ;VncqL;Crg5|(Hf}&7eLOR8_>328qXiXfh zsrrR+r|R)SLarXg!}2h&qvPQ_msn__ct}4F5<~K5NVhd$Y0UQqt*XE4PO1LRGpFBS z`FM`5{@yvM`g^O1)!*%-s=v$oR)074t^O_{Hb7AR)!&6g<)id^Ad1%u#nb(f zy|xHp#lMVL+s8Xi-*NBHBSVaCy?dF(iocl>W^6xu=HMmyBmdeRYI!7@6@S{czU$Q^ zGsIToN)~qVdAcQ^6~FuKK3n10-X2k9ORL&{b)H6S{?hr&`N=bDbh2m#CoZ!Ij$0^l zSl_en0#vf%+15t=Sn(6Eo`z>8&pOa?La#ev*|QcmfW3q6j|+g~O{|`}Wv2+`oM8tkuizeIazE6XWg^o2vE8 z@;AhXJb2q{&yEgFDGfo8_HusUcKNHc#gbi5FMnL{WD&4|sDi2FJU;a>;czy0sH8*v zPVTQU%m&p7{Odyqou;Dd2D&9CRD4=7*Rc9F%=buTP|&Aam| znAdlAe(hzOhr8}d?dSQtIk0C#>|4X{u3j@%n!m#nueNkdKe2yV5yok$!dF@lm#}SQ zPO}lGq84c1_nJoO`h?$=Y}>QeBiOUz*_1&?m+a0l!8k1tJ`C$k`jEYPVjdi4-3lPx zFV!jKXYdPoDZC7h2L}gh_yB1msjoy&a$74)t5A?4NYZxJULg(gbYDR(WS;nIKEwZx)CAG?|A>JX zmh}!Rw}9_aeI8z$m)YR%yFuqLPAS1yv8Tc{Zw7ix8XPKW)$6UyE!4+eHsxHS`I$-5 z-J+}CCYcqg+JG7iboc0n&WCoy9{oS)7F>UyTBcTqxWhDhxpG>v^y=B~Z~B(?jTs(gvJ1c=`l=cXR5srtjiX@MyeIFUz6bYDQ;W^)N!x#8 z`nBMQa>*I! zw`XF8B;`5;I11s@b&f^&a zx+yEy>FV~`O_zxpjQ{d7*?z0>z3{Mwt&C3lL<|dZ2Kwn=tO)T0z`iA0Fql3fx zDpX~$gAD_nB|9AHh4ecre(x+96o7`a1Xu7%1y0$zTd54}2D@>{y(=c}0VoqU)Mm9PQ;`Y7cRH?{?RL`ezUj0_AOBF zgk0Rtl@-lm$>Q2d-XS8e0J$}{7;+H41UOl@n3mo6-*g{Lvspt zyFt7xw{zl2D2EV1$RT{^{>qXs*bJyi4gpyNzix)lvi&}^x(tXAJ1}xr&bVe+tYX!e zD<#ADDR8~bsHcf{(uN0w4C%RN1RT7v&ej++yMu`R6@I`Y04FlEFNZmFzupL(COPcP*3jtP*e2K6#r-ysKNqmq)OIg5- z)-2<~ps&4$`^6q97K!|4M;lKDeT-8{Y&c+!&GzafUpTYUF?q7dgpu!0HYtB){%-Au z{^8GqbS5n<_oBz39c&n=-Y$ju>>=hV#2EA*j6p#jjhklLi|WKz#ofoC}4M!4imB z*KP2%%}-i%`*^6o*3XXH7hs(4un2+ccC*Ut+&x~{N|Whk6{QB!VOuth+V=cmjPp3T zU%Lf{*$R{jwP7|4RM!Urn;rfAx`yMa#=2e?4{f@bKS&e$sltQ-AEo^xSA;H!e0;U2v@j5Fbu+D@3o?XNdIX=})nlh1!{YVv$Ku?KoH)c@xv%F=b#Ee4YQRkBQ(t*l7u zC#{rZNt`9cK<2(moGG>y7m55trF@`I3EBTE<0`l&+x^QiZm;rDPb821HM!usFKM zO&Ciw!h^^(C(X3N;P^%9EhB?Ti(@K0(z@ay^f8#@q#!U>wEtiz#6#RMrm$daJd(QN zA?*Ix;SWiWvo7f)JQB3OqY;mGUGWg>d3(Hy1S#)!B?Qu={cAkpy5d0!X?8o~jwIav zd-@_glnf?Ckq3HE)sKjYhuH>TGIl#K1Yrur#^EskB3AxcaD{b+TV&n|!4-79Op-;vw|VIpfVqJOK?CBRpEariWiw zJcJSUdiVe;>z}&@!1^Hc4^V+>{exFmJVgHhN=-?S%EChk4`Dw*BOY#D@eq8aF%Gs* zk;}gJ4&mYcy4*N*#e-xCO)YU^t_VUgl9b)^UG7tVCSp>8SY=3cQw?G5fgG93%gkGkR^?5XSH)VQ@w zXTdO7ZaIh38vc@u2r?f`S9zYH6##kXwy#5JnE4|9BHzCkd)2 z!xZRUgpU+dZriH!mSyg$|MzuKUF_?3Dm zeHNZCb;Uz~k>Z5x1BQK=jw3waII^0nK7YYJGx7Y+ya+pf3hn2R0>&!Xto&Co;r`D2 zg;-=8<6$I3dCKX*kpEVxFc1$cJfG@{hv4&;_*N2bk(ucbh=;oGLZM^f`S@peoN?mZ z7Q^uKM*a}bM+yPyv+#VVD;{EAVT<1*;bpf^L-c(3HJ7NB!MlR8g0AT8e$?LH5wEI$R=K^cD<0MUBn6S&rz8dQsZjQK|E8{Z*yFG~ z?mH^CH!2Lo1B;%@y5b?~ry)L;gj;m(ogZv(gscgTjD_d*pW(5`sd_J3F&n891R@I6 zoR{j2i`if%LOop%opf0NSoO;#e%k3^wOhVqZ-nxPhIIdd zeFBYZd~mnlR;mYV2q-1Rl6 zfF{3Epvx~?kPb8m`T_lWdO(k$QmYuqASkpVfObD`EjKNZRwciTU&Jp1+5vL4GqqE| zPK5`MPA~!b0iKFW#RcMQu`SRbkjqa8y8Vd#Iy8@gMf$IOR#g9*?M#y08{?DhgxHDs z*FI}ZWOQ(Zd~|5!vDM&gH#ROgJTM6sQ2{C^Rr~taJ}WAZt~l}-b}xwc-~WHbNGb)- zgd7L*3$Lls@4Xu9fVXPQuaZGj_jm?$S!`JfoA2!*QpLlR9#-TDJ@N4YtUz+qOTPt&2PpR@Y|Axlp{0arl?IE;Ep zqN0HR8}*V%)AJ|wVoTu1HV>II?Q z*#SpL7~>$-zNmQ>MGqBjN_;>mT*Drb@5obh#|hsX`LMqL0W+1;0Z+jR$+5u^W8^W% z3KOFv)%wfGKc&acf9}x_qHZ{W?9bR=C?%2hL2w~GBMAiPAGTe};Cc}XQT3Pj zKc$1{FHLX+4l^Wux_$j_f4NTpApgmJ$LKHdjQE=ROFoKM(Gy40L+Q0<0Qd!8CQ^08 z37@VPs((;WsCLHosrcK}1Mp#fMuTKwq0zCVP7L@t7xTqRwQ|9I|0&_4rBnzv=!R6+PL_sC=;yOmBMtOFTYHn0CxXMwe)~=fKps6 z&KGBiOJzl}3~*n+L|ZD#6M6#sfxcS);NE_cz)-MDt6Ur{R;cy>=v6z^;x7`Ffjt1I z#UHNW0|5N$>-coBEus|4+e|mdz2CfkR2sd0!P(v$&43*T>I}7Op39t5eh-|nS+4&K zTsX>|Z3&y`Yc;|^a-+>8+!83Ga$7;zfxo?*kEIDU*;m#URsN*x(?AU|exOV})zlfm z`UV1#U2&-$cp4BG8yOuPDDM(DB2+#wGATmdFEBAaC^R8qjC^23WPE&Rh`dWeXdtXz zsl1ZAza76|O!)n_COcZRx*VQoz1L#*fm_GMgGNJ_$CNIg^@8UQzF_OYyO-Dh60oZM z9+efa`)wuHKjP3W*Wr$J%X>k)-i3be9dmo{(|%^kUfNsbYe(jxbg(?sU?6!lH|y;> zusljhndwp>ul8P`$!3p;|5;_TCl^45WfFmD)C~kXAMDJ~z*R>aZ7YuLQiGizFCXrau)CHzEI!;!7$1qyruuvxw}V|k9|BlxTEWAjH3kc z&@D3a)9xId@@AoRYV3g~t3I=36=9AE`K2jr7)YLLtB!pkEDNP#DIq^Tm5*J~XlI#g z^5Pp5EMnfl&@4X=c>yX4J{J@k?&NF2(FH;MfY2=Hya^$s9c~?YKDWiYsQvB7vZgReSgA4ew&hqsw7Jy@pSAF4Nz#eekIP84mk^?Dz!$5V|4UAxCwb z-R!5d&RA?~w75<1QQVcV}s z_LMkFFu~&*y6IOkAa!CZ$$ zL-?uTPgXXL%WCz#&0i(L;*AOwO=>Vu-CjN1WE-qopjZIa?K&X;{GQ*SX4_OeF86z_ zvf{ArIb69dUZolU#8@wVsbJyr{6!9+U1wpWwD-E@+^qY9o&$!g!h%a3fZ2tZ+IobmvVD!C2#0wrZk;NlI#8dLLn7^;UPt1OXZ z6|56De!w4e)ObX^(fb3``kw{2QEhMuIB-;{(Q&BnS#TRt;qa@P@=HO}1eds*2W%&y zgsO6AP#au0?}x5B+>SU31b@^zj|JDXHn`MyUJb5dlnO32zh}WUsSPfi+e4=bE~tOx zSa9pt23JOYR}C&U3@3vrMd|GFHLeY=c8zccso)xu@vQtB)dsi5dQ&E=;2PBo*RVFY zV)DCcelMYr>%c4s*b%g_F}rwQ%xVwQ$Io zYJx+OtCpU_suzRW=!63obk)ia>xiR3@Ml0iu;A*~2ABH2I$SCg*eR?TuHOF?F2yHV z`PHorF4aC&IYbY1IZ)-qf~!*-T#C+Wa2b4s;twpivfAKM-)VwN@dp-MX>D++@2bIN z@D;emgpLJQQX5=~uMl5T|1@8r%AW;SyEeGgcN9eAGx!RHmjzc`8(fO7RD;XlD^xrS zuBbM+qG|xi7Y1LU;#qKowZWy@XLax$aq68~ceCIMYJ*#2`4$DK;F64v-5#`RgG=>O zDu2k2AFYB*t+!eE<<|z6WSA_mNx2Fx#iUtqd9}f%$`3Mk+R^(^6kZlwZf$U>@}ptG zC;EJZ;-7t03AjLVFiYqL&i@tQ{9g&~`hyj?SRu+1dTRyn6}&8N0XY2!t9wx?um_+J zDuJcIBHesoDV4ZfHSZl zpr?a@-36r#?i1w8vVjDFLKYA133!A324|UErU&i{R7x|2N@=OINSY5U1!MwS0r5Zw zfj5vSaF)t}OaTTY6qJ%uU@stFk}b&uk_GX=W`MT@2m2IqkarBo7i0^S+ND4$ARkx_ z$OL;A@jx7jz|iXdxeF@I(APuRu~Z-85^FM z0L~0UV==4@rB=~rNz+%i{X`^pb?MLd;V9WzACw;qL*lGOi8#*Q^E&}Ywsnw$eO=sQCN#NDD_zrz=A`5k| zM{2#$kE8*4C6jRiErdIxsmYFwtDzD>gYXJ|QwZRPGy>kOX(OsA|NN zFfp+ng-yVmrmt@Gh;CYod~pbkxt~hB*ZyChOyW)Ys2-zJaUdN(*3iiwhrzHOseTFH z9l&p3WNZ=;@NkbC9gS+wD>gDNR^B}!G6@7H%5CI55&~mEmy8FysqmX3_(#(#|5JJq z7|b0fe7Zh~cly8Pc@;RpB$Ig2Nx{?KIPuyK`H)^Y5rF>T+^;w2o1xJ`(Z|+70@eCq zlRu@0*oRl=mlS`Yd=8l(>YW-NsdarHG9F$2Gl|9#+!n2H7!2uY0v|{R8=O~k3_Lm=wnz#~S}>yF%x!enh`z@;|DdP`;*dn%ZCSBewYAE;13Y zxFlo`o1CKl$eUcJF zlM_Ru9eXE-g+<09Q4LmmGyNaYRixgpsC5_BpD3ToJ{50B2K+@uKp&rk6R%FlhjdYV z9j@;^0S%$CA%W50nMH@m|A>wn>W6AyY@cd}APd!;9r=b1;{Nf*iPt{JhjhStfe!YY z?s36^!NHM%@LdW2=y^|lnvOr|H|p(7fZ!A7W8~v6J&F!=ucz}s93@tCLq6;`)O-+z zJAof{BI_OsCI-K8EX%4lW18MSk=G!~m&qsC^#$_@9o6oLH~Qa^enk9@;`gxKkxLN3 z#$zLs#scPTBlia9|DmBEuAk~VF1$e~Oad!-e;pIB2hd&?4W#!Mf;Dx4c9OQg*hCyJ zbP%SCx{3^i`8tK7cr6F5u0Y1Vs~8jWMMWSiOGhrcDN7X|l7$I#WYc6(vOY3bnMhzP zE7kfUy(>K`-5{MQjg|J3_7t{~Hjw_1OcOkioRs_{!3A?936cR4bzOghwVR1LYFB7k zXbZG&3Z9D(3C@cNEq`Oh*M!5w?qUO>jhNE#cS*EIl%=&yG*PrmD@gQK*j=Ot^b`O! z7`#$m5igsU$y4y+c>z3c9?o;-$$5G_j91B3a!a{I+3J~EU1wWn-$5`U5dB&5S2fm&>7~Rv+R%_nOF}6VGBgt?wZ-4X7OImPEUVfmH zYif>d7q0flt#OGjUhW>dO}lXZW}+R!b6PbR=Q^mx3g#P4gDl_rwI*w)jHDXDZSMuLAiLy9gx02rSFr@R(j%` z?EPgHPociRn^~O|^Q``s`{;RxpX_!lc9yet%L}}p2g+7tJ%6<|`CKGW%`$CL<%DHV zB8Pq&cx%%4S+HPAtex!U<)oSWH(oO2|6%V<;Gz2d|M5F_hMB=kM5RcRvM%uAO#KO|)oF`<_bLR4S#F-??{&x#!OKeBQl3-|zqP{rYEa_+-~y7ke?c?1@HJDHy)$b#+jsRM!;kw6IO5e_i;k zZ(?boZWMvgz*aGYJJURTcbMi+O}|`)x`)FS{-o~vh7ot+X+XvgLRX#Aq_21yfcI1C zaL<*p4)?L@@|a8lzw_+DredZF^K!bdXCqV;(Q|G2Vt*sq-A0gutkWUK*VJHRurkD zcVvrz*IUYTRbOq;dcxOHs)AM%*jGY>Mzgdsx3Dy~vcliRLcCa5pOTB?OTEKcnu7Y@ z_eEf0P8wG;Ek-?XQ0~jvOZ#1UCrM`nLQ9b7a3 zhTokxfAC(M?7RoVy$A1Q@MZiU;;N$mmDWFqs|_8-)oAe+o>>O`n|$8&Xnc)XTb+XI zS1z1WKOvldhHF0P>bB^C`?`UJ`%?X=UyabFN%W(Bb?Iz9&(v=5r<=7#9#)-o)Q2W+w* z?E0j)s*qN^IoxgQ`d0A7DN##=i7w^U8QVm`%bqd{26K%07 z(63@^TDo`1*XvFHMc+C%222H%(sRa5cGX^Bt5&Ijc;5!l4!6ix7DR$S3hgb9`9NPH_Wei z@XPh<%H93GUl@I<(r*Iy_KXX@XKKxDZ_i&^z$<08zFGKgQ=##|kwfo~NVFd@xSw;D z%hO!740n$%%RCZ%tP6W-DfZtJkjpajySd!&(A=Q2!=3zk8;!rEd+8SE?Zivpdb<|w zDmq=aX_)Ey0^_;}mTGlmDz@Q5cKo5rHG8y9=(cG0c-~O6W>2fyJX(5Q&DtP={mluE zDc2_Q&A2ABN~aBcnxEqCe9M)~L*`jJsH1T+Cr#pv-)45H|AFw*^IZG*>u+>VCyH1uhuY)Mw-}s8Xd5MAJK<`ttikt`9tJIXbN5)xg+Y}Mv^rU6Tc4iU z%`~-Z(UN|1q+v_-gUClE8-fGyd{h`Cw&g19Nk?vWcuFHao2$%JO)&-IJMNObG{8<8 zl1(&tv?99(Tf77nbgzU8(NiY<0~S^d#T3#LJcd7AO!pz{Hr+(X*toxI&vzqTqNl3e zKxj3@HzUZ-O-J*dS({GVXuF2{v*fZF)fO*BsvFf0LN}3q@@m}nZVFM~rEuuT=?*o+ zi#2(+ceD8e<=x+Nrht z-r7}f-oIaPc_!W>b3xJ{G*4aMJmz8E@60DzmJ{>mYcGvLUbFVD7$4j(wqfi~%jD*; zxQp54CpDHXZKOZzb+z}VK@(ix6`YFk>$4yO-O1bC;cj_QI(BraODr-o+;y^UqCjhQ zEkesAbVZQ)$H#>f4(i`6VZ2eYvSpK-W_03D*Qdc8{qkRV+q(PIlF~8N52D<=?XiJ@ zr{nyol08|$W~fb!j%<-NK1%mwb?jhIRuGDaCJn(m)PcZ693SLoA@-TUYteI0i# zx5oFpk&a`@9UUg-#gxqXeZ|I8c=p9jjWKIEHpX0@>O9K_y=pfk-)hv&h^%o+j!6vp zdVcrzw78=?n7i>YM`_um;bOPO;p9;}vqGf>M}wI4U@u=F#~pjw%HN;a7ANbo-XB;t z~R#)=rDh?fM3d; z@b;_*m}Auj<1^jBe!MDpo0i5zXfzsLo`!@Fag3H%IGCMP)9Ipe<;1-e7L9l`w#{qe zmRh@!64om)tA7;C>1Ti${jp#^-w@2^e*<&*)nF#S5X|F8f?0ffFo*wNvHo9b`!Bm< zA786KmdywI4XU!gv1(b>tP&RgAFlsTVdOIe3{TMCw*b2pT%#Wa{rwEk+vn2_>0?1p z{~PG%SA$-DA?W4%qLHA7Z;!IjM%rCkKCPIRLKD#b(f5dV5O_rw(d2zuA&bE;J8n4h z>Yd}kVWZFN9I6=ajnIZl@(Ji@BfR#ZGnyL+_VwToI2nGO9NrOdYvu5+fLlZ2wZ;Dv zzpF{Srucu_0C1JZ+XH@;ocr-1%|bc6HQ-jt;cWo7LJn^VxaD$qeAul(4v%NCWpa3Z zz%A{7U(x}eFNf~~xV#Sd+z$90IXphqnB4)tSPtJCa9MKrE`XC%7f^ZtJx(M;&ix#~ zE$V<@*a5$Q#FNv>d=lT5PVgd99*+;rfI%bNLEniNLFohy@yIX02|M61Is6a6rODxc z0xp%rlfQp1iI;po@(FMq@pI(d{}FJrJK$%Lc=CH^lK8gwz6YE<{w?5Bk0$PRd4Is8t*`E4v)8y@wPH>Q2gTjAcBVZ zRe+a_$7d|m&4<2+W~U;T)_30!{cpO zTRA-5hP9K!X8_Jd4xbJ?iez*)=T@wQAqIXvFhu-WD*E!{coM zQ#m}|7BJ|5*O$ZNb-R%q9xsCpn&RrFjioJ5YQZf53Sd-6ZA_}SuPdbJc)9xZ;nfZ$L zU^D=?tSEuMc|YG4D{XwY+ulSw_x)?4<2DRf}rfBNc?jquByOuE%6J8-%jB7KXzQwaXo3!$Q|Kp%ghM!A3Lu0ppq0!;`H_(JFX75 z*EmXqSbI6~zt)b6qDL1=1r3dlwy zSW;uB)hep_86_bY=dc^@>A9(Wy!N-Anl;gR;u5PL@Kc#n^HYar^x{sods zQR1`s@>jnbzgyC{0RI{CaSWOjeBy$PBCeVMpkku^m-M~(>;Kn=yNJ-JJs)UD)6d_r z-?Zlw-jV9dzZws1;S0y5xSj;vF2Y~DzSI!EfcVAhOX?;mB0|!xkNUr+Pg{EU^Zd}J zkECHnd=)ia;rggcB=|+1K9qFUS*p*U)sy0V4*$MBZTXug`Cjq*n|^!(lJa+FiToer zZ#;_C{;nQv(|Y39{CT{z>Csd2ox}x93KCb69%>RfRSyxtx2G@FzpDqa4$WJaPk1LM zzqI8WmiUJD^0%%0RFv@DC0Fr9hfiFw5yVvm06dN14%a6Dn4c%`{KFHX!ec{1fh9WN zMBopfBm`v~9xt7w`uuzHKdg^z{>Sr3o0FGcM1-(iAFfoNKg%!T__5-P-zA&Q{%ZVm z6?-80mFPo?AFf2wQT$NyKj-i2BYsWWc0{uJwB-w$P9ic}^=uDn# zLO3v?r>@&j{=0gJ!%x5`ULq&|w}pROd~~FThS&q~FE&}?pHvV0`*BCrBS1`pUldH7 zHL@Bz)&4iH>&JWX9rxRT`QblV)i1lI-&ctb#vpiLOyIAKLx2$oFmiyg;(;B$FR;Y7 zVDVV0ECif$P|Lgq&LAjZ7J*X;FlIbBhrpM~2YV3mn5s;K*{E0xP9qR0mVomJ^1-f$ z@rnXPUvMUYg(45wB_N88;ADbp3L*Gt;44@t@Dza6Iyj}EmT?W7 zQ&7Sv0+tH6{l9?W%isfR1s+3{v`V4mFRW9@2R01xq_qmFC;}`QYQag%_&5tbyerOU z8j|*^BEnErM1@m?Q^f5N362s*K{!$v3E>D~1cWCGCqp<~7!KhuVHkub2`51~R2T~3 z5Mc;}1wsLYgN4Bmo+z9M;R(VC5DpRsL3q4yJcI*LT?Cr3B4dZ zOgId}Lxn>j>?!nw@DSk;2zv-UAUs$&7{cyCcL=))-5~5LbcOIB;UEa}g?tFR2wfoT zEOdsjlh6smjzUKWI|v;hJWx0g!UKc@AZ#zRhj4#ke+b(N?I3I`w1u#Z&<4WRLTdY%Vm1u$j;d!lpt~2%88^AZ#o&hOm*)2*QR!LkJrP4Ir#9 z)Q7O1P!Ga=g?%C1N7x6#x z*aO1dh20^nDb$2;H(@sjcNKPpa2KJ(6kL+OHG~?FTwSOR;m*R&5LOeaL0DA?3Ub^@ z{Ocs_1Yxd_3t^6s17Q`R3WSw~$`Do(DnXbnWJ8!GWI>oIWI|X`s0d*Np#p>%LI#BC zLOO&|AqrudkOpC3E=0yyE7l6(7OVxrzp>vC{)PR5@K5ZgxSgi}>OUq*2LO`GxgV1M zz`2GZpNA+{1y8O;V;-12sdF(5dMsPhVUos6NEovA0ga`HA46U_5s50 zvG)*uhrNSv1J(fHx7b?_%-$#!mqGb5Ppfhgm67p58)Ts3kcU?br61zJ%{i! z>=}fgVoxDli`7E-3HAiSkFm!PeuO=O@I&k&gdboJAbcOY58->*JqX{$?n3wub_c?@ zvD*;7h24ViP3$IwZ(uhdd>y+E;To(4!q>2C5Wb3Ch42;Z3WP6Xmmz!!y9D8j*hL6m zz%D@eJa!(!)mSxz&tc~vd=@(k;WOA72%pAIL%0g7f^a2P3E@-NDF}-&5rj`-Cn0$C^+5Vq=K3_3$DxW6kALoPp`7M~zwE>{t+`c;CF7w~H zKA@1r;}$6h=tWFEusT4%IfWt?s34d{pm&df)dK=n5ksV)qHvuRNEh!D5XMMl87j2x z6(9h5VR9`OsC|91g#({Sws9DrkQ{#Yq0f)gp5JJV+;ghui%hp)nqL;_*IOa-*+%U! zXgSenK9_fN=NByEF}}Q*w6>AgiOYYazQr_dtpL{fw1JX=puRSG&XWdj{BnC$ zcGBsAk+-`ZTZip#Tz|-E@jGsc$)`?pi1@_UmWcfzAQ;tUxO=A!$j`@tNm zM?*Ir_nmf6VqYbdSImFCX`8K1j~Q>K@;Qg1UQ?ex+}S|UVf*hl8Vbt}Y1$Yrq{>CV zk4<>ZJ8jfw#hvO5d@)NGYg+D4|>#i5`rw1yUuqh zq{`2j`e@Bwc&7WK`X^x@^8zJi71Hk)eLjVMl#tk9SMI`e=z{xKSEDCtQA}IXIo$kTj~Eb^qCRnfR;h(fiP( zVXLeyZP6V+me%1m#K1|PKhiq0Q{m4gITLzrWBRo8w57_c1W)biYSQ;AZoauIYq6(z z7>o3L^-|Y2zK7p7^jM=&c5H*M#Ewqte_38d;Kd*BdVWr9LCn9-GNJl^+%^1Unn|9T zOLCf7s^XkPs=UJBd^lgnH1DQ&_q1ur2V}!fw`K1_wVCdBd${oqoHklTeg5d`jM?Uo z3WA0jZdlXx^8N=@dF2znS+bUsmzSEcbyN7o2&(*WR7}5Qvr+dHyfT}Mu4IbEB>m6) ztk^Li{f?E>#F4zE!Josa&sTr5ta)-^^{n~dKEF7$uzx;Pek$(rC6GP!rhNTr8QZxj zmMTBJ&cn-1ShOqi>bY)v_tZ(IEv4amy1TAWaZAknR-3vJmYxSC!^cv2b@JeaUo`!k3@@1;g?QW_$#kO(uZnwy zi0xD(#s3q(l4&rR`z6y!1RpQCANOBT{6E1<@;2Gs*NWbU)5ZYEy{E!;%~?ZT{dq9(KS% z_v7!>BxqTl9Bys?;9NI3_v1V{JlpQa!%{Ns2E7;O$?1@MKRG>+d2;xZd2+nB@%X*u z^iSr=@!Q7ZaY#=8WS$(qZ9E>gC+E|)@5lWi=hGCN01p2aayo3|@o(40Z;+%bGEaUlnJ1?QGEdGI zWL~oa|H1>liy3`$?uIM=}V4ZGEa_QGEe?aGEe?aGEe?aGLK3Y+JR5`KQsT2if7M# ziCz9wB{S#O{^3~!u+4%6G2b8GejY(Susy&n3Ir^SSexMc7cCLmS403?1l~V6(*U<5 zXk_He-M_Hyyn|XL0kAVDqQ`(`t@tiB4#4_X9P#-42NxYRs;z(&V}E}b`}x6m$G| z`7m|?!xLoxoWbffGInx;v7;l59UNdha3G8a41lq{J&gPJhq0XxS&8VXu9QcPDwL1|8Y-ogUL{rbV! z+#JScW-vB2g|UeVjE#+9Y-9vuLqjrFMH%2@rQfGY%$G_r7d0?|<@jVSS+1`SV?8|> z_w5VgK7GiTgZ2dZkL;hWE{v(=3$;9d z`J0Tpf&4AS9F*#RSCHSOaxU5h&}xy&)hY4anUelG zQ_`P0B|OzpIKI?TIKI?TIKI?TYJB~b`a=4>T=dV%TQ2&4v3wr+qW`_+*Z;Kgiilv-cXXyo#c+J2_C zm#OVvYI}}ae^Too4yC;0P|8aVrM%=&%1aJPt>57Ez@gM<92Bn4I4E47aZtEE)Kdf=dNdZ5S^iiScqe9U~h0td#==qBs-v6(q)q*qqiokh(7+nB% z|Kl@xXssd-oacw2wcs?rA}$Z?qmOZm6a`@AJ|E?Qll*Ey&$){zWPxl*cGyVk!s|LosF%Dqsp!YUzBHS|$&i;wNGX6l#?bMG-i~kH@T~ zVal}%0&t2SPg%q$0+#cLaxJmXKrKU{h$-=b-Ms)<`wJK%MINyBuVo{2KCrnLv1?I; zRRs1O5U_cQd^X15v3P7g9bpT=oPRB_0}#-QSbWf}!&raMI{zBb`_C-%|JgbQ5$hUQ zQ_u*`CiquZG}N*{Llg|bGx+)IlZ9VjhJ1W9JjnZTMM4pv2`8OD%kN9ZAw%BvNKtrKliKG#Ri5gjH*e3tS&Ey!_B{A@&?w3HsnmaA;k|iH z+iDz+JJwsge4Ca;eSV(z+g^DmRx}+iwB9ygQQ=0ad;xZBLX!87nGZ)aGW6BIgAoVZ zN&R0iUnBk5w%vX7cTAeaGUUCZ%I7z~HdA^KSg~h`fc4#K4k)p4Cw)Fg5P4(Bx9hJb zx6Hl2^;KwujGQ}UcIG0Bpewi0fu|}S&!x)K?k-X;saW>fB9qwu+jxYSB+rkhKkQuHyXEGx=tDvF<}0c4xg*hK1yTDhwH_|$8hWP_ z=mFtQ>VNvzq84o|*QqtMuTa}#H|PPta!ldu;SFY5?+s1&dOq}94|)Kwe4%d@Z;e@) zRzO$}#leRs&ZNqh?A>MH^m<=L=ZvxXnYWoT&(CjB?;29&wg*!m^U}<>bG6L#sZ)!T z4}V?pgqwM2d0^ElsytiYT-w7{obI)@wuJh8 zmagA=tsP-qqlm1j;&_Wt@Z-?JhX1Z3-<-jmQNY-`!H3WyTD;2PruP_yLIh{#@k0hj}>>)@L3#m;LX^8 ztq0FEjw^JX_c~ujj$W=()_(dm!ML<|iz2{3I|}Gq4+N~dUU^O?|7Clyx9(b+F>Y^4Dti0A6Br?cpHE%C&A0Au(LBA4?-%q7 zj`63;7bL%_>h5tRD&f@*r=FWj)2Z@I+N`u!lNL6({V+0P>pcJ?D!7w=U#h;a)W0!3 zIwfOI_oa&?ys7eq1MRcwJ{fHn6z2>w=&mM{KNh676c1jr=fzh$E_cG7V43h=F!+3V zh9PspdF_R*qC1+esQxc9-XruuG`I18p5J(B>X$1ra+G7CVmYyOtKy?-m+&PksPdd? zdSi2g4EotUwLE|AMffbLJkR&^vvse-FYe#CazR2yy-fJe-?HM_=ByPv>KC;RPI~!m zv&{2X-FCh^r}e?);+$Ir%iq^hnjGEtF0X&^L)2OtQVSBpADH(F_?R_P9}bH=jS=*n_KGo z74#Y1U}!BwP}8{&@*cAIXubM4G?52^3Z3D~#i z*AxHF%G^%h+@F?uQ03WMhFqGJakAf*B$YXvLc48}kx%x!HBg|j>{q5q&tpm3Wx_vu z{6o{1!S>H~D$L62Hr4P6_4&mO$BO1ndi=bXR@D`|RpYP9$RGdw7!l>#WOMx5fa`~P z$b{eGUi+T4M$ZmRPO8(gsS5u}eLky!H9g>c`8})eOvxEg*RR1`LLxY?-f5E{C;NY%@cL+!3ZJlr1?9uOl`3i zb9MFV5A!*X*+0(9$hY^HIn49z#n<*4BiA45-$zCsSEle{d8o0&6t5wtysBi%&rHAh z=!0Fkvzr@dojkv5b}RMyjD}Bk-#%QneX(>6%W+iIOc{Ch$qhTp9Ov2{{<>?yfNyN7 ze9`jL>z7-edRjm3%4@8^d#8-tcsBQfs$!nVY|r=j4+#}A^4@&kj~`xKi`lyD;_&S{ zpQ!SMsYT9*MSU#!gMV%hGK!E1zlF{wgY30-e)089XNjts=1`wsFx6yfNs+;4#@c%0 z?wxIXsq*>H`<&X_`^y}KU7HH7Z1Ikjkw4_FICAil*{~y3#{0T`u#}Ng_T!h4Z`>DH zsd(Yk`qJ}DW{>zHQ$Nn1%DR%6GOh9FZu`X3YlbCIpP%<&N25D!RY8)&3Z1$`BTZ%G znO)0Sh8$7e#G8jjznf+JpBG^hv^VciQr)cjoJr1BIWo_?eOH~dH1MjSC;iFpfa@~P zr+*yAUfCseM4I;for~u@IYNCtJ=L3@deqa#I`~5H{dxW}?W1(A7yk{--$1?JhZ~%* zBjVvXQu-G*2c?}EGvmSe!G(=g-A$vY{tF9kqz#{UL&bRO;o27__YTR(Z8cS%B4bUS zx^=%7y7VTP@xYxle_{5w)~>te*;_y}PD$A*$(|&6+8n`zgom13X8o-7SHE{(N_{>p z@b0nWSLbQwMm?LSGa%xWjC{aI=Uyr7urE%Rqbrmi7Rkufd+0hn^*cCB<#5t`Ulp15 zN9w)(1AgCPt<(DUX?6UGn_z|schc`q?KP?EMXzq_KdX0IR$X#Zru{fK^^$Uu)A(^7 zt5==6@Fn~l_4&Cz8@IK-^SxNp#Bllu;P5!AU}U3F1-1u}S_1sDS^Tz{`h4*jfJ}j82LV2#gq{yp^dl&FETERw zW>4@Z`y14PSr@63&Oa){^P8R7U~vt$Nh((wfDRyyM*{gq6x-N7J`ZpaiWQOZ1{B*s z#_LgRJsGbDz9KvB}7#S()%W%lOP<5hC(<5 z4S}!#6+k!`4TkVUbRvW&pc5b*ga$zv9J>YKKr|4-<4{mJlD>B=Iu^oXaN{|Wd^9>5 z!U1Righ!#HAncF&ld+NoYC*C05ITsAIb4(rmzRH~yd{@k|BmvN{Qm!xr{wr#|NpE! zW&fuI7j&)DglCDCq5y zo*#$~gfP)RAjygLI|&o*brL4przA|Y4@sEPeqdAD4{S>NflX~cQ0q%-{X?y9sP%~{ zzPT{zdrVLh2pglu5H>=MAZ&;lLf8N`fUrKQ4`DqN*h7-u*B9*z;XY^|2u}pO?^Nb1<|-#B zk5(S2tfPF4i7MACT~OMqv{WfcDNxCn<*d}8psS>)bYJle`-I{Z_I~yz#TD#13bWX^ znG@Nr?9NPmwmDOY&1Jo3;cNWGEBwjp`&HT3zHc-(8WI%!V37GN25$+CR)=lvf}H{rT9VSjpd_NUmp;mb7@R==dRmfu}l_~!lI8JDBL39|oRo}Hbd zoffv~^sfuQ^-U}-)Q!Nox@RP5=}hzR-C>$PHT`lG>K+bT_*0ZIUe$*)Sm{mBgWTzM zXS^_JxKRBd!bPVv=_?WE@sc=qq9Y824&%J6qd3Pr_)llyr>^(l&r~_PaE3J2@elZC zXUZo}?D7p6cix~v)8qLzm+``fvxADhy@nT_pN-mBs^$urg3hIB~$2aJZ=FgcHqaHXY_hsy*{jR)| zq%#7cB}jBR*=f$|mY&Pg&8K+B*j+EAC4E0RTg80C@6MY)crQ+N-h<)Z6S~OwLBv%> z|0}J35LX*IjH}UnB8z4j@Ne>Y*Q5U|uBcy)(56ZBqkeViY(3A^ZtoiRV*>w+^utr)EDb~cy}zN~c=K&L59RCcZL~DEu#?7XhK)8S#7_71rs3<$ zRkU7$G&)F9Hubw%=hIiWNsWD|GFR)!%%ZX_Iaf>%=w96RIcv(biOoYveo$xVXjkw8 z5V$d6BiRavcYPdnaqf_&KCxBYpz|w_4fQXby*#$YzGt9oHE|c7&gIPV>CtH2K6SFh z!|oeaMx^v_3lxykEFJkNovCYa_WMVAD{)rxHQ@7KI4jwSNHQb%jV?^^08LSWK}RnM z`Fbj#;emL>gv>|`nckb{6+2^kd_q)2IB!&3LSj@*Oh`gpOiVZ!yh2oYzEv?jeXy0x zoT-^3taGP5%biqvT4ToVMzy))u~Bz#(MjQSi1vP&qUzpdlOp@73qF@2v}Y*r0=V7f zN12wFR(|iR=s9lQ8%#O5xwppJ#T)c@g?in-P`YsSZsIN?oTz>fb=>uE|HF7VHDRm8 z=ZNPpkWkN_2Kgqe+L%u}3|;Ss9B_YtW}47VJgV~33@nHDi|_p;_=yU5l{SVZ4vMlPcLEM0LZcOP784dX#~s| zfkZ;24Y$asm?+-#s94^lkc8N9-qff>USvp2D6!4_)Tv;vVGEbg(u2~pvaNU+6weaZf5l+bJyD^j{CvZ(oNJyQ z2u4zsxvCfj{Iv&%bMe8i1!8D`@W51`DqdkA#&`tb8JmvsXs&#O#TVytCB%Luw$Qkc zZOf=r{XAQvD#x*Tq|l{c&BfzgE|?|3Uq+B_1yi zH2HBN&iy`rR)1uKrixIJ^&Ph}(+*~$wlfi07fCr9JiXV9=`FJ@Ykn4KOpO?k>=)0} znO)dvbZXW0_ca3FrV^=sR6mIH{B5)CdvV_0D9+oUk(AETF~WwcB3JK!t(~c(-LDTz zZS+7lD|?1f{I7%yeXHodGR6v?Ioo_NuKoZTc(>LrfAc$y9c{^TD+pYLl*7|?37Z^aio!Sq1G#eE=|*ft_= zU%g`>17;pF$%zZ6=?<(2fT3b`kRtzPBA$M@K0fkcMqRwhxyxr_W&RRHpz z6d5vOs+n(8%q%>&B5H=dRX6QaHP1GjnI~#4=Z(0+IqY~ZYo_xQ#p$1-Gg)QB5)gOc_1Pk-A4EENmbRD)+P9JZM5sgt zph!W7?OVLa1npZ-nf5I%hz(Ch6cKy0e2&S&Q)8_^+)-Q)ra&YPKmQK_=l=<~`5ci- zqcWmwp(J1z0xNZdDPlCzd30Yio>qil?4vBCQ$Ew1xt6n=B>>|A7EDcMBj+wy2T%;= z%TvH?xhI$_*90@=ufSgaN5L9^43&75u_}BOL$J#I8`$B$TDe5IP#IH>RQ6T22e$q! zv3bJq8XK zC3-GKeBw5QC%Lwbm$Yw;L?jFR9!YW4wm}QhNBkgyx1^-bf=~P}@+YpU07MXk_(xu% z5 z^_(m2;Dz+z<1GIDlktCmWFZcBv<0X@5dKk zM-f*%zKEPokO;y7SNDXFNs-~Pvu4Cb5G`5}A#2ws?BA`=1r0tpGi`E z{w)0&1?5$KVGZVsUnhJ13N?P(FjMk<7Lx0E$(6WZBl*NREGi@TIL6c8B>W%X@VN31 z$D5Kw<8nycjIa=#7uPB6@e}%Y^&$F_<|cgHPejf+EY$CBOLzD;;;xJMf}E3F#TRdW z)fdB{JXd=@j`4d#@qd8BtDsR)2_aLXrh_)OOuh+`>hWj!=D(_(gY}Rt=ZL_^KO8t* zFKXpUi5G!XpFc}y;`7S%`1pIkc3FJl0)E=!qpf^vi;p(kLvmvqZqtWIU*3{<2Im!t zi2K^p&ws)lgoi2k`|l2SJlOGcBf$RwP8s}la1LZ&APWAM($5(`KJWv$p?u;3e*QH5 zoNap$zY50k2}nBcDwrT-^$-z!d-|Fv)#K0d_3Bl)>%|wpMniIy>Y*qW{L}W!X~})! zOJA`+r1lFip=o#W^0kPNw(B$D->pwo``6YL_J&FhmX^E9SBUA+8y4;!Ow}thvK|I+bnMKPDbi2Oe|E|7bJx%$9cZja!`seAfLhOO$*GlXU zDLqR2C-UnV5%FZZK7mqw#A8A1#O=brQvbJ=A54kQ;(j2493#CDPj7(| z%)|c=kBSkupS{4?*z}liFg`XtF(Eu^Qe^TB@E?Aw2>+3`pT|k{`Lpsu+zw##3GWcu z_OqfyK&>~mC45_d2TTT$oGPCHr1$|Qa_vrD{;DRV?eQ~Ks?VRb111x$2Ve5CwrhJi z-jO~%B@dWOuCP9aVt+6%;);L&Sjl~w;F<)6wWmhKOp4?sheuUy0E3yaaWf)9hAA4deAL!{p~e%neFN#mcM|(Ys-J+VBH^g@th78q5pzU^RRPxe zS8z4CH#rPq6kxaVL#09`P4-Q2R-OvWuaie7PljK|tg)eFK zIr*I{M5fiXs#`=Kv-`5c7_~!A-^={T|30Ge2_2pdUf|L=clFDt3C&|3r2WnW18gr< zH(f{ecW3X-y||}a|D?6QQ`Y=X+yDPR^Zz{4_>go^dEN|hV<4w85rxvhzS|v@n7yWJ z2^?uA%(uiGM`wL|eA)j9 zf;6|wj_4gpHS=3kD~P;$)g^Y~c7(RKT~_6#TH#WsmKzyx&&-d#erb|LLDs%1#q_#^%;4zXL)?oTqh^SbO{ zvfaMc+XzzF{#@Qsevg-C-#ZBo{2b+!R6ie~?QWOZdq2H4wr)?krtg@mBTgUL)3!-9 z?q`?EUCA~x63vHIjXr91@ks-Mh}&NA2$yt-((r#T~xaC>x#N z-q`*It%xLc?6W6YuJ+6ucZSSZjL@F8%Yw}HOn#MOfv-Ql%;>zLbvQ!9Tdm^I-N3&o z4BverSSinNciPUV7-o6j{@e;}mizaKX4X^E zp6zHIsPzy5JKf+8d|78j>bktT%HN7=&TCd6v|jD9 z(u+aOMtufFb2^*a&42nrgdisEGT-i_Z$~O_8qL!6pTAb~8)$+IZI>BOSh_Uv&Q!t5 zE>54e1uSktXyxs)z70LC`<`9#pjlM*BW&E}`_Tz`Pj z-nPr8=ae=F30ks07HQturaasop?zqVZF8EmoIUVNP^E@lko(j*l?d{nT~^&qbZ7j% zixZDH_OV!g?7>-a8y43*{{8mPXRRlS-hEsU;LNSRgV5UAwH{6TOYG)qolUdWd*niA z*&k}Utua4y$^GQRspB+^I)8|4_g%&hVt$eI4#V8S&seqJtgIW#DaWWd*UV z4iDrniLDMz6QL!Bi<`?V#D|5P3t4$2lwL?eIv8%Ox2Ql#t31HdgUb^y;gz9szH5EnMHDre^9&XPph5H+-uK-aB@8 zQ1)t#!Mw_wj^$$n*H_YP_SD6b*aYh7nkxf%(QGt-E&jaB$9A6>xEESWy38EBQL(g6&7t2i`d5w^v;!_x7{H0WA)> zXE**ZdS~u@cX=uIYZ_MH8rIz9;eLL+N^r!N;g`zex3=zj^!tnUkHqs#=kGHv>Qw6#DSWI_kJJjh4TteVIlD~o%}YZW1Flt3Pz#>i%Lsu)erJsbiJ<0qa(so^u_5{ zxb9_>qHWc<4JQsAd*<_i8DwyMZf>Ed$FB0d(V^vnxD|(%yTuNpv( z!)v2+^KQLfJZ1RNOS4}cJd4oG=;BD+yiad%mFe=L4GWfZFJ1C;FtvO*C{2r0KZvyG zf81=Zc>Z+@ks6yGF_6mYUM7N&dB}#Ete2avefq4QmX}lDy+6!i*>2`SM9wG*F*tx2Yu>obat`dsz$!2jnxy3;CXNc2D+O1I=SAK8)<4VruFcGue8pZU{o*_dUV zIksAqAz)h z@jRuM&mTVPw&5^B^Crq~1eua|^Fu+`aoQKB_*WF&sH&_?*IuerW~W#&igC!+edu3KgFz2Bp#P1-Jkp2bt=*sXOrwR(2zk5vyW9L+bFY|DGQ)WH9Q z>4uXAZmKFRZw?tZZrg%x*3FvVwJ6$bGuM@VYLq6O%WF*U-ZbTy<9>(uAf~#lXpYrS z)1-SF=@EPOK8v;pCzS^r=9UvS2ec|vF5UlJ5CQDRen`rL5(GD>^xL`o{HSF<9Hq)V?Ef2Y&7Ln!ht!f5p)Hh@ z!3IOkJ$f#PAFfk5Y;NS!E?V)Fl2%#<%lJX$!!1wO^%IxDTg7GY3s45LBz^nZQ9}%t z@%v_^zX@GjMAum`ul$vv$ij1}>o#7|6-RXyE%8_nWi+R)vc^YqvcPE0%0ksGUd9EQ zK|NQFw@&(Hul32Uxi0o%PT5ID7G4Oi&+WaRCMw#$Ouve)Y35$w^MXh3uoRYtNi3;d zZClVT@c`>ZB;oUHd*zSju6h+0U3NUJN!3KD;Ux_p89)A)hmUP| zT9}ThMbx*Cd9zzpBfuJ(XvyHZv5wR514{b2=3gt`oH7@vRA>I)uJZNiqqK2KVf@k! zRda~43-7PU_(6n;s*86io@TJAl64PybmU;iYh6H(Rd(D1U+YpU;9G0+(`wFlqnObH zlUCuJ`r03R?-%V?e93QH?jntQJ2lhk3D<%u*;tpO!(K1hgwRYSx}|O@?R#=TL(QR* zJ^Dx7@)+@~kV#|r`zWDLhh5L^9$cN@uA7V>gsoh2+VW6bx8hWZP3s=8j;BMLR)@I* z)8kWset%%o+GgP)Hf&Ww_}Ioz`2$82PvcqVzZj+;Z*@5_&)ydwcbDpGdvvy0kVCcW z^PA1PKEBmH@!2`1kEZ8@hL(KYa>4zS%Kk;lE%k#F+x3<4 zgNVzjm@BV9zcD3($o(l_P-K3`F*%ip$+7sVCCQp4FtUv>d*Ora6D{}#v_&4uW2F|Y zZEKb`C}CPf5jwU9y3t5$vF!S*Xhv>LRAg;8S^d2-1&lgKHUU8z9x*5P^<4hlbnfui zziuw1AL<*w@h$83fKz!JqZ32>L}j<@B;yAWhrRciyAW|mvP+)dVH}#yRZF)Y{YP;) ziqGRq+CjMewc87tV!<1We1+;GODC-Lwtm!yTY!tD@n^H<)Z4H366^LqKUKbYh*4*R zhDq8H=S}STdLPk@_x88Q-_~laHZF6n3(e}Y=+@Ws!*vg2Es~~J89xYJV^Vgn{p;z~ zcrH8L-1m=krL|e`ymG;H`fKUc&Pe&<1>gS1IQ|eeU z?ewV%T(WA_L~qaQo!?f+?w**n`+{g|Bgjm^;bo7EA4GcnqVA%C>zf}X&Y$@TbmVkL zDHdgcAt+^zYCI1dyyplk%}qg^w6~7&#xYF;{Akkf+%_pDJSjW@m}>HPeP$m^S;bvo zJEbylUWS*VG#+i6W43uP&P}qWH}nfnOaEKD+4R@e5r0MekO?4}aQwGj0`w@7|;9v%E z7oi{3529c5LP>2guHSA+zh*b+*W6@uq#pzQMZ?Qf+*f>^KzrW?S}8!oHKn75jyC+s zO)fMQUVQrIS2Wd<>QnDtUD;#RXYq2zSPlASy>$zst}FqGm!xN0)qxhzYUTQO8Fy#3 zSO+1r6~y-=NV(043CpdX?RH&$Z=L<=cZQ}V2~ST$9iq4eh~3^ zY;L6$EA4uq68QFxR)Z*l!E14^P5e^1eK#P|6pM*o9G>^Y3kQ_=j$&T&>&_Sd13Gx1 zV~59ATSpIn2LB`J9jFqyR`o#CkG#RvdJnhRBeZ+?4ZyK(y#KkNdFR95{T#F(7SDS( z*|2L~W#qxeZI7R>8NPkz6p)gDBjT6p2hf{IQ{3B}0^&FQrceQ|Ndz}(kC+IWZE6`G zy%edw+U-|sbL-SSn_9hUmJE%Ks`T9QasQAWspgfzbk^nTn!dVQih3eyWm~<^Gh59K z6?8pg4;tIKsxJOHWu&c^l3Rc0)k_Xtk0~xwZDoA&oh=+$Sr%|;`IV_D+QXW&;_fS1 z-Z|Kc-B=%5`PwXC!=(!4-A&0kmh7i`597L+?fT@VaW=JP34MKxMR?Q#J+H1qkocdG zIWz5R?wATPv^!}j_t3JeS+WEhSr(tK&EWBP^On?1)pLLHwr|Xg%JX4Kdo0RkTAHSeE(nw*hp!#If zoBO@pTyEHwa`KLV`3XswKdIU>_3*;7eM zYg9joF{P{*VG($qD#S8~+Pm;KXsal8v_ew_#2;vfrBG{c@!~X;Z=`U3^IY&{G^97U zb81NJjPRHkVDBc{T9fgE$YWU_*L=b4_Qw!fN6tWzEgg<^;=FB_5ii`&i~9JF2)srUH^GtT!7CIDAWRbf03dNV2pS&VP0Y|{(gI)3v zj)+mKSgXQU6wpQZZvQMky+{QEC+6`OJZ3FJ1or>O7(5k>iKx^niaUrdANKidYC8V-+d#nHU>G1#CXMh`|Hr0U+#J@VtnHfIBc2LOALEje_!? zkslwZ7sea9>*+uA_M^%J1{{xlsCA@sM&aC-Mz<#{rOGGn(m$)KR%dr1Lw(h$J*y?b zEA>B2Z_UzMM^CR{zef#>Upc*?J|8&h)wr#?kM*yw65Sharvi3-!kzT_;47RZo+?4( z=QK_p(sRd;LsWU_oE^KqzT4jKit2K;PQF{aQ{}-{@2YaI&ge04)3ayqY`SU4 z*y=1y%v(MG`rOo;`@|DTr1uL}9=UI68`Smv%~0Ru?K36jP15fZDAa6;TsCW~ee>7P zgZGc)%lIFwcl*~(Q8zBu-Z;Doi_{F%a_xm_6AP$p~}at?xXfby?AxyPLGHh-Sc`>xx3K< zmuT%B$h{3#-=FvP(V@!SY66)94DJSU9v-sQXbQPYl@I(KJ>}4jsT*&U)UPanuxY%``hurH@AleloaI8;ev|d%*YZD)ex`Dq^SAjTmG<98W+AAtxt5N%I%|@ zJ*U@YUQxZ}7BFTny@V=vSniu`P^v4uum3uG{G^*>sB*inYn^^9O}Ww#|Fc*6#Rl=D zC`o@;t3D5I^t8f!cN{)7$=5_geco}O!~Q3F2VT$4%{*l9Gr^52x2Yd=(C(b(_>b9Y zHfsZ{!Av>sr1}pSF|eQNoLJ5LrUDzk)_n04G)eAo%fJ7+3+9j9!+$1~oYEXiectU! z+7->9-cxq!{xtAjV(^M8x1adHrRIAd;e^X;K02QJY(tg1~Qt?m-jh% zgB>{O_w`qw7^hn0Vpet{&UjH5n=e$k)1i(13l$CwT6e$7`SpokU1a1g^T5U`Wf3FL_qm?c z4r(~@GyUYKXW!5ID&C^{KPaJLT;kCYvB#UMELuVjNSdS4=LhO0?9g5LMg74o57#b! z%9E+j+XuA18Ns5JSvcmJAKo2jOO-oKKCjy4WcT@(47O*-JyiugdE80;x1aIcsNhDo z_v5mZyD(LPx%AfM+hb6T;T5*t0O#XqU zSnaAz`DA}>>PW`W40>A9%h3T1KN_jeJ3dPqnWy1;r+C#IE&utQ#D)qa{cT%YuDg$7b{z zzI)^M8&tV-FWZX`tlq~x%{HB~clWxpRJptPi>1SgEN7pOIApFicwB&tyw6MT#>T6R z?JwEG5~nB2e7{>We{}ZaEW;rUF9$~Mn<7(wxeYk~YPfoK)Re%_p2b%+a;g5iYVYbB z*4oFd+p!_n3w$Q~QssjhOE~*F)8o2)-xbrR(Y{<(ZX30iu?*8m`^D_~{l+^P`AO!q zb4PcbO?#^Tt1#u3WOPNEeggy~y^-O6zQ5Ch<7k|We*C^%ZN<2)JKSdN z2#oo$;;W4R%6!jh!{aAE&F}e+{Vq(VedQ9CIiZ)c%VPJ;rGxKiRJl-}cYbrv_@!S< zW<^;)zi$nu+A{L_v$r2EdpVE0LH&l?7NJb}xtva0^ zA|wBQ?0pGbOkex>oqcPjku9_gLY63NvfW69A|$d-dudf6OB#eIgizK&2qChsW6z#F z`+R-vYZ6(C|2gO0nYnYPLEi8C{(kTO^E;o<%(>?|=RVJQ&UVjv&U2oVw)FU4pIaWO zsNMHz-h*07gZLnSlL0n&S1q4Y{r1B%#ZWc`90h-~jCH${Uh?nwtzT9CdRPa8cnS9Q z$l!gR&Fn9yZygwJP=8&-^Z5%ec2eBGH}gZA+4Bv@r<-Os_t_ zljg-=vCVG`#s@>KH2wT{8X4QC`WiVSXqwANar=pIF$kQFzfP^+43FM7 z_wA6+g8;_q#+nDlqSwxC7p==pQJZyVTVML=xpOm(|v>kr!* z#4G>4x6<}iNT*IceJ+4Iungj3nuQ)af{nw%W)2E?Ib@bWd}Q?E;kl2Jf8^f0Gj-G8 z3VM8psqMbiT&eEJDIc|HVe#O{2Ju15b2@Bn-@kT6XsNe!+(Xr?_;X55lK#MXEqA8_c~=`FuydAeA4i@GnD#)6gv9t-un(c zcxmPOrINF0%a5_7bo!M@)AZlB>3YbH`E){P=j|tMpZAB7KmB+^35i~OC6WaFc)Z3- z{`Xob5kF4#Y^Ka56bmW&Z&Ow{)yBK`(VV(9%kWRh2ICW5Qb0}s0SzYB9m``mnwCmh zNS=#5#C)+Muas+R@>o;~ZoZR&a{wMfzA!>yD@fzJ^JUz796skHyMT8coYlvKhrkN_ z9v|nI|3vqn=xk74lFm-_c{wBb@ynhJah~mK2wcbf>r|v?jD#d~1w?{3T&4IF}Qbi@YI$<|Xx4QhKTmMydGf!j% zpOycau1;Fl^Md5hNTn;aUZ>Mjau3^O9c=ygn}_HGe(j#NTu3bl5O1B2nzyb;A3PNsjNTeaD9_a_HQ$LGKi%Z?nt=O|Hz2u;Bqy zid1tcO%n0sEo{P83Z-q_32cAF@!9sVX?0?!1aIt$F>J_k$W^XhRGu_O+QD|kmZXtg zDn7jL_N)o!!~K>~x?<@<-&6Z^-MzMNPgoSUS7g0>`*y~~2}s=!n|8M> za#h*jd-E%1Kb+$racnKLYa(r6G2CwNk&*X`c6^ca4ubeH4$-iLh7ce`$-YdZ!wkPLfeuJj>MCRMd9Iqgc``DPBnwwGzA ziT;zeCA+_jJo{Chb96ncZ^{^@R|>{hPtMF=_k1|~e1X#zH|e#n%q1_JJWb~}n~}Qv z>J0B=@2**Y-mfbc0~~0)?c(_=AC}8&#YWUtUVj9A%FU{2OmvNNi9!apcJqP7d(X4# z9hkYkW-ZSS%#GewFD^))*n77Qk8pd=^R@o5ivQZnVzvE;u(zY$)XZ1lml%KX%Ht)= z2d?mHwY_2A68&uxoR7O18)Wt4t<*4!HGuaOsmU_&N#o!!6fs@Bqa z0`HT)?%tLW>teR;67N5KWD562`W1g-;SIk-1~^cAxp`iSLw$u{R4NH?m{`2A-Cssx zSG40{pszp}IIM$@nKR$X#Xw!*!>XM+bp>Fl4LX>gN>;ew8*p@6_NL$6ix2`#mG4CW z8-Q_OI|BRJUW9WoZ3WC=lY0^Lx&M&04_zOxwtN2g$dRmo#=EvDAPa~G101NWIhIMb zz_zA{CiQvRv9MCMv3(>lz*V_EkHQBhincjky25Ndv6+NugFj%#bj*~iBWePxhb^5i zZwPnVUK<*))wLPtXRMiBY!i|u`ua`j&~Cds#`s3^=hVSrwPajz8~*K1CTm7?OkUCD zWXmgypJ$Ag=04nJeacCJXuvu$z=7J#gL%#RBL4Jjw;AIP*0@prklB&r0^CVnYh68E z(}5ZIm7P}SZN68cVv`Q`u)MvKnfVZWS0c$(X7pN{LtlJmy!-TV)s3L*%buRk9R9hB z%Z05s#m8E*Ma&XipD@6I`1=^&?8a~RiCUHS34*cexNp{4g`JKuQiVsqPf+TNF7;px zChIKkZJV&CQ6@o4qW66b4BL3`)6V%5gvym2yx#RKiSA($k)x|KIu5kQS5R&DYglJR z3Sw?m1m;%RT#L%}Avo1aSllnL-h@&`9`K=dQUvI`a$v;@oK43ut&wG{I>v^@4zmf( za4yUG(#;pI!GLpufzhM=;`~CRg21yWHrl?#dt6BD@Hl&`&olW_VEZ;}Y73v8CpyM> zZwa5Xosq%Nl>>g$Y;k7%T6Uq75naN?I14a9H{iy| zr}MUtsyFH3!#1{On@7J`-rn8k?BPqR`^>NA*1Su$0wzM^7f#24+JD`fKNkId|ArrE zqy3vOk5wBFJH*_()?fewN{J(a@KX}X07l_&;gb!g`}bHEYpXEpanQ2~u(L_FfzsS5 ztgn)tQG?ekAW5!1x#0v8l-`e^meW7}OUcSF#WqL6knKCAyS;WX;q%#s2a>g%g z3j!O3L%4Yy1qUqgfVKY^)@NoWQ^hD276}W`eE{h~K0krCkDJaeW)OAoCzO-G zHfIlE;Xn!^6=?D$<7e{oL`qRQuxJ<~k^`HDxX2z@HIxDyibU}uJO4x%B*v~RBk)Wk zaB?5q01qj@)`PyFmwj(r;8DICnIntBk+z!;2n&>+Z%zm zGXigG1a5Bx-qHx1+}AfKhh|37H#Gt$+n50!W8V>LBY5f=ftwqF*E9mJVFX^?2;9sF zyqXcXsS!97h686%4kms?1o(&c|8brYTlEdSYyLWN2}5ueY;d7s%budzy_Y`36fT9A%GUPm>fN01cI&+tXB`7qxsX(DC&rc2Aq)2;IMM z&x1Z+_5?nP-O~jG0rYPI{(oWrJYC06)#{0`!%dcJCH%m)0iC8AG~v1g7_}YvsNo0Q z8_}i}j-n~{LDLZcNSuLBwZlzoZ}b0@kAKR3YeNmAD8Gj7Z9d6I72Df99bf-5?M;-V~lV0xP_b569_!2%ydH|CKwuw&g!i z?rEspi9ZSO0%FI4&Ath;$P?>W)5BQ*Yg@YK8K1h%78 zf&lvGf`8(!69Ycx==i8wzb3|CZ=4`woDWDFI=K4?ofY9><`>y}@xenerx_ z6LBh)ibA)wf$jrzWG2Q(NBYGh%@}`(068Ys8#~E}F>PVG zLXrn;`d#N1iqpi;nb}~c{UoEunwU7#p!<&PKKa}JsH?C3>0_>+6pWLo%w7yWMVNuR^Y|P z$>B_QKIDJf`G0$G?!p#k80j5ZmVM7@xBEosXXaYA$L^=#{%RRH5D!?8g;_P*6xe!u zHNg{?ldQXZY3Zt)5yfdOkL(yQbdR|LqNp4P(p{QX{gFCcOnlB3w)ItSYYR2x5d-qrNn;Uli@e_dtKN%W_lW+O_YrR4y4<6 zV9=&@uxxS?Nn3M3c|3z-BQ;&b6TN52oZTQvn|MAnhK){PU-A3Go~y7kU}MOfI4(Zfa_|5hIFQ|;a5 zbElVF9v{0)%c}tnq_3%z(o~d#0q>&0pb}wWHi^RT)1?b@+<8 z%v{m?Y=aRkvas|=4PSUj?Dfxw;OrJ`^KGNMsIxj0!@-GCCYvAhcO00_nE#}0kEHpH zfDPE5WSL||**jPq{XVpv>-6pXCH4+#O!8rTX6qxiW3M&wLOa=1`^Pg!(d-{D zooumiHul0~!@Tobz(p!)6+c@6|)+(^!@<-sVhBM@dKCj#2%jZJo_=w5}PxG_hF`0go!enhbF~EWP z!~*~Av9L^j)3)TnpNxlXq_4@S5pJEJY13ysbH-lRR&{#h^%M01NR{WM8 zI#j7Ks;3GU3AXoaakczvetmrge>K)yKYm;P!@7@yLSFhyk}@9m1GgHGi=dsI-Me3L zOK1?sesSD#Y8tj6Aal(XR^Q!w*FO==!Cm&|YWXw3@n5Q^YMuY==rH@WAR=?s57In}$8C(EsKU_pDX2()9+q+QfpD0lsx6GEghOa|4=K zX3uJE)kd|{tzJo&fPCSVgtoHW?>~H+7ct?`$K_|137{izR zfQ&jdq|xRVoz@DtU5lTeA1|Zp_-AX|hXD@MJ}h1BGGLh$DHfu+K#?b~`8~5vBgNdB z1x>#?s1$u`_b#zKRo?OWoi0OJ11`D<>+=c)MHTl_Q!=_HH5%aCQYs8cQcWwpdSX$# zvhN?;?Db0+-nE}com-aOmJGLB{bN=SK7Y#9>#o!HHXb;{%cXrb=Gk&kiOgxP=L`pl zOg+uv!{{_%^!rhQIL#~NOF?dnCAS@TlC3RI-IAUIdDo5kR`TB41!t!B>px1kt8>f_ zU{5#`@rGf?dY^wi{u?hgw0-RO>K%$(((MHj>7YKp0S+|2^<_rB`jve^WVI4mbtj1a z!ag7dn=GuN%IyR8#R)7F1MuVHk)1&J4*XI0X3lMXi!mi_z0!(hecWRWxMzo~`}nu* zzuy?K&D*tsjlz3==3Bs2`LjV&b*>l20r941dne7eiugY1!KgYF2eI72PVSYJqlH1Z-3U{Rkgn>D2R8VZ7e^5{?Sb9oj;7CT)bhg!m zzfW(7?`~3Zu|-zel>BF^HZiu7qxWr^xtS@{D&;8v zl`;Hdf>St-{B&UPFArGxD-_Gc#lT{pxk--5QB)utB76>P?MVenz9T;m?4qk#2`niq zhlv9%{1^tGp~M`8`vi`HeLy=PhbNV&cygYS8^gu9Qf?^NgNHltP;7O799|z^N#bSSynyH| z{W+Z_e?~`!XOMV1e!1QX^0VaUbQV{Y4hT|#-8lCj2(m~e9qwH~wUQY?L0MSX;Fhcrrft2JZi=_3>;*JG4LI9Jo0M;dC?(_E|s3vHb0rRvhkZZ=vW_Lp`ml=v@PUoE{%>Hg|&R8QR!5r z9EtW`O=CC;Q&;cV6w*ukIla_BrAHh@uZDY)_!m#lK;@_z-!)`obo^O>M{WyE1oEwb z)p*DyyoHd+i3L^<>TZi1g*i*Oq5WmFQ90Fe?EdQt4-w`m8qPsG?fE8`D%f}RBnoMaC8rVT&R{PcwmtY z&(Vui5+$$)pyJ|unLx#p0bBaGK+Ta$aGsotadC;9CzGhyNGVoh2w;})A*U-yn;f&72e^#6dd7R5|pxb3f6L$2qtr=X9ilZ zTk?bg3I8qMgmaZYl(mPS$yvq^WKZGSa&~cu69oTT_WyNq&rOo@MUPAOm@I#4b9u|G zFk5ifIenr=*6020GG_PXs?8(rULI_5MPM=+!J*vK00*)EeJgzrlnZ8t6MMXwHGg(r zQLR@%^2C!Sv;g{nE@|a|~W&gS>PF#|P%J_Hg+1h;He${o80a*=KEO!{y|H5T(3pkso zxUV0#58KGWFYR_7Qj&e^2JXZz5e;B_54Oc^SMLu{K;n|9x>;;MJ_U!W-Yq2d}rPE2F>vZv7eQib2;mKD;&g z>LF%1xg6K!@6A|7(7u$TRv8|PKS`Yyki)Sq{!^pf}e(6TqDt9{m(q}PU zT!Z@`&0p*3Ft6BU6Ft7n)M;m_|JPk(J6yGSKezZ3J^q8@#~#ZX4gSXV zynb)jqanSbfDX~+zX^ddrG1s37cqK{zuqN0HeGp3Vz-e_|HH0;3&In$8W?BpR4=$@4SnzHq+zZk6UKHX+ZX*sgqkCEeSq2fFA#;+6TXW#mA0M zO>O$4OV?B6IZR#tKQu}^_R{xcXoEMM#H^7HDF*LP*nRUb7H(JTarnS(`O7{V#ApB2 zp+WYXTOrv`Z}fbmIW~`6 z+Ts48W1_R5Fp(brf!_^#m19A z_3RGzwFz&PFwtqNLHT^STlZ%2-EOn^oi+xwRXrrn`RmHJTxtHW+szH4Qw3p;maR^o zqT~P4AmmZ^qbII^f8$G@u`+HU0JGVi{vHigDtxMxa_FWV|gJJWbn#?>85 zZoce#;|D$d>nmZ;Gs1(8^Ig~6sW;&UxjjJ1-==eeUOlV$I#i76CXqw+5{7f)Kv7(M1a zJ^tg$=&La|8>^?ZIW&;vkef}9|6F`?&EbVhTm(fXX)5<7OnQ7tZK0TFRgc%Ca6uVv zXIDs%{}!;z8aOk~uJwF__gDN? zB!4^XI%j>wfmP8vdl|$h&#(V@F{gZGz@66Tvh!OS#80{4OyMp^VR8yWaO*+4^O( z^CMW&TU`cpqQCzo(4x{7{r^{Fhsm^y8}JGY*}Jc zM#~<}&6a2Jw|Y81GKgojZr-hCqr!o{>23SFzaY+0{*2YYOwtK7k((Wu~}POtsx z?|<60HtqGC8W%ITCB9?A*Ss)@r`e}8h#!@jAbMJ-p*p6=yFCjts~g1o?i0OEmN-Xz znccaG;9?m)zVuPR`7O2+js{IP_g>rXbC5y28-L53+!P-a0RU@yNq z+Ba#U%Y?w;&3ie~-~W&!GyVR4X@kI)UC*pqSicrMzQp&?ww&DuGdjFRyT$>0{fWMJh#h3CQ> z!m|Nd05LpUG5DFnl{#3bn<$0EI$a@DilhRCNF|huQrI}KhKGUs{2udgHfDnJ)gp|m z65-&KfRb3x^VA$%gfZ0&nMlRNL<*LQp$3}$Kw7|5voXF(C}S#x3L(al3)Nf&Tgk$K zuD=}U`eQ)TU(QwuWE`bH$%HF^Imn|7+ySf@!99h>to#)NX+$Bfm|M(Jv(&;u zp$eRkP=b3A6v7yAF2PHP3++MaNkMLl1!_SdIGd0MPA8-TjfxnMUoVgssK+k_xi03b z`Kcc)>-p{3HFELSDX$bYZY%+t`wS-zhMY~?MqLAXuK9Q~D{b6Kr_h@ORM$V^ramL(*qHZKBv8dH1gSo=JJ< z`3Fa?*ezRH&58J6R*K`lQvX_8KIHlnYXQW3?c*~TETxrYw{dOg@r+ido_>jSPUo+7 zf3@gI<1|W{9&x;H^J-7w)|Fm4V$ohZ@nXRX&a33mBc^gOSh}7f|L(j zwtbki{E!_+uR~p(8Q}P@tTSDiOA6liURaW6GRmdyt0lv{!QHQMWSK18-J|A|*z7ek z^5=KU&Dwwesqp=FizE3HZwY;sUl@mcYab@ck5J+tgeUU(!s-81+TcDu)JPuS>UOA{a&7Q2Rid}PpefcY&Yb_ zZwh4Mf_}*jJN}-|ylI`3{U$9t*8a)4T8E3=JvJ|#+QK65SRA{>^b%WjKhA^Y zMb)P_dS5yt@h;MQlfyfLwYx+}Jwh$V+qA~r85i2rp`9&43iXn|-fr8e^ye*AhFoj6 z@|I|oj<*Q~H+~GV@_zC<uFYr`f+fc=MUCtSXDcvPUzsm;B(F&@*GeXpH$J2PbIhgG)m zQRa(RXvbCq9H>2s1fS8}C54Jqq_(CVEbr0oJbYZt@&}xh=Sx9G*`e zJ`6*K#(~JT6EZ$-K?rP#-Ltwlu(Jtg)GVes!we_p)+U&JSxy?1@SSQlmhXcJxfL;@ z_BZZ$M7k(iQ+0ADcAnRFCf?Yj^`u;Rr<=_07$cONov)rzqj%Ph+ELg28wUh$m}+W& zJUgK)Ky4%K>XK5}Hm)lcAl|R{WMkf3V|TJwFaFM^+E<2&#di`uMOQ|DXs=f{lJ&;%yZgaccImlrejPm$7W{Bh7FB zW#PE_M!QpG7^VG8bgHlpc@y_{#O-!{BA!{hU<^Bw|7%5o_onrjxp+>tP5mpJfL?;r zc9Mqtwr*yFxV`qi$(g0l@lVHr#@FzTyPrb-Gowh^yd4W`%Q2=E3LCA65AV;eh1mm{ zybObjG;^#rl+2qmYJh-eP+(X%FqR$_9|SJWj*5;1k1!8h%u#Z1a&sCOvRaz+Ad7{3AuL<_vcRPt} z*xMKt$8U|Z>WeXA$+76D>EvbKEf-H~Ioczl{nbpyxGzU1nY3J8VYcp_N9y>lTNMBg zaUReB2hveK)Zx+(R9|}MgN&X9U2UwsfLa2fs@w#>j?1ow>uLo*=7O9#j9p9o@Iv z00-i4?zQ(jAb+LgnV3>=Cgym7b#uAjbS&xi(Zh{@TqtY*wYux?&FacE8(mGT6I;i{tc7f0v9tJ3WNHr+da?e!fq?q+r_Pqwqz6zatOQNaB$g& zo$rp#8v$D@QRfCYP?-cqx~wJ2q^kEHl|&T}I@O z#FcJa6cB1tUH)Nzn#bw%vs=_>rkKwcJA`~)_ioyoFg?PIzF-TzQv5ikW)g4L}OtYFjmQXm_ku4^OsCSu)~6yDV><%($2 zBMxV~(~%o{cVLY7#1M_iQ9iVK55YFtd{Jh2B7I)C3m}5pe>r;6((|tpJw-4MUx)7y{MEzBjTcOY1t5B) zpcE!UPLBSy^!%zu&j*LE!*_@Ssy6r`2mnsOH9_?Jh@kdgj-Isi>$7m=9d z%$s##UnlUBK;RK!Exl1yqvwi4Oz<6IX5RpZs{rWKkL%Wf^hOau?Y|s7Y3Yru8a-Wk z68hRTaRMJey7Rp`q^Id0hz$56;`;TLp10}Uygh&y}?zYN8yi{;5NWXMFC9VW{czrCN*==oG>T%gn+F%M{n6KhcnQ(dTy#s$rHh2YL$oE=mpdX#w;L9a1>nMAA% z;Uap2G=xZBj(lx-dRL8}D-K_W?-2UVHu!D`0It=m6EEO+<4pv$|8n%CrKeH&0?^+W z*GVjp9(^9?w%Fkzq&JXEqw(bEK}&By)%erRbBOY^!4H#&gZs6-4C#>yTN-lo?_~d~ z(R0NiqRRLiu;9*FNUy(^67e8Mo|Zqas?pQ&N6Z^#_!1KT*nSsILVBda6A3kFpZ)%n z9x-ohh;Jh?@9Drp^!jNj5f5_YY5D8>r}T*Wli`|k)2zlnPC)+p{+ym?mFSVU;5)>; zqXE8wg!M@BJPPS)&i!e~%F%4#{;Olaek z8wmFQlfn7_JaL5hBsl-?0(AL{MY*DT!c5^kL8hR9pUkhp%aa`9$8cJ3T)>XD3y=!1 z`6>X*l*ssZ#M5|3#KF9^;+bNd{r^JFf9?hVsK-BruhHR$d-rfxzL2G2DOu?(1-SiB z&hi5K1NJN#uwa0(ikWI=AyWnJ7F2@U1?Av&L7Zt1?iW;w)4>Ua7;r|x3!GB07t6#_ zV6&juL~T-Nq5^smN|SU@J~2S=!3$_U*aO`MDLA80EK>hMQy`r$2O1O#b_`o57op!y zjxhwJ+%ElIxmRxdqMNeE2fMYNw$_$@JNZ6Te^5SUfCI^}KdfWf5OO=cJMWvv^anG1 zsY!SXOyOK(h^)!5x(~W!jho!Uw|nMFGtUsLc8}zu(BaiiKKcaqA#bi&^73uVK^J=g zvE9rh^@Jg}{4C1)+#Xdi8^|(EbL$@ww~g$2{OXvFA0M5bx7|7<-0kVA3q!v3SZOXg zifubWlhML@8<;aulM+XmJjFDTko%lMu5SNt~becWwVZc^&e zBNYXQfSorfSuWaUOFn!^_ONqSZ2cazskds*owCEaaxuVxMs ztW_Q;YVaJ|dApP8tXN>vOEysI6>_@giKtY2!~5K4CXpMogTV%EDlC`_jaoKcur|5= zaLc8`I!rO?*r}v_+2g45^Y%ZiF=q#8DAt#qkL%iifqe1*HyI^OyB}k$ViT1|KOs5;z69OQj9fJYS0RWpRF(c6KV9a_ZxC7bP?ie4uB4SCs zEWlkTaPt$&62ZCi8VrU*>z4KoEn9;!Ra2x3g@kQy- zCc$T)#|;-1*I)U#On*0J#wfI#GNP;>*iA`UJxwY}=;S^(ig-ql4LZtn+k-&MmUf@0(pb)B(WFLrCG+h-AOO` zcl_3`Dt|q!0{}NNVVvE$AOi4{oH4a0Y;p1o)_nm6&SN;p!&%Q;HUAiW>&14Tud5%1 z>|6No{=iyyTV3|FaLQjWbaaDTHT%umJ=p)atXKVBYdo)()%>_*+4oiV1_ss~H^=>8 z^Pb|HKMu@Y$e&}vcS zx^K4xu6*6fV_`fqa?;v)O?*sdHfZ!p(l2J~q|I%{DDq#$gw#FN>EN5iF`0~a_gq$0 z7s+et+F%!Rx7u!BcP07;U2wD>AD#rwq{6zuuvHevvN@sxH~IE#=YwP0Shn}inegI! z?N9kNuhra^-13~R4I1D;W5mQSgYUvNs8$d*EY&yISh6v@SKPSxX@PJj_g~+~ZTlM= zxp|R|-$um;uUgd8^y`C|f#M;i)Ul@XO|zTvb*A+ib7s}*#tN|`*tEi)@^ra2aLgD_QD59B_JD~eo=uz5&jV;vg6}}Vlhl2Q%!T2%wk?X6c&*y zo}ZilZBYof*3BK}8;cXCdv=Lwt!opV6JP%jSATS2>5_>Vb@$El#TX-4h%v0*zU~)x zJ-I!;{qrVnMOWqH;*>3F1Z|tTth-gfq*qsZMC#gv0S+`bx`3x2CB`M4t=Hp~jY}QP z97Po$@tF2)dxWmcY_#aodpp&v6>8eJl-!LnF3ket(v;gK0~$W+I-ody#Q~@H{-=xP z?%r!X-p%Jwg{*JdbZhLgTsTkItM&2j8MD_vc8=dCb{W7hzRRoECML~`z25AtxbCca z(qo(7fP2ebh$6w5jhH5{hW%|Kz7soc{txTwzBOdEp5_hRJux8u+ow^!v*LAaf{p`? z)iKFEuER1(2_$qeQtmUcKx4WXOeXj$ip0`T8PGLx1llGoz&BC`WQY)kf&*RGQffQ{_$*PH^@^Cn>bk-i zrh(j@!_Tt&ZpeCDjR!Q@b#1y+w&h8`=?)gz8S6gY`#cBOHl0WcXnW><wR-gP)& zNzSD;D(u4AdnHHRhJ;Ul5Nw65S#w!ee+D>E{T**Ut%Pnr&ZuSv5G+<^KTazn*BIj> z#v4+N=EJI;ih9Zrt9JRd8LOx~%`bl)Q1^7rJlAQZ18-G;e(Fl{lrphs^u|fe=J-F% z+Wzp;<;k%@qpw)?-)(){iNF8Nf@RZTDHGq@PIMfICs}$66Ig%x_GpcA#W%Xg?t>Fz zQ($gKW3Pc=4buOWzDcL3^+|UEn%;V`f7kf-+kf1|7##BDS@m(R_wSw*Myy|S-gBc> ziF0wgux;!`3ag}YUac?J-Y6h?FxO<`1~?FZBZDKS8S-ar25Saz8POro@K*;P)AVr5 z4RF2xEB-=J-rye-E60@lVpFwgp{dF=&s1reZmKYi0q6g{OmWjfzKWm6SMu$Fd_Zc7 znHEdbl0u0}k_W5+qyswuF%r4N3&;)ZB{B&Z@g>D#wYU(R^v@G3|4r*?^}noV-vU_w zcLetv<^WrT7_X39z{%u<0{#DDwmpy(k^vVIOUMhtP0Nfd-rlsct01ly* zz`GfNlj=x%ba^0c7fO0fK4JZKrohQ^#!6^#YWhw_(o^A@^spS9DoOv52G^vA`GIW( zIBNc}F91*({4Ibx!qjAXDjq12(7-i(y#@d(T$3K=6Nvbs)1&(o0H|nM^R!Qo;--C~;kw zX~neC3tKWR^}-fR3%zhXW<9-dT_%{XQ}ESc*3k=_GtKqFwVAc`!nK&S^ujfnHTA+Z zm^Jjm)#2)nLeGq8rWdZp1S10_UJ93cl&~oij0BXhgelPri)h`p(udcmSXIg^#q=qd(eNw~q zKz&lfbwPbn!*xJ?Qp4t;KB?i_pgyVLTA)6u;hLa6so@%+KB?jApgyT#GfXRClfcm6{#h^Z^VG~fF)UXKDCp9bt^+^p2Kz&lfe9&L1VIJtO)G!zH zS8A98`YSce291LnW`O`T4C|8`hIhm1!e&f;d}d62d}d62d}gS9P~X?bSB-|R8Vz4H z8op{YeASrx_@uP=rL^~@wD+a7_f47l?ZuR--(F0a`t8M(so!2qnfmR;l&RldK=;>c zFQ!cW_F~G^Z!e}y{q|zY)Ne1QO#Sv^%G7T!rcC|zV#?HSFQ!cW_F_t_4^vusn$pVC zlvbXmwDOcN2MwaO9|_ajTR%Jy%;t6NL&6*|KtJ3c%*LtlUSJkZ4fpG(AMOig%hY&J zFiWO}Jv{WoeZcIO8s8htZo|;`5&ki;u9yqwkSW_#B}w79aB6@%09J5^aB*?DNoSMK zqJ6x0UZ}`MlqPf+<_RJMh5R&ND=%1L!|g38X1A1#=9)=9iC6Kc8UQYw-_rq*b54sk zi*W8dQLM;E|cJmPWF%1}PRz(wp2>V(LFkDQxdPx&OAKydMXztyl!k=4L!i+r0UQniuFh!*6lM(flbdI+W+_u2obq z^GvnoBRwt_eZ8}zbL^v6??N9`FYjM3u72BQva_>Fyc#c&KFgaBDC3w5^tQs)iY;u@ zgr{P3J`FAe2)WU#@(-uCwm&sxpG65bm0x0sF**?+K8&${_2IbI-`K%{uilPGnYimd zzoUgm6wjeVHEC$x)$SDu#&Mu>;3oA(*iF>DN6U4nJSuw8c$&?JIN13#U9SUj{f3UyZt7;=uYXRIEar6>eo?fjo=K z?=@nzOsqSt2f+Bd=Vie{8{XY_#U9t3oJIOX6FcCo7zrC0sFyL#HAVqN;0UeDV&`Z3 z76*3Sn)ahtgHhA$qXzE1*us@<3)$7xGo4F}v4JcPI+xvFMxOnu&N;fC)i-5~(kmri zS01#I0uhZEjPEgTU12?k5cT|#i6tA8>N67EE3an_j~f{!^3(3Rn%11JTrJcIhIKr> ziWu{>dBcVo4PV;q-#>ZhLyQqd@>KZn3w|tnQpdX4+fPRgI&$EYbNJ8@hQCPiZjK_v zdx}$_mL~%oNUq;%V(vk}Q|KVXQ)mzq+r=^}6}Ce>x$n{9tlj>@-@&+pqO;GO&krsR z+>3$n4>~BP-P>sI6uSYl)bh~Fm%Bxc+=wx@Y2!}xksj*yxZ1qXLAUJ&z%?zU{#Gx@ z3u$&?>Vs`t9v2>V{;?fnbOmz~=qBA;Qg+<6?yAqct)|zC`oDIZAGR~wan2SWtG-r2 zEVHM(P%22<00-jrsAaP`#CTQ79eiOoPPe-Jq+9=0b~8_81)r6_9A18|L9-eQJMOxX zGry0C)}8?M4!#-mJNV|Obv-Xg{>&YC=E)6kHR0(gxrgnt4z~XLO_M}_n{r0NtN=wQ z*0OOfyo1kWPT|QOziCfEIqJ#yGiw`1@1GL(_3C;y*z0IcmdT|m6&*F?f}HiyN;qj7Y7T4T}SQG$xj*m}|SRrgqq#(Q%l%@6wA-4qux}Ev|nwJ+{GWo0YC_D092o zhgr4D>ljm!Y<6|)7>v<`ESpn~16SxRsz6E67!CZ_lt;_Ad8BQjr5C<#Rdh0#RLI34_OK5Am(2E9?!yUOlWfzeFPecUgS{P zL&uu|4%FYh*qe?c-Xe*;>GVdh?u_kO)OuIW0(;XjaBsRZeQz382T)G{3uMe3+%65g zo^jz}k#U@Lhlt8sMhZ zo$}%9(QjVEd|q{WwXlzjelMf$`)q&%_1E#<@H8lN8z0_W(tb#2l`>~8%A_TFT9 z{G)$#m*9epA0Jrts<&r=w5@;)4lJEdrtS^RWFU44B%<)pp4V}c*gz3Q>lIe3Ctjxo&0{&+S! z`ueRMw^Jtmb#i;c4YR||_pd%XvWB}=?Rfcy)a+|wO1;u?pf)@I+|teTd6%)#28eSi z-H#{cU9E9XhO*5{%C7Fu=UuB81wHqi^k(4RD=qgw>9g@7#_)ix9=IEu=G7RU8do#G zVt3~B?6uq9bgSXpBg)e9mLhjTgB>;9(orfj7op=oZMAm&n@+G^a})|xuQ`W7KQyXO z(Jj$KYl}t!F#m==1=tT5f`0<{+aLd^F++n1FvmV4nEZAUeWeOr-=tfa0rO0<4(T>G z>6U6%==h~sssRyp4942z26rI8xr#KzZ>}Y{Bb95c7GduZnMoBXz=z{1+%Ihid~@*K z02P1(g%}3tz}V2S0Rf?5QDJdoV`742kzw(&J}0u{z-DMvw10%(*nm*G?tUR-gTTB3 z4ocm`O7^3c7B{?dGVedG7x9<@MqLW;`1Pqlx#va+=i7SjI6LzJ#%Mv#v11B-=FPwH zB6YOqz6+C{?>fD!jo-ObFfTz0U&_vt6ap)E&?cW3ux*F^mR&nShd|0N<`wb^5K(l_ z!3I3qww_yr@^1P716!3$>zM>cgdv_lBl6fn)$WPkq^X};QK*1Ai~95W5&kDq7=2NLN2C2>=E}=x{m? zj2lHn*!7AE86OmD=XoMKDk>lp**GHR&D#30)A6NS2au?M_lx>b^u~#_hJ4ZaBfBF8 z#ZS;RCOk~n{{R3_!in?Hjc^zZ>j^AdwGP(x0BE)e_%uFR{KI@OH2K%~ns#T551kwl zWUdlEU|-cZDj&3V)?CL&)!G@tt!RT2Gz{xQlmB0h1H(0$M1DsCA7vb9PR3Vp9BB5Z zd=d6H+7tPxWPH=~e>z`aYY90`{4g?%JiH4|_`3cBzev!Dz>jKjN(F)7`(sWVLu{(! zqiX#H$q2K$;RszNeEh0@8WJyJfuv7(E;#a41Rt=!(E7#yl{>t5=s!^IO^FIY|L}V` zFd)=#Y^0r6Sj5C22&C1Et*#wat)Kr>{UHG5l>DotKiHB{zvvH5{*(`Nk8cMLoFJnc zuQcCrjj!p~WOfX^P%1>_kAo?*?eNRpaR`R>pqU3$1J8uIou90GkYALnhhI3X7!~+Y z`gda;KUM4BP#oSrp$Cr8RnotCM1*#JqWP}C?=^G{2oKZaN8yPhu)+)Zuzxp30OC&q zynxuT;L|=q7J1@OTm<+C(b`!f9Y0lTX9R^mpMTXS^XW_a$Rp=pU^a=vFsz?O@Bug| zNOq3(^Y;()i}wT1g%GG4cWwTZ4|Lz{Yr}S?DSwTx`A%rs9c(Yq$U-1W2a*zXCv&fMT(+D|z%jP%)!|_AYFJZU^_zeyNMo?pA z-J{1xpxWyf6&4*ObBzsy=ak}Pjb(0NT?e`(P*9G5@2KFPu3yUjlwX7f>y8t?Zu}?0 zx_`}jK?fn8H0#%XdJ(;FA~*o~kY5=AK>u*Oq#wiz*Tyr!8duIsF#RkEl@y7Ghzm>{ zP4YzM0(()8&{miOBmvKXo_slfAHN2-kYm9w78e2i{v4p)p8(FtyMq(*=HPt%b8tF- zA2=JI0#3#c0q5dv!KwJqqD)|aKa}sqcjU`}?f(K`M?VwT{SOs+i5$Vr0DMugun0&K za)8DB1Yj@U9Y_?+flT2!u#~?K*vU@;mIvwf`f*^DP$rUsTLm;H6Vd^V7;v`U3!JXE z2Xv%-3`iQ(K-Qq*f|VZ`Vr`=j9ATh`dfBT6h1h79lk@zfa~K*2mtOS zdmN${`*V6@sz%Qhhq!h0Eb*BT0NmK;K8W6!pVI?74jT6xc3vp_5%v~!_l|qr>wxIR z{G49&pVA}t_iN$7WOip+ix9o&pVN!_Q+mYw))aRm>6L9RMt01jeoim)Pw5fz84*q@ zPGcbrULtytKc^S*r}PN^s^OY(E9OxVq8IUVdf|UckLVAzam_e)Df0-T7yfg4qyLm1 zy}g{hyaUl2{d0O@Rio#M!{!0sA^4NwOCbO_Tl5cQ_w*Y;fjx3Aip1zQfDRO{m#bRufA;21OTJbYG8$FyDZW$=R5oVAVLqf9!lX|t2ML}2KUEI$&m;On`l=<)$cJkOs#BnV zwttA}`S?};_{F%U-LI1oL>ZIs^>RV^32%vf`nrggACrG~e$;p0bc6Z9@8%-kgvh7% zpVm%9^!)s)ooEr!9_a04bpEG~FdtA(Np%Vo(AJNTPXC{-A7%U3?O;CSb&exnNX-m* zrsYTQ@6L}xd8rA^kL-LZ^5Im1>S*=Dr|0LNs-LkVJKDm0@TtVXGp!&0)AoLm%?(JB z99NCn`;E}%i-{G3>6h9RXUaJkM+MIRE5O-*+!Uv?K$$DV?tM0Wzp`8c{YP|lKZWgG=p&Qv3f1B|Z#G6Edj zIDiRNOf|SmPr*`i6l^89O-}_(7RkACaGxH=lL^!;4Bi6BS27h~y|3gec?y21;4$}} zz?*YYV8P23Knnmx?8$;mPN2X;&{kj}=*(xMrs7K8|A(XmTs60ltK#NymE3f$f*Zq? zbG^7Y*PbimN}+v3j+#@*QE~D(N=`aQ!HMC>IbNJ}%I$tY;y}6IPsvUvyD>V4X-`%G zgl!<64dCmIz_X3O*BODYtppB0y88n!3^})V=Bc!W6CA`f=4|>nn@F#VzY;zttIhRr z6Wc5O=6PS<`G_9>|JZvIxR}2GfBeo;Gt(ZSRE&hAJ(3E8QfMV1p@o^3l6Jl3$u+RS#NBxZAzj1+N~opFLtlI`8^;bP-}bz zwtOz6KfFU-TKD7i!>w_Kw1I=Y?&0O%PY64$K2!ZVt)kzm$7c_p#?xyy>K8>lqFRia z6&7$BvCqNN8+7Gw|IoaX8oU0a>AQQCtMT-@;w^_x>?&1B)*CWKfn|A=K&Lo*e!Xg^ z*>yd(Fu{6A9G-qRugyrwL`iXUje*tLQ&m6k^ao-J^rae!QbVGKFP8IM0JPGf6UP6J zyot4G%`Am!U)s%wOnm$lPrupLnfY>{Qf)f@`R#%w>{dMep(4x+_q|G#qWu6 z$Vbxzmm387m|@(r9gk`#1B5RlQlxQ4LSOCEwF;l-ja* z&#Z};lZe?+nn~oc=SvHy*7M6;LG5S{K>Kf{UWrc;OSLv+CM(T z4VbUhZWpkxZR~D5{cgV0zQZXmrZ+fnB%CzQVAC97`c!WmI&b}o*tJKKDcQ;Qs*Gj&vv^J``XHar&kul9}g4AxLvsx)i( z47K;~v1M-|y7^r_i%d1T-)>2?Wa9rmUl0^il^V6Gkr$wiS@Y${p!RN*jun+yfAzX zu8#CCGiH~aOMdP*AV7?eKXH0baU(}EI7C7!hE}{LnrLdL$t@_EH;VZnCYqqAk z;NRcSzj9K4zc&xZyHDG&|3l$WJiR`58H;v&9Aj_AvdY&;6rp@RoW6A8oaGnqze5&@ z_c!rhg!kX5Dpl^~KOpzf{;CmY3f5!owJ?6QXD;Ultq)y4;i+WKnIW>+G)hRXTf0Ss5CS0t@%jCw~++8{yA^esUw`9XnZ|rq2l!xPp{kl z>G>Z0SH;dYcXqq(TTLjxH##pr<%S$jT59OHWQn#dA^-0W*tQk1>mPNHZq~NIVAC7C z{2S}Py*89d>mOA$k|i#ybrw&rD^2`eddoJ*tLmm^fTASU4+-Oc*W!5Ps&^B=aXi2k z8gDBJ`O`S3X^>mf3})g)-Ovh7fIeP+@lG#xn`~37%zZcf5}y9BxTyN=#(7tM zF8=!5y26h)%o1roAD&cR;!QnUvp(l)s$Iy$7=r&@NOw(s+NDWXHk{h{4HU(;T>^&*pZWJ$#T{ij1FO>Cmp4BePs zLzOQz!u!8}$KzV&=b1f$o5dYD;?CH#LHPdramzZXGg|`;`+Gjh@MaM5_kQ%Km313J zqZVIO9Cqi!({6(Nz>7~b??vYhqvy7V#U8mupj$ita^;wuJvQXw{ee?w5XKkxhmJhC zC&t)xprPaY&w19^bXgd_d!0ef?(dR@j|>uj_VHtXN4)%d_XoBN`@#vmHT%DJ88 z1iItsfq`Qm>!}z`{k_EM+Za6kZg@g9o%U^l#rnCSCoXyr+RwWSKO}fGb{<=%t{Kje z1Qv-=Ck)@+d9tr3Y+a@#xh(qnm6wq%c>0~r*c;XRhGPfUD}=xj>LN3llmE8x)oc7 z5|QuE@^#v*IVaX2bo#uciUfjuM;Gmmw7pL$CpPD^OxHT$>GgicwD#Rzd@oh=#j=7i zWrpWB^FdK}xM4z58#`WvOnA=v5RpbL zZ#so7BM8HP`)Wtpk(QggmVMl2=z4A-q5RgB1cjVfzE9Kd+Ojl>r*?$#S=~n2MY+uz zy0lD=&e)p%c`-ixb!HuBj1t$JzI12o${CrmB?P*r^@7Yv#(oCLaT2!2m$C`;p zli2U}GS8#WmPvmIY{S!UdY-dy$~*2o?nd*ehR}c4 z?%rJf)%(1gvpN& zf-%N+czVr=;{8@0)@^TM7F6yyy^k<{sHxm4_=C55ctSSD< z^e^SpMtBqISM}8$b}p(qn|-n@mfLr|O2YfE9<<`9e*Ld$Beq1OcaK=Rj6j!}_OX9- zOj7=?{>ATu-(vda!ua1kYc`Om`+K{Zm~ zMEr|0j@fOOpQlsh@bZLHAq!8(pGP6kb56&8FMPNvqCT?6^L{vC{8ptg$lzYZCYJh| zn)JzYTJr;V0>CE~IfpQrt-$(U37GrG%VscxW#@zWzXq`P*9ENoT?e-QGJvH&9~rQd zFJlbs{4s%*Kd1x1Ws++Fz#V@kQ&bnAMbe)6-_QWaVT@&ziXWr5Ni<8;NR&$a6fY3- z7ds}AC6OqxR>EJxMM8?{$WRfpmN1i0muO?wh)YS>i~rsEKZ1~4l?+l!6Z~7jjp%E7 z9CUxbW-y0;Hd>d$OHgd!fq=u{eLAdRM;2gote|7R=$yGYU%WjjbUn`)kQ~Pf=-AE9 zg5Uo++^C+7v6dj*Ja5ACx6a_x*0q+F?+1sAy}unboKU}_>_)`on?#83`=)y8-4sV` zSyj)S*N%gkQsy?(cD6<&Uf^}C^4E^O~8%P>4RVPnQ#JbeTA+@e+1-K(2z z+vy|wf43*lV-=#G9XvLC@h%dYx2 z-oGLn545@y=D$fYmTNX`)N{FcpK4N3`ZyBre_g{y$%4|fH=l+@u(R4?u&ps+{I{&q z`u^5)l8txv#xa5853=$8Q-W#D{jLxDbvMoLw2QG0wrwl)AL&3%OZPod^Sd~Gp!)+^ z!u&V-Th1>PZt}$6?&|ARrXRz$CxrgFVpogzXe)ov&^m6_JUd$s|Nc1pOKdO#P@d~K zSlps`@oGGM>+z$bCcZfl-!Fdt$W8Yd1pl$W`VVxwG%cUof8J|t`+nC6{-XkNB#Xao ze9nRt5QNFC*>DvyCiw{7gWx55(f^etm&r%zZjn|VR3W7XPQ&cg9uKk@Yi zC^K3I)WO%><>+s?*M0k${O&Oc`fn7vW}UnDBCHlccnfBPb+pC20t5YgUQl{G@AUcf z@o$Z9o%DwGc}JtQ50ww9BL%zDPEhA&UqIi7%G5%?@{ZvwiAR43{8^<5`CvGq69fNN zN6@b*p9c792|svedFfLv^A_K%379#OY!BPlz?o$r{m5X8ay-X91ROS!)%cJ|erqz6=&HXXi zS^t`QyX9K=HlTJu=MZF|=QgvLougs8aj~<;TyWO-6uHHWR*+uea<1@1E=(^}r2$n7 z16Oc)t8lmjWH_iA2-d!XSF@1w>({<&=|0|=Qz-tL!@rhX7&rRy`oeCNv`r5WS0-;) z+S&llD`Rm>dA)H;%JZkP&hmp*4tgHTzcXp3TJq6n?vhU0xBOm@OBTkBAOnrt^??&k z;p2uT2iR?7Bk&J(ux-ibeI?+>NN{XC+lwErQSpj?Z~3rp=k*~6wmG8f-E1BYT8H-b z!9N&a{v`M^65N#pUqXV3 z+kfB)^08rHFC5P4uzrz%hoEA5%Ypp*B>2caa9AI`NN`UQ+@cR0=E-al9M)mrdW9eI zW8*~vj?Hs=;V@6I^*I6_0Hx#PLw;`*?)_efyO7}6FqHkv`dsT>lp3g?cnCY|H27_ zOoY--PwDgSLf#n&c#gppXl>-sh9~T!Jf7?4kx6ma@f+Zq5PrOD%PBPT;aIo-@~>OO z3J16D{jDA)Z~pUiZ+nou&KL4EG37e4@B6nW>RdQE+qqZ~p$x^wp1g7-{QUZ(XOM$w zb~p0l__Rq0%nv1kcM)VDI|Vey?RJsdmhVXGY@)V2eO+<@p{zq`z^*fx=NTcRDDbB^ zu=*@c<@WgSX}|{bOk@m7gQ1)eY;dZo>B}Y`i&BND`gtx0h1X3%TFUz{yWw{xot!NH zc)9wLNU+a-0F?r1w3Fv;Z_XO`=rUJ-r+J<}7+I?bWa?1r=IZ;_=%3&DrSM}#@*;%d zCGZ#4IZPodVb92;?z8USI2pGSq>8}b@C#p#jGR1u&u7ZB$A^m)LH)lW@K@#-bh-Ls z!SHpv!>vEE>X!j4UjkZGjDyqf&B91_qdqf~MXTb_D#Ax+Z{Kh)pB@ARR}ih0GW)IT_VIUl|! zbw`-8KPZ2Ka56MkxW7!zy|f@?N#Mr)E>&=<0);|dIaGl+W-3|pb_o= zT@}!J+y5&}MJPNa4j4||tP3AwO3x=Qcsu&YXT3iH(j%PIT<7-Z(t5(UaV0v`dT| zb9N!v*+*!rokd+_&g;@)jFgwIVg){XqCC}@ap!^M$^>BDO(4ZZXT+GFC%MjVKE00b zxBa&bu;L@2?IBpXkrRY$C*u1x`))#o3;xTQ$oZ@UW9{QF{U!)5E99sX^i z+{{lZthGrzCh(W9r9Ch4*6uAYDtpA`C+*sfP;3OWlhrPrqlZuNlkTTw z6#MjLIk2cA2#dXv(|sTDeNIfZIk8!aU101sL*P$yQEKXn2LY}-22A{XaBe~eLQxR- zQ*To>RKL2tsk8iSx95WW+rVuv0)K3=;3U<-r~7yKy{qJ?E-U(=-Nhdp9Tz@5g z%29l9P}0U6q42hiU|JuX=&_Aua>b=m!N|otU~MIWGzt9S?~CIPub{tEOMOQx*`GXr zXIGQF#;HuOj>i`GOSHb4QgyWDT9o3(O1aSIpdAEafrI`C`xBIx0@{^dr|C|w>?gZS z*z`JSOc4t~whL&Lr`wCZ{ODMAR>ge3hiTkOgaVQcI4HAxclzfXwT+GAfBg;&bT0!9 zGVj;}q?KhqG5N}fZOdNSH1C<$_;WyWT#%mU6fB0-eTogbP|Un1?Rv2ooPZI~PH!}& z8)w8@4|ZI)&U5Z|TZAGjpcPG4zbl(MJM{C$ujOS82gAV9oggeH?x*pbb0EgS1Y+GF#ti%3jFPU`g`uDte;(F z8H*2BmivLuf!9exf4kC*Ubbtl4yLKbz+cAH6FQSl_kYJdB&Fsm(|8V{ zFa_bn+fzi4{Q`emU!Ev4n(A@l`L4N7RNL+@LXfWlT5{|bvlJbDwb|*zo!T@E!8~uH zfVSB)_2R?4=N2DUN8P>f;)4o8;SHx@I5%ppk+~r!zNK6{|9kMq5YU_y3jD=P`!45^ z>U>MXiuUB#+7ET#`m&z*I5m7rD%qS9|;Axgdh%)$V`PB>l4mTik$VxJ0}6u zThNFB2j3TQdaVR&?c)U+TdPao)jNQKt1s}k@}ex=yNmlMSyH#c&Tm=7lBW|_fzi_-0nIaajh69(k7tH%xpsbfWyU-N=@Q6X?Bif*+jREj z{K(6yZywu#);n52!`~B#AdLdr+(*peA)51MHz|+oOrVcm&DUmzVVQkz@vGz$OO)3< zd19zhH3rNxK*tRnq}e=~?Dun6`4GcRqi#KZoOBZbJB)nV%y)}=mTWT5KXzvIb8{>8 ztqA3wfMyjtCgVx;H5y|)_mEkj|0}RRDu|!Oy1U~y$1eG3uJ>*bJuT)og1i>^n>L}U z)uw-=7i>9&coi;*wET9=pS2mwF)++g#^dTyfGPnTjJx5zyiKFO`weQ%n#EN3 zpXj&3a zO(V}VzCZeSxEyuUgE0sK27183_i0#8*Sx0oO2W$a?rfoe4jBP5PBp zrN^uJj5$)Eb8r{`0*V)=?2_pR0jh!s^InT8;|B_=3S<-BvEddE)AyTkX!?BDS< zhChvjG{rq@N7{t{4%FWs6}?@2V>&|FEs!}d%);s1(0xZr^vxP%<*U>A%S6zh!epae zrWZ?$v@;|&l(;ZJ-VPCjQ~r}%-Dp2UwVpR+!z5;QfriIaAXE0~?q_S>zd9nnaghVt zHP8WEaU<|2<5IQb+>ALV*K7;CZLI1%6+z?$G|Bny@ANbE5w68g&$XjYmxFz70gZX* z!;cM}N1A(dO;wunV%{T^34-^D&7W$fd*tlH@!qSy&)xIb0im21(C~L`@|RoSEi?TG zPeJ+McX_&*;JdW!0>O8d$~eJyamRAOcRB@BSK#1?Ns7u4%M|=#fU9R31i!?o%Ka{* zznJJJ_~^%5a1;ENk?l>Fkna7PA%*z_6&7<;aQRa%wN&;et%TMllP4o3b6wh4xiN)esI3qwm+f$KHrd)@%F>< zm9@TykNnyIE_mJf+ILYWyy1NlxZ(Y^+`f9GP>FRsxjKK)_*Gdw;ky=wgn3qBVPZbd_NsXHy5H4_Bcp+)KCBscyrqA=cb(KSW^4JEPBD8; zgpw)7%bNb4her$f&hK?(st;rjtS# zeBkbQySBU3yrnrPXT5M8fFJ|iEA%?)JOb_ub#R6E;TBpA)#Td9A-5WfsVCm4{rcaL zUc$H!4wc@ra&|$GL7`m(;(HIwq;s*j@A`b`+--@SbA3`Oc4{V@EFa1?xwfIURbs!f z+n0yBqbCXDPLP4d{ipB1W%#&9Umr3i*bVfNa(7qHHl#53<*@IoedJm`ZShE^O6{0I z&5Y)n^skCrG|-I>iqh}%_p-KuJ0Wu6oe=Au4)Sk0;5%=7PycUo);-&J^X!Cv^8KW< zqb@xM#?_0X61BHv*<_ylX_?*0TvuLpTam5Eomr)}NGlUbc{cowwTxcx8_GF!ExO|I zWfNO6$G6i#u@I(-k_zJ!w@hE6d%7t?OJPi*$XD*t$IzUwXqp6-nby`u z4;jiDPwhYV$u)$s7)ulFciiSM4}<<6llpIL4{j`|-1=fqK~_dmL}IsdQ0mH5ku<@} zK+nF*iAU)1%1Iw~_#gW1SlHwI+o$34fb4W`FwIrvL}9#y*iM>fro+&A$kOqCx9eZ7 z?tPnm9NrH9jWamsakqauWYX{z|qtHl2<`D08tiS(70DYOWn^!f0o&82d3B z9(}*FB12s|&iYLyGUOoZ>lk605M=ycUQU#)^b|gamY)oJ$o-&FwixvCm9TOFSLhpk zVT=sTvtPT#{)6Uca`7vcV4?yXY_|zAP@BQ6JJMxfIceh_L-j7&R6(!KRO?&sf*CnD za%gnw_cuSqe*Nvc2|z$mB{a*?95!!64hJ?2RQ*D)e2yIK;qg}Z(DU5$CH^biq-4!#NtK=AyCRqoBJF|lq~XIj9$qn}+GDS{mQH?+ zP+ri0eBfHA-ds8}3we>KQ4r;HX346Lqg~!gepjXh=~PaRJVbZnqFiV`<7J?_6lp!) z_RMwlizI>(gyilKsyvt`OH$?R*{Cf3M?YY1NdsX6-A_4iI+Ow6ei(@go-i+YHpm`M zMvmQD)(n1g%QDa>q``k--5&h)Wz@azBhyo!oLQx)I0?))Y_a&gTE6SVnNe>hRH&ZJ z3bE6qM|`a~deR~DXSMXlDW6kTd=l1ef($gjtGc2KdF@>;n%^CdfDQNSL&vzf#UKff z*0kxGx2(JTHOsWXx=<~;!qw+(fFrY(-nh*1gf{zXpz`uBpUtpARN%_m1#l3x1RF%n z!3I$ef|>Hy-6@Ia#Uu9PCv5OU(q!(HM~Yt-?%er4{l;LO<6a0w5~LY)9CaBL@t^~Tr$rog_V3>Q ztysNi`8X%ql1RsLaQJiDgcm3m%=5u`8K4gkqwJnAe-ucQXgc=}OcPf+#YP-)uNtny zJu?GIY`wIDLw&gUT)Eq_QJ2>w#N|euTsYWrNXN(&jWt`I`tMlvCjP_7tz~JlOUI0h z*;ZHNl)fM9wPDY4QW%(jn-y*(ie zsd}$?wco0cg6C=Kjl<|^q1VjTyFM(sd2nc_XKnC_r0ST5ACD_q?rHyEaHu>96f9vH zDy=D0o{}o(p1Cz)(dJ)?ufU2VEO@}-=UmUmX(pYR7Z>zKI$-g;1Un5b$_3MqAOkH| z6>=+`VY%W4^X_usPNX4pF*2L#vw<`c{VFG(>TS0=r_9?<=hol3^IRl;HpeZ;Fq)dS zN$8j=oESD8p+sQy=H6{59V7L)F|=EnDV>Is7M&ZL`079)$FWJ-;o3fHsS_)N@x#kN zh%Rk0l0DBi$o+S+`wr3TuZfKZ0 zF~)A!6)CaUbfws;YiGx*pIF#ZoIOI=)+ym-pl!M2QH904w(bD0t$PXDIwo5Sn*+E_ zqaziY5V4aM_J`VxRMyrwaJQz7jkcb`**zm*^ys6PnNqiKGsZZ6V+Uu9o576nK`^U+ zliZth@p;!?-cMAWd^4`JcH-Hl5RVVzH@Iv4q;y>iP4P!`4ohvT2&PV#B#!Px8#`e+ zCa%VSMG(~C*Y(VAJPyfq8(Q_SXl?s)8}XZ<+rk_b(Lq}O!u}tZn!*SN*7Jnt0@@kE zlK~A3ADP}K1IW(>^ga>r-#8DD!PEn15^l2o`EI`}h?yL#i^&#ir?)Wc&=ddUr}+On z^M7H_CED&r(AZ#x3^|4p#5y874=lRPZ;e!ZWWxazWr&;5btc5{!l zXP=&!@Lnc-%xBrPXl}xGmmmWjt7oiV$wuoic0Ujo+z*sX-ZIsb)nN(LfU!Qukg~aY z*g9z8qF3X@I3aU3-@XMZ2x~b8Z@|X`TvLgf8l=o|C;^(foSH!x6^x&#iU;D2xb|GGft zpY8wi*5zS65(oSLUZ@oQ{{H|$DInYb$MjBpP;c-)G#D+^p?Y_G93pU83OE9eP4#-= zP>wvx-kTrda(&zkluj!D1ok*Fd>I-M{w# z{JD1F+4l!J);StR_sNN}D?3{ehmYD2_# zkjUXFp7!R4>9CE2Kb-_mBf(Qi@U0|x3JJc21WzWxlSuGH5}Y?h>zxiT-#3%+Z|Vbw z=@#Dy4&`hl!Q)8q4J3FB2_8*?uP4E|B=|ZKJc%HHvXLnTbDjKCjABA>T7&|3~HKVYjDI)WTO5_}m6 z?n{DWb9I9Jr6l~`BsgygK_r}?TGkKKK$+o+NBx8N))MPIMc;nq-8MRz4DOB}0Ba3! zt!iVQr7E8rQ=&Z535ISH>G|b6H{KQh>6-a1dmmYr!jhDa0@pZ-S=q8rz7eNmA-Wq#I)aj_z5>$;GGU7;0diAh^(#RmQ}?72LGt^NLT+WRk<{`iszgJ+yN^o&5EEqD#vewUzLwx*S#wzKp7fX=^S3S?yS9o3F zkbivi1z>U)@Q9?xf7F-zVLmzcaqGm6#>BcarpUC;`R77fl}uf4#*_y53-^HtI(Pq< z>$Bi3K_C<=R?hI2AijRMzGu1PwCA55cBQIixyW)s+VWQC2r|&M_0_t?MZ~>75{(B+ z%X{S9k#0$OTQkLBweew~F`sCrG)Zx>wk1sM*>NHI>>Tm5avLZ~9JY)w76^V$91mdasMmfSL% z8jw|)f^wnl3SI`9S5q$7dcpMgd-tZX~JGR@7^9oPLS2~X9tBF(tokne*3%Xve4MTke;?5J&#Itz&W}oY%hAjrpU<@ zgD>UxzE#<%6>Z+wT6u2nqQRqQMC{8E&(0q)Uf2c^WT1JNq1e2e*CzAyZd!oeO*&&} z-)%C((Ir~7^Q(A|sE(EJenGyif1X_$>|U4SmO#A#T#VN~8Llr=P_;2@4tkx?RAVV7 zz#M(SHQL~MdhivIWpiROSBG-1l`br%#jQ0+^O{uUziVDv+?yxLM)z92inPnOzqNkf z^GR1db5!a;ZSD}DRS%TcQI|D#Vn+CqORX0#&H3HoUC?BBRBPVrbtb#-bd~?$W>?P> zmTQ6xv|TPwUSE!u>nNViNM1hJyA)IHJ5A{0A`PQGz_{WM$~9%Q3%Ea(X~B_0OSJ^T z;qLvMGQl=)IomMh<;;=62DK};7~}dOg6%2Fa;#rYHhiIDnYmo{R+E{#MSkE_&i#Jd zR!p8)^uGN3r7J662l$|=0?Rc)2HLJQ->R#J<$3{6hhzg4xlAK%alwK^U*%dIDgU)p zi`U9B5H9x-muuO~ocJX#vy2H9iLn762nndlh$7ubR$Vq;##|;?OiRp_p~6@T&H#8y zv8B?%`Sx;PS8pu1Q%{an!;BX<7k2@(=mNSwJ&QS?8P6yc3m2m^vl)%j{L}tqXZ<%z z@z41WmLi_*~mGU}>`J~~0h z-wKEBt(TJ>vbEzbWqMb+zIFL|Lrqg5b;7B8d0S>l-3(0jc?0$C9%StR`siMm-d)S; z1rNMbI_ES7p@$c?Bu=Vk#de`;cR(fmYSghZ?acEA&)<)VbXWgL3E$|!^+9w-9)o(u z=9}v-Pn+=f^o;Qu3JAp%OOrOQ{d+nLRClB@lH{#+gh}Hy6po=O2kQet23r4@{k|Oo z^QMlw6Ri<-N#NcwvT-WSHZnH44oHOcKMy>|0=tdy?lBiq1BvkJ4z zgO3|r-B1f`cwuQlD+r#)`q{O=YPmuiYg_JMRf%io-aFmcrIx?=z8UsF@aEOZ1Ew0TFCKi)Z%sAT?FR~_GWSxCUuv%qzUp> zwBE<96RGzJKxs*~bi|}9ts&jaIoDp^OBy=uYVxtNiJ47>pyICwDrnS_Lr?`xZ{)Gu zs$i;lqTI_lQ?BgJVRT_OYfLO)(# zIDm${pp%X9;IL9sOm4mkIv-a6pR!QHT9HD5lc8DQ9%^5(e!v9Z_4Rf1jC2h2;maA| z?(p-ahqUG>QN=S>Uo>i`i`0SfidVFXO+L(C`sDIiq{j-OG-Knu?=EkjXJwVF>8|rF ztV(WncQU$c*EOUeYMGcD<9gPf11q3tRO>+%F9RLtEk3?>GJfnz+Q%>KyN~C!SN%AS zi?7w&2`5y4F?Ln;-yeMZl=RuF7ox=PrQCK0>j_w#I5&<5=3Fn28cpf=@p{Zqm$pX? zZ*{9}-?bub-u%29M-%Fp5oDnCx=rJoBrL-je!Ov72FR_;WIAS4=?)MphFrK7xHpe? zdl`Zlf;9!feR^hKXaYv4;9rqaj$Z!->`X3JS{|yHd8vZcFWq?JMs=CqcR#8Ix^=G| zdvYJc(DLZc$&d07iZ09s;P5s9ESNhxs`VRByg#k%?|tG`r#(6+fqf7`2B@EslqjnO z9w2V9ob{7nNp$7V4zLh483TP+KU%Bqn6E((-kfmi-t%N>N$QhFa|Sl)-m+0KDcb71 zOzpuvhm9v^(WaWrwwmp8=;NAob|229b#%Viu3lY`s^0jB8IkkrOn?+O`?`IRYnOTV zzH!P@hDsMQH|_Q{%6Jj~JB>+yUR_y|T9mkEW+2x%Yl_X$pX*dcP3Z~!EdJz5S;qTk zzo{Q4TYMc+TIhJaY=}pX`>RF8uh-3-8#HB$Ona52?b)v}^Ui49EnhJ=vU%g2xw|jS zh!$(0RO~IN=&vwjFjHxO)W#cZgPfDO77DScAyU55px0X;L-}#PUTNKRzt(D_uTpIdQ{?z7=oJLZp7-WuWbbsnSE3U)&TgURg|eNkwA+bIZY$1Gf_o z1oL1m5W-Qwq?sZz2$4eQY!DRO zvL*$iaYxG_UIrSc;U)Pcu+8w`wT1Vnh&oyAqC}4FyUj4v;506C?n3X5<4wa^2%Gze zGd?sp(k{Q;tlpfz z3p?L|`_2CL+6{uB>yF{m_)9n-c^PmShdYaFFDCJOHRUK= zCjZ{}yt##OYFuXJbG3c3nkfgOl~(uLeSNxnI0bj&rk`u@+;@~)rRzt5BCdhnx^2+Kgn@WF4qPCI*H02;p#5Y+?2mAm z7TjLvMM!%}AdBSeffH|yqf(g@$thAo@8;u`fB62s*B?dVhqs78>A^e?p(c%aK#58` zkTZlfw9t%14Y=q0A5`a-7u{Vru1OWyr(u{CuEwbgn`hN?J%e(te7N~E^w!mBe#ByX@>8^|x zIv3phS1w*o=P=pe);@3oR|Wz1|CNI~|2X2VG*|H)=@teT-2Ue(%?3uPInr!tM4HQJ zkt&yR6=O4Uz^#9-@XkMQ+aH(S0`B|E0k{2e#9Sp?#5nN2KL#S%g5LATVQ?i{#9gtQ z{tzaYmLuN6%As?`%2_##92O#8&fv1xVy-MUlf&YQvsno5wm&A9>B=mpm7_QC{Zsq@ z{QLh9)CujYub>C~a9&~G`F>yh?dlzJyzU3|5Oj0vb(TpZ_O9OeC40|U#ROl<*7kkJ zt5os+*U;oC`_0nJ81~YUXX|53@$|sG%T67Pm^sSa-QCUiictfe?%&XL!Q)|`>3o}I zgO(KTki^qhtnb_^d;MTTzxSEkesB7Zz|%vc-!yOV9J?!Xk4))fm!Z=L^x&lFldC!> ziLo5r+#V);!P8gX`qbv7EPG0Jbk2@Qw@at-bblAG9gD--SH6hv+>&N?5>5|*6Q++} z>zOO@;b-)Mei|?E9JIFrPv;FmhokU+*Z!XhDiijq|84t!qVbzi620(o64&L{u(B-? zdzfG!1Ug~-tsaQemb{v&VOIQYUnQM(8Be$GKk8BYZ>NYi)c!+PvDa4P=~gpS>D^u@ zU8dPxG?dfZTZX64+4y+G)gx!M^tV2=IQaF59iDD}ZvMz>#qrUf#vargC2w#GPq#Yb zU>jY3w#_?aP?Jj8y6JfOO!@8kmzUQzYn1uAS~F%IBG45URr(j*9;-8;$bZ(6Ah@;+ zoG|_tUz~d+2J2R6Kd|ziTG7ojiX%d|u6p;dOy6E3+N1rhNxKX02!IIP{=}DY?XiQn zov9~INiCkpGodF!w~X;iE(@*jd=!a1jeBt9ApZT+%Y*Ol8nz@%>%qbYXEt7F#?vi^ zjmfY}r&LDlR90=RrEbF09lo-kNgoMZ*%a{T>7zB+EAGSlM3(dats zs%v=vv+hs0XTM8&*rU|jM_zuoLP$Rc)t~#mtlxDYn6q0k?c08AA6+QlVteEh=dzfQ zx+J#EKeiYvS>Pt13eO_GZ40+dK0W zb`=e}aj~a~&^}p4xi!9OUvO{Y;^GBE*z)k;IdDS%wp}WPv27DJUHU0=0L-W?@pPLP z*UnwA&i{_QIK+BYvEweDKI{3Qz^8gc-HZ6dH<-|=ezw54|7yqi*PNeS#M5VORde%z=!?+pr7l?) z_b6Vrj5~A6faaZu58rIXG40jc?>?Kmq4inb+_i8U6gXl0EtA4kpS`&|_Mp4DO+v@} zlX&{`2U-4UToZz2eZ>;zGXV-UK zv3(L~#XVELv@K);rjI5J-|V`&z%O1tv-ifFWLRd$%M;`$yQqx)Ip$Yh&+-2CWH0)5Ek?OaFymzp}$k$^Fn?{2=6k0jA5Ru6v`o6|ITcRUffJ$c zOmkkZ?feW0%$p?X{DROw*cwdJIa~6>@#k(;6Ym$>R^$B>ZQAvgZ}WKf?Ws>I+Ko+U zkzA*dR|)>luRS&LnN3N^)K9wd*Ul5#Hyd+CNVx8qZO@(R`nS zl3z}sm*0-w`%K=zW9RPk_rFxN6X_EhtuMZq(trAdD-%{_+$PY+^fW%a;2dLdQ%QG@ zq7tG0%#tjQnmTR%+j-t@)Dgd=r{n$4bococ7(K{r-GO&kA_AHT^cgQ4c73y$5$g7< zYN$>-Wi;OZj4f1;hPTr-SDh_j51QKZmOx)*?O^%q;|*_hAKeX^u7vTARZ;!UvJ3N# zX;QITPwuEY;r&}3S2>s!RARa+zR)c2N@z5Jeqj2clg^n}mrYzc|JsH3gz`nS%?Kq3 z^UrE-x|+DU8F*w?vrq53NJEi#7Zl_RxP2;y=Bku)ru%`RY2u5sxO* zn8tYj7L8p)YM;=&cPnlj(pJ|`ia?J(9$PAR*x2{`sa0k7_Y&%_h1xCTGwPe`&xYWv`x!#TVQO@^S0M1UfBp{+Q=&Zfg!bS*Ni08zKDWuQ+z@ z6fn;lmE|^1ZajD})^w zv~sB%nuNSHPC>k;|I>K2Il#rr(Y$aV#CY-J!H*X|zRGC8`S$z~q<6dwFnP1lCyW=? zFd>rQ`&2jg)ofIW%^xWTzu`KVBJVi7g)koBVE5byT%_WNa_~OL^9ShBXt>x-;PCi} z@!*G>9}j-K24T{*vF9G_i9R@!IlQMM`ji7dEKq>=Aq^gQol;!Bmb5N8s2YtePF-HNgdI_FWy}Uxa0#}5%tqj0)AO-m{ zO&AZL(SXdyeDNRT`NHF{ z2eCE${JnewVP}Pl#}r{a{;WLllwgfG=nMZwJ?EDne0dU$2f~@ilP6N1rtn_ySLKN# zjK_Z^KmKkp!a|1t6DL9k^MfP&iNJc@D?h+*Ts}+|hW~$0K4gf5x37HQcTfc=pP(N9 zo9<|O2Z4Z(K8;Cr_jv zPr~Sb5s!)gG#FwZea|7Z2%zg3QsMZ$~pQI5uA zbbL9&#lz^o9FIS4cN6|19!4bbz!p#el?ujGY-X!$9k}~1M>bwISXOA|PiW(hXW`GD zY0P9Z+5gN60N9`RVP=3`e;;tBz!>cLGbP(48o-`^oP=A)q!9!S73L5+;U(J zutEUefuQ=Szzi_YLF^#!E8#rq0TMiy1m91B@9P5xkZ^sdX8w&caaR&kSL;hFY(D&z zus(L%Z*!*MT|X&}+jhy0w+f%}6S1iE$e|U$wwC>02hg;(eX#)p)-NV!GCxo3= zpQ(PGR?%j;c9p6m>kXNrz_L6_pi>+@zh1S|?7ALXm|#654o|lNLd-{!1TNdw`HSw~Xr|f4u{bmQ#ns#aZ!lrkd(_R>lo=KqBh7SmQ z8QhUSS+<~Ggw_;1y~<7d$A`E9^R?RT0`|3y-HoT;&6nDDIOWCk1_zFWljfNLczX55 zq4U2|x1ZdrsP5;__hLvo zYZ!^{XQWQ#tmw+epJ>0q3K=-NTL+}Wv%A8vL!UDPZ*d0>oYMfkaRfn6I-(k(-!^bi z6U%PHrPzSr=oYfViyh#*f^8oZ65{2>UK!}gp625g5bV1&FengR#*$-01NwH{kEO-= zCQp++Y~Oz9pbbiXzEjU{ty=Tlm^(1TMAFTyXilN!Y~RX)XcBrdtFYo30RWZ1_pQvEdv6A4d`|YOQygP za9$N5;#hl1;8!4#)1L(IM}o_f;Bq85oZm>)`*s?JJ$Chshcp@r>CJxwa6=MYp9CLCf)6FZrATl|5*+KDd!;9A+Bf&X4{>c0T#E!B z*ar^#g}o&BHWECZ1dk!X14wXh65NFZpG$&Uli=7mvR8V-_+ra}1RPt&A>ali@^wk@ z5hOTP#|iR>lklsN;6qmN2;h^77*Kque{cT(PiOwXav)eYXa{!uQh>fdtGE@=91vRX zaC!-_)TaR~^>v{(`nXilHG~FW4^RV~N^qsO zP=)IWb+o@)QQ(4=3??%VSQJDUb>i27)j%I$FR-1i2kZmp0K0%3U=uI{*aC$20`M&T zaRKT|vj-GC8XHg%T06CcT1PDhb^~*$DZp}IFttUp4xDT#0B0Lgz&b~;q$^nI;7IC$ zwGKH+1gv(HGwZ;rLOZR6*0%X`i(dc(dvdiY+48tLYRSi6o* zgLwT1RwvOVUu=Fahp-X;CNRYp$P~pz`RDWAN8s-ZcLlujMELn~C;)R3!7;y-#WQGR zii`4Fkns0~4+FgBeelCE^E45hFCXS3OjF=`r2}kp`odWNp8~mY{ICV%K(r5Bbl$~J zAIL8{@8aVOfQ!z%_~C^4YX<&-6AdTw833ZVD8J}D4U>=Zi{gBKm=2=zH$MMY9M0#5 z;ellZxL)D;4uHP!4*)lY+!(*89MSn9|GjO1Q55I%!*CiwDY*B(0)Qya=ZE1O2f1p^ZDe-!{k z%O{`z3cy9nCm$~dxM+O&_&I=!mRmkv1n@E7AGluOEC7ILdFJy&T(ms%@#6p&&0ju# z7~rG8KXAR|9|FKg6z+{51ej>O;LFJcxM+Uy@f?7Q&ZGD^Tr**Vf8ct(cP9YUP`Ed~ z9bm)yz_$TRbe_+b5Ah*=@TUMwwGVtFz(ngWU(R}fEBC>_5@3V-z(WBhT0Z%5`~a@l z2mdmF4eA5;0hnmJ!IuMZ(RPE6F95h``RC(~02eL)e0&bT`+UlC5&c7Zj1CKv zs9t&maWDsa4gV>K2Uf5N`GPf!{0el zPh|1K8hAmu>m5G>o*a>K2OB-U`y1uXMi`$zD|fy1uZZ;sYj6npg)eu#;?sxzl?@gd ze7S2yaY4DW7RKYx${nhQKf;c~dyPn70d6b2v~7aG zNrVu<>jwRo!w+G3oF$C+KRE~D$U(&k^?e2PjUR8UqY>cz->?&c?jY}he!}uL3;WFm zPiHS*5J9-1KFiJDJ=EXJ-76$?MTnQLhfml_@C~wFhabZD%oN7w&+<_L+B05Z!$HOU zhxm}?BQ^j<_VWbrJ{v-KHb6HUa>`LeP~QGccaR=h;Q#;abce|f>(5O11#@ulIVafH zV>KHnCwqmiW?KdZd4R7gR`}x2h0G9^r$1}o&~`x#>p%J^PyBN9SN-ZfEX-pKp~J=< zBK_(NjE-;L>QG!z-mHZ2__KQPKRqX@i-j*6d-5KN9P}yDuUd)F|4zS(tM~t&0|g^Y z%rZM#ul_v;$}3RXSh?CGQofLX&w;{;xjIOaf6sxU)hf02hV|q3*t)!eXJC7q9UxYF%`{X#uD z8^jNx*U`#p1>mm06dLz$?Eky|FV+B1L|T}<27%Y#t8lnjzP8-yiH3$C-S`6)40lDJ z==cIOB@|b>oQ#ORZxd6lBm2I8d!o*Tle3+R6%oo%ah^xj&R==sPG9orqVA(xpMDkf z^+(Sj2h;3sDbaGfa?y+Is!{F3cS2t+rvdUfY1J*Sic-eP8WJi|7j8 zg;RfE@0D+S090r=U*TPD0y+&xIce|{Zz4cW1M2hwYp>cyF_k;QD2vT6cX@BxWxeW3 z%`Y3{WzRb_gmG%JDqd4i%{;$2>oj|Zya__-#0G-D{B(y-Dd>sSm2y5PF@1OLi`aX) z66afP*ajZXm5?6ENFY^d5MYbzoZRNK@nAT`QW83F1nSftG>!NsN4+?(%M)?(%{E zq`N$^w)@wg=`PpS0B3E=Y4PG1>MBs+nz5aG=!&IKzdI02xI=uw#2c>ZF4Oz$__*e3 zaH_A)MPtL1s+y>IQdd?7J0A7h{E=ct5vE1sqhDQdj8oH&_dD5J zZ!{>?%f4Tk))j43+b&s{$~d)4qL&e+V3b*BXR zOOSz<<@VfpJ}`ehH-D zIdi1&GbtIiT#SCx(3U-6_uAFs3;aiZ2wdTvon|51{Wy4z^n6+VCKK9bjh}eSSAwZH z)_vZSf*W}^5Xx+9$8hwquWA(uwZpy3uJ4qnZCY%9fSau^yVv2u_Y{wD;s^HqKkR)8 zTufi|_E3=153*>vo`Ipprhf~PN~ww2MwRui_KN6I%`P| zZ2KVfznkBXc7~yBOt|6jp=lErwI-Nh6@BtBoJZx!q+$CHp4yR_Jf`ItFjIc3mA!al z&bO>H-TU{{YX3IeWSKHg)Nr6YaXDhVv#vZ@cWJ?sjFNZn+s|CGC~5E>AJgSoogORm z1S{;X+jrNaslUmSV`1^jxjwrw^*mXk$P@GS4jtQic3M@RJh^?w{{!Yc&9RlnYHq2& zwG)QlLTv)9i9GC4Rgt_U+A8+o*HMQ$W2qmbug>t&FhVA2hNXCwjEU*C{MV% zk8Xl_k{L|)1DP$Dm=CL2?dLj}OlI|O`v9EDkXR6_Qs3JMfd8kh+=q;1&-IFe+nqDH z=Kw_Cg~*LP2n||!-%h&WUOajWzfD+z!P%L8?_>BYYU~ha_=In)am8>Hf78=-_Rm}^ zo_@xzSRU;fD&Wdyyym{x@=s#0c^F~@Gkct(DXQ{HL->W zHPcl}JeYvr+3>zS>(lcG4O2aSTu)Ega{IO;hRdi$-4ZJ|=BlS_v5)IAtD{{5gxhDe z{(5PUpi4#6%C_ge-w-Qhxf%|{-^aVR7XPs?53q4jn=B_qTMJ^2N8zEaO2&TU%j33L zH`$mMz4ka->pU;mxm$qYA1R)WuH6^lex<8soQ(D2cH(MHfn~Vcr30?L-!q=|>)Oui zsIsqC!|@-rL4Vs!3)6ned@<+jgIj4{BZ1!q`I>HlQBm0IZfmuOok>>{?lgOgC!x7PZb%6afWh=j21XdKHXsV9VRv(P?x})!w6i z{X>TMejcB{W^BtXycF~n?C;cYpfO2$*|aRkXR&lX8kH2YSy&ajuCryWE55Vf_-qTn z3Ox+U_aW5JmO+jfOw69h57)urj(4AMPcN@P&qz;jEyTP`!(H#LnA<16wO+7ahY_Qu zjFLr^Zy9kz=N>bfHaEHDYa#4a@ha%xK1b8VKHTdV9!l}8>R&H3LqG4!h&gXQepq|W z_v)(0%Kk_V2de9So!X3re3wfz5Z~qJS(r~h`J!zBhMxk@VaSTeyis6e_2x+MZQpI)`c;QE+1x(yar30@w$Ep4>^j|S zD)}1tX8Vi-cQ>JqFj`3^f18ZL`sLwh9v?Wl<;Q~zq zU7*45reUD*8EEj6rw2+|`QZG32bjaxZAU-?bpP$aNrZBs^^dVqxY?|9@Qsue2EL=u z|Nl&*|KHK(R}=}jpoZj%7&aSvpu^q=004VcdVr&4-w@w$ z|EWIVfgwS3`yz0vFcRW~p@xrVbVudjD0&AysPU(oepu;Ypr(>?g&}m$6#Rot@?QKV z<^;Nt?@Y#6PZaBdnyBcW{t@Jj8vn2@Q+8e=z_xH8uqQ;{$AWwe|F`*|mUF0dAU!A_1mLj;Awlx& zvBo{W$tANVuW{miiTwI_!d?u2LKWQSA$fzk=d`={8TSl&S3TaAy{Z4+$+sR(b}5P+ z{wR66K~~*3P#0(PGxCH}ykAGqu9JH^*K zAi_5o4(+(u=v23Zyuw$-x))BThi|_*BchzA%nMZxG5j%=7pl3W*KdThGowZF2;X+M zLzWtUlmg^reyZU>SSt5zqfI!!u(&u=Iedile>W~> zmo@2@d}K{O(@zJkG~RjZ2Ji<*@%MH0jJ>0$EHmqs;*>S^`;;W_NS18XIXv~Vy@xDj z^F#kF5ItJsP{V=Bx_9}jV8~yUG!^x$RdZO_FfQfCC`Ib6Yq|P7-*KVAJ7JctsPBy2 zq}x@DChrz;C(b%KI^ugT%8yY<+T(<6+mz*@S_3isDV5&sj(X3p3oRMpZhP8~)M6`7!#_gBaci%jr1m`5sznv+N zptKnYY(1bJXn{xv$6&b)^bP=;sRtH~-xF6%tXz>d(w)J4oOhfhVbaR{^SN&y+A#|g zZd|w6lX<23B!(ZM+Trqw^@h0H7zU4Y8`stEKEb#m@NdX>;cNNcQ;5KOUUi-J7fV}@!0=fro9xyODX<5j+{JrIB9sxS%HDur*wUlzU)Dt zT&Dg3z4)s`SFPT-d%Lp#SHtliU03)luwhsyA02mN2gb>+?kih^22~4e(kN7 zq5T1rFhk2(f^f~P(=7;z3|uNn@-Q{TlIj<9`xmgXVZ^mz>% ztKilpdz*biCW|n*PErCeL-|y<4IU^yaUh>QLU-hQT?px9!tZfc9lR5`ZyOGlOTzqo zgOOe(7`eiYE#HY?hzpdLB_ljT;NDh5D6mcs4>_O>uGB@77M5_2Su$AI7s5}nuu3C;tUfG;Fs;7e0nDJmD00G08B_{NxY^uvZX(ba2m^lnoVf(> zKp^32aWOE@F9&M~*_?D>JwVC{1FH$n90IH;NH|(x?qB{FHu?y*DVXm{??;`^WCF%j2HJcKGey0i5N+1_QPb z@ZJPgZ9}#mK4zILo!cpe*Of(zK(KVuKtncxA)7#l0~xYFIvl`|1<+xChRmN1`!QsG zbl8_6^QFT+44Drd_GZYu>97|==0%4+88S~g?7@(E(Bbh6*?2lUjv*UIhsQExW9jf1 zhHMNS9?g)Aro*EcvQc!{ogs6l!)^?jn^N9hofW0yQjT>Pxb9hRFWJv27~Y(klrMg= zA!6qvm#@p3T$<9ivG>{q$9i4KW@nBs>V9Nfo9?{ZQcxmff1-v1$)@RBr#jbT?C|Qh zV~56s-m*Q-sBvM=&^?)FIG3_VX52sZC~xB} zfwaF~tDr>o=e@n$ueP+BctF9Q8V~p?IlKGo^fDM?fRsT zz7{Vd{ZMI}r_urU%WtLhkuKFAC~?tp_Ma=5yC@#xcfH7@HV$`2oe$i)?Z@1i)Mo0) z+cUo}1e>Xv#qCTwF3p(TdQ6Mt(cNbVd-QzQ?Ndd_xy1+X=`7e?DJXAsvCj#-D1FbB z{#SSsv;I2H?AA;Hw&|?(@|`ZNr|?R18{3;csl_BeS>N3Kg+-PfW8%ke=+n2~@SFuD_z&z z5P$)(vQA%lov_#{;7$%V&@iGI)0YkQUMSwyY- z!$yq_)j!N=C5%__riKIYHtvy_3Clcw3bpqV#l&*!+dZF=oZR=v4F$*IadF$;>nU$Hb3&R~LK6~rDon7>*wQjo+lC6j}X25ml{q~KEx2O0~G-fp@I@|i82gX(tnBPM2{QI{SN0n8!Ji3Plh zwWKfyEx~yd#a>efOtIO7by7-l49^ArGstz~DoUV(PkGoN-+_kfS_`o+aWRHBPo1%F zseC{*RhG-O>y67>zb7KDSs2HkIMWPv?1`aK>n}INz<6)V z3Y^*gKzjp$YRCW&OK$X@p5P{kewBi=7fbb?H48!>5x17&}wisppJ_+L|7n z-}dSJPO_q@}uU#Ifhlkfn?5#=g(tR$FOyb)$v$xab#jlA5GqHLQ~l8h;_-gEugxReWn@?)b31dJNAS1xR_d_ zECy?o7Im&ii+UYKZ4P3!0BsJA<;RT1&|(8v1nh|h_x6q#O z!+g%7B^H=`hVD0II}~6&r?$8D@IPvJ^LWQGXN1C2cgkEFcKOhauDf-WaqZ^B+uNsO zD@;DK#_7Jq@GDe4gq(AEp8uh->7i?~%PqGAE&iCBk??YX&iN#bckYvd);}ZHp5VMj z4F}4HfZ!vpFdw9Wq@0zqnOG95uGyLkNPX?=4q)c;!Jtf^$Q!W2?4J63ZRZ}WLm#L0 zL4KVXbUnK(pJtyum!Wm@6EoE_XC-GSSU&_5VAwO`&g}6XKBFDBGiN3CiCfjR>QZdX zmTmiDoJ~HP%_GW{e5v6;?RS9aba&W(Cm^XBEdo3Db#euVVYRhioGeHQv2sk`!VD!- zFnt{Cux#1V|^Y@NDKu-etc8mGynE2TbVaee2mSdgjT`V!lFAcmVz<)!LRZ<^Kj zR{pOd9tPj+Iw<%_D?6oJQp17T@cNdVW3asbY^@sXzW;8mI{nI?jj=dh*IKnw)?S&i z+SupDw%LBygw+#!E@fai%n=y6T^u~C|80L4X5`Z)BNwt?ohwXs8q>mLK|or+NzR`i zgAo`Eunwx>Ks;?eF&2$uGAEODFmoakv#WF6k7roY5cYpkfD`tAl%_=;y`RL6&?2aG z!cMR6BU~ftxoIN1X#cXYX@k4m@fL%UqxUISf_Z@>7Ibo%Z648ou{lD`A!)(V_zrojSbzPOyzvHIP`T5ti zF2y!&(Ry8GZsff_YuoD`$7X8=i7#7)sO)hrTwh>N(N!TjAoln=D{D+LC;cwoCOo_B!n z46O1Su=81EqC8QWD2p2d)(NaddZKD!nJ`b7CX5k|5n2n4gnB}uuv+j^P$noA1NZ< z`0q8*?&m&S^?S$P__wwEU{}nGEZd|v{bA8g-{l)rzqe{qn6XCx;qT4j{!1 z(3z6w&+q(;_K~uD^oMDsecy9^M5pDuNc6Pt?I{14_UMWH`~!ADpL!FTNFh6J#SN&f zg#h{4bsYdLNc-jhhj15^uc0e9^sm5so{kr;`q6Q#;)U;`_1dNqVkw39LFxlU=R5_= zBNaNu^`%4FBhVqnPzal^?u6)&>z;Bda(xj6Kj-R8ha9SEU@R>ShV+v3QVqC7T2ceP zD7{z%z979&13oVWJFzfO_==^)HQ;m7b2Z?z(z7+-Gtx6P;38>J4fwS5bPc#rT37=< zB|TLGJ}Es}11^vj)PPS&Pt<^qOR1qdmHvEbevRkHq{nK&N2Nz=z(=GERmiA?cwS@ImRp8t?(>fg13B>HZqGQ^$SpTJFO}>Q&2qh~Kl0`yO@NA797)adq4uTg!dOFV(!%_!?cy`!M~Z zYPk>74{arZpoWJO1M2rFH7T|CDfOco_hC9IIbP#FOphz1O3^hUuTi#MkDzGMT^%w^d1@;s*Ra~(KBUV0DT#g9T=A~SgMdyE9i2Hl)4II zO=|L758);M@_+anLAkzyb`M_4>F8phGr_R5zr~M5WOs)6(|(PA-QVJuOl^+T#@DIf zSLrV@==lGnUn2VpEkbUG;r^9ML?`3dbk^6G4)S~V)tC^&+600}(-Vl!dJv^=u8D2)I_Ev%0=?ki(SwT*8vVo4&!%6w;xeqlS-E=&Y(Q9mP2a zijK#GBt&Nw1rv?LZ%2&HB5W{{s$IRPqGp_5WyIwTq)VMF2bm_5oI z(no#gt`Q5=k+@UpHKBRa{yrnB`D;2!^`%4BHzCo7!s}7i z*cj%UoUWXlO8G3WFCEo(nwlX+be78rP_YV~W%Z>)${k%|B8AV6Z;kq!WxuAgw7zsm zy|qpR*xW;b7%|)s=9_$8Atx6jzX0?9-k6kSugTI35bKLmM6RMTU=4qZ&_{R@*s#yy z2k_x}fC{kteiG=%r|?{P2e>hK9++2`fj#S zc)p)J-7i1e--fR|*I(PIe)*aH%Utq2{|s&}+l%{-)1RwHdG<@>Ol_&xxh+?FgjHX2 zOIF9Q>hQDr1QDM>OA%R)Q z<1$^^(DqZiKYC5>r(Od4sY*T*Z~1gPYWZYWR6^768Gf64W4J!WXIA>U<<&DMX>~V9 z+dgw#ukWfkqU2Kz2U=HLG5%2y$>%0=-}n{SH!f<`DQuz^7W2tM!p0b*uwhRF?Y~~# z?rq$gb7IuMjt(E=-OVT2&9`mh-fxEH&%-y-aQ+V%BYeCZ!b5^JTl=Y_eiI-34r?FCe$mhqNg<#gGhckvwvA_sMDBqgVF~@9tYz zrY!fp?6a>2zhDjDwZf{}>2%T#3~x{Im!8$zG_YmY>>gp?XE(UKW0Gn;Q1YjS1Mz2^ zcfzdBa&NJ3K3LCbE!DAKwDo0}mr>OXrss|XzqFUyIX+f?nMA{oIjZG8SFPOL8id=o zXJmFcFe)VW$bsG7uTGcUS$@R0%j+M*?9ZNP6+hE@Uc5#WZ?6j|_eDBw_*>%syxeo+ zTQUrg z)8DXZ-TEF}x2|g<-eBNddO3@fflXFkS+hCav)7m(Tgy}P;x9c~cYaCm&sG<{#o8`> z@agHYM1?$5!-4Xp&(R^iFkiMvrASU}IRf;m>(r$h92*gLFt%BJbg3{5?7(*$cW9uH zfyp-`c$np&u?%ikv5&@{F=tpqHl@DS=A5O;|J*l=G=-A{q3@3$us`CQ4)ileQv5y| z<~||0BI?HMsHowi9UV01Sl!*yo8d73aQopImi=t+(dvOJ4%9wAoc9_8`K_SZe+7_> zxg1IDny4DF+*m=}0;pXN_L6`PMu`0n&OVa*^#+8brhYvziC5dK_^9@MOvRa+_Qd%y6>av`-1Yn2nVP-&Ve4OTzxO!4WPMPiSKB}gUkbAggl^r1 zx&a#_HMpA%SA97VeYZ5&1Z7->fgW=q=c1tKmTW>BM|PGVLj4PvR-C zCvlQf$C(iJD33Uud*8|O$_JQXd6DOIYq2cs3JxQa2lSv4s!#&n{}W4|B8e%}yk(dC zu&SY(j!g1#4;ySq#8$oFZ-8+D%UG8JD`iQ$n{o?O>G`0Ped zxOKY+St%Em-x)eQ*6GHG(w2YF7TI!xEDVqJ7pk7fkIvK_lW_pzibX zDv-0v{x5e|gY59Q-)vYP5~XAavL6| zOK=HzQoRh&mYO*SgQ*2t7^D<*hFBglkd>cUvxvuZqVu@s;^U*!(o)ZR4ln%N`anGJ z$Vx6SV>`?qZQrot>gdxAd5=2m3)1`Yxu@@)l$+naNADumXzAXi$!t{|XfL(v6PxRh z$KshJkHveL7)zrL4IM^@K4e?i0#Xgz!Wgj7=?t9Tkf#dC^}>c23$z26JY1*^{z=_x zPl>IsXNaV)XOJ(r2iiX-xtBb+VH&O(b9O8d?hRD^=={o3$F&$>=xRG^`1O@D!G7?LrXdhc2DhX8DzeAE`P{Qe@Pg63zexV4y30Me5c`X zpwAHIje4lCYmB-z{TTdDfLnBSK;^suVh$9i)Ou(rD#-B#k1X zM4VPfCm!xwa3R?ByX!ewvxt@8JjgQmItXc1kDskhPBmZo<>vVJZMNy}dlHfS=Ela1 zb`AHP8`V_HQHtI|{HWqUb@WD?8%Y1=&*Zf!z*eWc9)=v(>J$6R7YyEBKY5+&AK0;} z^X|h}R^Qe($W2Yf@GTU7YeP15@lINvnGoBu>%=+pzuerHbME=Pk*BK1eRw$dcu+LC zo{RWX#evG}Tr&F!te+LqMX1Co+5y`Fb=J@3ZOHnW5BP-jQ)%7%m`oOzTu(3hPh`*Bry0z?*0e!!S27sB>yZAmQL>|X6aR6(?1rxPX;*ucV*`R z{r{_C9dU^$0i25`z`ni(*#CD0e(UV{EPe{xl^wv-=eYuX{74N`jTju-{BsbSh$m?L zzc~LlV9QqkDuE3@17}}V0*s_ZMs?a{x(Z^G_KDR4-5xoRBJfx*CXi2hL$M{KHaizGTyOmX5BbY zTT3sBJPX@esdNQuYo)&Mylh=(b2O`%?5_YLJe!jZ;$NT5K`N^7xGaX{k09I$9UNLv zaP$OCEwUgp9P|oebn0fZe|T}TDvbz9mqd2O;bp8-wq?S_%MLyM-i&Cf%mciGUV4}E z`@WyC+x@rRG)uVgkUU-7<_-(yK}~sDM}LUN=KVsRlB#^2hV3a?ySC|tu0O86ck1_|`hDS!Zl`7((0iw`ko&Ghq>?{X z9EiWNHF?f|tdBbfap$HFbUPG#T|oJQT=Q)~%uT=k-b2Y)t@^k-73nD$q?Kn=p}ja@ z_)X(sygkb>T-jH5M(s#hz8CWR1}+S2H{EMMHvD{jf~fjxR| z)w4|XN+17d%IS>up$BIKe!aYr}Gt<3I1`JdX*S)$7@@J{aDS;;o%S z(WH|nFZV1TCdn*%-Fo>c%c3Vgr%d1AU{J7e!K7RM%5l6J4pg@PFRVxY{kp{Y-h#XD zzYl$TI9j{W?$uX|F?*Tmqq%y)KYPdO)rV;jT9hR=O}8mXevN z=|s4lu7O#K59bX?jce@1hpM>r^6f{YCp5S;!Dst}38L2_K*x9})$lbrh5SQ}?&xeZ zG;J;38?!y_5TBXTx7A0?>TuuUJ32j;bJvTiI8fb9nD?Rylub`5J4;W`v#^YLEzmmb z^>G1x?EB&NxbwO2V;;xh}oqklV+a@}Jfyr>PKy4o|ajYo<#5z+Tjaf>jeScCL`C$BF=t~~GP zWk&>mmCo0H%ma4he!zhx2p3}}9B$O}mFHXTv)fM=-w}K-`|$ovtZY$5eqrMl1(MEL z=q)6#RB@m(zwGO>5As(fU4?3I)gl(=Wlz}vdAHTT_LgUk-EGEvL#AQ>g2b5}%p5z1 zwZ0dB@uTGJ2=OrvWdp<{?eXkw+idP@`lQbBT$yw%^81w~pT`HiYN{Ex@lNOgufj#! zTZ}*5`do+3i+|30SXR!-?V5VxVVjKEof0?3HJ#dEO;LZZXk5kWWdo0};V(Nm)&4(iquFq0mG0>jrV8P zGT9N2YecjYn)JE2DF`X0EBQNLw4+Jfkg@G8Kg1_&Ke}-nhF_-2x?yrihqH^bEN85X zyS8;lw`UG7#(p0^-)=|N{;3b`?Ddx_%UTV`f3&R6kAK@jU{cj#$ckp;kCuumFx-i1 z*XJfU+&Od9TsQsc{Q39JwDC|q-=!Ru&`$zODe{YaLDXG_`dHi z2ZA#SVycdtw~%~!-tpYVNo?z0$Fs`cg<@x}roS9@Bhjz#)_Eshl*TLbKotkdgY(gC zZo@oCno73eq&e_BVqJ3#y=T>M#sF=vgw<(#1(pt&SZIL=*k6Io-WJR#d_#ggLwum< zrtGjZHvEz=?Gb8<)A%gjwQqyH_u!Y$X1Sk8-kSmJwRfS)dc>U`O_-;*YP4-OrYgBB zbMZ#m#tT0gY0Qlsdd9@2j^8^2kRb!~|EJ3_(DVR%|M|dXzeM272O9t2)V(gJ6xhIb zW+pO<@JcM5SIU)&b2(gbCC@+<2EHiP5c0bT^>`lQ#e!VXAwfCkrMQ|CE;z(a5iR5U zXm%2`)Cd+m;7d4};%tp_p@W72-k z-0ST2!hCVHFo~D0Q6ehjmy2Ba2^_J|jWdm3B;3g_Ld+`k4SQNp+#6x_^ACio=CsBH z`MJ{n1SK}Wz={l1G02ZTgRvMH+EH;56_a*4S`Z}Yf?^>6dXhJggU&&o;hqzLBQWEE zA^uZ*!;KvaGDAXu-=h%l4mqY)@MZP4e928zl4RBSqK5d2IiMVFMx|2@%lSgLYw_!5 zMZK?TtsBn3VP)4P-5K;y@(}=5Y2B!=1)-9D%YQlj@?_Ie@#{;vz7I^lCGGXv(yvmFx+~LP zzxMHO)uY9<^kTKtBe+NfgK9le;iKEX%m*%S=koe4FBmzj+8*Tkg($JL@X-xDQ0GHM zUUmIjK3bvuS0jQXqihdyKK@i*fguVCh+nBWK|)G-1$R$Jy!hH%?J64D?!HU z?Lyu@pw0mds;~ih8za~2NC5WRU8wsK5dX>Uxr)3pSMo#Ju~QtyKzM)0k3E52!<78U z+qYak$zyrHCx_u27=}19BLDNl33vhf4|8}y1vDu43=akNYD2;UBS0LA<)decaxqi# zq1?lgfB&och3x3Iwk-q9TXw4^$hV0@ile|_YCo`VP6=c?yThN|4x02qSB2bT783? zNAgfxeN&OsCQ3f)S3dt%{}@UowyyrsgnC}j{?S;;SN+-%A}4hqNV4knPTp?h^^a1; zkvqHxb3!sqpkfpeGYL|Uy&VBz*p7_h1r=bM90q18As|+fYexSvABu6_>U%^Rnz}FIWR`a1-R-#ka(4Hz>s?WJ2^0udJmre z|B7XED>chCOEmK}vo+H-6E&rpVVWMA&YA?U3Lw!0$_1L0;&O3`IA5GCP8TPNrQ$GP zE5KPy{A2rn@MONJ!UkZuphWPi{q$^ZIlqLT&(G$k^Aq_}ei+{aSSBF&rhExsi;wXu zdF8wkUOq3Im(EM%NqJ#Br4;}zbmqRCD?cqDWMAgi?g0?m|0lCYdFC*ZHSyc1Nas(l zGA>^_m#h`3`h4oV_iNW#=q?PzmsV!%Jkvt;`E;f>zQH=_2*+6zd+_osYI?84AF_Tz z?xtxD9qhckJOfX4D^>kIxb*W;@0(kCx;aj0GJa1o92S9~{613lX{lz>rqTwlQl$-^ zHEgH)JR)v4>md3VRO>Z|rVY*BxkGoO01d9I$GHy6HFeI9l3?MvV0nz@=C z)01O83-+o$4<6&2JZ?&5R7L!!CCjaM18pc6l<5n4y8l#s^nTOOYD;&YChL#OpSML7 zp0p#_4eNj)>Xh{N0Q3@@wl=T1u(aDe1LMd}2aC++4CrBt;f9m|bKx)Car(+7<54|Q zHanVZD`43U*fQ=y@kED#R{N$+ew26>;ez`VYBMTe#*%n- z`X@Av9T1m)7a8}2y09ex`yc4S`e_U$VB3d-O42zYQd#;qhd{@jJli6rOIPTx4w?CM z4h;|Y^_4`0_(=K&cuoup^bZLQiGZAFO2P{Ei3Ujb=XKj*_3Xm#A%%DP-C5Mo_T=Zg z*<0uBA{J)kP@=jqN$1lt@l?4Hl6_Utcu#ts{;FZaYZc+kv%@Gt5b({!MPdf zlIv~WNC(_6_g>5pCJ$t!#!0Ojo|!wgu_tRTJU;TvQ#U;tXg3h8ol)>`Ve_8*W+WId zNpnoyT|Hp!C+^JrBbRg~x>AQTZN?gUJ=cTVV4p4uI$m>4Md z5f{C6SoSVkINq+=ipp1FQb&Jvrf)Pr{(^WW~$JDM}?`n&jn zAICXh$~;lSf%Fj%pMG(Y%##h|ei!h8wG?_f z&&C{J*ycD1KJ;exhXG>B|T0f@PcRfd0xBYQofO|LHBc zsZ+JE=+!#Xn_ZbZGZI4@gblx98yCNiv1Y;wWgXL8d^B5TG%c*W#pb>hx3xnsd^FX$ zx9fN7=BV^nH=}*K>8EaHd5u5i)^6Lgo*6ui-jz?!O_3BU^HUWEsAB@WdV|w7P{(Ek zOAo_3<`K+T#0Eyo^lMk#7qJB&+11=Hz)cj6!(pDFp_V;V4S*^!ZRNJgAbU6#Hif{o z?7?g|-;1e%^=5ONr*gRY!QApF9?zX6z{c@~(#Zmm5DHz$j3nJGEp%bf^`6oKX|}HS zE#Mw*tz&Vn#rbAdi#~ET1odp|o_-~Bz326G@15*by=LFjdwZuA6JX0&vuf{yv`p_Lykj z^BADFromhWw+75%fc}d1T!R6Mp9ZrTKz7n#7BDzXhndj&80|TO0m_yJgL+AaxhnX% zD)_l7__-?hxhnX%D)>1n<;77cFOEuiaa78Sqf%ZRmGa`Klov;(yf`Z5#Zf6Qj!JoP zRLYB^QeGUD^5UqJ7e^&OIV$c4Ek!=9qUpH88T}++>;^eNr$Z%GAlaVgCXld zhb>wdN*r26M!kQr0_h9`m~Rka(>)PE4KysASPk0`zA7&KAHjCfyo98cW?CKq+&C zK#N7U2{4&SS_QbuQrZPLz*1TUsAAS;8^DP5`}scfPFVX|L70YIb6=vN1#*MFrT{z; z02>JMRfW;vQ^2War>|fLj#r9LYn@3q+FT3_0t{=-4tTI$&*v9IaN0O%8q;%M?zk0S zXS|T=Tw4jW>TxS-UZQW&uD5r;^&hUMCQLqQ6>z=rp*7O1%C&oYEqo=8HhiZ^?nA)& ztr`wA22YViN#MNX5A}vGgJGhEmIu_FhVxoDfg z2Bj@ex(K_Wc$0U<+-&2gM~QtWPt6~rF?|jgM=4SkavbxFTD$D>k)I{5`drR44Ew40 zE^S3cLEP=lE+J)SZBDH?2=v~_bw!x!FcBy7s6|fm6Vb)D-Y5BA#qj=$?{=GuGqp_@ z4sji*mESPF{do-Etazq=9s%YQxqfhbseD)9Y|`!hLqEbyYCU4X=ey@!_G4IM#drJL?Vn*hY+kuXz{QI;A>%e< z_)f)l>iYkH4G>_Sbxu3_W>((e1o!71x4pv#f57n9if10X4{Yu<_C?^genj5F;l;-> zyp!UYszx4Ys)}dFip$HohdPEX3S$_wxjAN-+_x*Fcj}X4mXGc?-C>K_6=e={zhRia z;=7(98)x3~?s((b!Q3g`cKy6AKZFCnTXKMC_Qd#$rbmu)?!~`)?NwB8ZpHX9KNI{N zv*R%Q0o5)|lhR@h*&cHyP40YFoV0USqbFMjJDyA4mGpA(q;0`LU&uBI@v7lKx^f$A zZ_1#|DW_~}mjm0{SL-~FGyK?F{0HCyp2vYL9!j0MeR;to!eh#&n4~X}KTJB1Y?vc` z1Az-1$)NDiAb0`}tdp6}+8QjUx*-=OiJ_bI6Gx8v z<{!NxqW0DDT=gn zqRb@oF+#fjU1E`AB^Zrg6|dqL{(%yps$Rug`|WC0RX8l) zN~&=$QtRf+EG56HIR2w+MuJXG0Zp?TCW?B!ASvbzbNV%q{hT}iJrpW)E7M=fkY}Uh*Kb=Qa`MF^@7;B>N zDqzD9=h@oE`+puE-RSoFSK|VP4j6L#;3K!#lP#Xzb$kihE(l1rsNz6*qB->BT6hl3 z7p<~JKVtmCT0Pu97HDd@K^wdVKoe6JYXbZrk|$#%;296NP}hY6g-G8BM3)0k$FMq1 z#>~UY&+nTJ4+tphJU^KzUfVoZJoo5lTk~B;fTsj@FHZS7Ne3VIA=zE~ z#T)Fn|H^$gtTP>&y115JSJqv=Dh^amS{l<#q1>vHs;`I7ycv`{`unJ#0j2L6txb}K zF+KEl?TP2JS22B3hqfAt`F9VxbotTLpNDUxB?HS`zUSSc%bxM&Q{8X)>V0y#75aTX zSPxH*(OWhjdnVkp_}um;-6tn}cbh)le7|qu?eY9mZeTrp$rG(h*qGigla2>7`t!Bf zu6=&B9!}#&wLd^|>A$<@!Mokx`pYfb<3pw{>Cj>Jm^T=H5RH2<>`;)IEWxJuLSn;P z+l(J${;EFmNuINuh>{FuMX!moEDwWeuFz_aN`W3 z{)3G(Ysc?}qABec8MSkmb62YP!~ z8)M^^R3A6|4!3Q1r;)>MH*f!GA*IvQICkze;CkK+3X?x+RuK;;3E_mK)1`D zn+WFr0YK9}9;^TW-Fsn?z)kR!AI<0TQ+Nj8G=M#~loJ57?c+6cHMX!V*+nc5Rte^T zl`x%|B@AaqK2G2z!2h3zu$&{|5<(Az8_m~r!R36#9Ev`pMDIX75-_m@*K*xi>Nc9U zk@_YQVi|SwdPXGjWjbH}5*2%(SV1qoUi3f)!q4G1s`hSM#EwJs;^7Ol5QeT1Jw0%# zA)k+uuaF+0;XU9L8r@R3D+f?Z@}*k;DX|OsC^8Vs9&d%myX5m#`A1T8p`g!Jr7zbM z>;lHoFwnMo5Pi^n{4!9Y0h5q#;jL^IBbyqZb)rx#Pp2G-N`A0Z(?eQVsegXJdI5tx zKe~jsK=~oRPd>%KOaTT(elY(n`c&7hppUW7Y=Gq_CT?M-t51nN7_|xN+9hKfHVC?)Ao?wY>JLN z@<0~~db9qPo~oaT^p4($-YhvGDpsKv_qX)Oac?8Si^40>&PMd&eoaqSKYINMhz@>3 z+FNc*?1DEyNYA>5=*dV>@$Z4I6!|HwA3bHiMEVD5OJq@)CFd4)faNEpV0q+$E)?`; z{w+O{Kc$`L^n)i5J*D0tNl}H~jK8Hvwm;ykoJ5P|Q$EX;=M-zD7yGyL$okTph^6Qe zIZaVNFNdkyV1xsMB0ppPmLAz28W1iBAE+-5hmkysp zF($}0bWlGVgtdn9WwM+Q6|2yT`dfOWaUlbuT#om04x$%D!ScuhT`2gA{9AgYd@&@x zP>6|V7HuGZk#a&*?15qhy@8mX z;=OpNzJ$XUXu$(rEBKpKKYGgkh@=NxB2u_LSON*mPjaV9NpMR|dSUgV2aKA)&*3-Z zIT|j}9o_(;X!9UMj~w@7*g$a4HZ&N_^Zg3)!X=KL0m0LJ10yAqeZ&2IBO-i5BnDGL zgM)!$?G#^s0NGCs3zhhWM?^{@!U{4YeZwW5UjD(pf$&&$M}W%%{AhANv|j0^jVsA^ z+=%c-_&~ereW4}Hr%(!(M;_=xQ7$2WOOKo{>k;yPS~744q8B13M8(Q+5d#~7rDKsm z)89j^C$`Y2WJiijMU{9K?g6~{xe0Ux72x@7pk*&)6*09q#TuDFtNt@1mvIvK@RP91 zSO++muu@bmg7g1uQ9AG+C>4c?JVeeS0$`Gev_zPwQdll55#|fCh3UdXp;Q zLAO!4(SutZFPm__6FF9bYshLi(Ee1rhF(bLyHvUcts<9hg!U}zvgOd|(+3vZLH#p( zaWIK+e+rGG40{q|Nb@|lmO3~WJaP>LNBRRJkhCKW$K6eRbyae#l;MVbA^ao@8}*&k zQt#UHRS$wNUu9mnuV-ACSYXvrVph7@vBc3G>@QJy@%h}h5AB$R2{*1=?8&@Reey;3 zmf@334F+Y*`d*OLpv@Yx9m2d&!-3YG^GyoTT2!eth0F_}ahWl_bmNByG=u~x2Ftqi4mm>Y3tRa$DR0A9XUe#&Be2YD=$t7$M6g) zA6iMQPR}|2l)u5!^Zm`v9eew1Ykw;|$H}*FyZu4q?1x=)QT>PcpoZf=zP>xU*VvqK z4;zov4iBib-n4u)h6hu5ayqDU$BT=WHo6=6+ajnZ08erHF^ z6IC22PkeWeYDcc&XP~+P_5AnPx9TKy)WR;_+Q-=SqRo%TixL~;lUw_j6WKJH7_q7gS+G|HYmPiNIpa;}18h$;?LPY$k%NQ3p{4|R<8{bD^^i?APL z7Ze41N@@TFk_cC_N4*=fmpCO>8ny!WmAsAawf@xm`0}(K!M?qIG`D+;;lSJ&3Y@0g zDTOZhIHwfHz8@O|+$d+B=^}KWVl>Jx9iR9p^hE-C3&{ml9H_hv*oQ|z-ZH0?`|p`6 z;Qo7EwvRO51Kv2KZ(<{`-l|xAqb}P`??xDvetu~!XFSZ#=<4+X_ z>a(>53zs7PYV04?Q77@(<#qDcpFqc;@0t>(xNqbHwN^K2M*DHTHCr96%`rxw5Sv;W z&g!19(xB1G9vEJN$_2w3MHtFh>-RKn@oK0|&_wMku??F)$yuenWA~`jBNB`bW=5j- zP@7Z5f%xOTI5tCdKfEq$c`!>s>8b69E9OPbZTHh$w^Jt6>e>%?FV4w*xG832RglsA zg-5>v8R-q$9t`IqT3X7+mKqAnkM}Y4El%AO(X?C7E}Qq7HqSZ!Xu9!v+Bi!U2jZ#Y zHStzhX2sMvs~C*4bU4jxKf1$g5fLYXIy?}o1@Lhm47D9cW3H4y=_yyu1j-B`1IRUz zc7%M+v2y^p6Jko7^fACOCP2Z^)gZ{WCBRHS*{$gFNI$B+J_&A}Di@~Kb;DZL@0YRxr_RY1|^OgPYo)d?;$v-I2IPaoa?h2({MTc=-Ty!=KekJKAv0FYpU6&CDvvQeqd=i zX4dBI9Xhu4?6gXn_@Lo4d$D;9E#1b1mhzySvc9{|kF~+g-{)WZc*e0!&VqRuK9kB5 zi`BKMz9GjRg7{?B#11`;|{`GXP!zTqF?8cEMh6WK-kmyJyu+~rPNaT2T^ zG+rh4z}&E*hw!Dfq$;Tp_-68^cvaOPT^+wcYx-=r)8p=)^x7}o>`5zsRUAk*djtd^ zTitZMkQ4E8pIj^F=wLefQXSK@l&?>_7mkV%&)&OiSQ7Nj^dP>$9P9HuRo_grY$%^x zF2E<(Jm8aST(AD?al4Ll;jX@3?gPjYfIBj{DBR@ z@zE=s`}4!}*@kr&KRr)$B#j?ukJ>xUJM!Dd@$R7f`@#kRg7x&p;a5Ao7B!pKT0@<=;L8M`u|z~e=Cw%P=>1O|C=bD)ldKblj6JofAs&!Q5%LU z=aZI$@0Yk$>^Q9JJo4g@llymIl+99@*NskWpJEXeY2r{Y;(+%-oGUj5L@mVd`-*4s z*=#ntgVw=eRTmo}814bUv9AX;^o2M7=$sEa@DAUm#0eNElR>UeMGa@rO*t)~ZA6f7 zxl=I->wueL@`2)?2d-Q~CxFG=VDA8MosXU<(l3(ZtZ|kBz4LeJ7ocyI`e5|*n}TP^ z|8KF7AYXGQ=rB}}0Y}Bv0_1Bzc%ZL$08*X|mpFv_2SkNO!WR#qw-x*d|4;LS$V=S_ z6k}9*P%z|2UY_K0@*kFwZMbJt2-wvb73Ce|3pT-2>XqRC3Lgr)Px5+2#*hzrxzhQ7 zbyS}IE$D%w9Qexg|2yr1T5`dD-7d;)&_c+;{sd{a_^l007OX#fls@Gj9Dw!*HkYrF`h))36%?0-lpm!AQK%sa0 zm;FP%_03JW6*aFHJM28D!r1$#z$2N>IW`bYT!!JsDB zn2;t6|CB#DU-I&kr?WYU9{nroVR4lW*}qp)@@*IaUx574#|7{n>|bm>y{1ZR!+odu z2GjID8JG$7RKs5LfY<Y!n0XkfC{|ig}gl7spn7zf8`eMRiv1_kfI35H%oBo z0{@hu6BxZ)0y$(r-RgizfQG#m=*?971K2KM*hof-b~}Pfr-ZzZlXA?7Ai+ioJxdbC zFe$oFq-WSaOb@P_o?*XCPh(=3JRwx9Qm#Y)S-EynDc3HWOYI5rH6h_ly)TcX=t7Ymr+=EB zbP91D>7kzXCddme0T$qE1eJ0f^0(y*o9B`f`jn%mW`xr2Mh$Y9+}}&hy9$AVIjNK@ z`5uE9qVhpJf))AbsG5)VHCpWN+iMzyU*4Yq7jr03EgtkGv_QBKGbiLlE>CHwI1eFz zDn%EHbPZNb*YD(rN_qTGJEJo8f7%&2=KG&^MplS_+RmtIg~mwmx~}#wAzvh=0ciK# z#vK|cWMIT#^1k9aXUr!C$q`Vo ziX3tHTe&VjCqe2ZG$Z6rcBfHvqN(_u3Vk^!@0WT|>DMJ6$k`$s zr{6zK&%)oNhkR^Hjb~Xzzh9@v?w_V-0fk>)e_GcpFPxMIu2lXsA?#Grqaqjj{;gaf z`yq*9yhq9j6C#QRQgnsp;)icrk?APFHlgWO<$D{<|tqWW{Vjxq5Z!^@nCVh z$W9aqwDNtxyj#k$W=rG!~VxzY6aPPY5>&={x`G7XL;F=+^$oJ%6R8Kc$_& z+N}K1ZTyjY{q&uFEnW$?oRQDp!gmI%7%5y`j+RC_yOb5rOvDW|>{%rm9;|dGmr)6F zD-qZ{@Zj46j{>@2h2tskCU5}w5{L($1l)K8u!Nw+ldw%$5=J!snOn{+;%0MsO^!9j z@OY|$4P@W@deJU0l;`4F z-%m*~KWY$lrGq;+II{EA3Mc(GRocA0Cl)u~KQ*1KW3}Qyd)&jqxkjWe)k;!7dm;;K z6R+1H(U4mntmb2Pb34k%Zb>)$n4vrW7kh64SJU?XkMA>drcQMtMB$)PQ7TD@Hi}YF z8YI!6R5TA{h*PEzGTtJ@HDt~lLZ)QS9Fik5A+zg-|5|JBbIv})?&5QQ-|zqX`+e8z z)!D80e)hB0v*zJh&w_XCUMpAv?5iw&lCx#Y4=Fcd_{^|nOONfD`n-EX@xJC&-)5cB z?=;HuV%66>yPT41U%rX1Y1-gpl+w=LQhavyJ8!e)qNl|ZBg9&Ud~D-6rzJal+fCqC z?QJfVY-Q`EKhZ%$e@Z$WK5=$skJ|NT-~K3g?7OfN#%N2X1AE2MhEMy2d`sW2;mwyO zj8nCPw^xytsyvYXOyI>6OH_5ruDZ3gNQ@IylfT^bbD%VXxzcL8Srbov*jS z7+f+<`ZEQeb|j>{e6?@VPC@D7ts6^ucP=Ni4!PLsV{FjQ>e^y?UaIjxXLGbuZUzx~ zxt1u?r@`FP1bPn+x+77iEs^ z7C9}VO=p{!FK-u4{vnELE|I5)r790pwz)I2`oZ*2wiQF88^*{0!*5z$X8F;*UJH!I zsp}m3(kEjQw4yf`#ZCH!_qUTUPDS4NK6r3?h<+jzV7t6_DP05?sSH z5GnyF_Y)?B(1A>#nkpvtXkf?4(qc2acENpxXmOmfd7O}D+zQvn|1>`cI0M)+q70wUU;3ke`-VclVj@y4{jPB ze12|-hmOcH*R5wY zz&x%1d|@6d?!c0rs32_98UZ~3P!MICb5t`?){?=Z#x@j1=Fmc<$nv?B!}Jr=Cv+a% zW6xR3E*#OkXM?5`zR~i1TgX+^Z;Ndo+aI5IvBQ`n6)OZ6?~cM4q+x7qpxJ<9?qjRG zU&nr0@JFSc?cMIZFUJUYhW6pZ?iZgcI;SWvYCKT=t_z&wL$r76iS~|OAG(OVH$K{OAr+t*QoJ8b?9YfJOj0Pl=B<( z_OW1~z{+1JwDJe-6;rJIv4DX;h6ub*Nev4Z$Ha?Mfr+q)u;g(t0zAx-dAPKfRk?nf zW=vuFdutsjPzq4wx%r!_X>*%)9y$KglWzUyCHr8E?__;g9&gM2#y@?EW8wAkuiIt= zRW+y-eViH(B%i~XPHTxaZw<5O3mti>)SV_HsT-Z12UV&a|LG8V6V*J zfb*ylA7W}H94zvUj03ky0~@K>5T1=e=9*HY`0S?GyUYu?S=YZu+8(mZI$k*B9_DZZ z18o{5Jyxxoy*9dVg9R_-(cnMJ0x$+?JRK`P<=ekf8qg|mv(EOG>HD(|POimX&HrLM zI?t`V{NblkMIA6#<$?Nun+qRth&rG+XLv&6_^tNhu1}ZnLo^Qj;tLE=J(00PWfYNW` z!8z00VwXb&3k2?VC;BZtyWvsa)Dj(+p^QdU!l`MpeAAVNZNecAg&tGg&#V+<3?p)5 z#maA7-mLQXr#-)xoNk+8zoy6E-#shwsvx5`ku3AEFRhAT5kz`)=BhkU840z1e3K|6 ze-LFPjg3WcXvzrJs(0zrPpt1hUq-+Ufz-wlUW{idlHGmR1ayO&UkqgCH2G3-*WO`q ziS3#T5sNP8&wn!9?coE@zhm01Kd}QS2T;mJL{8}CGiH0t&WdUi->v{>wO5jLWm(DQ zh(B*;>FsG#vsb6T&r1HK5xl}b_CHv$I%eqWf#un$igZxrf!fDd)3_|vvp}??pMGfc zqjnaEI3Htxk1EXDHApe=`G>PW<^u;1TXZL!;Eets#&iPQ zDb)A;Cba`<8pd?9P~6}T6T6O8a-MycH7HANN&3-_=jB5S>z@R9x93CkuGx()(O=*7*qE|yS-=czMm8A zT58bGwkR0%KyoQ^UriX&;aZleB0t3(g+bVRPq zAL8LOcn}TlM}vFN;9Y5OV+}a0cSMt|98ZW_(a@81Q%PRfo{-z|YIu$YK9D|}2A@uY zXVKu)dLheS$Um8eo?0)c^u$0*IUOLMF*JOFX>d}FS1lbpY3K*h;7&BS9Sv?vgLk39 z&1i5_8r*~i??8jMr@_Ih0d#8V)0zfvNrS_>1e_8d*f!)NSRK!!!O3lQH9pH}=$F#q z@Tm@}LB0Q@pBC(Kc+RIg6ANOuab?9bCZrNh=K z6Gn4PIQ81ww5tVqf>bas=Lt@M{qILSW1b(_1utY`;7ov&DdtHSWo#*1tSi2hOpim&@Vr&Up0@em_7A}x# zi3K)9@z(+18rUHfm(|1sng{KKbg-umg)rY@I6 z%k=fUH<0y3@jk@v)yV~y(^~ahS6ln4+b43oqj*0&aL{?s{BL$ zIB>_dTX6H&*TcOhY??^+Q;P3HwXUp>UNUKe-VxjDIaBL|_1R6Dk@Zo*f4F~Lg-fS<4&9y%{oa;cQmOiVi2fF_nG%Z?jV#|Q2EA7vc?VEys@Pem1e|TOA|hhIkRnq>iaR~JBnWS+m$}zepm15*Cu>XeIMEJe0ohi^XSblT3x3K zEXi@7BK(-l3%*}Z#Y&1N9;&U}S74+1eQ;!q$a8jjlac#xHFw(Y>!SL8B+K{H-i;`49=%MqXL8A@BLSS6t6zG`Fd`H`4O9>h~e{>%QO6|NC&dS#F>4 z`!13Fh2s0jaktqZTQOIx@UtA0Pi z;K0JlB`h1FZo}E^++)436>F^zspx)WOZ)EpyBMPt95DfReR`UKuN3R(zUFzK@XQ|* zx|T2NaO)^UD)ecaq7R{PJdw9l@tfv_rf5i?E zqYsXKaVEyl0?hFb$t=q}emC|b?RVQFT6DbT`8k^v31Uc*^}Nr5+TG{s%J;u2c=o5n z8)KYlRhz8a5EYVDl?U1r-Y)LWhO$(<3Z70i5KEk4qafCMF)v9>zX< z=U1~<$oiCNafwqAKPIYE`NQg-TW)ka{TW-WNQ-%4O>Wvhes*T>js>riwx)wSB45G4 zfZOOeb>of1W?R3QOx@u%uzip0sjV|FU&$OW^LC1Rr#@$m6#1^k1Lb@8g=Xoh`A%>D z$u7exD`*_(lYZX*Qy-j%lQXBr>^~{;EXT7v_v}{bnW=`ePl!?;!dB~lq>aIOHGjX2 zis|>k{zzqytNU6F2KVZc>9FXkWLv-Yb>EH(?`-ljNh^DOpiPgQF@uVRh3&WNzI<>` z3CvhjSJil+_3>37tkC|P^7=U49*zazMY}#uj3HX%GcDropgV5lS%qo7!--NR*DZb+ ze%t-hf>)N!^uC_V#TaYJGU~l7D<*+5Qp5HfexFP*WX@}=A{YA4=cSJlbfAM2;Td<45ATM^uc6WXFa7mp` zd64Urgyuum4XxSF?;9hDeR(})qGWZuo#m7?QRRX5nIElsz73{{sy#MU8@~;lJ>u#8 zbD3wlE;h;4m$cQN_Y*dLvyuAAP`_4A4jqo)NIJMLynOzi)(I&CUvDhU``dkuA>SFR zd0;3u^n1KC-+H;HuIZB6B{c9*>|vh=)1*qW8121R zc>(!>Z2QigySSNuexC`9)gwv1Q+6MD`t-8%z>gQA13q<8lzlZGs6F_fYm0Jj z#NuPOiypeZo;daT(MPY1F$Ots$MkB`e~j!r&2;2}y*sxae0)m8_l#Tba_8QO!NUgy zRdTbkVUi;U@Bhm~_x}~^;<}Y!_r4z3=NAc!zQH(hXO8Ac8en4|x5tx$~>d1Ebi5-4&f1d|+2*kX4ZW+)VFa#O^Za|Nq zgi{D^6HMd;a&V3a=;Ie_ebJI=dBYV5ts-_VyNd0`He^3zrGqfDS%E07=p2(FC`Y5o z2@F7g?mjW14{C>#6E95q>~I$Bibg9sSrkI3aya4CaDL@JF?2JfPivg0Ul=B-e}cjb zZ#=xP-wlsAr(%ptQ2a4WdhHtuFRbzKLVq_rLOvsWvMjub!s#$QLmLk-k!*zQXxJei#jGHR;wfw8j8wL%)s zP;=FQgw*aUq}+!?lutX{jg&{s7tV(1sjwhVFbPEud3p}}rSK$UaQHd=hLFz&w;;na zI%|l+8`gMw2K-uh0rK#OLki}24U7PAT?@phJ(Jn}AW*gP;{UthskWbmW7bTA>FM9N ze15+hp6dO2Wi>gOFg!n%@Dh=rDF5Kzo!s6PA^-n<_soVWmEn-(O0EDs)RT6cf%vv@8)=fEN}b1K;g;k2+3fT zajy?GJmTz&0VX7gW!95q;B&lk@JNTEvqtrWM9Mct-*;A5qJ2M%!+cNt}G~s#u zT6kk{$OnFd(zBl}-knT8>A1%zJg>&n)AM)3Q|;$Nqw7(4o{fj+@k`-B;ednR5cf`6 zJc;8`OAs?!OzJYCnH8X>0}zPiB7yB?R~h zMgPdhX>Pw89x-k*!!MAGS2cey1%@XZCz3EWNA?fK1U5CrJbL~A-_!Ib=KpzMzg>2I zKvmcO=k)wlwfq$p0V{cB;PibVFBgQ7$O{E43^=e>Ce1}qRiL*N*xt$>I>h37K#Kyz>?Rz_kdej^z6~D0AZM9K&35|#M+xK=7^Km`7 zJ($m1>e2j4b{Cc`)k4uf@^&KbchggT7=vUC&t$;z8P~XcvA-K0A)mh7US48t6$&r5 z@$km|Zg@obY=MIfQsge>9Yx`dYdpNMzZ;%vc{zJ|7Yc7|>fgkaY@+%%G9??S{tZmY2C9EOQ?j1w|C1^Cla1oT#@I~+flM&S zruc_3hbj33m;p+DedClybBF(NrRiy;HES< zso$uUZp~=u4QTMDG&s49rp8~NhF*^b*P+3MG`Kbm4n~{Msl|uXI8(!6-fN;KngL}# z5Zi#r)$w&Scp(j5K!dNO!I#kB^Jwt7H28EHoO)hBRxhBuQ)uYZY49W(94L-Kr=l%8ih;I5E=L0N6+$`QKx4s%BL-Rv7^hxKs#OV2 zJ``&eYUKj`g+#4Tpu>>MmjH`_p?q&}1_7)(fV27{J_hbol=4DVZZ#<5RdVY&^(-mt zKfB)m@*cGG`&kK*;h18)%gIb+W+uw~q3FGQ{`kN1e~=!E^_u`3CJ$^3ROfU5JO2lV zS%5h^vY`Yi^lR%k|MvW!2{Q`gVDOGP$yUi$CI1%57A5~?$z~;gk)%k;ze%!5$-hyu zQOUnSvO&qeUb0@v|EJ_nS^Z**1k6A%pQQSSfmsUG9{^@2RKGvyZK-}g(92T&zF=95&vH<;y6{X@WflIkA}=95&vmzT2N6ZG2D_a30PruqkgUYhE62eTxq z-wn(sss4drK1uZt0JA5m-xc)kRKJUhvcG?SWq-eZ%KpA!c18Uj$CdrgV3tLF-v`XD zsQ%tyRz>wYIVt;l^-}it1hXmyy*85zP9Z9lhjo&5iuVF$4{#bs>HS*CS|xv>q)^Gf zMzTi9zgn_d$-hdnO37a!DWHbu=%^CjN(pI(3EE^3FuQ}LX$>`aDmbz|2#fvoXf%F?`@C`Kh zdK&ys8hjlMUPyzlp}|+v;Hzlx0ven;|D>i*J`H^y4gLoWzMKYMN`q79z0~+DrlDU% zgXhxV3u*8LH28cPJckCS&d;gwC#MxkquL zYpm-D?*D_<|BJO_!3}`Hf*igZU&3|bN_bAZLQXKp8`ub#!O77zzqNW1R+JwXjrJAe&-Gm{rKi zW&P6%!@oI`pZbzmEdUGnT0{<-*qinl?Yj2k&HSA4r+P-;Bv8fq<&wuA>gL~>v25|4 zxifPgz9ZM874MHVGp^^~onm*-eeDtNq}yOb4xQqC>5S*=Hg;>%D(yuauCp)Zx$67< zO*(RVZTj}YKx@f9Lwj?weO7#5_U+Kf=i*Zq9oG6>(5W6lwiAl?NBd>Y`da#Z?fkSM zYk#b}LDnC|`vc7bEBJ@P?gl)MHV)7whOLIGbULraZ3Y{AM3GBw>s}3LcIm4>eDF)GYzS?#sV>`35^4wS50Ar}cwc`ubIY*60;_CxQl}7*I&! z%(QXwanpcprCv*`os(a9buhyi4P<+k9&;-CVBTE!BNu1Q7qxJ(nEIFV)h>~RH7+~e zPhMGSMJeNIJdoXhhgyY$(7D7U@?0V?LTx~AyX8(J=MohvkFrAzs5~Gc(7|inQO$5u zq2gE~MLyR6Nf&18KLR36@5V2(`h+nalk#b89I$WvormLnD^mR*|1sHoO^@qIHzIqr zX!zEo=SE)r?Lx#Jrn9js4K zxmKM8!eua#VQ}*c&I!1gfi^%Q<0F%!CPpO3#E-*tvHsF}znVd#dza)pzO4<7N@khh zM?1}`b#hd*gks0H@%*yxlSwHi=hzg~JDi4$v7x3I;uq=Ea@5cCW zk&S7zi{7J&qxQFta=YkDF1@uXn_cjacG0K)v|aQ$zi1cT=&u*sOVfKM#c%iFoacXO zi7|r7^3l9z^>L#+tL9Z{Ke@Z-W|j3Ad#4?(WpSPC7t7N`jR&e9U)%eK zz%-Fci2Grr;C>i;THE;!{#m?VykCP*EVl+{_!%4!7kF2Qq^pLzLiEICS$*GkEdzIJ z)SF~q&zf9URe5?4bA;!`lD_x5SNXASu@vov(dixQS{}DIT$XvxQgX)_^MUgH{o0A|(s;!p_?*xmvS@Zq(glGPI>7hNSCsb|fN zjt{Dwb$i#G+173+QbycffH9m=+%W7!+KZA%ZcA6o7SayOf>s^ydpvAmQO9uuW=c;T zo1@=KD_tRjDi3rHJN}JbCCt;@XrfKe{RV84vuUJYGMWM@bVP|_tU0h?W&_UKn`81@ zq+uyzpo4UV3^w>bH8KTFbva`1hpa>C`Jcw}H}cxswWOS(H!A6OVejMH6C9p(99VTV zbUelwMdpp&(6fITJ0-9;PFZp_y2aHGP8oGSbeh&)_+$B`rL9U93|G`&H6H)d>+gaW zcbd%}ygSwFWj~jZthN}#g3N1=vMX6@YxV6$uUK{X=KHhtT7w7ayPg%DYa6_Ez>Dc2 zVq89^GE(IM>aT$D{`htr2`JSU%Nkl?)~Hbl3pu1pB&IMdcxYLeZPk6 zx0NO>YB%P1rTf=)Jz9HoZF%(IoQ$NN%O7R`Xy$&Z_QHvh#XILs9u%LAf5|c&|JNI_ zSHG`M9|@1no!o8s=^t8mrpaAD*G}Z@8Y(UKd=sD)RQk2^}*x8hi^jeN#SR+_7Oz>U5{YEUwb2-fyyM@OpD$ zJCoZntEE9N{i15uK7E9D>_u8$2Y4b3~ zBv{&kiw)d)dH?A-4ZfLw`_4{%lKv>}kIx6P(mA(h_i-rbJJKqLAOpWlOp4*O_W$d- zRon{QV%;L3N3U%0znGWD3kA0U*nkuL7`GCf<%ehd139vr03xcVO}7Ck*$B{n z#(@?A;7tID9C#PN&z%p526q$icOZplz+JLXT5=KYIh}}m=iu)%= zhQ&=3_fHs|5T6DbA`!Y-qicWfYmYA;p4DMY+MUTaBh2Q#Z*6q0w_|LYe#mqS5WFIv zZ<+11sQhN@8XR%B#ioPp_G65{$$Sp}Y+{xCsUqQ3>ft__y+*BO)aH3$@U9MP(# zcmDV(orm|!Th+uX3Tx4SU{!Rm{;AqePCpLcELi^HwYC36cW~>TY$VI(K5L~y$7vF1m6umvEhoctDVj|5 zMMcY4*bG`5Y#tetvQB2S{uNtXiW`RoIJjj-B3YX(Z6%ng7s1&be3m_UWBzM>?m4Qg zx1!sgJ7YRH?R(n2oi|M)24ak*q^$k-d<^>|x7!J;AoI*LvD=p=-E4QKz1GrNELkjR z6BPJZ0@93_kE!uMW2qJfGgtAZT@4a|)mpmVw&fd88<-+*G2$irX#)CPO0NsxCgdxk z0|o}J^P#)#EP2@}t{T1*&yIyp*ge2MN?!VI99d&B!oKzFQQfy*zBC=&k4ehcqVMDC zRM)@%9NB)^p(FU7&nsNN47^qQl%GGYx=ZHGJEakT4L4Qfgz}uVLZEL^%9eu6Zm38=j_~2Hn3x}I` z>fvv^M(cBB=!ZLs@va&VB!eQIY?c;ebkYi)nKZu3Io+i@c4CZ&*j2KT1HhtS|a z!vZ>#KC*Ox{JjuN;M8>Uq~J1oIPIXraSik$fC0?}=#;{RB@p(4z^UQHa+7*|+%?ei z07k{B@pq%4r{Yxlfg0%HLWCw9rrQ7w^bmKY;4=QO>1joSQ}xEF^oBI_u#5tyRL&uP zvQ{hMusH)WE9lhlW*Tq^;WRiIHzhuh)R>081q}}C3~*|EV4cx~!!o1^hqB3VS@{$L z0BE*Ahxp6zwgBjkU}YQ*i5xWGtpV1B2DjFL!!$6Z!A)rJ4jOPHfWbi?a7yuqWru80 z)o_^iz$xLdOtnX_G7j?uEQdm;L=VdXEW5y|;jqrD;`#s}(^iQd;$0!N3Ll8uAy}C| z#BFKt&NO%@8r+fwx1hnrG&n3Pz^Tav%Zer(mK9AnwZ6;BA(WR|->EpYzEg2(eW&8o z`Yyxu0Dqtv2Axv;bpb#wi74SZ05^lwD)d4CP}>a|e~44t4H*vGNoxBb!vz5E1O9+h z3K!zN5v-0oX~1FGbfLlf)8PGR@V+#-4Gm5VbClx=;{)p|a7uE)I@%Gz>UcX1IIQai zG&r?Al%*%6Cx^32;X)jiE#TB}YWqp$1IvmgdRSI8;jpY|!eN=vgu^nS35R*F3Fprz zUVvXFERVJq>F+3|D-yV!18~wP9eAhP@h@3AGKEvxr=oRNvE42CI~JVZ-lF^Xf^X?7M( zEUzB&^_1HeM!oJC(b>Yzn=Z^a7(KL|R&?!J;|L{FrUAIFxMa&mNmNZ4EO?_w}ClN;kdJJH06=KQ;0|^ZYz8Geq-Q zL?_=z^dK94pz|Jq1*2g)yjdAKm5n2Skew@fEBhfkELn#p>o`HFA{^OpB9Hug+z&@U zaSD3EO6h?B#SbjFUSaW3306ZRV^U-nYRTh0=)Wi4J~)b@Gz~pryaypb@dGR3z{t3h zr74lgFybZXl|0_=ig+i26b}UxmtRY7S$fKz7P z15U=|;W&CB8Hk=R{dyum@zWIi>zkGsnJo5A7?UdY1*LjI%;;#<^y>C+%Rx?r&{`dg zjZhIKuqqDf9nAmPo;cbrWlqG2b3UDMNCxE~2e#0Q9FzkV<}g`d7N^98#m1`2(L*7} zzmxB>@+->^F%cc~D{m(yZa4uCC!VAq*3TZq3#DH;Nb^pMh=_@gvg(%{IVlqORqCbV zzb%JqJE_{vpn6#vgrkV&68#jIjvzmj!x6nu{(%!}zvQrpm`O1S@nNx%WY&a<`-g=m zN2WlrRNK$)|F&GRafB>?$cZ6}D9j&JuC)5#2#^dQF0tR{jr>rq?&yW`PYdAnP8dCI zqS!YzIc!3BWODLE@qk#+h9;}_XATN^{+;?SlSkGLkP})IK^PX%AISQ#Q8;>m`JgAP zHx2|K|AqPN8yyob23F!Hrp05G=#9Mnw^zjf->EOMdM_KtkrN&iD$EaL*Gzj5e(TS~ z-hz-=qWypGfI|Y9ANKGc6=w$ggTqEgCy4unjf({BKWN92W0C<9Haa;nE>fHpA0hTQ zxgM4{m3q`wA>Y4~KaI&J&mWEt(LR5gi6i?{VI6QN63m~j@E?j3ga7@)l2Zw>yc3d> zBMEu>M~B5F#ze&@#HT=Vm3*`Nua*lbyY+O(VO+595**nxT-Y9mUMLs2a0I=`!3CY6 zC-G_ysSNx^PU(FwYf-eoW#+w1>jM$PeX&G^!4^ zNxqSBAj5!up8O>f^a(B;N4*caZn|t;N1YEs17RRHo8!Wn0(RjGzzqNu{2BZYz}B9W zTfn`kdq{V+ZkFyCT@%hA-FmjQ?pRI}-A_8Jxp#E3xJPxyaM$U~(s9umt20=~PKU>7 zu2ZS?RahfDA>1gOD~uNo6%OJ$2wMriYtQ1;YKLl-Yj4rUISaItwF9(!YPZoo#ARwf z5u6k35G)pq7hGot2`qVi1a(^N1tn~b;11^n|0w4Ye>Z;}XE}e0)+GK-?kIjgeiN=4 z-cz26o)@Q5c%VJGZxI(;!8x^L9I1oajD@YI(^q0-6r-KR zP^fh!x2TFt2ucF*F~D+v!e8mc2BR!%_}Jm3DOaVhckC_<=l)R`b*jkPi zy%=K&DVyp}Z;xZM=GL`2nxDP)NoxDr2UV$Z+0=NT^#bcXZJUEV)5Hk06PS39iJhX8 zjA>Xe+Z$Hd4~Crw1Cu(-Hhm?w-mqN5KP{|NEo*3~WW}&%T-er|gFn~;vGJvIy;;kd z$L0?=$?3Fp)xfzJqd6(lg>lcu{x$fc@iB*NuQe_Ab+w#)Qo6+bA*1^6g1Snxr|%Rp zsqsMjn>%L5-~8#jjFM4qsoiB{fbRC`gnuY2m_J;RT|7)IxrcXuzk0XCs4%Kcw>>Qw zt0^)q&QI;O-o(77d*DLj3nm3aF~$ROU@*s`(AX#L^f=oil3~qb+It-Rn8SbYc*vpH z$wTYRM(Z5Sk*A9q543mh7WUR0t?OivdJ4eu*;1|6n)htkHsH>%VbMUcpT9E<4E?FxZ`$AJ$Qf%~E6$ls}^Dh6zvKnKfL3y1d)$KbXSr+~R%YA*U7kZnG} zck258JLKP;^bnOgKhj?i?SI>9D1Y~2U<^V2u1mquH`7ZG=L~;gvE?1+`4MA$m%j_$ zRkF!)-XvS7hjBS}L0a8C!7E{Y zBGbJ6?O;%5PRqYL{n=|?q^&bCZ2FBPXf9L4=pfd2$_QQtW!!8d#bzr+}vk}In*@>+a z?9)=M2b~Nku{(di4#N&VUm2jt^Gg2hF|lV)&Y1h9bNJ>SkK8cEU~+&}V}ix+d=a#I zcYgI-({MiLeN2_%{kUs43XgyDDexb~-zyJajR$IDkF~a(3(Gh4UaH;MZ99dAO~yQyC5g21G*^UhoExKJ3 zaHM95ZlvFVJ6A@#Yu*2P*(D}{AD&rvXu@AR6+9|?S!vt)TYkGz+@kgN8I>zAhC5l8 zzFygT{{C+Mr)lR(+nsvDseE+KDSlsW5BGJkH&d6l9idA}S5+RU-8eGGrI<+94TRp; zW1v&c6L(Gw%L13j_&x1wBI2(rJXF>G8RoZTd&+bnGsnc8nV%);*>!G@SQoaa)oSjK z!&L=&FJA9RyBLEKwmxIU)0mN;huxj_Z7y6TPvm(FT53L$GwjUcn>nqWFU=~wXm#*# z^61yyXTp^Ia%OaPEM`+wxBhG@({0`rwu?&2HpfNsWpYZI^bBOJc(xk*v}S!nx?i*q z=unfBlt25s)~<||95k~t%RPT&XvW>?pI_8A%@6&4voNpd?p-fM|4^yQ1N9Hx2CcgD z)BOXO(1Dw-)cOa)PAw02486Xf+fVlom6o2v^ZPiCvs*ArFnC9l7-NK@dVyhkGxJBa z9@xpRUy%RJ<k%x-I%cGAJ^s@<45-yVo#1<$ioAZ9mTc(r7;p zCOr?GB_R*vs}EGhRl^Q}gE=p$w`bj9u*dHAHx|R9Ny(?SADKBt*h8DCH}7(v9NUU9 zPLQ3*!l_S86N~SLyb1|F`s(|ksI7+#CL|k;30`LX*^WD`yO9LR4%?kdRURmxPMsOt zfW}>kVWUq-<^9Z1H_MvBKYQ??p&;Fd249kvBw|w zTF&*&_qqQDV~|x7Tj*UAyx*#UrGIs~tF?Z?;L4JOSsttSeF_r}26V+^qtKqDUM^n?4r7z`1357u16#bEIuH9Arp z5tcj-Kw!s4QfB>Tur_N!=!umRVz43DDF~xJQmySmZE=l_O)}AD>>=6=e=RJ6*Ix5j zgO|}Pqea%FH_sZhzGLw2#0tP0j(bzFSS%XsH4!@>PV%v^5r{KrAjh=A33DG%E-pul z&0?BMJcNe82iCr0<6>e*M~f#!#++OO)!@Q;i2|R~@J4^dr)UIG6GPoJ%>uYil7HC&DiGG;jf zEW7BXJ|)e}i>@_qIc3may_L0TXE;-|X=i~(^+5EyyH37Ons#pe zhi`{~(l0BL_U|7ZUomIjk3Dme>RHk}kF|aEUHi3&ZofIFC->6EiJo>!y_M!R^>W4) zFZb*MZc<7+_blyh;G7PuHPDFyT6H>*_&WV#vtoYy?VH2z_t|^h#^l21fO?aDy8J(9 zIig8M+hVmjP6!cRD!i&3061}D9Hw3e_aorO@Z+sUl|Zjh6#AW z@8BO?oAQW_iH{j4wzajkaj>?tv4it`9{BSGyA7bkM}U8+`9Eds;by&Fg}voHzx#B- zJ#CEfgX}}3%`(hSj~hH~?8Y|jvDmt?mr|Es^a^*uW4}t~m^|TYE5=KgRe7NH_G+Z> zej@)@5Orie8w+=9-7&WlPa6Afvw6QeVS8NeGUs$+bsBIocUnhVuP%x0?q^^ABz_y9 zdkl1`*9(>cUFw1-Gq!ATexMhTKQnCk(qpOLt}Xl$GVWDNy{rxQ5=y}JnOj?joN0Hy zW0wU#W9@TqnND|jNH;UESY z4^mz+M`>i^Oc~ky58wZnj3xRMBJUOFhlzGgzHT?HGg&%JuzzRW4%SoXWb3ZY2`~D! z0l#P+xrH5$05Ic3PjY`3w*A8hK-qg~ z0z-O1X%ZO5wsR^dM-I(i0X@Do%cjx*<~CLyew_%jjXg zlj;>p;X>RE`~jzi52V2d(BQ5#xC;&5p9b$ogZHK2vUG;&(~N@S#Q!Lrsd|r8ybldM zRWFfBPllzIK2&{6S$tsmr{YvTB;SOwRlo-D!si1{!lI|PNgTez0~+qaVkBzouo!j z#i{h<_KX@m6{pg}rWZIwkE4I#tW>t7N8n^#KyS%zNQoZidwb$rH5?8hfm6aEe`^G* ze^C zTtI{KX>gbpz^R2x&id4FayFoZ!*<&Wu~Fs&adNn!M&F5so>&4_=VL)bPfT6a>CI^9 z#WXmW1w*G6&(<`!5e?po25(7&!yz1SYT=T@KsB7Me}Q#X6CYS7HQ_LCRB;Fx!ylFS zK%fQu(STFi4OzPl%QBUZ42NZzT92qWwO+_@SjMUKi;7e07Zs=0BPvdUGw81~mGGy6GHyjte-^pRQxClOuE!W^21>?-e8pO8BY#Vpc4xino*(t!1KB zzz$@eVoI0>U_BsO_ZiUcF9Ev!*}yh`Ah67D4(#%O0ap3Z>>k|#D4Wq6g894~S~*b6 z=|vnVn9Y9yvw3eVxV8Z2^HpFrpU$SP3{(MI1Lk18A(Z{|vw8_yu_yu-{h^J53b0}j ztp(@!Ho$QB7hp5L0_ZhVvdh@T>_QNxgq;YuQ|9igbp{DY ztx$ot00(OgVu1*(Hq`T_V7;M?Ukp|psCNU{P;LhJf9w1|(J;Vu!>wM%FLZ569tYn% z=zU>(5;*t$ob0XJ^x_VSXAl1NZttN#CYfg5`ZBoGqx&Ay%U>8_jvJF z{Z4x*+i#dTZocN=Xi1SmRy7`IZQenWvK+}uu~(2vYp=j9BPwfiM$=!BmEneW)h49{ zS^yKIcZ#G<$EpddkacS>e8@(lnb(HorT=y9ZPa0mv4)g2^K3^K^ASIerZ366W+U|w zPZ-tg3pV_0$I`L^t1@;Tm>R3dS5+QJ)&t*1eSmvfBMIFUV4MFDi*9Y12Y6|-MBc`r zt){Ff8!#BQcGfnw)^=zn!oxgxk`Be^N9^*9K{eRTRTp~Z%fVudWKJWv_^wlF9a=3Av?HIk-sI~!X{XP1Q4Gow$|cqkFj z-zWl4d(0B-rht<>BjnpDy+9udw}Ifb&>)VrKs|flgXTDKpG7O2xHr%ok4nFf4!^?k z$uwjDD_1C@0?g)fQO>myO&+F*=cc;m-S|QP&x-&ifi1f7#xtG_dZD%F3lHy0wYM ze&}>>vPHXz>4MPu$=03r0=C3nkQxuPkLP>DY6r0wu%6fpxCi!vfNd41yRhcU+^6d* z-@P}Rws8JZ&)pF=OSV})iSy%KWZxOm)o>|D|6?i*LFuEQ86MES&O%7$$)nrt(1N~?QG(`@{o_5X|q z`#@X5;Bbz1?^u4t=!bTj z)V7Y3rd}PXY&DWvf41Cm{dD+**_BP%(ffl9j)A>n*?r{&hXkxW{o8)RdLHh7;hsUS za+^ug`HL2;@Guw=Y#aN+zd$aZ8V^+F3>%D^LHVvra!@W^Zw540v7vgxc*Cstp*X!J_zxe*8hEogb z#N12!4;kF=pU$MT9b49wEUfL?IcaUTmAZcyU$nv)R{C3A= zCz_>n%4DzI-MsZHALns#`qxqs73}ZTcp%xm3|lzCwqp#@cD!O@skAwZ%BKeX4dPr= zXZ*+48AsPCa`hkd`?iFX6yD+lOtgER6gD79Eje44e89}}Mv2{ue&GcCgOo9@=G@0xI<%AlH4BB{fg1O(0A zecbGL=h1l9kbRiA8Rvtd9o^!MPk4WJN5YM@W4f=LFtr25cnX+6=NvI-WZOQ@^IYaE zcD-eA(z*Er*MLK9*KH}Wb*j?SKfjbRwo&DQ`bg)EKfZ?qD<{2DlSu$cT$XB4Yw9frow7Z`ZZBZ{o&%j%RxO zZLS~w`C}K|71v8_^TPb+?e~{B0=sMAJ#=OV-|`;}ZPjjR{|cMhB>s7+ zzDbvH^`f0C%dHer{HT%f|gLaw3>+phL-XU;#kWyr~(Mfu?T z@l+IF412Us%VX@0s(ZK6I#zedSaiX`Li_wV@9u|meAkY)3t6^rid-%=9;h52cz7ic z$rVS+WeRm#=&VigfkvZDE=Qotu5Q~=1i~|5z~zfUkr6;a-!BYy@?5dF!{nUweBGJd z#-2!>p6x-=OD$Ss@#V6&;nyuG6|1!CJwUrN0L2+xh63!S@q3;QK4IVx>=HNS1k;o$ zd^zHwQ0Gqa_=P{(HdVAcYCKS$y*odt18jF9iFW5P6I)8#?!bjDpsfSOECwLmm9%vj zV(^X!RCZ9)8Xq|U*{tNkK9X%Q9aXAJHEQzWPmubw{W?03w!fL1R3~cg0qH|!2Z8juNs`^ zZvcDt#yZ!*8T}7nU)})BnZ?@G0-oR$--Is(yYkiCP;mR5Soay2<6?qBKHXV>J}lX3 z01k`pJiubsT;Xn};!HpRTm4i(6)Qkn#Fm{5XwQOY1IDvdPX}CLDxVMdz|wR=pfj6# zMj(hqoDzs&Q_l&g&i@tm|0S$MRw&Dxg|lo}VivIM$f{>bnU%~kW-;@pR|)=wTmBN6 z7`jPtoO=<1o*8dtSkwHKoag-~|}3S>Y|*VV(OR$wwvg!%Q}2S7A(} zi?Yd-)J3UuaGP?adaB-!!`BLy0KM6zPja?wnf9PX#PFG6%a$J7GxhnvhT?r3!@8*_ zAI@#redGAp44vV9CcgbR&GC)?cYMSWTPN%GgR+^xp5LO5SLVc;aDl=F?3IZ7+BnS2 zu*@(ee`sc?l0PIf1o}szZ{VF(y39dXC)fmoTEoWO6Ych%z59Mnv}>tBKii^UjNytX zQA)g;Fr>q^KD(UtYm!VtGC(^bmVfta_WvX0JpVoW|Df^$2jlr`_WzHe@BUx0|8FYK zvHyPi|2yP4rmp`F3KwuNH`Vq3U(4V9_v`-?b0-*2b^ZU%@_4H2|69uQL0$j9RQ_GG zebSvF6(OG=ZL%tHyi>Rm=<=X?X^9 zcwvkf`MWjv^~}g^=RyPv&AoP=omGP|MDm!ez+yhGzJB4mVhmHyf88OuwMEwfe4iEK z0W-d03?ZDV02lF1(#l{;(v`WFgG{t4_fPOSkurQKqjR_8`wCa}Yu_Sg8=`{gq{aiy zFY2FmCf8~TPSAMU-uaD>N-k~nfs+DGB56H3yqJBuU$t<-;zLiqwZdCc%7ar*>8|HZCeI1VY1@5a z@)V4*0C0e=z)D!#;=T85jyhhJOmDC-hpT|cko#+EY>6)F#^JkYpr zp7o8MXiS?zj%oc_n2Q#Ty-aq?mkcKDn3fHKf?3OCp@A*j-cA?~4%Nn{#>9h;h=(~c zMP(ivyY?D!mO19)#O*vBlxd2L_EUy+xxZxHyd{Tv)wT3Gh%pwDYgkpW*4N4%e$?0{ zJ^a&R|Mb5mU+UzUDxF;N-Dh-+MaUm@aF$54VfCs!kc{8D3{QYE){%CT>ww+l+SzR^ zByk1?8zUdJ|KVLV`sM%<2cW{`Hf#dJ+HQK7$81yk5(z&;G+_QJ zuw+9?7b};I&%XQid^BqA{JtX&g0oj2$#iLG=^1cipKA|?nDFQ(tA}-rFZbS(7p=9) zC)cp`!&8xO6=VK-RUW7}U!i@$cH zt(di-d9!!v<(?R0H!(QG^0u`AS&2)sPRDU=Z^zf2asNTBE8M! zHZMS&{u7(aNAkv2gLp`sd=lUj%BCXUyaq#$+?=py6M78pE1A_FW88xTz*%$+2t1RN z=o(bBwkpzm?t?eBI+K@O@wd%y;kdTxhWcs=qC)bi@<3}g;)*M1%|;SWuCrP-w$2Iz zr8&dG0uy4`CTcpu0-MFdrK{#YIJz*1V^ey2xlKLH9!ma2Y1R1K2Q_*7(lN*|_v1s1 z(VdiU#p2-hLoR0?*d9>UZdk+d+P`NkZ1-rHR>P{%ckIrs-(xKSe28}OjVcdRSH`bs z+WqJ23LN*-))iuF#tgr(HDSQ!U#u&5X3^|{uk_BROsI2vdVB-Mc!c5&3>Q9d=x%z| zWmHDH9CQ3IY+PLvWDfe5BUHN`otK#R2NjfJe>;RGi^g{H$ghT z80_kcxJ7I!nCp5ovl%5=9>0<&CeH$hfyMnqu$wN?jRracV2@oF?&XVhdAih&`5l2%o?%4f0C7(GwQiWCRdD zy5KQ7IW2y4^h7bV5El!ExJ3UemnZ3W!Joi%bsHr|dm!zhw@_7aVy&4l0^~xF?KDhz$elpm7OlDbRe5YPpJ6#Q)do2@y&^ zoOmkYFDp;7r%WE1U$tDx;*ac}z4ubGR|4}Ro(KT_Qp=STA@Xt+_aDh2KUYF8hb;Zc zA%{$nPi{Bn4keygnFJ@i7U&7(h$8^>+Xejos$ChC_8?Xvuj1UKA_)5Sjj)$xiW9WP za(=#^Za=--tGt$ht_i6eHHh`KP-68S8=#_1X7mZ4-<55|8C`Cbg3 zKVwg?4AINwi&V(>YxRjR1R={W3`cCik1W4rPt|sTJTM?T7=m4peF&d;7aVy>d)IJ$ z5QzZd2db&LK=X%@@sog(8nT~PhF;0#iTLl9=Nu7L;#Y$_5tR2oA**IEO?qD3D zBM-=6X9zF(>q+Q$_H)D`0BOVFKfv+8pC7Qb85fh12K`Im4{}Uk8_SXR44nTjp`89# zJ^K&m`HtX(KkpaM_p6@nSIp_*d3*`7DA3rcd~b9rpU~6Ko34uh;@JMO*$G&w@eVQbvVeFw9)3YiwO#V@SngN>) z7E|1H2;LlrStt}IW-Xb(vpLtlPxc==k?rp1vxAnh`nwO@VK9uMOEoBBuPFb>8WgzN}>j%PRbp{*g2Fgr>55#*z zo6xSI_?RbsaYF`dC|#2y!oeKDDj+OACN?(G$|ELm46puU< zi~$odgo9}qNc@X%@_)2Js0j}Rw8JR$GCnZ<11PwR4^%Ut;xc*|uD=HQ;VL+l-cJMl z2!K&>D!s1;dKecfPNg5JfgWO1Tt*MOU>^=DJ(Sm51HHQnPNg40Lr=wJ^f3Kl z*uW{}Bc#=YI|1AaQmfEI+!Mjd&<0UGGr0*s1N>0N2)HR0_5t&0YFxU|%tg3I{BbcSgP zoKiaI0pR~*?@Qof`rgLx+@{%@Y9tksktj)vLI^iSS&OoVi8fj!QBllTL&);AhU{C& zzJ-t_iV%uqWZ$!9_dn;{JI$Rt-M;d^@BjV(K7WU1=6TM!&vVay&U2pgJXPU^0PhY{ zGt$E;iGbKD@YMQJgFZ~(5hd5;%Llj)G`#9PVg0(%@KiZt?-+P``t~g8>3CIoSPt!~ zNdJ+6SEYyV1KSD+^n77o0HP}VYk+r!sj2jII&ElpRlZ&V938Jp58tzO73m){@T&Ci zJzG_g{t*LjMW#WbqV2TwupO(y7V-zmFFpNc7W_sUUPTAKKio!xfauWiA{IPsD<&Vo;1!PEPfDqk=uy&uu>1PdK{JE5m<#FCy8^J(P^ z&e9-g;Z0cZaM}k!D?QGFhjj@8N>6VO8(8pbS@3IE@Ra(i7X1}0>6f$Mm$BfNvf!7n z;1{vr7qZ|}S?~*3@bg*l^H}h+S@5%1@H1KPGg$Bn7QCDVKZON9nFXK3f}g~KpU8rb zW5G{g!J|D>740^bCH*)Sd^8Jw3=2Mj1s~3WAI*Xv#exrG!H2TogIVxFEciecyo?1u zoCOcp=pbnI>!B=oxaI~yEBzoAJT-@Er60hOzCR0|z7D64Z}fFI9Zz3x)A4Xk41(7C z(AUZI^z?Ny9Zz4E((&HZfCYHq;0j2pAQkBUX9E5I0-*n24*c^;#OZpDdfDI>yHXe} z#Gp4o-BhlWn+f*D1-J|^=g5H;=2py6lqqxs+5%ERI{$yd{~uW~NFHVec9?`J6VS!4 z`l2f;EFj~6OTkL#zu@iV7T6pddq^mHayXDL+zq#FE%blEtv{vB--+ zM{1^3p&9%-{3$=uzOfNOZHzIQ=qcjYp?ZF9HRIQnfbR{TA@gTV+<*uexSbMU{h|qY~`XPQQy)O#Q?C-5>#;+>@>A+{m{!ovg7WkO>+|2PXf32&}U#pt& zQ@2m@{IV87O%T|Yj}sBUR@L)!`BQ#m|1%=|VTNJoGy?H+sh*$npYkJ_NCKLi{=-el4r#=TswpwEj-|52;U33sY>@{HBPX6N4YQP(x$J z5CMYn%`e2yu6lmWYsODK|B~y&h6E*G!LkP>$HMX?Z>N&)06%5uXXSWi`=|WK^_mrt zh3J6~fexB4$h&zeq!zzsHRBgTKuYi#=6dvPQz_!ttorh_sTn_Yd6N9Bh=cG2K&a6B ziu!|1_57^=lpopOEeT3sjSUaTMEtC)=hyU4`87lfHa_7(W)I7@Fhb)?)9U#(`BQ$R zQJVS$B`CwjEeVQ-?UTGyOT7g6`ls?I4$NX0^P%-WGlN2XF}MRD5F7JdfZcqV$Xt{n z^cEf##0t{*1Nk`y-*rj*|ImV-%KpDEW&599Gr)#dwQazf+x})E^nRgGNeH*ZiA3(_BF;_E=F#ytO}uq7f_gA56dOlG2#h za)?uLUF@=A!{DKQiH1rcDU65b@%~U;iez&(GHq8~HQ*J?hjXMWMw+k4z%%3iz)E3N&#PyKO?Tx_Me zv)=hOT`GB!nGht^H4|z$oKVVla1G-h>oaVp_#Zo+yQ*#3#@x5R(jNIOXpV6jQsuy1 zdE)!0gJPkr-`5c)OU8tE{WvByZ9!^>3Tw%n#Ux!G;Z z73lS|S+>af>iyQWy6Ng^6p6RvQ$8|G!mP4#Mj#oi!t zx3_;cNp|hzrui6$Jm7FK+Z&mubX^mM!`J*+9ZoRyBJwy_%T1JiqfKM=I=U0Lv5Sn!@Kcn=nQXBNCW4NuQ+ z9U7h>f1^+8x7Pc2BGYK$JF?(Au;8h8(4s>>hgZEP+`7{71W6N#Xxp*SZ%e~dbOf~i z=;fx@K=!euWQ9*kj}@0z&jUUzsWHmIZJ*y>ufEvNN6||<7I^vI<65~d&(isEx`A+n zZ^7zP^?2_+rC#FmUgz)SY#QkI>wz%H$S$u?`>{n zw`bO~RmZR%oGp8^P%_x3v}mBaqmw+m+QMH_vKA=feu&0s{L^B`wp3EV^FU1 zo$iB6tsAS_$CI*jN`^o#a*YUOCn!+oASYZF^4=2I8u|ePVKKm=`kAbe;nE(XqJqML zN5ulX#Kv*jw(%0%XDwP!J3TGVu6NsgxwZ~G$=s*i6Vu=5`n^r()5=Egxw#|1|CNT~ zfV6#AH=MyZ6;#>5!2Qg`#Wx9%Ok=z289Ywnf|3;hBWO= zKwV)t7Qr^j=K&)b@*Z+u37l$~S4(TzNTzL%l9+8P9WhOLszH69x{W$I&5dx3TVvqF zvA8Gf(q)eYwh=r?_9v||54AmU7o`N|serQcQ2^|GEa9>E7v}Xi@>2%~%M7S9x)soc zql)UjBp7KJYi&4i!)!oPA3#MubDS}7Sq60e0;595wCEc=3LK&vU?Uu3{7e6t>7FMM z5m>5W5O43mT!SaseRl3@c7jLuJM7i8>&b4Ti+o>4e44+k062i-_)}v_o!72MZ(r{f zW$5|YYjMGgI?XaZTArGl-#Fy>g_WZGJHs*nQ>qM@G*G=dZgcrSt}98qFCSKOv6yOo zy0t$uBe8MkJOAd>Z3^(|7HQXUhHO+t{WZ(SJ{W!e*4PX0a_2tyb>FqkXHI0V&EZV-L2Hbq7^;=B9ef`uzKFlV(&sy%cW*BED zIfh|T-ji={{#2SbfBTt=1cMEQDML!^o(y*_+partj%lRLz5VL4VA4SLKM~*OCNPc#HK#LoB$?i4 z$A(Lq94H;-lQ3h;oDy}v*P?;iM`PD%`DFVbb*evr9AERU%9pO(>%Q{#a(DSct8P+1 ziErpky_xfpF;S~4I-0(8XHKDcoSO>_{Tk*qv2V6;{q#lw4VDdQGg;iW{kzr`52G&4 zKXT7_&Yp5TWy34(r#TnW_g?RMT_|(5Qm@zzPiU2$J53|Qw? zm(f|*3r~KmUS)keKSF;fq(qOgEkIc1-KALpBCOM!31e)-*iyWyErXr3{l zEo8%tMkn-LB0HYGHn#1@vUBryHw+E;db}oY;5U!eW_l;FUAg8`Q|#hXBVdO5@L)tFJGH@c|%lNJp$zPc3d>qVAJ6@Hi{g@GPi?9^;bcaKTJ>UTEg ziFtkG3m3ag?deXe&OH{mtltRk%qJX1+Zj%4JJ1jFuV~@5*^>K9=zf?x9JxdKVYd6u zIlN_DD)4ZeeW)tW zaxoXSF^1Qn|5QnxCptA5W8lSv4kCLn#&F;qq@&Bl<<5j3Il|B`F&j#=r@Fs)&R!f> zP;Ql6ICav?qJp#C@gY6)54+!MQ{=C6OGiDvX+2# z-NIf;&5cV2Tzz;p^m$~_z~~e}hg@IeFlnGXP4*t!5$0(lW#4!sux}j1YDcV&Uz#Pf zDJKUsU4i|70(?4RHrALF9O_Dt5|l06c);9&t4Ex}7C;0Y??H$Oh!J6geBHa$w!OEG z1!mJ8b#EHoGCy`fTZY{n<|u}7LaFhNIg0U|xINbGozk#T^vx6giBDzf@lK1zfB1NJ zW@)hT#I@4;gP-%o6B7);ex6e5!xj&J_-RDTZu4e4Ofvm$`=kZaXL2$qce4JqXrT4O z!PQ45!}?E-C);##k`9)`Y8x4?uep*iSl!;L+E-V;s$n~u5J8v~7~smBWK2whb-+}qmv@gbLHEj>t^~tQjIe4W89#Xvn$D5VMnyT|mm@6{;n|-k} zEr)%{nAg9!L7mL$vy4}sz&OXL{0(Yy?AfaR11ul4Tt94N>E1R>pDc330OgNK1LbdG z_DpUK@^^qOf8aQ^QY}TLk5YsD*5!*1L(Q8s!{jJx5| zBKhpmmDzWkfQk2~Ixl8iEW4dHV!#AiJ7v;9`8(9x`P%QdQv)Ez)%(qM+8ef0m9?^! zyx(i5f|nT&0|w+TOFSjp5tz^#<3v(p)Xg0ar#^qTIPAlK^)cJqO_hZ<`0De0#jE!} z`gB~-zt|=Ag1R1=G|+f_GEXRi`TQ(Dh}No~BXzMQ0v7q2z-P#e*U-s5+~X7g%D=IX z&xZz01mHhNj=Cd~u(g!;keCBZ*r-T&OEOp*9yMwlaAGnMIaz={@5dpva+Rz5b1%s=JyW5N8WZcBm|e7(B=(!IUHPg5>tHOhIzE1-?#Od6;?bP#rK0n6!wTz%f6 z@^3O_)QxivSMK^uzvn(MZ{yMI%;y2$FIw7855Xf_J%3=-_*_)|vG3n8*7P%mqc#1V zPd>%Nf54^d6PKK2fQJ2Z-2Rr&0*WJ+iXUNuR!}cd$1U6!+4t6a( z!*2c6VK)}pJ{+CdyiHui%A{r-dynQut5yhh_Hr*%uU)lhp!w}i-G?@?OqBB9SiAD| zgl}rPKX#T?Ap#1~-W{u?Kchd5Xy{gI*1C(%+-9YBM!a^d8-vXoGrb!S{?N*UVfhr} zsPr4k8J17?*q}Hoi zCZ=Qd@&~m0A1}pBz=d$*>STEC za>6u*jnvb3>Ki(mJLe>r+D$e|UkJ`$)8SkRLY9`4yL#56S&$o%7&yTG@gt z_AZ|5$KNfumDDR1rGn$W77f%7wtU96|F$f%2^#gaWX|M-CLy}tzh2(zw`G~950vkF z|Lw!*Bj%nPMz)_h9_+!;yJFZEaSP6KvF?cm2^KxRw)p9kWLUpnzZN-T%))ECjtLpH z6CBS`0S6_W$BQ*|G|T|j{POgZ^||`l;&`!(I90EwUYcm2C`%YGe97O+&lE%mB>X(y zcl{FmEd4b73_+rPfW8~>7w}zNBF+-0i4(;EVmEOt-%cFFHy4Y=-}PSVmFVT^W$9(; zrRk;Ul?b8*=7R715`HG%lb@&;p%(ynxaryHnd^yx#34^07uX42^3(Y){FkB-UN$e2m(EM&$$8N{8IU^?JV&0C zC*fhda$Tivfo?YNUzo0&3OpD_>&k!^LqgXP_!*Sw0$DAxIiS)z8q8E>aYGkR88jm)&B?Wt1A89zxw}Vk5u(PX#Zcmj(K5w(@k`1 zS5N017v3iqOc;%EE>nBE<tMV{M5wal7rE&++%ePx!VnzshF`ZWn>~E z3+H$(8fabTWcs-?T-V7d|3z}(zi2<3+=-KPoNaFh_O8z0wvVcttG9JR?3g0)vGVJ# z+v$6GPY9oN;UNyV8;6!R%cmp!iZ1i6MPK(@F?#G~;Pr&c+qzq?W8zbOojLHeT~mD8 zVvec%qmtMz-!=@j{O9O#VqZm&I&VxGXpJUcv}rh4zl8NeyPdFL9NVwMx+|ZHa^?+p z<)o8IaO)1P$>b&Z)Uh%TlViu$$>eJi{-K{6&)iF>GbsH?#y_jmXW@&WYG8zm61OGX`?ef z!^vb(L~?A;aO>R|r#V#?@3)sa&2O_Ku>GknlO0T#+>+`>&udWcKUax6%t?=0+El$Rg>QfaEe69h zy&S6R`uW0)FL{lKZWcT0?|66K`w;LYM&&QpJ98bUIcLx64;wPtjLaTU+xgqzf9A>L zzdo*esTlEa0XZ4NzNke5wO5Pown*QxP(BT{*uonie>|2JixY!D{=nWm6TC9qn}-3z zLIbO^*h>rqQV4Jy2Bseg++g^Qnm92~>NzS9*rkN`vxS(mP@XuvWv`ODcJa^w9_K=s zI2H6@TApo{2XdCbGj@00du!44MhYPJ1`onuSs2req>KQIgXMMj@Q99vdRc0A3&bjWiQCV2B|50wv!IV z5WbWkkpwp2(e{>t!{2Na%G0ao33b4QGj%?nJzVpA`Fm@pucl$@cVW^%{b*;% zWT?#ZSHuY3(TA8NEJJm6Ft>rp= z(TY3Y26h39AgWB6TAq%d4(3ks-m}54?$jpsiIXej>U=P1p#ACa^O>vBc<@_(9pV8s z*71N`el#TJ*UD|xxQgN6@z7x6tbx7zmCfPpcAEmtUt0cZjec^G<4U+#++TKW^lqTz zdIr5Wh8^A9>CWj-TgL9_{CqlZ_xXCKYCD1YmN7p{Tz zG?=WXd2s$>YeTRyRQ{l);KmvhD1#Xc)|0A^1elKiJ0H00&UkAP#sd#IpHH!)!xBpya0;$^>#lnIQp+MQVr{ zDh;v?(hcMWGGH4(YJeFi^|STU_2s}y0HH6{$MlurY;iiU7a$W8VyPGddIQ;d>3VWK znI54h)x-3ZqHIyRNDl525F#n?7^oCx3)6+!e7R62B!p66SwJdK3bF<1VCN5?Oa?xY^uHZaO!WE9XXYWn5n_!F2?-4kW;J zZh=m=PNq(}PO6T)8vlRkcq%T(qyMk^0fhBxhH*W6PVt)8WZmIMA70M8J^i0W`{v9@ zeeli@#?s?Y)-f*^-brkEx7)hozGI8MnDJTDpRM2A%A(%*=aGc|fl<$x@du5pdF{9S zcy6q__<)&<%}i!|_K%}OpGk9?HD1>zPrqbH3^Se-IYSM0o+1=iP{)ZR9D*xC=<&h0 zBA5;b;ff$SJQ7!oq{Aa{#Rxha2s{kZVHvKF(c$5^VmKWhhAW2A;i0%;*K6#;a3 z2(B1HhX><|!E|^Kt{6mz2jYr>ba()+7(j>nd zdVF78(U%VQ!4-YrI0r>1TqAxR9O&)RU}GGt*XikfafL4(_Q4fCbhtOJ=uL-v;fh{# zxF@dYNr!vj3hIb~eBbW4qB}jl8?NX^hrMxyHy!rE6<&0>E3W8Dhr8eku%d;5r0E1J^bCb$CZzSZ?(g)6M+aARE2m=0Uw3QJo1uZ`E%Z2ygLMI(B8DXx&x z;fA=PAsx2B6&7^30j_93hs|+?IUTN#E9%qXdbpw<9j=Qj>e68|Twz9sO>u=O9X7!g zCMf%~@xM$@c)|ageA4k3eK#(h*Rm%w{`Onm>KO&C7av&9owO>_+MOAHr|iYbKD9^x z)6IH7@A;b&9x&s}hP3Y6Zp+Tsj??<;KR=L6$#T{6&+X$WB~y32npS7q?bbcIJ$=c1 z{!ZIEf$e8?xUTG0>*6};O=?@De*S@>={??#bNiEqb^gc3epCbI^JP2Ne?C;#@YR!N zeUd+p{xw`He$?s}lh^y`mY(mmAZS1Y)D;CmO}{L_boVarIyUYzPi{Vaws^i)eD@x{ zL*l2@BW#Y{%S~%#s}=9Alj6M8Q8dhZ&G@y-1)f^*t!(G*9x!vvGyTY6FXsA?%U(MF zdZ9W4N7P+y`QnX9mvN@MwVpTpF6nai;hwVNd8UDD4xMGj-_M!x!ezFVYrek4lXU~< zAJU57G2?Ta&4+sr&9O0&ce0v7*X z!*j9T%8;+l4qEZ=HaiX4we0YKpvj;0LcYdo#ZO*aFexw5_ssKVFPG^iX}!O)o!OlM zKWANCtXwfWHDI1r`(yfH*P_pPeEvbq$#i_EUI)`oo!>Cy?|ln?Il1IqC>B!TJ$^aFLboZtLR^D)!9I}VLCIu^wxJz zgMQ)W7xb(*WaL$!piuE|#)X?~aXHBMKe{gj4$FAb7r+t#xx_3h%E<*N03zXA2cJ#NL#%DtJq zRdHOaeUwVymmN1s5iU>aV(R1K>ZA3%&YYkyeBn;F7vq9=4>roxiswu&O}BD7R}k)M zJ$FY2bM`uRQ= z{usQ$^z;keRTHUuZ8Z8TZaLVwe43YJ?S6*$tf)Zi`M3?ePAs04PTcSC!T3vn*7$eV z^O=dXf5plJXEz#fOq92@p08umbVL4Wo2hrkUyiY>zls@OvWH*Wd)(bc>ppxfS4^I{ zUn_pgOqg}p7i(9@ax2({Lw|VOD`m>d3 z`(01E|M<3PnpV8n@2iFJndsab$*)U~Jp%H57}WId{k z&c0w})z_s+_{5BtruBYzy7c(@pjVrcSyN`6ZnCnO6p^RXXXt7%<8SX#2E8~%^x0e- zYScJWCr2wjKE$N?yg7rHWsYriAh_|V6=VYNiDO@}OhLJ!5_kZ}Hp~P*08$O*hS5L< z;0vSxj=(OU#84?H0DJUI0cKckpfo4|GJ#AW6-WhgfoLEZ@CC8~M<5*lw~&B$0HuBb zkP&18DM2cb6GQ_^fiI91I09(_kg5XPf=Y1#kQrnGsX;1`8$<)ifiI99I0ET`1jrA{ z^^|%AK!%VBWdT5r5Dg>=zCf1X2&4%TAWtY4DMbZ9rjQAw3aLP@5Dg>?zCgC%2&4-V zAYUjKDuo3=#*hi545>mnuw5t<`T|LVBak&nfV81pAQBn~UJJy!*93!g4hoj*t`r1u zCkt$J_v?-jK&t@c{-5*!5JvL>@OS_JC;NZ0nW6Lc0IJDx!S^5yq_J`CCj+8)7AiR5{6R3xYSp1K8>$;+|#L6 z=~%1bN#CGlEEr&%&YokvFZXD5H%IQY(sQd*5ymk`=Wj61o>S1zX;hxmv6b)lzBx62 zD8>n{d@in{k#XAGwM}=7=yCJno|!9w#e&M`8lQN-y=kYeYu|CoO1JGZ>w#exE1x^= zKPKnW$;`%6R>${zBfJJqBcVn)`7V>E_38g>*T&0RUI`bioAeOSBc}}bF50(@z@<(Q z;O0^m!Aepd1e|5JYC>4qs0PLaO6`~>2MR7)uw{F0&HmHbBkDL?Ygun7@@=wVpy zl|6{xXh!}(w3iJ^1M835*=y^t%XyLAyR|zwal)fijAP3q2^h{TYCX%QMXc?S3r;h< z+I9}J>ojrQknPiKrzfvW8ELknh@A#H4_)XwGXl!|zst`dY4Z11K!;V>sA|1Cev(6y z*VL1xZ*}0^O`0C7+DA{7_rybZeFzMknQ{2wZIBKtx@_=ihRUszSPCM3$BmOj>U*ZJ zwU7Kw*1?_a?$00D`}yk+I;QgT=W7x%Q_0)V9+-)6<$58MIl8 zacWWJmX>&bd*Yg)uLr%Krgbr0_h`rZV2`|aI{m(N8tim_M7fvxoL`FuI`c^rR5Yu> zIsa4Evyu=Z1X#hUV?dy0pl$_>bAEN6`t6$&-TqQo{`T69He0M34DPS)hn)$8!UIp& zV8P?g-mz$R#`26$_@W56p81p8<9i3UtMhZwE-N`qghn_m8t7c%{|&wSev3Os&ze%U zMmpQ$)bR55BQeetDt{NA{nQMLOtk6UHi_%sn(1~-G` z`~c?yK5hb}A9T15kZ;mqW4e43q_0hv_eg|z0GNr?>4o@^A)4^u!J6uO{pRR-5$r-n}*9UcEHooFU$_O2HbJK*|x7UQ*f!!57ecQI0u&b*k+@_5t+`6?U+^Ur(?Bb#c zJ3DK_Ex~~zoxhWlChX{_2|GAw!uIx>aElh2u$`SI+#E=A==^Mf^otHRYo-a?fI*8M zZw;0;bhv3#O}I%DP1p)dvh?(g8*9RrmYQ&*Mw+lxstGr2s0mwGXu=JEG?C8F94rax zaQ*t4a6Pbqp~u&)s|lN#X~L$any}{hB*ZnxCn2smJ_)tPCnIpUOXpv!mL@EbXu^hu zny`U^CakZo35&&=u%4bKED~wLLZK!s5NN`DF#Xftmj~uzI;^X!33I`?Pmk9D03F70 zO_&2_Pj$Qi*Q77NHR%g*P5J^{lfD4gq%XiV>GN^T^5^54<OHOrrmYnDHsQ9gV|`S4NstORo^8KC|DWPX<6OM|Tj zMfywh{lPvw7VNi|fPJ-G=qAhnKKkrg+~0QLOU+FJp6b6|9|oPpKN1)_y2$Q|9!yTP;IyV@BaVq{y%zDXw;afad3$E zyZ6!}{=LHZ^6-0ELs zf#;>xHT?PU^e2onj$Ei>`}a6^jD4SWs*b}XzXZ;_^6zcmU1?TeG&=vS*=UCS;dq0$bb#j=lk zk6@gc)RU`;^6dFxquX`-p4p}YKA>se`4%2o6{~$4ZJaox;fFZ69Hm2b&ZL24k4CP6 z4NyC#?ro$3EjJfdJ216?v=-czj)r%op#>N_PzO?QVu(z@z!K-^;9#SO8FMhOzr(zP zBO=B~yT$~M3&RB1;d#UNPR%1sns+@lz3mtY=YqQa{2vWiu+=)e>kMVi$=S8)>0%tp zcq>-_RQH0J#d~JYviCkcZby;CYtWY7s{AtkucNhem(Dol) zK>nuLC~CttEwjOU39!9A?VV)di!tw3vpEI#-d-8t+iJGGWbw9dX{T@Rci3qvFbHZV z>({KQSGb3#oyXO^FDEQ+_GRtDlXIo~XTy2H+=&mn+UZ}7MW=+y24IT0 zb;MQ2x?C%%R7b!&&sn|km^Htf@amIx!Xeg)J|VY6i-w&4K4W&1^~dB_r+Qwyn`?5$ zaq41^^KR2*#rrNdZBP-EFLRi8Yuddx!^X~UcmK$xGYMeNOREE>ee1tAvI+kK*H&J; zdNS|H_iX(MXNxCcoME8MV6Z>kquW_0$Hl>?rp@oq8xmqty5>~<+pFgm={>%)?`Dy` zdaTu=fyUbStt-&oKKfW2#5&ft88B6^hGVVT-k8QvTb0Q%1F3SV)BE~L(&Si#Vp43x zwX>-{y~_DXW8(ev2_WjBw-Z*o;q|>8jo*#S-V;|We{FtzSf8u1aKWyZ(Ql%=2?`v{ zLRAVJfEo_y4dgi*$_$q47l9o+p%*PO6Sx9ff7!y%f(r&=Ko{Q?XyOY5*}w)sJl~sd z2JXpc8Y~B=|6$(yKr>;vARQ-Yw+g_W0^MwZj3d>N<1!t1yFkXz=E?-=+-#l<)w&6w;6PC8eBzNdK;o?V zeAK$p`!`SQZtXc@MBu2it&5oP5k;R*j4a;TeqgWBro;CxgCjZ!YW}f`iiL(3HWwMa zS|K-jRvSoMHRH!keO59f$Ys@vwFX(G0S!I0;-lwv?UY;5QCH|67+5^_Ju`m%mA5a0 z>l^MjY?i((De%kzW_(0I@UmfX<>MbFS1efUwg*TIVNkzc_|rpYlj9FLj`{97D9Ci( zDQ5hn-4T;*yqn!#`l!<$i_|3Yn2z>*!j^u~^>38DJ{;j=?$^EuoVdWCrXOpy#P8gN zh55sl6G0{w{Zh5!D^BdQ*M0bE@sq8l^9EUtVa87=e7R_IbZk_4pLa`J2A%>Ed>GX9 zC-u#D4DqS^sU*eq&~Q{EoM~ORt_@zDd^p z@u$tRfCL=|_4~zTO>94Iq3f8aYp-)JjWL|cj8ELxJ-3a%S-ozK!_Q65+L)^qpH%kj zV*9P8w+>8t`S9%$u=ayNO@Dkd&o{HnBP)Cx?2NOWRoj6XALYET!N;NTb&h&_58U^w zZ*69L{EyxHdztWtU#NY~dE2UPfz0?AkDzz0R_;u(oF6xTP}p%PGd@00e)H4Ikh`v7 z=fYi^Y~Rd`5BFL%ceY!KU#Y98HqKqunHe9|Vncyn`&S`1at)6w8<~R>4j9z=n|LX0 z@rfMk`!PqKW()5mfmOX`{J1umlU^K65L7(opW$|Bqow~BgA+Ci_ZJ)Q_W5#gQjC~X zVxiF=v+G8NZ1~`Fi;eM~aVPtPGwDa}yk-A!+9jd@MIe0&EAVqC^&(((s@5eSpM{@Q zY88OAlpj^7UVsA7F`xp~u&MhjP$z~A)KUNgMhX zc{hSesCsP*to}<1qQMb*Wq|Kp6#-Z_k->oxFkv?QAj{nf{MfE;S8AL0C<*#t9~Ty! z{%8~6)0QC9N~mvje^J$k>U~uG2OQC&0FJ^@(9k<0IuQs7jL^ex3HaL%e^3D&pJJXd zfg{6$qb81z3Js0|a5jpo9Ot(EX?_qHxi^8np)M5_RQXVSLm3MUDp-mjaAltQ4pn6s z!Gj3&MbU-%*@h702h5M}_@JOsQK2o6Ep-6X`h^t$xBi#%gLNbT4G`G#qk3IcepLBW z^$}HmNJE(3M1CF!;@$+L3iGoS{-6TfRQUx*Mgp7gSSG?%*2@-kK2&}PR8PTg_I5_5 z(ykZ!)4%gurphQtECzpDsE6PJ!!vj!5P!$Uj2{^r93=Gx*6hYG>tVC{{cARVk{9*6 z5+plSeW=@ys$ZyHPX(*SD-|3-CHVOZgigIkdW0YPhWViuGDyVKnPxgW8^qE2`zCch zYS!OL`&d2%B8Rc}cS`J9**{<#fuSAwh4rQKfz|=bWduUYz0fyIy9pu451>AQdBu#1 zhyb&2WzV~weAUsVDGI}+$Co2(a@ zpN$AXe!zP28yOZjKC*@HsECOmHyD;iMuATpNDs|4J2=T<}5okXIt~*Cp)*+UYJ47I71W%XR5i13_V6D*b=SA6x#T-#Q@p>U#%D zAbUuqhC6f~?g;sT0C7||(!x{CQVUO2uNHm-q6kJvDF#HsWPtS7lRq`^0HxkPXC0Gz!8e%kH|NG3u*_b#>x-r<_OyR-<8%TuzTn`3ExT7`na_8$a5oluQOi#C`xS8fgFc?~vHg5u`rf%c zEoL&GFWmaFb=`J#&6?%4^iJHL`;8fYOV^kiYLgtXEi zzTDHIL+O2H{NXCWS$rziVsu-t8!!u_|-jj}{-=xAA1g7vybwIbr3gUma#*Z`#id zxTqE1ypjCKhr4+zS_g(rnfu}uGyWElos_@j_>a?*CSRH(@wa5gU#a!O$l7vra!^`_ z97&MjJ7)al4}zXLXB0#3yqL52p=-15TJibub)p_cf7sc{FwsK#H8Z|&r+EFg)Q4S*`VgZ2wukC4<1fu>I6x6QJ#oi;&YJl*F2N-+2-vfelNiC{T3ovEL{G-`TKw2ftG-5!m* zS-yHjEoas7*CbE2o>;RpAiqzkaGJ&H2Tc061Yc)1NV?Y~xPkq|lAnQE?fZ&rue5!R zCX2Wd5w1RmaL{YnU|z|av(NhteU|M~dIRIwP!kmMK7#JM5|c0Am-;!cYp`|ypk2Zu z^aAiKNQ(xNxeFJJSO(9!e)E2UeNvC9r~h;ACosJPVw@YgWQ|Pmkj!!@@Q|FdNH{*k z%sPYVbt^+%ZVXR@Afg3_b3e;=H!QajIq8e41o)yd=GU+KUI(|`%@4nzFD|&chrYNX z)O%dUwh%Tr4j0Fq9SCxXL=bW>V-8%V`i+l<9{Hp1+_|Z6Opr$PvdsTU+FnA_>t$wzV`=J)lFhV zA@bE%l|BBscPG7c@KjF8`Iy%JQp?;$rwTXPK92MkSIAS#YCrQfX!$$#_#Ir9HyTvG!_H}=C)z!{alJjp`3lPxgtnV= zx2&4Hw>bS$Pv_t>WmiM)9E-BZ&rZL*WtNx4{uXhx@sddc)$@Oz?<5DSZol$8?jJSk z7_|bQlMsq=%&4;1kti`QzO>V0>-}!#gf^?1I@gWd7`GLb7-}C( z8pwvEneA4-;;a5w&cdtTnBJU0iNkTae=`fa< zLO3^(^bL$e@-ic!LbUC<7oKAD`NAES){721t<4KscxA=B$Ai2d-0%5qRHKcjcY#w4 zT0g z9oi99%VVl23os_sBj7kq4iJ2FInqYnLu>{xz@BJC|VbG_?nYCbYjT$pPG!PA0 zD(4=&<7W*&Pd3fzk{2}Bx`%l*Fa1Y zfIbZG`n{d2d$e`H?5z8fRws7Z=$CWmTki2`R>rG;1vJ~$=^3@a1u1cmo2Pu4p}C>l zz|9~XSoA+Ejumgzd&(E+<%n#6&cClvEQ|(r`NiA|Iw|1BzdtzhH#hk2@&X|K7e4@5 zJe4Pa?>shN0C_yI$d^a%@vHU-kPUPM(gmq3)&&cyu`gKuU$p=KFBS%ocK}pn|N5cs z8&iHgZ@iVGldB)lI>vfcZ)c42nd%!%B1X%e-b=hDG;I|*`}*0Av-`r8Ah~|gqJjEG zQkUr`$iA_K>>D4sSeZa-8yzXZ5*z5R1O5B7j_=Zr>npyrId{9gPGF0TOBzqgv0E`L zWFt{KYQ|*4U&n5ztpsiwm*&p~Q;7PV*>k$d!b2GE)u zddxe)15yY9$8jwhHdVJ4g(I=b?kil6LR$sUayf_N)Y9J3$sXRh zgyVG&fxL0%r6GHI1`Et&kAK_-Zi8rZQi7xZo%VWG++Ca>r*BQL=#6n=sJxssOkDZ1 z!9P>&NB4|qeQh~s!k3ei#P(}{7;Sjdb8cM6opMMX?T55zpt{OxbNN>d>S`@(UG*oB zw%HtOqL7eY3$IySG2a^FjHU9&eCs`vns`q(jn1j4-{+uY;-P1xzz@k6>7wd|s8~_H z@1Jpe8a`^*i;YLF444>n8wjAuvwB#+<;xxnJy=xKv(`fUhPKLMPcdw2WqI9w_RHw! zpfRVU4L6@n&+7y%bMVndsPc?w#RQZV@rKhY3?<-i3@PJAcqv4J0OgM3_M)GaXQz$@ zY8X7vX?+#J=sB{Rl9TxCOX_r1;OG1$Y8XD(S0)*IxXZiZMPbRyo@U1U#@~rLfd}^w`{(QA7jokpOR*Kq@mNj6 zv~KKk^L}NwWN|YKnz`oB#yFj+wds*Yf}QQB-b?JF`cb)ULR4<~s4e1__!K#$ zjry+^4V15M-4l;$*BhI>V+^3hT5sf0ZyjP}ddJHaH5<2>8owB4D3w2^#&7*E&v$0U zw;LO^vk&i*@N-=`%pRFPhSo4ZgL*qR=$wak{#fTwFr=~O4_>(Nx-TJmN)uPv{!aeX z`+cpxi}tp`dj>aw@AiSZBk}><5!vhA&{p0{f?c_N5a0d6^5^4usYY4Zb{CYAjoEKg ztb{>arB_bz>~F-E-sSfgUdLy2qIr%++kMIUYuMhp!d>$(?KEvOA?-)}sv$9P!RJbR zzUFv;=9C+pm*l3~ZONN{B&=^E-LSHC=0O^}{r-f3+WQ`T9yK}G;aJGcV5zt4)wgM( z)1G0RM5>?d9n&OjbjGQ5haL^P6eOGWGGgHFD+kZc{_dyv<~J+$aeT76zL+#nne0fr zf_&+2ok03Y*cz#WS?RLuak*WRhE83bB*JRoPq#BrMF6gJMVMT^E=Fm$=(+g?anO-P z!nB^wcN-flfqhp!UYe|W@7ut%{(QaJ|JZ!FICKZbX-c)rOKVri-gG`1+ckTYBT?*? zwQkwP)^qrK0`3Po=IhN)iIl7J$)thW<%vOq-)Xl?wtg1_sIj!m5Q3C5nh|4?M+j?Z z)89m1w@)c{L}14I*85i5B?%bkBAS~qtc+m~b#eH1aZp0bl{qGRCJdKdb*JTzNdx7t zY~Zl6-_Ktk_WX4v0-(-Ni4~F6cj4{an#oa3;=1%d+Hn2$!%l8RhP5s&!8ngmy#W0n zUn1^(?yfO6)`hfL6*sxD(f!tKnq2c7meiL&)L|E}T>dIR;0^)h)8yi|Tqeu~IjWC!f)MF5?9a6S+2|9cB^fUmoF;HPgR@Q3#h zSkM2f|NmG2|F8c4U;Y2T`u~6R|10MGG8`W$5I3^7w>sn`I*q>bMZy@EeH@MjP zWQ%6xTK`k#^tG!Vg-rGKUV3A_*uY(6Zn&alt{{6svU}6l9`AQe{ciE=*v+)1&tLD# zc)Vo$_9^#GV;h_sTXgV;|EB>{$`-si&Kc+8>Fu(-p2aeUsF$C=jy*WxVdTY>15+L< zQp@?J_2+S>I`!*r`fNmQ8Zl?VM(4IUVr=t8x5c~s8pR2V_M3P+N^mn=Jm7#uc^=$) zV(N1_E$gZOq33dOOFf$xw~E*>I~NZPG;f-ZaaK`FD8CZxSH(tMrNJGT|9RI7uIcZJmuRhNe9be_3b7Ex?|P&c7yv1xCVDN zA%d`O;6zRy7aI=6Ve;e4kug#j$(KeiZoqA&6SDWNq~zT6tJX-T8mb}!S!#@RsKx0w=>|71DupUXkzsI1U9 z#gG7l2p~_mdLd%4_P&O7oT^UFORB%v5XFBW=bd-DM51WtQ?!vE@4x&!u!L+%?b~d; zy4s$%d@SijWjAR7j^)^{?5a;{KP&h-(; zrnAbqpiT-Hg|+m0IFnG;S`xiD>CUS+S8itn7$Lt)xboM|IdiwbdBMu!xftbW1C{p> z`_0=Aq&D4EzA$|VAv%R|`cX248SP59cEr2SKGw9~de<(U?=_MrI9oRad-&A(;6CTl z;?}f0F=?PWYjWZIIhdyqGEc8?ES61Igp;(O>O7GKCmIo}vyUDRRttXwm=t8G&HFWb z<@M7;En4j}<*cE}4<^()xW>!oTdz@%OSVPCR{)!-TuN7Dd54Re&R*L<43=y@KY8cP zg^TB%bTnQwX7JvE<}G<|T3V^cUo9H{q2urPyNX#qU1zoYFvakF@BI(YV4OkJ-1<}4 z>R_t_x+5bueZ4n(dr9o0wM_zeU&nVi{^iuP$e8FL_1vmO1C_;pt{iRrNkeW(fsVp0 z&bnTT%QE0YHWKwu4C|A7WPQEhz@T=0-?WP?p4-c#ZSK=vwNplo9{k>W>lNeqU|^vF zj)^&r+^4|$|6ySJKN(p59|-LJ+W@QopMkCa3&7HU^*8-xd^YQU%aP4LmGyvfaK@er z><2g^8vq5o!@P7}GA~Rwnm3R~@N9Sz-e+BSU8$}>x13u9Jo9Y@TJ!P1 zE1x&;$p`HTE(dZ4rsV*&)qo=YR^S&P9(V=t20j7IfJcC>z+%Bu;1l35uw9r8`~g7A z0cL!g^>RxR@1>O~10+$uBx|{Yu&$LWX`NFvj9Y zv?7LMPG%f*za%*FOx8GXvBT&nCaQr|9s!IZ`5;9OjFaj!{r|#Kdnd1l;VGRCyz#p_A0>66& zMum=P(KmP$P-nW;IurGz zKv=b~!GNHJAHag|&w}sAg7;^^`?28rvf!bB7zC~N^ku>Ou;6>M;Cr#)d$Qn(D)6vz zP~AY|Jt3aD&!B;a<=?FeIuP&8g7;#MJ&#NH|-jxO4hK8rpXQR`) ziu7>B2($)a&??VXEO-|dyfX`)RP)fL@5GYckp=I-g14vPsXm1;LKeJ$1rPfY2&f$B zbf{Ie7M_~MwD54XprWIy7dZ7bKxmRa9ZwG6+IZ?79HLK8Pu=g)!ow{S2wM0$EOyQSml?begzg+bcZHUt5r;iVGJiR~C@$~*k$J56RI-Wjm(DC&C zMaR?IAstWeFLXSYrF`h^mY$y8ZdG`gmOhTr@$_+wj;D`5bUeMk)A96iiH@g_Cv-f0 zyrSdj;|v{7A0Oy=`uIS{)5kqJo<45S@q#MK8KUU(jw(IGo2J806mYCH7B5&1JpEk& zzWhFe+y6HD*}#53Cf*AC?iB$aduF0cp*OfuA1^59CUd3S!#ch?Pl3OCGdz>y%_+x{ zF>lcYkm3Tc6L^@P4k*a=vw7LTgP$DS=U4K{`}|4~A;<<^``|79bUp$6^=6#=rZ2_Go3EHaY?7mqzltB{f0^7a|c5{pR4CnQByvB(XGzL z#4d_%wng0`kPoRxs%FN>&!<1*<480Gv|%7F*9m}pK9OMMCxg$&n(`qJ>1>F56vcG6 z=_o%RD>;xq7<@j|luxCQouW(ZjYRqRP(7dbHRXdu-d~*vPpaIq-yKEm?S1up-qn=P ztqsu~M7J!6xhlFgKMX@{|m(Db@hB+)qoEN zrX|Y_+?`g@rS4F_Qo+luS?G=kAQ2IqDj zwcw^wSpZ!=csCKlnp3l*IapeXscj3jD5cVBeo+fJV6lP>#G=RB;K3WU;Hyk5N53lh z>oWPP?m{}Fw}3L^#%KoTg6ANAMtl0(KY&X3L}TrK__u$chDNnE&2?XO{e#iIp3?i> z@2tm2MOt9BgknER6oLBTQ}yehUkpA^YRU(VBNm24SBh@J=YELK69yl~IP#dz=Xb`D zhyWg<`?z|#k7`O+{@_G!I6ggM&}Ed%Lpt5xDSvW3Y(*TU=n}g>_(DDptLO8erhLeG z$&?7A=t>ox`#?Sqs^?QyQ$FOS7E>aEqMKbd4Dl(ep3nW7@*(q6ml&(c&pM7j%+LMm z`6z43hcspHL^uQ5FnGNC-VgFoB1rwgXb1Od%7?W3=Rnk@_#~&cLVQ%~eHAALpVFH0 zAuk8m5|!)U`8>p@RK-W}gsW0G}=ojdI6_<)ni#Lns zh@-?dh%Y<=)zZcItIt6&Z(?GccGSYm%B4xikzLk(ytyJ}LQcD|o6H+wiIwH5MFZ)$ zELV(|BE7TG)O{0h1F;&5OV^MVlgtW8Vc>ca$uW?7cXj`tbE(l3*s{nDN+~k&cZ)D< zcb|3PAr813j8WIO*4_QT_y57lm`iBg-T(jc{=d4NY)UE{o+!M$M%nGx)rOgej4;j+ zst+79yCu3RJ?=4UcVykRALf=b^}hC3_5m##NQe4l1KT;U4}6fTb*T3yH*78ooQ6#q zb>p1Fl}DZWtZ6ax%!-g)+4F$!7cFg#7q#7gW9xz*;!68Sx6+mY`$)l*eI#YVpj*M_ z6@ItJAp1xQQaWA|PXCO|Bh9Vf{@mn@<1JPkYx&@nbCC_neAxF_u7IJq69(;K0T^l^!*3X; zIW}x|oxJ%*be$cattRj49cjpviJ!%wc?SaJ|Y561=>9C({eT&h|O z`B;c;$92?%*+55)+3V;2ix`7#vmbv0+@c^y_yL6DIiaTpJm&w*1GXhl8YedXkWLz% ziVDIx@E~NWM|fytq)$kAKm@pkB1&9dZ1;x>=&FT#gIFq`w;j2^`q2eJ&r zxJi}p?;iTeM_M|Mn#(U5Ypi880)KnJ;ToQLP5N{^f6!pH;^GS6fjpN@`k2Ra0ef>MSjhfwW)RLGqx8n$9Fu_kq`Qd`ymR{CPFJhgG zw;bQ4(W`zvm)k6VH<-8nqrzo^XcV|HRRl z8_x?%IwyQ}hxagXeb3lY?Zr9+>kB3HN#nrjbM=1W4e4vb2tPkffURp*0UMZLb@shy zMQjAMUKw;fP#|oujpMczkLqQ1_qn3C7iHSSEcvq!pBR1q-n;+GluN!Bv9zzV?*e5{ z7kccuFTuL8snx7LQ#bCNtu<+z)8dCmYF}U3a{kh&z|du%PqJ2+&$_X(3|X-wrdFf3 zR%3b(-5a~iCa&Q;f01X%(Kn9W7sWB~8^nkeOjy7kXr@tgaEYL6((MPg&vmg#jO|TY z|75N8ndW8LoHBLX`3B|SRDFc9PgF11#{M}T4{0M#?x(xnp8h$U>11pA{b>QM0^tlZ zAHgq?%xf|@@IG*Ve?lxV9{f(MNH@Rb6aHfSGMpPO&E!py3=32`4Rv?=S7SwH{qeHv zmJp{&j}1@GKfZ@H453WLc>pMc6dq}QYGz|onQ*q{=CQ-8c3Ua87Fuq#y_}ktx~n>K zl7v@eaNu)&cK#fZZv=@StIAShuHSKU>Iq@80VzTc4O>ebn1{*uFIjdv+N=gkR9( zcAx^cFUu=B?K*Id;FN&-LcHVz99hMQog+*Kz7XSgTqz$CzDl*!?g&DgeqrB%+-^gz zhZJ4=Ryg~p=WFHpT+Oz$z`^v(D~5LW(NUnQHBX7;ZjI;5D~ODyHk?MRHyODKhCHIs zBsNo$@iJ?|q<;M9x50})FB|RRQyPv?CX0Bb_R8px<4I;yb_Lyu+^jWQspO*FgbJZU z52t;Kx!t1+mXmlz8V5dioLOy=2YICh%f{!9mO2_z%;Fk`d4Qd%(Ej;2U5?zY%v1Mt z8W8*axe>8!G(mR?nzkGpIb@AlkOhs?BZDb&5_u@+U471Wi->2Mn%sgvD@ z`%b)IxG8hTiVfY5Z1_46p$rt&$*b6)QI})2FdyWZPIAy)#jpy8b?a}xSUbf{lqlg@Z$<3W<&Oe3UZlE#F?bqjytH}hOr{6?1d5k%H+ z=6c+3=C)%dqX+9*_3z_hkp5TvX70|tW-#NzMwJEUPsZFlHYfz43>Ebs8u}&de!9ii9LT`mrOjMy>{)+q|`DFP&$M&8ied^;^oyr+c#AF(O5aevpT50q6Ij`2)hFQgkwFi$0~|Mh zQ~PMQtY+2qla#46ujZDXz1^Bxj|}q;I$7IvC9zKHUD4!LYRL5xPFa#+pQ*qNiWT>g zU*%3scWLX$2FfdBX~qT~aT@lOT^J}122P1PlMdJnpdo^dQ+ML_o89B_n6y8Z7&?zn-L7imhjg0|chBEdn>e#p>TzR4q|W%N;(-xa?Zr%BWdRCyuV9VK`sIHIfVtd|tR+ z(`E+i1q&6)L55M0md>rY&i~08i4axm@N$~xM@s}D@cm$kG=FL3oG!e+Y_ii034N<;c)S7E*&SkrQDRXtR7oI)&mKGw zDgf?(si+1;l}GG^*@*F{oCLLb#z~h9qF4@yJmXuK!tmP1BWc2MCIDGZn%17fCa=&d2(|-IwG8Qiy zy>8k{o*sMf;)Cv^?x5`m#b2}^-?2j7D(y(OkSb3-FW)_UW#cMuegDm$rU$caRJvU{ zqns(JKWQBJT05a~a|^7$Dr^H@e^nD{h<&HFglf(0G-ykh2e3kkd*`-%|NCP&7 z-~#=TS?Fj`;32uof&d>+U{9!o%xidO-`hXv((3g1`31h|R9)WL0r#J3iUTx|=pXq_ z%kNdhv!MIKrUpINvOp+CBKmLL^R8Y#VdbVZS-RRc>0VRhN{p2Hu!c@noyC}P;#JNn z47`w#y)BZ)fv-UV_a3i@^rwapb8V^-jA!4OJOVC!6j+>ST@cUS7|_o}w7?w=q#I-w z4T?GdY<#=}0-;0kNFOc;!xsudzJ-9>2m>)yI=y57gL*t-?l{8VzGNRH!z1{3lz8jy z5m>gL`O05*|J)h9@8zF{fB(LsUtexDD{Sp5XNwiQ!SMw>KFp^V-oNIOAGr{C)F8`( zR{~%8Y0pKnV7Lu>Q*hDOUdO^TcHgsi^Geofc}=+UIHNrHBvnTi_i9)-}03&<4=R~R3uA_KTdhQk-<5%(aT>~&Heq!1nZKdvID})OEp#% zb0VIlOJr#>IQ~s#X)^va{?Gd4*wB0a+>DU}cfH)UaQN8mGj%zT?}1(y@YnGtJ~{r7 z_R;Wv!Oz2gi%$f+dP(t{c4-yg%zWK1*`-wXS(mAU^knkggUiBcD#OCG#;0fBSzjcR zzcIP@$BbAN^8;?$*CS@kl*w1t<2*dZYw)w9zNa>3!f_oWNqnbW=Vq3i)jDEv+RkwH zEYDhz9Rn%9o^_^W-@EL&YgS*LUT3~n`u979Ez1XGAMTaDX3xM!EgKzn6Ayq-6d8K6sBmX=*q6fBmY$aOZrl|I1u+QkHuxhu^SY!6z(XUQp!+TuH>tv%dk>v zrVUh@$52)JsF=b0uaE##(f+CofK8W30rcr&IY0$#0kq5jaffDxvkZxGe>1T!4yGYG z@tXaT2C#%d@Am1Bf8cS<;vu?v0Cm8m3rTzXn%E2q(|!_PG2C*=j6>&u=n@iV_BeudcUQz~WE|&7d{GapxH|N*Qk;pn^bO`Xd{6GHxWn>6= zz5M^=|NolB>Tj#@F%8OoR`<`;oDqB}(Bur}*fl^094Zuaq0yyM&IEBGI`X6=Lm-G> zN8YHA>}3zU`rmzVGJnDF!{6^9NNPvk`a)ih=SH8E-H&~>AM;0j972(-2~Dk^Ryft> zp4PB+yfN+KiCnSq7^JUD@qqGGh15LhIo_0c>+a;JwZLs{N1p4zz608hU@kA-K95)3 z{M`nj1a#!>;8pQ`4qkDSU$1X-q-^D5gi_j(C+(j~>?s76db1|W;`3aiA@i2i?E5~l zCr~|jhyM=x(O_VgkTx7*fO0ZWEP=3yfxpW&G;&P1v3-4Q@i&Ib*sYrp3fzehJDnp} zT|f2jGcHh3)o^&+(>ejvv=`^uc6Yer&)DU_(y@!%rqS9hMp#@#&%Helzr2T9YqgGuI-P5(y)At%1)j971UP-WV2>Hdx3Pr=?Mg9D!rcd33) zfNMYOxAY_20k%%{BM5W7e!P3`=$#%i!hhgzdyWt9k`hVyPipJ5$YEK!`j1CAt=BBq z-3G?>ry`k^^sIIELxSAXy6LBa7SC+b^HMyUAfZnh2i_+wJ>Kd=`f_3jc}q?<6-l9Y zq8CInjxk#9=nrTF@;VG)HU;uJ9{2 z;Jg_qI+yD5r~0{hf5Mx-nmjD@v(%B495|9%QYn0W=xC-Vb4#Y*tzp~mDrAtypbbrh zS5KKL573U#GI;b(`4~c}67l7s*dfDG2ah?QbT_|x>5ARwh9r(HonFVjJMi1oeG!*F zU6icPWpLnQ(AjjeJCL>}j5v#If@hITTyIBx&xXqg$NkRid)IpEcR$(E_2R=N&prAs zv?`7DUnXDNQat7B>AqUuGnhqcC3;0mG``-wx~4mqyVt#Ww)yr8^{Ra;ufANR;ujcd zzOLHl{<{&;ejqmTxNbX}57)=f95((_<%D&V*5YlBP?s zf={Qp1FtI zJ(ucSNBzLicrZTTs%Z^lI&Fj9Xp`wrF~`JJN?*=ku*q>9Ul|338LtlMlKYbX>mgNsT1aMg_Rx=a$=>y&XZ52$x`&bIi z^7rHg^3tCB#9sRZOtIfSve&*;mOxI30v!c8EqoY7p+~_6@~h zC{dTht`yw@7qPV>q2VsJlr$7SfLZd0uTUY9NTTizByU85LU)+NFc*hF+)~liPsA$( z=*+{fBD@>`>?1PpPbi|Wjq>&m2=Ox-AMUfr2f#$%>Yyj*U!n&Y%fnxUbWV@BxMF(5 z^cfRBM8xzEc1@Nb7z#-2X*ga;Pmbt0cwvBlJ0BpV4?++yV1d*@$6g5?V!wm<1EP;# zv|E!pAE#1bSxliuCd3+5#tyq0;TJM^b)C98k%7 zJ1;+>SUHJDJS%Pw3IB+e=lF~ZpAo}ipBG}-RaE}=?;x4m5cqg@_!ZK#2mHgN0RG4O zfVFi0+-3*0YO2aRVMiR_(b@C1qq(j!B<&-mmb1jL4O{O4&jQf z5_%vn!z5-KaXY|K8KyqO1;H2lqVEV|%)`G5h<1VWWOd{bd}rt751PfuHXsP^?$Ug= zTSCv@;4`{D@&2FCBQC!*J<@z8rbld#hZmp3XS+r8{DRMRN$B`%e1@a{2gczkVnT6* zvg5GSIQyS^hxPQ|Q183&_8>lfHvb9mtd9P@^Izg4#Ddo!H~5syf8u^E?hoQCDk_&4 z?k9q+$b7^L<>BW0hX(OrHtgR!;TKU-23KjD2`N6y{MYCa&mR(c#N)2`DlV=V7MIOf z^hMk+I-Ack#XkU7SXbityaK=9(JnjwE*-vj>cPX&A&B_eF<*$=M@)yfJ%DfxPlW6i z*ddD_!0(F2J!~oug0Nk7z%QZ%$87(AU{5$LasxvGA|idl7e#pmfw>Khmd5;33T`U@O;=;QarKd1bqVp1(7%4C4_mGZbAV z^oZL>+#F(9dR`IJ1DB8G)}shKqXHt$&w3e4R=E_4pv}U*hqBkaQ!+2vNDmiyIQc*d$`Tf6$f(K}a7E_jjaj z;G1ozSKvaf9awBG021Bsh1^L&fW~m?bxpd2E`O2V@eVZLOXurn;wcLrah0?i0ssD| z8Hp}PM>^@J>fk%*KLH_uJ|RX^FJwjd7}M%+3-xD~0){lPtpL;$aG@5kQt9a|Z`x9pL|4F_W=rGI zcvKEG74=6sa;+>Os}yKJVAL?GJMetS0}>G~$VI5ls1U6{1!x|ci6#Mmh+(Kup+Z3b zY$Y-kk^rS)!26*ss6AsKP$>2v*cAl}Fe}A%ceo@?uU3-T0?h(}(%u_rb@IpGj zK(!xZ)ZTB6>hz7rHHPZ1l+G7?J2mG8_hSD(J7<(DR?iL>=Mz^B!bLzgClX|FXW}b< z-wA#v_K79{u7JT$D8E1B9w{vlQ1vo z)q?4LZjC)+uJU-ku3OAk@+l_u$mwaRISBq;xRSru;u#S?+-5P9?{i!Z#!XFC-u8hSi z!1&QYQOJ43BPt`g^33-NdtDY2wCMMa-)-Aedtv#*y>=nhSIjSMI$4WQh{k~>3sYof zogI3tXK{4-gZC-!_;2v}NCWJCgLH8ievmvvi0~D>5hNxcwgY(eIMZ;vKtQ`SHg5X^(_9rz(0TAyubTCX+NH2H;&-% z!$WQnMG${Z*2llWx~7evoHO@&d9c-#kp+wXr~`H`2BHaBdF{R7tMrW`4NjJtte9*z z-rvxC(azcXV-4cs(-XWj((ZMR1DCmPFkKl0Wy@_?39jeV_KJ?A$Z7xFMw}TlC}#5V zbC2Ir0gFI8@d|()+KEf%w4ct%zKj_>C`-guj~R5JkBp0PKCa;5Ci5PB*j#|f-Xk37 z>jnoza=~$LxQ`DvDg?@JJc7dl{6c`B4N}74+Fqy{J{@~gRFFIJ={m1zjjvm%-PS!z zHx68)Q(YB%3yu$xdZSY--;7#r7H5&Ut*@%mh#d$;MO1IwmOS0RB*Xhlfn~$CiQRVA z9oXeFq5K_n)>m^ElgpmXlb67^;WBv{9QYa9HrA*9xJ*7+bPm&(isW~83QUP<=u{@} z%Y)}IU6gn@8%Veg9K?X*LE)D}4>FH3p7X@6QY5s|4pkogqPcPP{e8vjHh13uMk%U@ zwxs8)#w9&_s_dfDLvxS!!Q5M8t#sBMsPR;AFuD==eAqe(Z8A7;+Df~c<^KiRgq_mn zz#Gz!cT@1qWyOz2pTDMUwvTr_{n6<=Wuw=dTR1o)ly`KzL6BZAT&O!E8bYnoY4!Pd)nU0`7RuaR7^eDGxF~BetC1g4oP>L8I`j8 z3is^QSAxjy{9}((%(M1Sk5?PClROuQoTDGa8#ket#vduL z*r3iuV&(Lk7^yW~}l|MuX~JdmEd)09QgUu)cYgse%m)jEY1xwzA=b{@cz6;EJWE`!VSOhjX|Ggr82RMb4APb zz@)}lH!eaU_#ZezU)T7c%c^NdBW+%ex0plKlGZ)}M+qR|d?1Yj=kYgM4s@u);f9ZT zVaHKqXs3E9aFL{-%&~=j^tj+3&R^QU>vxGKDh zQ09pQjnZ0)wNIQ^&ysiTruwZ~eUjDeFDVjUk;Z}7%Yd%Y?_s@EVasvOuewG>YCDY~ zY6{lhaGuWtSm8WR?7@FB$6G*OFcbvkzZR-yI}pWU#J&Js0)Y zznQtvksg(LB;U2|++u{141WjGv?{%u5B&=ZxASrn?@f!WG~Q}Gc;40oyYkUnw2r)u zZ1cvS!g*902Tt2k%kHz_801KdK~X4DMeWS$2{yk16^=o0FGP$%`1nH}eMI(6E6+O( zd2^RR(ifNA(R9blh9Hhf3zcW>>f?3Er2a<2CgZ5f`Q}Tk^*5!rn4id-!u2TLBYF<* z|KB0atY+W=paQr2&s0tVz5v32CjeXE55O4M1#pxR~0D5O<@ zD1&*lOyK7bqlE#l2XOyyOyklxz`Uk{Dxl_3GpR|y`@ygG|L&+Q%0rD&F3Ld>w3#BL z{E8~UKPVBfN@*_>kDtU8gloF;!%%)084gAHp=3A&<%f{rV3Z$BhJ#Rk5E%|c`GI73 z9?G9bh67N302%g2`Tk_s59RxjVPBN*ONM<=z7HApM)}@k*bC)*kzr4i?@5L|P`(El zc1QW{WY`VmyOH6!D1R;)o`dq|kYQJp?@ESeqx{)q*ahXgkYQ((?@WfBP`(oxc0~D( zWY_`aJCNa7D1R0iwnzE)WY`Yn+mYd!D1Rmyo`Ldb5KBbBz^cqHD2Vbxg4I!VvAl)g z4_lOPOaA?Ils}yePeb|B$gmB{w;{vUDBqe4Peu7t$*>j5w<5z+Q2rD$Y>DzM$?#;9 zFLHN7ly4HspG3}|i1H_rVGERRL53%w{0U@uJjx$WhR31&ab%c>@_A&~9Oavn;jt)x zEEyhy^2dGp?o89z9Gst zB*Ozx{s1y;fbtEyqIq=J)qdoEZIrJ~ex8f+xnx)i) z??HyUqx|kDQNB9)c{P-;Mut^U zzA713LHR0Vn1k{;WLO#HE0bX*l&?gF6;Zw-8D^t=HW^kx`3huM9_7oEVL6m9M}}D_ zpGAh5D4$89R|N&ukmP&@%4bOO<$9t$f6V_+|M~0vhg`q^7y1jCp8t#egG?Xn4`i5* z^66xlhVn&W<%#i~it?%Cd=%xQWSD~TDP$Ny`Q-kGeMhnHq^>R3hhq20@Ld$UONQ^D*c~!_8^vyu z;VKlXBEz>(>=qfWM6pUTd=tfPlHm#zt02QSQ0xX7zK&wo$?!E4yGDk~QLLN{Uq!L2 zWcUh-T_M9|C{{*>OHr(p3|~gE%Vf9&#Y)KVB^0|P)^~>ce^bPt0qy^Tl=PKSz^?ru z!=JGYL;x&Th*xNp&zG;3OO>l)B?15bOPCn#ozg$$17I8NXMO-VG+9r8l5_qaPx*g+ z#{aVu{L<*-B|vy38rdG~8Pb90JbN zru*0I)by5i^DU7d-||&#f8{<_IADX|{U^Gu0YXU=$x79{_w|=NcY3EiOSdam>%1{G zptzl)j!?FVo~zN7+fAuo?J!Z;oTaQh?Rf0dfv>SGjZ3~1SqQ5`Gx-uZvkVSgcIb1& zMdT}$kTbVjqajBvwG0T~i3RB4mpbkL)AiNi5EQI(Np&LS5gwdli|V9!L+y^dZK;Wi z627>ECPyVpdxR&|i8Kz}9*e_RWK77Jf8s0te&Ckb-(0@?-+R|3BLxFuA|M#mxD3kEL1(bIl8LX70V!U>m{S=NsEne>$LTTv8qx93v93p(`(~3Nt zwC}#j7I9E#_`CCt1%K$ic6fg}dPnk>1wFwb4i!HUg?UVaNYA?DtP9TJZXv67yOtpc zq3r(?I^Z+8<9*U6L%<(wN1n7LC4zkG$di_|i(_EI_x*GB z{}(#m_kYv=zo>)0Kezvv@H=JRjR~h(W|;RGvBUncz0*sCk}2YM@BMlY!jDb&DLG(y z(kSoQ5NZCG@Vg9-zs>KsOJlXNm2C)P5-nVTA14a}-cXO3YSl2p^@g|(9LkA6;hG((!kp?PD3X(O89zEn~tC{o=o zs#%X4GimFd58m195sJI0PQJCozIivdb)U;w?EzexsThY4TsT~NVW_1-qoy&_ z;f5C5b=$FQ|*^Y8!rD zSPBS%=Yz|w%LXU({sapq}9WucWD7a?OKx`TZMjM|M5&`t=?IJG}c?EK(284L~ z1Gf+0zSx)k3!~w&#jy(vrGMW(hAPHWHW1sfy+b6TczP;-G^ocLq-k0PKzqGVa^BrR?>s>GSD&ovt1_#a~ z)!U0~e_JPF1%4_iqZ2{sp7r9b%)Im7{kL@@C@UB``wN~d3O;DM=Gpk!7ZHj!URDH& zeYmgLf|8c<$EeM{Ymd(`q^fsoa<4t)?yvJ^qN3sUVPO)Qq;cTmO??0F0oDojQRxqFLot7c2MLI3I*Tzo0*vbB?(jXbkQiI5|!Rv*w@eA-)t;3 zwo&39S<@a~Q=R+f*2d#iTJsT#o~VruW^CMOFd=%yyAPvV7Ie#Yi+d|*zLhvgFSvEw zrOcdTX{i!=q;cT%Jn(XzPW0oIL_Y?*Y0pU-I@nf5g4Iho-T0k4x|>3d^OIjLe&NP` zdtu4aykmJ0Z5!WEm+g*xNNIjmZ6{ycMZt2?;n$g;wwAKG2dv&#_M%07PLSpv0}gFO zu0am-gvDTMUVeGG_Sc~C$2TvJn&MG3NFH}fdduvdl^*{duUqvYn_(t)p(>fs-h#xN zQW0wqibxoM9Dg?9?9|EMbN8eiKfk#Dgh=U#HPI5frE%bNJ6=sThP>&IQyu*c{j&&O z9zW;Jj(B&XICr8U1-zLFJOt$LT5N!XU>OUm%IDIe;n_5aF0&_XMwj;<*n41s+U9bt zMzL=s;N_-v#@3G$r$l(PmuU@bru2WG!&Pp7yG6%);MmI<$=Y2>?J11|ACCrF_osju zL@x4Je5WypRNn!5XdHhoUPn;#*%BBF;od3`iL(lLA5Romc1Rmx?^R?DVM!9(MK+s@ zV-jKMjKFH}0Q?R7C($jvuBDWT_;^r-fIhJ*x6&x6Ehw66v3Q;NrW;rM);K7%IWG6m zIm6znh#wd8FJwJe;%(T2WH_3 zMP?$I2oe8J9h`S_l*$zwXj!zO;LP40oXztT+T;!88|19zSaP-CNgk_>8OAhZwo>vb zY-%YQ&#+(=(WB{q-3Q>G?f)h9|E=1j?%szrj;nV)VBXFY4g|5UL~EoSl*pnF*+a7A zhfq6nSpVc$7)K?sFedlg$kUBq z-srhDliGVl?CA!5fw5)s_&war>!a1!Jyj@Bjvyr|08U`jp9jqOB#wo#C6$vk)gVQ~ zwbz!}L;h$p?fGu_r`nLKi6_s|)@*2I3NzMeAEgK~k8aevAg5tukutrGOO+NCbZmV| zbt1JoL?|AjI&tfHGW=S|+&+OuChsZzO2$gB4oP()jpM&`-z$lcwq=QC@@nJ-d(XP7 z2Y~P-;hWRq#e+}ylst5kzvR?PZC?MJa}#kL+XQ2zO_Eok+mHLb7-`bc;1Cerhv0DO zy}xwiNun>n{htgDeBAxt<}=bxdx6}&{H{Xm0F4MJ0mzi_Mq77lhug;|nhg)|^jFPr z><9cO5yC%2dcE9iWU;5A-EL&<+%<{gW}iGSSsTgVz{jgzc|CJ~du`Js#_y9=#m&VWKXO z)hAWf_GG4)roV|(d@T2+?EH+BzG|g+HaFNjIOUS{IYFWWD}w{?!%FX;bptf{&%xIT z{@EyELF@7J)jhS>b2g%&#<7I@XV42uN3?cWzpy+giw7_8pAHnQ=l407HR4#zc^I%m z!gKAaAM#zbyFV_@czR~JbH);cvJ*THlk(H;HH%->?^jthX9m|jWCqfE;iDZhnyuez zwpTN9btlE+PvLz}8VBA!lW9}Nz%e>Ln$X9OkD($LJJoAsw~AK@KV2V)7X?GQ^1Kl< zusspa`fwE>rjp4G+t`aXjOu&z5vRH&?q)v{o!_2!UG-#^{=vP=$9{RBw-5M$Jd2kf zK^!vH9lM)yfF8bMsJGg7UHiCT*7eBf`ORMsnnqsSY85V7qs!pH=ORCisyNVQVP3=< z{q~=%?NH_SfJ&5O%LNe^fwwNCWBo(WCzLE|UJeMZCR)xsf=&}09Cp}1DTyL!w{O)S z-oJ_AC)Nr|y7s!j1$#`esKnFt$j#SmJS})ZU$E7>^>PZ~*@i>koC;wF4}EjTY}i}> zgB|TAg99HkD}C$=h`BW#r>G^7hIm@`>cr3PvVI~zyEi^^-#REkKf6`iQW{?m+*TjA zf4})tW$&~V9-C9nMSi=rzSS-8Rd?m(*^fdCJxdY~^m4nbeYM}9b>CM#s}?fzhou!i z)7cegkd(c=`$E<2rIS3P!M=qYb%v+v9yaSG1-0bszr5lm3SjGGoi~Yxhu>Y(pI0yV>V4{W{5+B9iy8dhw~toVtf@YZy4LTMEBgHuTktE)ZvFL%XVzmj~(Wk|va>Y`W97c$4FD&+QEI`@>MAGAs1 z!0RM#Sbf^>_XCGc`+?A%N0^=T;pGd;yJ<+KT-XtRzTc7bgEl++ihZ{ptsR6OoNVG0 zuLX4QMfBNky82k7d8ySds$qfm(sSFS<9{rH=y7`u865b$i!mrOA$_SLAAYG_z+Bat z?HEdL1O1%Ii8ciB*DQby_E3O(2zdq`4UT4siC2TtsvdP9h63#D=60VSp^6lfzO3?oRiMD=5p)Dz{SHhpkA=be|yC9V5qVatDnh6){o)nLMy5epGeS>g6)h+o6 zmU*FP?ZsT`g-IL6lW3F1fsf~14PWB%!&61^!&8BVS4yX}F@fFfpVG$FMDQ)T1{QM? z62?O20K!tzrq~)Lc=f6pBPNYR+t->ncUJu9y(wbagGL`M3HucOA!Lye=Z{vX#Tq^b16J!cP3XE zVK+my=-z~-<`9}&V*F=JfRw&8uPsWojD>?5lQ~s19~Mo zDz(F}#H*#9&rP2z{d@1eTa#}WUfeAA8trG$Fs4pA-^IScIa}wkUS*o#zRhqpv}y!N zg5T}B;s#5$>+B`XzLR_H`*K`5-*d^n10P@Q9dwM?Rx zP0g!eAAv?BOp<(Or(@Y;`H}0><0@m8RvmsLo$tQo!~>IIu3cYOdD<@6yU;}@pMEpT zf8(NT(@!7YPdw_(lg@Vz>3gT`>EMc-?QKHST{O|MS@M2=O@XaJz}RUKOo6r{Hea(FJxE()n|!b|3TiG*(Qkx_|X@eHSz7e5Vqj#{K+8 z7Uf!X&xvPm=t}4NWMz(9HeX}dnDjGR3TaJ1gBT`B`DSl+S9R&rvV1`A;QoHJi80do z?$h7P9Zj#|Q@R@8do;)3zI49Zlcx6DDql}W>m`l-LvO?n&pn6qS$jt8xxi*`iQ?vxhdJ3P38q%f}6iVj2B? z=$j8j9#JplNdMk(Ye_f0eW_8e%v-dgZWejc`LoqetgqNeH9pH&6O*Jfv`jkR)nM(Y z!)7Xdvg=~fw)W|cN#{EcD@gF(y}CMJ=AGgb^g}ZB=N-^?i&A7eF)hJGbC%ow%hJDh ztWzl6*!m@`+8fF2{@VS5bpGrBujJGa?j^SMUDbg%Id7%&eWNDvhc#k;)*n22P`sXt zBx92H_0qt2>uYpwdBhfP%|7c6c9<|p^6h;TZy&$*;?eb|<8-(QM-!y;efO&gIjUL} zLf*M2k8Df}rSn~xdn+e~-Er(6RUfALN%y&Q{@m#cU1PRRr>Nbf%|zlf;U)+q$@~3o z+~<#aQW|AZ?}?2Hj*pYhcLuYH#`cMK&5mnbn-iD(P&(gpWZL`4$h31O<>{FlC#{ef zA6-XP&Rn{ta+$&N!x679a8smz?-RP=v%AwvK_yosZhqq3oM`fqi=@^Ww@WZ7c4#VyQCucfTUxTcV8?WjyTbKJy6BXopEc|D5eF=kc|# zU+_BLs?l;T=Zti|clo9>Rqjd;UhEh$|GQ`5VCnohw#|*(6Ths@_j?j+zS=ZHI)9$o zp%Wj~BeDMPf=|0?$IFz@W$Y>;*6z2c^vT2-`nxV|mj1odO;EdTn;R@6hV(rBaeB6N zzJJZy^4M-mO`PU@&aLxXwpcoU-mYE2AVRWrbCF`X$>dM$HQ|WiJKbwxEsO&`Rxo^SD%VxQG} z;x})QX3gD-&a{xUzaYw-__GS7EG|H(0LeUq3N^vl1%<(x98h?g{BVwW;U#x zS-Mvyf0*|~w=thyo~<9z-ah2ZFzI~X+)?wabBEPknY{1I+WD?B>l@!4Xt|4dUnfIG zmebxp?#sO2H{{4wpXavTqc*+qE|%X=BaPqZn@w=_iH4cIg;V7Zad*#`$!|SBKrwS@ z_v5>5JZ6rFnkADT-1KmoZ~uUH8~uZ{Z2>a#yU(D@0qv#ECiU+QoIT<;>Z|ncy<6^V zTYk;z=EqWlg1T2l9y0k^iw#Yk-<;4|fBE#J;#5bO{B1AL_zhR1HeS5>x?y^^bu#&z zmAmMTxm2#5uFIU^{Q_T0lH1>Vr2%4e%RHjn^qsGtwb;vyZ(jUwBbz?EtD2TPNa*!$ zk<9$*wXnS|cCVvba{K|G9BGyj&YNLLSXZ9a4wQE^M`{-egiK zlRx&h>s&5U*(f;3U0*6M!=G+ly3oca(l{$T&z;cRVFOMNV3NFl?sYY}_#1v4wo@2w z?SzHiGWogt{y5zDEZBH4*J;#7^-P)kfaK@$T^`@ZBTAIbZ+T8;d19UP|Y?exJ?1H*Z`^ z+atExGQA@*>kn7w;H%EgZM!vBhBnQ0oFOy+xc0oRfelb&gJ{z)Pkpl&NaLSj8GrvuCSS_lT_)dqh8(@%z+3yP zF_T;RgvhL)WHe221QPypxSexg{{~>+UkLW}@xZp<3GC?g*{QhCKidwU{{rAmFq&!1 zM3@bX3PvF#lM&DGr-w0|7(9kPgTrX03+biwJYb)13as;4z&8ILu*}Z^cKOj@S8hpz z5d~6#4L>=mz>mHJK~w?YPcItC1T29sJq_SVFNbN#6vq(|dlb}QlH&;cGy4C;h5`3m z2J7C*P*lIVcnoBB#2)u)32*Xn4LYb>r4GE!)4(0kW=!-8;sWo(B)*C!6yhfMB*XAs zgq};eIsO3fON?I;J^ZQ;04L%`$0yYD@(J+?_gm;44jf&Q{qw`}J4(t=ibIV5`tOxr zBw|HGj16?kB*_?jy}LVXjC{AjJp3+*GJ{`{QTSB@0HO(*xGnl*fU8|-kWYB%4}Lje z`5peN$}esYCaEN_{DdFl@jT+Tx9BA(|r0uR3mW)fFy3Vwxjh!$pew)jH{d~x&%xUj>AJ2gBs&?6-B z2S2uu4*P$a4rzW8E%@;wN!o+pf6(W6cm_5Ozd}0f@f$yW^ah|!C~*ABo#N%goe=Kh z5lnn8@fmy2L{%3=a+Q2@!Lc0Dq)|zo!3p(?O`9i}42kQ5Z+AQCC2A-DnS0w&0-@ELJGfcL}+K4S+uWJDy0Vjl&%uX0_@4=!)_FvQrXsR zNzdy<$*g$zRXpB;I1&(sZDa$#NF~Te(?X;CJR*%8JVIc+8o*9~jbQ(lY7c7(J^xI5 zFr>;thQ;qf#O=_rP8`pJKZEUI4Zn~QVnzN6<=jS zix8N8Z=EPEpSa$|>k@Il5w{D(s0%+};)(ioUIY(|^-EVmW>LQ0VTC;J3nC<0b8u;7JwUPpaTk(B$N<$rMzSmH0>YApWF z8^*)G^4y3kVuD{G|4+d)e*A#rn}`M&MGLGwWcc1vLdQSD_u_smE(w_q_%3{Zi2a2l55MOg zOLhSl4)y)F(VggdtRPk^HJ_S7QD+r_6aO6G z_b(cF{j&r<|9&P9Xl4>I0Wp^J{{0^F*D(O$-rb$)1kUrxdv`*@(9C49qL~^%uHXdZ z2(5H~T!O%&L+L>hkQ^8TtA;{qJn-LFAy){r1H^IwGA1qymlQCBK=Odl8bF)@iLXLq zAe%rK5|4#Rz)OD;kZriLFp=ke&TsncuV4v4B!Ns;80%MF4{d>u!e(01PrVLuMbQL+ zCIs+c2=ptE@jQwC&LXNuLH^uLUzWba)NgM_(m+Fxp-@u!QMmpNCeq)*fc{QaXZkyo z7>U0N;CtWJmgGMPz|+Cv3A_{}P*og7R9l-2E1}cCq)yJ~a>=j~Y6B)sNxl+lZT%xW zbt)NFM76ZYFo*>J22FkZ{ZQv}%%O;cFl=PE7y8DPoRLo>5Q>s$QaL;^#4-4A;gA*U z2db9^)f#wz!+NMMnSXQ54HsQ{MZtoU&T-&6xnssW-wO4)s<0Kf4r>+gnqtA|`EyNb zG{zuiG})&rF(3ZKKGG8URE6^!g{=lYe->>JI4?!GPqtXAEhv$n#CvMzhz#yQ^_I}g zo59>4;ak5Wd0caTOycZ%pra?6D33hs^~BFNWq6k|JO8-H&*>^TrXFr*?om@@X^h$Oz(_#J@5gzjSb#V`3?4D3 zf-uhugogVP)aDr{(MwMx&)H@@cr8T~O zz2e%!ef!&2nj^~}ehSX`Gh13&5H@Xtugm44UWdNq1!k?GzBzgGS^q0Jk~)#WfwzAT%^R0t zoit!sI2SiOq9Kt?t)GueOmE-iT8*#UsBml&fZF~I`)wkcaDN`Y<0QhB& zuEIUM{Cz?eMFD|D2!J{IFmeNDWZyx+ZhOmV?p#{@Q{StLt>qSX|Mo1*{@x2RpYU{* zG#R1U`z9>f=MwZ~^G7fQ0u(U4wBDy~B7Yb=(Q0|_ey@i59 z=19we<9+tq@)o==I~00*r|*cZ3zqhY>!42t2TmVN%|Z#%mlQ$Jmoy8^Mf6VQB3jQE z-)IVooG>nsvqKwML(o^bV86uq^<`}l(wEnx0R7j4!G56Z`zC?0FO(rw&+?djLG ztLN*@pmo_&yZ*MV$DFa(7YP7%xa*Av8zQOaE?W>DU z4w~88WC#?UC&HJ3WSKo_?-7@@l6hnNoGzbz<#;!u+~L@q%L7stHy3X>#~Lf)0T~?l z8t!o}M-$dhYB<3IsWyMcls+?$e(qxS5l|yTOHat<{@DNHDkZm6t=@AsP5D*$3 z>=DEb_wfn{^8xpP1xyZR|YVZ!$Lw>0uLFr;kz$DES)HP^xh6}>6gV5vz1F-m}; zDW0AiKDpRt*4?7DJ5Rl~;_A`Xlg=5ZYUEemqcv>mc5ZD~(1Sq2*KN``@Ud;==d7>4 zZI1`u2`pt~{4X@k0AXkXxxAFjlg0fc3y)ve2PeIuZJV z?{v)p80lv;QFM|0HXqFhYM5XJ@(9C}5AicXsv_qO0+#v`{u|@t$)2hEFk|Z)wfj#l zH=_t;g^2&U*$?jO9%dar<(X%Xz3&%=O6#Ox5;~-D;B@pX@T|bc*f7x;JBEtTIvrz2 z0BoJuF*%6rm~?o1xvQrY{53nKF$46j8$a$-GI~(W0p*&P{s^T|)K1M?p3Nz^ch6d7 z!$2(q;pv95F{hS4Z%u5QJ?QF@MdLEjgA)3rap3*yTys+cq^|}0>o#k8|06bQV+>Mu zA79qUdf<_r(bhD31VS;vX+)5Qnt@)gDTl}I8?d_q(^HE$r9M%+;%!{$*#g#WMfY^P2dLbi{ zp}}aS#8WgVdEob^@`ZAya)m5?u!AOh_U~+mYb%O~hbUD1%?Nl19{*0fm&U+u+MUH? zaakOo-QUapO-jHC-D1(rO7a1#IzAWgSmD-BZRhS6#j z-sO6C>vzlgQ#=(eD@n9o^&DR{A<@7p>Ba-4qqT<-ia>PmlV&J?*g%#2hW3?~tEujl zuB1M?_8fI#hFS2t#a0{Mll%o7md1haAyCy@F8CUGp=gb~0>tm@bf2VM-$nuZr0CA~ zNmLZyBvF8>7T6|5g+bqCp}vt^J8&$pAi&EXtd$EB-Ht9V=XD)0>3p17D2Gxiq4SXO zePeC6pdH4Wjn&EqRskOmcfj%+rb*@b<)`*r^?Oa-xSsy{T=LwuqT~KXZtVJ!7olk? zVcRhLDY#CS!GW*EPm!iRkRjcBA>YLojT{t+v8a5ggi4P?u(5rpQmVHo9q85KduyYMzR)@ z!GZJazn}krL)BFu6&1>c=q!3X?ri&rGK2!ea(FsKD{Q&irR;#e&GWZ4&IyM$74Gxi zeP_AyvEGmK6(`KtD%lgs;J|r0CT&0}+&}mc`-cxG64$xpe!|c955%5m5U(f2`uW^R zl2#UNikLg(v7VWJy@ws^Mj^$QIE1MS+8UJ|ik z;6=ORJ@Q^^Wto%OR~iQ{&p5a$t`Fqj3T!J*RmCP6qRZ^e7o%%067CqAGn^P5?ijBbCmdP$Fh>KrVZL1opF=3OMeRFpP;76H%kA6PzQI#Ir1o32p{eldDO2SE+7Vg?kKQRC zBekzI4!kel8Q$pd+k0MzpSLg3iBXHuY0xTY{3S{bNq5PshDc|!Mr5A-C>3=8nfv07>r0{*5&{F}bh zuI_DN??|2CJ8ch6Jz+?XLf#Vkq;cSVxgf0S8{psHJ5#a1sgpfZ;k`XHks#<#&Qx+u z>JIGAt(tvVO|GtAK_HN=u|#dOyhnel^@@r`Dm;ruwcyG#`P*;QpIx*q?V87|l2+}) zc(_v~*GeVgvst=X79u@rqhvWd_>4G}3#$W9@cjQE0{#EnDzTM}8BO$Rb}GA6Ax=SqT7@=)JPy5_MneUZ zd~n(=kXs^`4|d#DK$o9J6HpN*#u&|D$z?DfC@yE7RrF=wXyi_ulF zg8qg5m|e`?!(PJHajUchPT8tm`?rV*iG1i+Xfd>ptzu>fnMxFVL45O77(tOL@8(rJ3=oqLco8{lmSwEG1J!GB#i+7`c z^!L8P4fpph@q4#EVeD18xK@VU<+|IzjdaP^vp;8hmdX)tF`5%uC&#i^T{X_ryS(f3ikTHtz75*CI(LRqdEBFe`>HEWI5!`n z)QKbxR44yaI`GAH@;{{uaDHUOt9xDZmE*3R@*7YOlo!)RlIw2Q6IO5PaZ4`05!-7=j9hRJv2N7NO@Sw^A}9*<5|_Iw-#;5@X55Y0HsuTgd`pl z3yNcvxAxED31<&CbaWf)jnSB7S#74}%zgD!^J`v*n;i}&m|og!<&YjT^-RsFGoza8 z{Bs|O=Wr<;Xx^&nW_^rUqirVEXj_=rXqjs?n^?>E86aoBzeXeUBw$&xJF^28j-zK_dQj> zjC17KmF;?rDO1j?uDoc!b3vr$+}GtdR>u#iNX!XZuG(y%m6@HhzT?i$CVN(7+AV$G z!@W8FOx9{X_oiGz*V@pjJ_{T(iVr`#@bJ-ElSQ-M8!znp;p@*1D-5-MrmsKFW4AB5 z=XjafV}aiU_4UvBH#Djvd&REkEV`MJJ8@36exc@Bw{qX4o6CB zi2KUCFQxkqkJ$L*vhoM#PpOd~F&el+Lay_d=L>H)7^I~>J~~HB%Q3#7rewx!kIGp? zQj$XkrTM0aX@wLH)K?tjT}+7jA?~E>z@7AIV3%1;KOYWHc+|62@Ox96RzRaGR%bVG#t(ihd{wl0 z6R4)Usd)uGLcK%wH|Y&unc#%I3{q;RELak`s*jc_mR~=#f7)Ut*%$TVHF+#HSmRP$ zQn6#~kca+RN$Wv%^q|r19zP5DL@0Z%e3?44;fMvd$>U_)Cc|5Ea98dV1@4ifLy22+ zsas@m8%b)H1NW=snX#mHIo5}>hu+HVf4+@3_vZYCU2FLuA)*gU;XrNV8=>_Bwoz++ z!?M<)kh8Pxbturk)pBN#HE8SpKfAw?JQ=`f<>Z=0(h`W|$pD33Nt`Z#tO6dl|GYDU z`JYaX{Gifp?}*PE2XAw40JM7Y{M;@?_Z7zh@5|9}n6Z+@r%)@-OEpd>mZFVsyj`0+~vEC`_ed zd*IXdZPdOTmil#6Fk)N-SjGK&e)T7(Ya@2$A3Y&BFWh9Ui_u79sn{nQxnk`N`aiDh z?EU%s`Ew`sR2htHcUeG>7=3TzMcSGRVj3ic1NHC!Ts?&Id3&x7)6)4Cm1wzcQl!Tu zjJB5S2R8#%4=hYwqPagzbN>EI4VId-Z+NccxBrYQq!wy-X4z2cL=p$;2YzY87_c7* z`GhSXA+YV_E6dh{oa@ARoescu9PA54WMBA)y$vyG>w<0pPpcuNVz8KWes_G7k|OZ9 z0I4&-kjQYKs9>d42qi{8Fb@Z>Tu6mc5G0(8&T~`BQe!JSte9~2*3^c(PZ}paDviIT zf#Sinz7!5Hm$PXz#sztTI*Gp($AEJ=?-uO}8+)o~Y!NnV4W`Af@V@OfW_H83FN$9; zWfxfa=np#eR(bbU_Qk1j-8%&;8MYf)p~ClAJ@HaC5?Xmrhfzp-*YNeM$ijC8CqRM+_#OS?xFV8FF>CL%2qx@%1 z=mWmM(oXa1nOD{CwT7FlemdVX<4)OX1N-Q?UVxXEQs-|S=XNT0QLZgrw<+kxD;01C zLaq-EU!L@>S9j-G%Id~82~VC2e3P-4vojS+8{V&f)Bc&uX>mWCCyC=fd~D7uSfC)k z;L&)))t5`&+!%2hqum7k6uM51?P#oPr;n{)+dU;yYeL%I?L{e1EsbYyv(8Xy%)Mg5 zN3l>pl*EDRWJcQKr@ucR!%bb=^D%!QVAq5eSB&xI?+GWj|IU1T5akX2&;gHFkxG%u zIMsR}0g$K~raDd)S2a{s1Ad`O8Gxm$@Kpj-yi{yexGEf#TII^$;PxkY{Utg5|B26^ z&k5i_eF1Ir=%;gpa#>1L9s_frH&9IpQ>s-IDpn{86mu1`6jOo5z%WG~kXXPK&4JE9 zHJ~-H7ToRsF1JA~;2!`w4cJ^Z*ov`h<%B?2fj}-7Xe&sSh{Ndcn-&{45CB|M z&DcbEd^ek<(F7F3c<7}iy|6z^Z!8W!hu;u7*46N#5CEK4RbP}|*ss$I{oC}21#U;& zpGXc{)>RRu7y9e;LjE?rC2t_pnkw#2ruS`c?J`)OA-_&9_;1teiV{@B9mw=%=)Fei z1^+s|pubIzC|^4qOgG4dJ*`CP1^qg`S+de2mPc|x{zRV6-^btA%DSF`~7rauU56{&s?kJf&7(5b260|&PDyScUYySlda4;awe@8Z(h@9f;#kK?WVPCzRP zHGN0N)_w;t2&m!qK)V*zZ)exq-@iZAuSjQu1AtcjVLN|2^?P6~t9AG`{aFhLiBY$J7@N|B< z$WM%3HH<434`l)vd7U5yC${W>?_47OJ{frSQs7p^J8B9}8*m8Hkpb6~0VkXBeB&&Qj&oU$H8^(ibZ|bx2jmXg-$dz|{JMO-|292B&Y>$#P9T_Id}1UlU+-V1XZ&aB4a8w_ z;5P&xqdr~)0l*1AG^6qv|2jRRKTA*CUkHXPeY}K74v-*56fB?7uhZ-GXX*Ll5Iy{c z(2Ld?CkZ+B(SVE6>-FpO4F4=Warub!^zlNN0pPwVen;cM@Ym_}{M+=1a~wUKT-4(+QF;`5MwCw(7tJ@<%e$cTy8k*oy+2BiLeGft z*Ao}b%W+pPhQj*P`*nKV{x&^=zVyPMllAG$Z480wb(2VsSlA$XtplRU8I$pehc2?` z1Yy0=sD>L=Z9?`Iz(jL$t4~OeXg#Av`tda{_Q3OeayilR2_L<+q|cH}U!-@$5^x|k|J41X^eFU=Sg&=)$qgOG?=%;sr~B*ly8LZ=MEN@7F=RQobO^;Y#XyBrKk#MRfN>8*uB(oveUpoI; zdj2@X1HU2aQvnyz(-)^4QF@(!UA|6#mY#UMMx@8Z$pa_ME?FC;C)zi{d_l)Uzb*Y! z>yOf-%=g6lPzM+7JFj2VMCob$x_p{{n;x;B=#C#m`3LLlkouXhzi9qCy^epB9^W5_ z=;1d+ed^)lK`C}F<~2&MqeOb+;0NIR0nE$bKdl2bJyJ#k%O!C5wi$a2iieK+BR7umwyUa0Xz=?q3$z z`wQiG!0Mln!3EmsaAl0n1^a&?*!v5ae1?FLrNm`(nLIj=Eu`_mDFCj-1={d1U<;7T z5Q01WEJd8oXY;`gzK|u5!xe>WoXG`u_(Gs9AWMM{P9%6N9BAOffUQ416XytkMnAqh z7ij3q0`~s0SUg4+8wWS;7_j&!;0Wm$I}7Lq-~%l-JWdu{n9@7LYC$Bx@M=-73gDU9Cj$mJC! z{CVBmRreFtt;t)lB=y-RRZ0A(I_T8OKUmP`;h=3Nyk_4cubIW)mn6K}zROy-bJXi# zT)7~SJVq0T7pnJ^v)kSDT7$K=K+DQ-sU&_u)A7l#xMzEH-!`ILxoRSLPALBVq)Xh= z?Vmy`K37gLQ=hpMX^J3JMH`LvUnRNO5!i{YMT3V&5NNG zH(aa?(}Ys#3(^^HPIDZ8mRME>&l`PYxa9Xo?|yM!bj3QzVR`Xg?fsXCU_dHF_9M^J z&gs6{B0p(*=!o9yUJjM2zY`~LhaD5nOkFf&uFb4lPEy|&+vOMNy&d0;)A%fLsqM?x zlIfphTYj5myg1V6>;3X;?~GPThL`B*hXwjfU4L`r^IOLhCIm@_7i!g=xjVRM`22|j z;;%hiE!F=|IyEk`bGWc|&gd7M`%iaEwcqK^-3q1;-e_rIP2cl8c3g5i#oS|{-_*O4)0}GwF zevhS;Ot}30U6;?1KQYs<^Lk5$pK$RzwWxPWJE!PHCJW^jNR8i;o)`UaUE`EnLpv>+ z9i1m#e|kR;E^Rm0wX*X7Zr<5mURrhfL5{JyN- z;`-yfP4g1!KR+*6+Ba1)yfpMmIT)TjW`1q72vM&ik0ZtTKf7h%kO6U7`<7q3pn32> zb$7|{&vw#_lgkcDXtt^zX5o2%5P(yd=V z9-pFR6d4kGVDXZ0@_ta9zhV^wdrRY?sgAvkKUWJ5O_2Ql!WMS(eOrT$F@b@dPsDnB zlng&_<7g zv?i@gg~pze-8lFIz+U@0N{!!R=G>wQ zbyr_qNqBJMTt7YX9z~pfX|?XVd+*|+$87VSJ#$I*K1uu+nmUia`NMwMzzIQ5vivj# zN`?y@YVM!sCT0}BUH`WIwVln9;b)@dx=e5AuttjQyNCHWme%bO6%Cz7Mal5<)ep^8cHHUzY+2&*xgiEpL5A|CZ89&z9HVKVE!jBcoRZ_-Gq@T2)W;g7LlBfCEwmOk0*y=3^w zPQ#5N^v4OGhNj(E@o8$ZWcZ2p!XAEhx;j^{4P5ZD_>vTTI?-;%lpcO7->Ex1UNg!5 zq*VVd*@dN5tGL%xM>f5`yrrgI5`W3+PPZqoDeHtA2N^}^)l8EL?=vLGXikIMobb+r zVtAk2B*TlXPEKCe=jnczb@#T|o_!}ZKOEoJSJ&ESzIBf2{d>0AQR$N3AK&Hl;Plts zv-i2YPLMlvfjkNn_s`>tu5`AlKXq7tbXw@BZXKk?*YVJ6#)~XwbxC?LQ23^UrGgax zSr&0CoyxDKw!gpEc`-tvg0IU6SLGjE^%up*i~1{as_=*)yKYk)4+?zU>9ug~CxOMO4+>6q!J zJw3O7*BZZAM}fR9pnPx9`}~A{{T|ygmo;`C+=;v{p@jE1y3l0gG9fSE+BK(;DZ3@{ z7ruhQ4FE=VFcVNX+CwZMh%g5^x%E-Zh%6A5Gk~B`3rSao*NaKLe~8o`b zAn}1jzFqz{-^4wmVN1TzJ@unLcomtRDBq)H zJ{FVTi|S8w;>9K4G<1%89VgqLfjhTK55p3Xza>AoWPUtajo5!4uOz|5MET*66-17B zT0S*>AjL}9%dB(4sc`VlNB)+4IZ5X0Pw9xPd~s1a7?DemA3|4^Ixaf-A%Zb1rgeTC zCG!Kddy{1ZG5@iiMBPTJp0ud>!P?^@J~B~0B>KI>-}ZYEKG8jt$S-;l#u-tI(!U})$|fmBYx)4J?nr#XNB)-a zYA;Er{*-RUlK4gIolm5nOFoH*BThUyE%&dYU_N?j$&cN?nx6$EVj20Nq4|X4h7-{^ zxE&c^^pK#R{r{GJKAi_wI2~Ko4Fo@yAx>`C$oT@p9*Yu|c#0-~FC@HmyVg392kR|g zN#wiV-{xC{@NfI0sNNge%r_G!H$dox$n$3b34S4v*-vNLvT}e_gBCLkl+_TNV5HOGSw|%eS_)K? z%c9tISyG#v_09b7!5emRofJZ9Ct$R9Br!;@WFETkY0|bSE1gr*y_Zg!TXws7jPB^? zZ_}EK2Y(B8EC=UjOvARAr}kaU;%%G{Tp+^C^aSE8#O%u zC}}bA3Jd~fcYz}fI~fI<$t@Oqi>8^X@9??2!Q@u7|EsPEBYN*DB1!l>Mm2q3-_5ilg~3DWu0p z3deuA4#LHsqKo^!?-H;usr+nNlUFiEyG0UTNnPK=6H^j!PffuQ{)^8Qw-%^Jit9uY z2kI}c8J)KLw!YvqNNb3cjT~aXsfh<=x$cXGj7S85;8&={yb!NjcC-P#@l>{#X4&hf!D&lx`ny;Vh^#$bQ{2VF(}qj3z_ ze`15!gjKUCBao7!Q2~J=+>t)PbAbUYkwU$kIl(}oUQ!TU{?YzggP@Z|_btMvR%Y7_ zQ>FC#CH)`eIMN3%FE$vn-PXW1HLn3!`r;M30QviyI$jTdkFsk!l9`iu>qGYum{ zw1CcUcd|_LRyA6fTU+)O98Z5f`MCboZFk>?$E<8VQ}DgN0e$gW+J14rmBfL@a`02b zD%i$Vq|Waupz~Wpb{n%|<>SZP{lWxyIaJ+bGVN+2-DKjnMaDH-sVL*l3i1mK!Bn~U z;(N;Nh3nn5Kl|BSUf^G7bB()dnfLurZC|UUU}0?7QjUa=g4&y_%nX9-ozG?Ee43vP9tz43*rLBX4A79~?S&$s4&&Iyo>1J%XxxYetn&gAi^ zw+AetV|B7^LV?W((EKBzGx_X=$>KJJsmWo*{nEmC32oS-On5ca-!1p&_-?iW&0^PE zav1F@17#4~?P8L>FY}sd&Vb&N-|wHEBtKg%?XjBGy>Dt-Qxfs8RB=C*!h!m!SvjlQ zZ}-#DZTC|`H%KQu!m7X7P;r_5ffg<6hI@Vd@Vp{u=i1AjyLCT-Ax+RQ%yqv-@`Z6v z&9S6Dd%e@0Vo*F9J?zUVrz-|MSKfB^e@ajjT^BJmp=6VN41_0_45jM>)JbW(KJ0LJD z%+HrQAl%OfvT-PJYw5@Bm_>7EJn64>#M0*GjQu^1>J=0}IJ1CG?W;@H($kD%clq49 zIxXAnVXPxYBbAh3tI8}V#0)9(dZ{4y!}sX*3r3UItckoE%-hhx;nS`$Np<2jmcoJB zxX;qG`rmG2z_|eWs?>Z#>{GPyc_RaHo8NBZglFAL4|e;qfVFRX+STl#AsDTc=(gBt ziTnIzM)OrJsmY}XOb#@JeF!h{Me*Q#BZUL$_q^wxcpr{GZ({sKK|8RrG-1M_qR3G5 z&;d6_@RSA0mjWJNng(c55ESAU4W<-ZdT~hyZGn<4&%ZIgv^|A}oEYzu?%Y>1d}6O? zMT@!t7)^9{lGW(5;modi->+BB49E{WyS#(FQ*~sPiQ&Fe)l+!d^M%Bj11f_g4pfG9 z1=laZewrFg*g8q=!NBU6vUHYrsAc>R*@U!j(fIwzS{G3PpIqlTI@8}z?09_oK#C+L`lO#QNObq@5)dcnR2SM*w#CeYcYg!-T&Mx)VS z!9qh(TY+9^XL7!sZU?2SC-1E{uZ47nQl1%BlMbd7%&DIDV%2oVKC3XA5QIawPIsJw zb5P93v>x#x#a%NSY=cABP1^r7p?UwE`*C}`n{rSrR31qjsJ#xV^e%yYQOMtjN+evu z#BRySu;;;|YrXk_MwJ4gXA6pY+xVd!8&ohtP&$aUJ*>SphIOj-4q>XR<$;_k2)us+Gr0nGu z4`@)EzGlKTLl4H|{bOzZmt#4or!}%is)WRe%hlp>$ zTKcjah=M8tXxMbbk!aMs0c|MSROSlleU31+g|;6mbBpWE@j15+A4^)7LR)`yV4B=0 zh$at}7XCo{e_Bka|33ljiiZLXf0Mv|I7r!0IgDk@3Q*El;wn}ts40}oGvx(9CjTwC zs}EDjREbydSJ9UntWwJ~RhcQLuJTp+Pi+8fX0~MoK#eKO4uGS=Tb78wp0U*3@IcfM-)_p=`Lv|5!5 zY8SJNcb6v|3mDmr74USMj&CbX)MIfKipglo_?*Y^Da@a;?)$B<&h`(u)A9Hg{{Gs`0*9n`Dlxr3sfyQAQ9F(3tzjf?Ua@lFmlj{q$ z=#up%t{*8J|JM4MM7D!C&+8u<%;w)Z5^{aZz||S_YHN(PlFakZLq+v8ZSUyM7ISpI z9)4m!p6wiE?)@b|+w96#`dh0Iah|1c{9E%(8KM76ZMvagK!=6l+1r-nr8w>1cnsJd zi6rZUeKg-_^PrTnMfPJBBuz0jRw?^9c+IC=rKzr+->jcFx=~ywQaI3_!`bhADbdfx zcJ4*?N0J`SfBWI)r_Tn9QdXr6J>qL_y=TQ-?G6eTb?(m`dU%8L)nTOmd_=TDqOOcb z`t!+dJ_-=6M9|Hbtu)5k)oj-q+GT_HM9YxP?_x6S!uviyS2g?-AX<#DtLJOWHXH5Q zpKv&U?y@{3+wwQwWYYL9bH<5slaP4z=DQfpi>wn@gACn^9zDI5wwq`1)m+u% zkvaEEsVR+T*>sdF|`>A!#pG?%mrgWc!X^;pP*se?VYY&d<7A;?y-%-fl$5f4Zp$u$^iTGF`{YrN^Wa?PZ{tbV(k{(ax{&5g! zLZh)SC~3hmB*qYQH!+rhon^^d(JF%LEk&kU0G#pLnEyo!Sj&#MFQyMvZu2+Ep_MED zMEXpa8~DfOhOO3i0{zNsQD9J$IWOw?e$ZoHizt_uqf+*ys$Sa4|xoNa89{@E_( zV;T|~FZ({5T0N&-VWzubqi5iYsy#t5-=>S#a#A=@|NGCgCm^|c#b}~?-peWjKD3Wt zyy`$k`@(l&ubm`Uz~VCzDI5gN&dHe%`>~L;k0m?@&u3+=@8wj%W)rl4B4vFa^y~FK zlR+nxSnJ`Y{9zijcHr|dAra8treAmwVmtFj@&5BEYGf&r30lpYzV2gY$(<7#!u1Lbj|>D) zaB$=|Js`v{1cY@5e!Jy@PuOBOU0K z{I!V2SB?Q^ZL;=_%+TQY@u*)>Y*olS4|W6u5>iA49obm}_gkT}LW6vK{X&96K{fb+ zd_ju@&UVcDh8N0~J`4p*)i>ua>joz$zx~$Xl3{rb_?S`$>jPuPxu@HDS@{ofj^Dt+ zXk8&a29CRMheo&f`u9$&_GN5M#4bPAzgLw%-td5Bw~d4IY{vKIqgbdfN#a0rgwEOb z?r?1J!^pL{0|RV&Wt~O^0c>rr&G}2RYnP<(5%BhfXk#fH zsC=qXikh%|HT)dZ#x+e$EREf@?L9F&JR;uh+Z!4ko~a4|-ru;}w1gMkpt0e)19n`t z9H1urfqXAD72um59u+b@U@kZKOi4sgAO>!D)E4gzQPbM*Tu>6rT)iw}+2n!FHFzf$D|#bKa2OZ}+JHn~ZiJNVdBko+GU8-064P zomh{;3_|^XL)qr4Zvp>*wQ?$ZD7y}5>8n&sQ><6W2e;?h@)|(HpD`y(1)~e;wX86C zWBCAvK4UafjX8;<#cBH-z>y)c1}MjnWe;!-V};TYy4WUQTjv3ljIoO169GNO3x!Jx za~KB|)+o$TxW$~HV8nr^0$1s+&jsoj|9mnqfzj64Kp2z9g!2F9OfD!N#;gDu3vwA* zj8q1n5ys#F4Fwgyv@`JU)aMWP|Fuj}%3grm!JNSbJPH`27RWxRk#-GuK+8fFqkGbJ z+M_YErf;N8Go95TFe&EX35w0G_OrjFu#R-D+19MTu$}9V0zedD(}MxSR8yggY1{*j zT3zOypxTwDCl8ODP^blH96T&)!+mLN(i~xz`5kLKIKVN9^Il8?q;R11L-U(xSJ>Cz z^7kMb@Rr5GZpps;Gl_MJFMa(U9uocm9YA(9hxfzP00{tjChmA~Cww%}K#5_l;Xcy? z{6gkMg%CElNCt=gFHLL~pWYBno8o%5-hX+<&^hPIe|p-^d{#%Pmj@n&^K&nAil=NY z;BIKwAESLE_c%XinRRu}ZAvgxny^b@;Fj#_gxlE)#llO&LiS`UC>yX>qPl}L;DIC# zH2q%ZUQCYu@;G!N9DF&TO zvmB0hz@bMG!};4jrS{W`9+6XucjP`EJZE;FE0HO-UZ9P|Wv%KwcxRuo6J8gcdUbr} zq3wdv&XQ%F@^R~gBBxi}((9c@b~8%ey8MWL$7Aw42dpu$vu&=AtP-!MrEs7=Fm4t5 z04!@2e+%jZRXgGRudMqDhb!NI{@(f#_GKEAjuGoeJ6!08TbgOm;IaSkX%Ue#e8MCB zLb#qj;ekOxVAfYgE67LX=flRCPd4Z0DnXEVaxb<&ULZsPrt z6b@7u@wR8QetW+Jj=I{qQzLXMS>X1xlv}-id%yHx!@Et~)t4$e-B5iOwf24lM(abC zDPV5&jtJWL$3KdP>c4PQ>(@K4SbdsBTIQVY3vsKBb&JGj7*aS;U#`ve4uI_|x(c^O z->%h5%ndSl9}?-Gxzm!x^2YChScfSayz#}{T^aGjZ+&_XuW)k68fd|?e^jN zeT-&6(ofc>s*Vjm){nB>)+Hx@{6YD`$2AUj3)L=~{mkyvyVUnFA9Pk?4JCyGtrg<6 z8j;=6)@wu==LodeufJF;5W~a>e|PR}DY9uoE@wdcZLbj%#d#~X9Muu;+jrHJSw1gr zA6p9ofUU&uXJ+n)?VdQ7JmXjb?jdEKadh|q^7hYX97w>f=pZmQ2aY+&3p(mChaASu z?m%bQ3o7l*ZekRh^^JwjUw^9IZSHWucWH!4pA?KHl9?E`?|^?A_Tg~uME6y?X!6VfPyD>qpD7566~gG^)Uzy=ctB`>G&J=6w}00h8N$u&Y<2bpY8W zclD8HN~X`^4hanL4e$$uRS)Lln@d#Gw4T4cJ)`W{EZeK)Hls@RcboWLS0Q(A@{I^T z$~a3%=~lgt^<&HQ`+Y8D=b2(O8?qCBn8A89#%hB4$2YbUv{Ju33kfV9h8=va+CL@w zQ>k7?GauC(oR1qNaiDSb>fT8vtdG{?Ojau!0BkbWxh)WOZ!V>87ISG7+QYlJqF=b=AVI^pA1d<}5tU7-}*pt$8!uEB~}(uj$<`+@~EL zRw6E+Bo0)*E!`|G!}8UTyrwmP*HnX}+xA{eZn}TG_T8qYR%@_-;IR`4LewHF)HJjc z8$qzeD-BZuD>H1AUvRKr5IT`?4~_EmfjNf6y3^;bLhBC(%H4R58~d%@xX^pYtoXh) z5sN*onGO_M-8j=%d(S9OwF}OMnfk{Ax?(gxvSJras62k++G4Hbz^99K`^_lbp}Qf- zs?)n68h(m>XNHDV-xAl2Bn~itDbwyRH0cNGCP9gR2Ch$dN{lNkFo7AjT{#`pKB>~0 zm|v8>D1B9|Q~s*>RS{gpgCrE&6RaZejHf%evIoMd#KA3%rse_GWGqJG04;%Q<+~80!4i=#^g}7`Ecg8N*?t z8)Djn^{WYab}_)=TZ;Ra0cM9z_wT)cetg#Fy^k!C`|k6xD|K6FrkQp(M_gx;IMAH` zBqVho>`&$V4QNeQ9>v6}wT~74mtEK z^c6-^A;(qn%>_qJynK1h$^A=tz}T;5p+__4b?WQEFJc**`_vwLEMEIGO5#A{>Oal) zDA)p$jt+F0m(gofD^!bAvs8a!|BsW(t^l0#VSr0OO)eMMx~pZzFg=)Rj9*&@v;`9W z0%TFING?&X4Dj6N0RDn3z;BNOj{6#56@V%!(6+q)uj~dwn}M}#4kw1K1-Sdi$r;Mk z0}TRRfU}>&s$>e7sbEKM4)*ayKwcmW=oBaerx=jCKTAFl*yxj#E8uc+0DnUbkPhI2 z&2bGQom2bA768Tltwyi+vo(Tu9rCWft5w|??SRob%GgiexSLp0G<0j;*Pl7pZ4M_h z7NFLF^OO`0G;d!qxbOTu(y5m_EPM8QeZRWld`QJM!Qb#6BjNXF}C?&_SN0* z9_fK3YkV8OnzxsP#sL^N4RT7=I}7E)|~&7sby2afeXii{KD6xDEIw02|Z>d>w#!P~g;jQsF!z z4hDBM?v(h{`hm-O;99jWJmMLMz^&m>WrtfEaLE4YN`X`JLxuB*IOunPjQCVIHNFca zJ~jU&D`czuF9va)Dem77L#C#CxmySpZ<9IBzRBj7o~jA~+R4T;~EO6~A8_ z@VNkHOMz4KPlZ$QgVPJ>r0|pCn^JI6JhByhHb7vF(6q)A4q#RkI5k~(p8{MfJP=?B zf7+;jDx8O+08Ul#>_fb_!V>~u78G~@@s57Uc?rd*<_DhZ0w)Dmk^xtg0auU#mzM$O z$biFRXW*prL(ckAaB{|!f-_~{Ay=zX@#!++Q|paK#KD5W)0`4t1fLFIW^KSH0GM$b za5&fXZUYYII-@q=qX4W|8*oVbd$s|Gw7*9ia7gpIwE=elFg+P?ZX0ko*1O7p>$U-h zeOadsIPA;XZNOn&c5VZ10$`eLz+oM9Yy%Dt8L0C$kBEcnrmgu}AB49j;-G#aiq8eG zw&)(LgSO~Z7XWXI&cHIYMF${f0(IQ+fFC-zNTZG~9s~jh>wr4Gcn}C2tOM%!;z1yA zaBNY>3l9Q;gJXg^UU(1)9E8I^;9AuK923;>!hk zAGS?f@a{6;unmBd!UOBNEjX;}w%~2e`!FJve)1rIbW}RY69K`KO5dn(Dt)8Esq}|B zuTkj_6;7omR5+DBP~p^iroyT9NrhAC0~O8%Wdjb?GZjvy4^%jnK2YJ*_M*b6^nnVe z(g!M>+KyB>m2Obs)b^#qspFRlS1BY441VGLKZjGITCb9?q7QWVt0|WQt9)-2y%d!c z!xW4a#)13)p&Sm!msQ42V3)Bu>~x@OKa36J1K5VDD`~Dk#@-cZ+h+nBfC9FT@(-md zr4pshN(+=G0o?(SY-1%~wvLjL(htSAidBllfPwqksE2XOe%dbUQ@2R<^RWEtGZ<|= zIl6z!TNhdvu%-v^{Qh|P-m1vwTYF5B`ySwgaCn$+KFWKWI1q1^-{A>8;Qq0W zza8x#>#hKvagVM>d`~s(+WkWMp*MOz|I7dXukrs|(pFsVwn)rrBD%jgq=5Bw79AFV zb`rODOn<9kV}%Y4XNE8N_S{V^7o+th+xxMC-;f;z$^FXf}A|sFln5R|CdwJ}R&mN@*g#`L8RO)B<$)@k~ z_m`88J=R!py;f1!RdpH=63Fh8289GHTsx%p=*CcN#Ww6=Uc;7~6g5|187h>g){D*} z-|c6ATxv4tZDHQN*9?pXu3(Tm_sw&^uU4bh$YfS^)!?O#g2ahx!UQc?E9AR^A z2wz+;k~mPk=pLT)6`c{a;wzJRXLwBJ8PPzTFssuUpR06!DY8dM5_XV-w(ktZ?H)a) zLp?VBV$Tx6z%8+djxNM#nPmC)+2O-?X)n1sJUyo2=EoVun#{-;vmV~3=UTb<4E@A; z7SvKcDIDnR`RLCnbx?+GG8*M!JLy=pOc_oNzy)MDfec+M8BPrv&7zN~xrJ#Tv?JkQ zLpc2IxtAv%u0Uxc{V_OrWx^kkvqI8Yt{4usi?&!_%to}05=B5yL##z^3;4+m6&XWF z?t5E(AngJ732-8Siw3v=w+DY@)u9EFhe!Y5;QkR20E`w!$PeD(r0xkE*VosWI~O?M zhvoP5H1qW}Ltd)>MGp|ff@wgfgIH6$ix#>FrUkDsP#E&UAH3xayud{$IbqSrA>9%T zHv$u)rUMpKpu9H<2sWd8pCMpQ!0bx1%9$h`vYnp^nNuLI=w|UvpEy^ZWL&2%|kFSIH}fo=?5FPk3RW*0R%T z5zjVt8ThRr->gsj_z%si9)I>%-!B`-e<&Y)Beven{>*|a2N%_|SJsq%#b`=oM_M&) zTJG2EORl9#N0ur6eBq|I=ta~|N5<PG0P8HDi|U^%TQ~=57I1 zqjk5aclUq4HSjLrMxDS~+_mvtcLSw6dzc{ycF*WJwko~YuFvz(%fhG6wjL{ftPz-S zx_R&JOV3w%q@2)KR=@Ik7dNN&bU#m(HJaa5lKw=`&-X8fChlh8R|}lSeagOj8wdRK zWWAi}Go@kws5?kXBK`K)0_ zzLROZZ}xm++wmWcc1^iZJn(e7H>G@%I8gaCLVAWZ%VvZ6 zz_Qq=Nt|6pXZ$PdOcX7~7&Tqb)$DR0p<)y0P@?il;y~@^An#%V%U8$GCiWB$nb_&F zuDy9ai?Kz4x6hkhdpJDdvGcg{?Bjym*OPu+(lbi%rw3cVex~02dYNsq%61l36mMNBBKeT_^Vx?AMs2y=Nu~adoP6`r^jbrM4>_~szFD&`OF^u*W zl@-IT;?-9N8QZVzRh)P`()gA7$hWiNwH!m*Usy333%A06%iKeeIRaa*6s@HJWU#f$Lo8>!h(s> zYb+enhwq=<6rG0A){zU3*%LFjbX;}lp=J80N-FwJZ#lKr;FblS@NTOeC{QEmJE-&_VKNswraj=udEHRK4%If!-FRIZI}{W8&#e7 zEoH6!Ve(v8oWEH$N6#h395oO9VLRSeb6ctCd%|uwV6{+}i?hLcqS*+Tpj4Bi^P7mi z%%aeD)uc+BWrik^M#su5mbmu=yy?BklgCjCNe3?6ylyg~U;1uO)4gYyF77!~u9gQ6 z9@M{Z-kj&Dw@`v`{*uCh=zH3to9Glk0T{G%l{2l~IddU)9Rhi(s7wRbsN|0s9QvV&CJjH=1kKDWQE+~K)LUf07( z8!R!}cal~vY;d|^=9l%z_2B3E86_rIwDU({T(`Y><5HKt=*d48ES?jka3EUwBe3I4 zVonsFv&EO`_C~rH)NaikX-VU3&*I+E`@na9BAlK~SK2U$zA>KPzx~CflRNq_k!pt9 zo7Vvu?QAHcz37Q%(1V?U-s_v%e;u{x>9VWG`l+{5SI%5`=2?=qUE#u&CMlaeHy-}s zp81WlNO0o17FUZu_@drq#QL)p?;{v*E7&k$ZgUxcu;h?!PI=uWEVefQ{ALZ~XCZSKhn!U@S&EP455d-rU{2 z{l(xdX^RxTYN#Xbp-T$e)s{0(wExd5!m}^kn zF4ugFmP6Ks!_f;l`5Wh|VKEsR{Cn1ngWFR>)WgQybcs(aq;HwIPCPfOCZEiWGoBYF z?6P}6^@Da`tv!)kYxi)we{Vw8yL&NyHu@WPGp9{GH?GItS9aUw!W$-v)hbaS*>4(kfmMeH9A`W9zrgbg9fz{L1>lX#i@XXh>gK8~mxng%}MB zi^dU;DpN3xA%{7#0GBG81GrR$QS$QRnTpsH1ttC*MP(&ObYWq*Sr(f^lV;tqt^;gpF3I853)8nBs|vncuM_2V1DShJ>YXn zT}`>ZqH^sOqb@tOeS&M>0l71Evc4@NzMs=Sa5uKQUt!cGbJLm2YJ2r>9MXNG(kS~W z=kOo);_;{|i39b$_cx0R;dm61cL73h7vRg5rH{$TVsDE+Cb*OT4Vo^JNvU-bRSE-$ zq~L8!qzL0JK5GltMpxA8CkDmMj|{qTE_JwPEjuiY1e7U26Bk zY)|YYAbYeMghRKjV0EOWg06-9rQ@f}M@DLf6wX}@ci6|DD>m+fY zb$jMMA(GSiJ$Vh)FJRsNhw>V2sHKo8uc695uW-D>Lyeui&AX`-EZ7HRZ^&_iepxb?t3~@`F+USEO9v{aiDU}*pQk8+rEQ>_9(~4}rY7xi!cPRg z^f@*z;?#HV2esO|8+vB0e3jgFNM`co<}=-xOs9*7uL}-b)aa-&Lb(^-e*O?$*WHJ= zsmejga*NM1SK1%3dm5v>(kro{Y`^jPdlqb!1E%Nhs$B|b$-5M-LG#F=ub+yctO=nX zGzRDgJu6#3DCjg`XCP&)>w<5K6>^G~65Reb>b$oSaof?Z5&F}+fe#DVIoE_xWL?@GLWIGxxPt*Nv= zwkuZ`ZY)07Vf{Cr*v)wR_-opzp6$&(+*I~G%7{UA2kDiHBo0KwJ$zPAhGQWB^`Mw0I+iB$ zlmT9Z16_&Z+R~M%1dsDLAVS2`2 zSIDuE`1X@c{f8^o&(~yd>_?xO+iCt0ZRa&=(>AV7n!MuY$`^cyADx*=;Xr$iQnjcF zaBTdZtkFn-tL^g>p!b0|6V%5~z&WHECX3R&9HDC)H@UL6lCad-+^>8iU{oUW4re#Q z(Lo!=$l0m}sAMTuC~=f<#TbQL`5GYE@5PRhs|CFC0gPOFJm^_44?1q+y{^GkhXV z2t~c%swyzd-!D7}!*Ws7mhuc0mxrRx1;zQh@{rrvmJCt-qO>s3;6xIk#1nHtPYnPZ z3jU}LGG2`aYGV9?g1`-2D?22xJ%)&I>I3aOlhAG0P?95F zLqEmAgBf=}sA>f06WCm@Rt3c5p`lt$$#- zyaN3q!$Y}Hk9{E5HPB~HXizAORfeLrlxLv0JpbPIXp64GvJv5NKQ-TeArX;)9Dz9ioXmxDhlHQWj*9dP2LK;Po+QV)o47sx zz5T1L_JI8hwMY37LROMB1xNkOz#Ruch&RIxzDPJF;0IbUfW(`=;ZHXnQH~cxzk=h$6=qMuX#&3+p$1xN!j_=F1OB(mL(r{}ILb2L zhY*AwIvDw3dB}r!6fF9I^mm9)cqm|q37G}hW1wC)iE_C7ZEJ@Egj za)@#wT4zB&9Pem+oFL1=C+8K+4Ts^d9OwmlC{78yJ4g9X^O-(tTDadlKNuv@9!~%6 za?r{2MRW_+rO3f@5RRA!F~KyP@SCG2EJs_6a*)5x9q5ESvo$Qr*EcX^2Jj2OABAo? z{!fa`>dRJ^`@S$3wFCQ0qV<&^s^= zXdb8pSHtxzA*&2o@8cs${~RFW9|NTPJ&+|oD79Y!H1;JjIEu9jZCeDCl>aZ|sDYCW zF3@No}qIrznGJc5pn4l{zI05!0pMB92j?1w`K&xNz*hX?kC@zQqlkg@YO2J7q2reRB zkYtRJ5nmR3w2b(pWWeF!BXCmr86gAiB?CTO27H(dIC(rLmF`eVd}=*V;W!Zo)hGGh z3J+{T^4O_WeX=Cr&2fJKS^;XSZAX-I{&d z&rb74lY0MMoZ5RBts3SGI32gKd^38N4P*U!JP28B^3^0D-cpZd^Zt0xy={ta6_K>MyahzWLZ4houm zaDf+Qr$vL^bW~`NUw9~?cNyG{0aHB>YX=UUGet1@g7B=-*cYYSZttw`?9z#P*Rqus zS@LD4WwwG9!^EWHhenK+O4dW(=Gz&ndpfEq7ca1GKLNLDsADU(5L6U^DVx;MEwmE#(}Yu(?3x z)i4wDYNQ+PT={#v8kF+jx8nTvUz)0rV(5AJ;?hT;pupC^f0_;=N?*6jn}6Vr`kv&> z!C3>dFQfw519Aa$^2J7J8v>2peCam7706xAc4;uBQN3_RSx50#oKuNHf$_zW%bhi zvb4L``tg?rq+NXt?(4a5qyv{6pKjy+c%a^@`*)|O?kG4dm~U71)$Y;%WA97AV(i|B zpLu4VmKh0Y(Uj1t1qsn;QB;(oB9uz2N=l1jBzqD^^*;AfUDZ4;qiE?)9k|~Yj(H*ujINLB z@1BMCUvmWaUms8;TDGO1*zWIw1w!$a|yI8nCYYc_sQ8}rV zjF2LPbSWN|X1;p)@e_6_6*p79p5OQIU}N&TFB^ltdF+ZhFf!TavZzi{I0W~cdxv8> znyvhkf_vd9RK%Yl!&WF`()48?-vEcl_ z;OD2DRY=}|da`@r)eDbFx5^uV{+{qq^4j(m(|yP)?v&4QpBiVCJzGp2@MhBK3ysgd zwd^gj*wuLm7KYu^N#VfmJ^y|FCvw8~4Drj@n3tN=Z`j;rt9~LRDCYyin>qTmDV3$4 zl?&=#Xr&gNJrx+N*VpBE@x5(Ndgz|Y%F4rX!8J1M4r1GoYUU zNt;kF-I@Z&C`H8}6gBP3B-mHV0M@^?A8#S_69B9wyYt3y;I2%dpJo#k0eXaQcrl_4x#qyLoX9B}717Ut zA5LZAn7QiHG}Z2LbYjf6(qYp!RPFrWYf&HM_wh`MaXV+W$Iorz`CSUfzkGhrQNNH! zl`FURIhr@NIA(|jLZS=j#>bIKpKR>b?YTGVN2OcM+n=LV?EBdNI+f%VP-&qV8@gCL zH%j5a+GPDmkN7{H8$-LF8wJX(6rOP~D{Sf?&y7S0dxQk8SFzw)c<6jfon`sK;VxNy zAO5)biy);Rgyn*LT?z*_?wvb6xxh8cQ?Oe6uN@lw;H|>SY?AmP_}hM*}~ACFD4=4y`*MfPX6Y|DUk@ z|DUq^@1np{Fj3$F>j#KJvwQ=vN>~QGAmqxY%k$+;fW1S67Afx|?;_6wwh_`o zi;pX!&fruhPFF;oz^M%%cLb+0aa;k_1Xei2aYb|jIBntMjfY&_#f0u`OE4*=u$TJUH9&;q~Low*s#SqUZXb z`+8uY)wmsBNYCr`pHu;FeqBU~Qum0ZLI! z#!j5@=A+V5g!EZ>uAxj1@Lx%NTKurWa-Eg!R4*l;Ck8(P+=Ig19=a}mvHBigRDu)^ zY)&N0?GKZdE0VeEeT2=5K03fy5nL-V2^{F+m;%I1np}Z~LMWG)QC63_L_9UZ7x+6} zL#I2bSCoEFFNmyQ4jez>G4MIQL0CV(Xv&hUH%M8n4n9i~_r3@up5w&ppcD>l?^yPJ zjD@Uo8}OCa`0?xiwXeK%8NTwY{_lL{IXxp;$63VM7ToG@w3@N06d@%D+hpgJjt(8a zM4Kh%=y0VXQq%ELA4k0b0ctaps}wsDjd{2>A>zQ=M8}TxOjesLe&D`y%g>g!Q5_xS z$*V5c?GorGDsLEZ>cPHsj`AYCgGbq0fG$RW(0^bqbHH!x~c*R<`Ur-8jprCi8iu5ggLG|&qp4;-(uI~0gNK3JI1@aw74;1+itoeR>dO?=Xz4oMG zEn$1cQLgz7AvYNZL@!F?WBK5WDun~1*TXlnDqtT@7wQnF107-tRTjMze{_iGWdZI) z4MDqe!QCeZ%uI9vy*RK5nc%|-2myr!2h0utzoEbI&GbeQ1v&?PuCf9Q*UR(USL-qTgdUx)HDs&t(9LW zIL{{m|2_;^?(lm57Q4f%0+|2I9iAaFfS1M-c!?aSOoG*N4u}g5^##XxASJKV`i`>e`n=Vn}d#@hozX| z+euq~{)mfw)s-L8?OV_F1h$H_h2wV6t!W2cBbZOEeW$-~zWb!3+R*RQ2vT&T(J~$6 z{iZ=CxOtk018b*$FOSZ#>`wB|=RM5)wr($e__d-LA?ag%0zux7RIV^d4ysZ>7Wl93 z%{i-<_O7Paiiszpo!?vA&LC_0VEJI*k-~xLX=wQ+P~myUO>o|s0_3}8o_FBDmZJ&` z>_ZuExKRP)T^ZAC3I~Q(Xi%Oz(O~%n&mo^4(QrEBj(gV!8SmU-9Bu65d0DCA8nDF; zk%6%K+LWgbUzRTzzHQ);zH{?pd#!o6!tCVY&>_sgVR9qYiuqVB?EQ&2Fq)oOQ2P($ zxZx>LrW`jWUUN~GS3j+Kp1OEShA;4U`z=R<_L|4%rY*I*)z{cfrSAuXWG@`sqh>}q z_T1@13P`q{sbHQU?~p%k@9}9_S3^bzdR{yC!9y^=Vf7>8z|Ny;V>!Ly*v^a+%v+hx zWW-jce?nNOoDwGv?jyTw&VRY6Y9wy#|iHQmM67hwkeCmU#@|5v-?DIIuq0TWzo(tRvpPsjW;uDDupYDsO@1 z7RY0QH;;dyCw8;)o0XK0!nVmgc{%XBweReBt~Hd&3B$OLhtxQ_`9EeOllp9kyJ!-S z=-5oU0YKE!aRr!XnZG6siMNo@e8yxS;+6br^Tx-O-WOrdib4RpSOj{+BX&f|eo zG@`(#H-Hng50y*L1t(}9aBk*;^Ddv#0KDhrg8P0R)km&@$^$q4far1!tTI+Ei$~|P zP`Otuas4P;&$azHEzi_<`!&0FMnot=0#^C4Fksv5zWGt*v{B_h8!z~^jCU`-Sg~!y z^Sp}Bo!Kwl))@%ygJGYR!h!Ya18x51klx?;d$3vO+XrAX4%qXEbOpN^j(n&g!XK;b z$sIIZwQh9Qf&)#+&VfiD8~f@Y?;e+*{{VWrczYhp7i0E3)LR^ZJrB5FW*^cz zr!aKxn2UGkjrjijYT8lFz)<^FIhCHjZMLh(okxyTsB`-u*WW04>1XoST|7BYXCvqf zct_Kc7US^afP5^{gW1-)yJDVl6LV9ZDsX=$Y?p{Tzh`aTAiuLH_x;Xzb{`e(*I_j& z&o>OSx~+P|?CP?c;&ze3fwjv*HO7YS+6CGPRnAi`w^^hf}RUd>d zOh37;e@)O=g8uUIE>n8Y4>`1R!mb=(o4bZ;qKzpq4_}bojyWO^xC$MSd$v*|ft`v9 zkt6aoz!CY_@;`2u0eo|}wg+)b5BtwPcRqeN&~+D{B_0hts#n!+YUk}=+-L7utXU`d1Lseiu%oJ3(xE61UzG39=(03?e3yH zb9dTFueH6kS^JU;QDVcSGdSK45(Fj&aq}k8TOC3gA#9hYj1lTi;dIk4WecYryKCJ} z^j0T6he+YT);`C_!`=S)90G<`cjpj+@{%6!9Y37yFJAQi<{UzKX%<}Cd$3+$!GIA~ z=d;uh(pupjZQ(5gr|5=-g&nSb!Fsc{G_khuDs$9MDK0TT`>y3s-2q{Fk9`rH)`eF{xly5n8b!**Cw=<3PUaO|C zy!$A%*D8;jF#T5sHmhRuB@qYKCI-FZzQQ)S&rins|NWa}q*11iHw!O7X|OiJRTr*} zL6~k4)GV?T@tD*QU{%moaQA|86hTf0!M&W3vrrnHg$!YqG+w&y)3A%Y`*14F-ztX6 z-EGQ)k_6&9lV@$H=jUEhYrK4zd}-Wzpr1EUSm(AuMiJjKyst;SU?NU)hxY2+efL!g zW5w;n8M)<$DMy^|i|S1Ew6-)paQ5-=Iq^TI?5KlMEk+d5S~LgxwOf)WunFRmhdiJn z=y+`-{+Y4J?SgZ&9>v@a?AN;To5xMZ(BF@*V2pK)n@B!hJn@#}u&0;#rdw_InN|aQ z!&sy@?!7etzNPn<7{E64xsNI^5o-k#)5uVzV;AeEKG=OA?(oGsITeNi{F9qcZzop~a^yv{61GjPs$|9fWIrjF}vem}ip#!dFO3cbfpzQ6kV z+cNnNulJ36SpK%`F{e{6ogOA{RdLdW@bnAL)3; zsj*dAeT_^nELjridpsyp9yQE89=%L=S5TDl=?5G#gSJ9ZDf-=&t7MO&n6_RI$)Vdn zy=(N*+qvUlV{}#Q?82!^k4+c*Zm3omY&1T4Oz?A+aT81C=UniLy*v8tv5f)8HZ1?y zk+blFW#*5W`+cW^{T+_h|6TV)7Gx#b<$pW|#PhqwF}2F5*|6KRO_!$!IRq63X~f`JZ)B;2a2#LOI_y9lb`PU|~wen!^gXNHXHeYr2@ zxLjT`2&Cg^ZM>!E=;%wcl&qNrdXuJ~L`bM`Tt9fYeUfWlL%iYB8w)wBT}RdA1ioKT zbN5qY|7P}wO?B*j0FPj=PbT8P)+|#OwR^Bm4g5@OE^A1lAYZPk4vbvat2WHJpU`;U(u`K6rn3Wa570zk3?N9LpVPbk?lCMWN61Pups~ z0vm9h7~K(sXq(ZlrnTSAdh(p@Dl7UmRVm5yv3zi?BNK68{bQNWY<<{2_!4%LW!W-> z@&etT=YcIsf%v%&uYmXb+CQ|_NLKFCCrJB~or2-^VF-x}N`is3jHZ3ybbZ3y zLl&!FSWmyq+_PN(Zjp=%YtqZ}PEz$?;{gI_8qAXLN zo&|6LeR^OwSsA+-QUPuodV>KCcrGL+)Tf7gE?-|?0Qeg{dh`>4Dhj}#7UZ{8z0 ztP1jv1hz7QfUOMKcAzot1mV7%t_%tg$R}b>N#U-{Lb15S-U}tqo(a94;pZiE04o1} z`U`o5ny3ZqIyHMDBs*a}_U+JXz3rm%>%jc-?Q+eIMwScHqVDT|R8U=^#<_6dLz|c` zQaCWWv_HPQSduOjnRJ1#EQ>C5Ko>Ywh67nJU`Y|7RKHAmpz`sFt0SL3{L@_|2c(q< z-x=Qj4@GS0{%kILCEb>uuIQwAOd(7mL*A2d8JyFPvBEI>e+`Umh9dim;$PYOOQxSw zm_y&Cuw22G8lo^!!AyZc>#a~l{Uu)~e^Gvq{Azjejem#Sa@un_AL>=P19CiCnp~9J zRJoCI{p5=1kOOd?b%eEnwSaY>GL5Cr7{h9!O5XFIVD6%AW+qY-m=EbQnbu4t`amWy zGs0A4d}PQ|?=ns^GO1e`ix|4pQ`FgvFZ6N3dv|zi9|`X5T^Kwd!N6s37zpqk*g&rW zo(qoAbAiSIpB@Rc4qWI!=AX``bAU&|=6~$}&j)xP;jNz0S}9WBlxPet(#iy5RE2pohJSw(}1) z=M;=y^FcAr;0s%P_aKD>>sy&iVz}6x79v>3`3nC#?Ej0`d)tBA`c*g#a#`LZ!Ssg- z+W{fD3hVyiWbK8^lP^bwpV(8r+vMVc&2#%2{r->>SXyZmo~+dQ=oHqM;e02B1DhYt zYv`|rb?;8jS75vKrIl-r(eg`Kb1HoPXLqBiV{R~0T4`?AUOoV(>aH$2RBDt}Z1&>A zprqM4ZKSvre*7S0@W4a=^lsF4)HbEl7wt!VZPtx?aCu`ILOLKkw~wT&-!BVEi*6aO zvwU!y%YIS4HrkT;GZuy> zd|vDG((}c7z#Cj8N?WCutL{4YN~mcm-=lZ1Hjv6VElMMvgu9$x!Txh*z?nrxlUFqO z1l_)E6+RQ(j~x*`cgc}cV%69qEojPPqshz@8xT^MD9t$g+^3}_#i?HJ^bUMMoW3KZ z4pExV@xs0OGu{XPw&RtonNoS7>)r&Gx9b(7^xOU~`7>9qx;E*h)m|`EMbDkDY^WU` z;T*9x64ljy>^&LCm5S1co*@tk6!R91tE!LP%WIERe3fZE>>~zxIOXmnZsQ+^x=E(`T9jTawh z1FZv5+Gcfz?a!G;LqZlm-`_b>trkJPU}>1OQT`PK99BS}f%gQ~MpM^dF<9PVLnDvW z+uPSQUTmlJ7_)6NkoOU#9lzn-qSt?HsDhHAxwy{;jXIvkU6P-`EYVXj2!54}klciG z*Ux*=nK}x~o!(wV`t4zUHz3Ys;<-x-$G?2;3T{6=sX=beK0W(}EZ(lEK!0Vaa2#`% zru*0`X1!9?Ql7VKh4vcd`}T671|{EIm#8FPVC{Agw`<6{`=2s;d#T?DaVyEacj+QR za)ui?5U!deG^|~pw$)L2y0>ZAyD5>rlMkknO4qSozo>oQXUFMmEElAv6b`IiYk0h; zaQ>_0ufgWO%3eS=Or|_B>t_c=jwP7;{`#)E>zoT_KEnnpZ2Nz9953s$m9ibU_)`Fy z=FRSP+2&JKU)>*m&xA`en_fYA{oeKP5xsMCNt! z-_)pToV~COy}b)w*qn2;?>xLGqu|0qJ)7ugaoveHu(`kG9s?QSne6KgCY(G^}RQVC>JaqCsH`DI-TYn^?~$k;^$+vYI+Io zbFOLV@+Yx$uh;YsVwmWyQ+nf2c;xQsfM*ZwFKY%qdpL3TvnDMSuaRS|%71lkfAhj! zHD}xBp+EL!QbT#1m;7dO$Is2BBPQ-!cdw_xt%pZ!HdoH=d$J`q=)b`M>bOZUw=Dp#AXEG=s(<_^B4aN6?m>i97s zwE16xRo*px!}W3FrTu)bb!5xWnLGY_=Aab_>7kI$D$|(}PgI<8ZSE;u%=#>+e`M*9 zVVP#5FQh*@Rl8`}?(?`dA>zRLIP2^ROrEAesNdA^0LaYC{#I7XL<`mNO5ft||}53aBm(D;ym#u{KIXJ~hC_LPy- z1MXRVz6EL{7%#dEV2AsbztJ1P4BFW1@wi0o5tA}EAhHW|*!+TgW9AyU1cwPMDEt%u z8Nrsjdp@liyFU8*m*K1QJ^`M^PvLx)J^J$CJDc8Qgm4bkAJM!r(lzgR0x$mUoUgre z?P}`tR`Nl~0-lx>4yB_GSx{T>M!Mj|cjYdH`0=RcEolluYg zm=rjXT)=;kl6QkM1_|YWPfXs;Hi|nbAQ~t&0RV$*(tn{GeUJgOv3T5elX|XoI_Pty z*t@|G6i8`Q(@WTI6!Wm#|8n^h`BQR{a@j0TRtB@04p08-j1u{8KvVxRnNL212B8hC z5=JD|kXl7bCHVi#q1Pz<6(2x6@BP>RA3w0JtS6v=xJ{(a?*HGP|6vdOum8XQ`v3di z=Ks$rfT7~^s=WpdQ1SSTH*tS5N=}Dzgw%fV(Sm*x5mJ+Q<(YP zOwxj%=NHNk-qEhK`;*g}*fEFsu%lz^n-mUgeJdG$s}rsTlIyojosAtb*YBx3Y-_%H z5br*ZdpA_P%)#>iZv7^{HA0#vtRL~Mk1rhHu&7Vu4uz$v>d?5yjx zI7>+Tb_du@>h*2x>Khx)#b>GoL>yTC29#gB`p5f|b=~hz1j;sAyzOO0r2%5X{muR) zVeM~IlVL-Kmlb8coKYn1tG`Cg8#esqpaZm&{1&%N9@vXL67nP#S&r%Duw&W-xf704 z><#1?i)}b7jH_%oSNp}6PFERp$X`TDqUIt<7(gQ3nsG&nG`0KfKa+&4diYTVkHqFCq@C4jU9|YZ!~~PGj*`BC>Aw z;MN?-8V9Lk?IHN!AY9PPg;K`=1h-r;s0hAD@ZI5a@E?XA;NKCN-VNoNnhrKGA8ck~ zW(r_X-o*`Al=SzF^5&r5E7QCy! z$&hDJ2yp(j%?_YQU;;9UOv>>+5IYqTJnImx#VH~oZ@#$CtZHT{`pn-mLYXMg#7?cN06SkMkqI567Daf5Edc6h_zkM+PeR4Q^x*148G(7LGQ zJ-82pyz4T6_Ycm1m{*=Sz^bu=BL2(FKegAdI8HA`9Dke05kyGt!f~l)R&`)~c7kf( zo_!}?UsbT2$PpBu_oZ-P=Y0+>!34HTxAz>6L$^$CpVk>v{iRn<20xPQqkiybjp%Sp*%hEs5$IRv~ZY_oUr8*k|~H)OOE>3(d|1TzxW& zb;T3-o>}*ra|iJr(**B1#<6-(-N%+o*p8pdQxvny{jq!NyW7Z5eIhfb*A2Xub@rD zK8o%-XzKApfiLi1oN1p=d!5t`QF6Vv^$O><*)x)|OV9j(U6BSZaZl`Mns#l#n*Npy zOe=1@7ZBTAs@a^B^%`i!O#<4Z%XcJm1}`xmKm2uecGW=F_uKToe>8qZf>JQ9ANY63aBgo!J69*<|etqAN zZC^uGkGRvggDcVL;YRDf3g8=#Y42sH9n0&9Mrz?Ppblh3eVFc|y5 zEk8o9qLl-?hC$$_9{M>zD7oZFGLOt5i%b5uSpxV|`F{cV#s2xSYD+KGd6%~6tSUG( z{=qkJiwA=^ef#uKtuAPf)h$`4lyD9H?h#QRJH06e@a zKdi3{%uUEY9suxge12dF0tN~EFh3sNl^?c0EE@!g{4j5Ka7zHk+yCpTFN8aRe-JP{ zc>KbCCxPD@WW>X}^27R0fLI9cGXencaD0APHxMN7!~EUB4FTK%<|e!+EY}_bOX7h? z2Rs~K?znF9!%JyA9G~A#M*i;LS|G1&H~Hbw#RdoO!Vl>P+Y|(ec3=ZQcW@?vkA=Aj z`56GfgV1i^Rx;pYx`ERHOlXc+qCdcPwv^6~2?5~YUG;+bN6E;Khj-?30ge+G;Erw&_Dj${UHRerLorkku>4(c2-pfgx`C(2 zfG5d-$IF1@`#-*1d_Tv-c{1?e>4?v-B_lsq23%DJTzF$F)jp_<{IE?ykZ6B6j#4qO zG#p+efgqJ1vNF1Z59|g`1F$?9aKO)mK>|O_pM!y=;h8evTV%jD$bhex0beHro+bmn zLI!-f4EPcm@P#tqu`=KbWWb|kz$0bALuJ5&Wx#`EzyoE#ePzJm-U|dNy3ddShkGdy zr1E>ofD7kFsr>l;PuKhd`x}1Wf`{YxCwMr1eaFM?WxNl59l__v&$oEEaITPg|G_fw z8_0m`bpwaX;D8$pg9P0ny}~fCG(1EG+(!m{)_Fk!_#`3yNMUFz`whFAT@H8v2iO$) zW;C1aO-p0vp~>t8>>sq1XbAfVc_w=@dmP(=qR)PZDzXKB0RKuK;7{!UoV&L z`D}``Za_78svL*Xr5~V8h8hA3$V451Td1U#z&CPtdIE+Nyr#f3vOrhBpMuvG;88qy zK5>YJ3P~BXkSrfuY!Nqn_Ev=#DYu5E_6PEOrjPp~x0dXlHp4BE-N4kv+8N4#xZBU= z9IX33>ru~HbEmu>VT_P$AVooFKoq~mW}2PTjk!0-ixC!We7|v$j`p`6%z}$)YG>ke z_hGrZ#ewm#CPy(01w78p7(e{mTneJSQhiXm0iz-8%YI$!8sC$)Pta8cWP@>+()SK9 zbvBOFs$W@U?vUtuN3DX6Yzo2%M(1vHP3-b|@U?5=chuBH|?~OTb)uV2n&a9;02$C;qJt?hR(qGyC3lKf` zpR@lrNQ86IQrD@SNAhm%{lMI?b73Q>n_xrYL&ug2(9vIv=NgEsooY5D)FqBLpwf6%!=fbS_S|Nl{x_Wxe~Uq{p~((?a;gAA;LwEVxm z=s9Wm{}NICq~zm}Dl83-TPXj(MwIhEC;!h8y_vN9|4C7K((?a%y53BQ2IT*zV6iUw z|3jkZq~-qwY$(`Dc=`X7XD`cu_K4_RT>4IZ7)0AOm7(pHlC9FJ(Zv>m&*{(Dup#=< zT%RqyMt|8eWz9E)q%3-lc>jrzDn;+YrADsRP%Y^BE%g13fS9{a5Yl^5+WfW0TfBWb zQa|UaJlZ4YY>SXSiPH9r_S?i9dByvpvbneI+{B9r@zpOn7$rXxsxO zVA=AeDD6r|0cGkd7c1`(t6r})ILSm1!L|@Scd?-PQIh4H^}4R96lLR+vO-`$nanHmONk zJCYOJZo%Q3BBXnwwB3hq>bqXr*dzAB*`zxsjl&TVRrD@9w_G=0O+W7a%-7_m+^W>M zc#RurtI;$O&TSjbUpDK9$k1X(Gs7(Q^@zZ`LjI^=hFSAFST7C=aMg{}QFm zU0bqaxBl}NMPq+yw3GpB$0Ti0T1bA$VaIn(YCV=cdg1+j-41xM4-+9B=Co}}Dy)j0 z6dIB+>)Gf9VE5EVlt$EfN03$#&Y3~3_7k6+ed(EWS>tV;a}$Cji_*N5xxHTgju3A-pVD@w$&_~ zyGe)A@@wqIHUv2+N*k@8vAbaLJ4TIfeokA{bYLy&u_$fC?+&LbUiCD!PXT1zkoQIi zsZNw;K2FWnW2i&gbA`Pq^8r6gPSj>vXW|ZCQ+VZY(eITf-Ax`W z4zoqiX;k$;IxqVALx;q<)RQ+306wRH#RqY!7f(yo`L>n!e*Xi5-CMpdMG!zxD#$tkT2!1MYB;$%~$v8_vGESGr;s{bE{D$}c z9Y{K(ncV;+0Ls|MfDAx7n-8P_eAq5P4!{K11>mp|;2oeru}ZNFNCV_5rUQ9^NX06V zPQ4G14d5x70RMjt3?Lr`Bm^21suao;jw$3Sq$}_hB7tQ&XLz6iC4m5rcV;(89N;3w#&Mb3O9lRKtv%oPK@cKbPFEq#WqAQG>QmHV#Ypab#e(}52yTzn=WaOz# zW6x~~44m9svyttdHyv&x8)vRwJ9he6Abb0rENF+ezD`pg6xfY051t*Ql;bfd{Hn`= z%pmGs*K`$)7ncJ*3z*q(W|G2z$wl4`L(lxN>@C>r;2ilmw9_AAnO<}g(s~n|qcFIC-?_Zrg z@2-xVSW|EGv$I|$WT1Rn9LcohTGId{uE~C%=IM(yqUPm=4IRHIElK70><@FVtuNN| zps`yHmA31Y&rDft=a_Mwb0RM0xLch6aF-XC`sRt=-;FqR*ce_y5?Ly;>2kia{l1xLDmg>geepEWk zf9jP3<7tsjOSg9P$$Fd_xaDh(ZgjZHCh_i53I{d^$uV0);T%*Y)RC_OI`Ttl{kqq; zrHn~(PF|J-=%(0ZBSaruSNJ2|(}DDp!1UuNOb{KKk^&at@_=*5N4r&dKp___n1WY^ zJ1Gk0p9L4!Ks6-N)lqecxEiV^5m!Z3@o_2*1;=ACKAIcqCJ~>Ef^8};-4zA9OkCUr zb&-fqLMKVYC!!N2;?AhEMBE8=l88H^juP<+fVqt?Z#+6)BJO}XNW|??dx`isbeu%o z4z-hr+oHA-aU0Y|B5sX>oinb!W6`k^aURN(h+Cmn67ezU7>W33bhJd=619|wk3zxr z9#`H-6daLo@ewH4j^pAMC^!n?;=|G55^;0XTp~UU1>0;~{-NkliTDt7h(z2BHIs;& zqNWmY6Q~`5!)J^dOT-7GgC*idC^#12@*ARn1%rzlpx^|Di|eEM5^+6LPa>|1g2fb< ze-JuIB0dluC=nlk4v>iJpgI!q{%C)RxHhUS5!XVsB;s6@D-qX3H6`MN@k%3%R~liw z(g@>~Mi{TOzGzM{_6dby6ad{LRx^QthV6_<^XQ3>KI1>dNQe1up%8-cD zQMyE&IKNR*szf>k93t`f$SByO;_#!;t|l%{f+uBhoJzn)CE%kH@KFi)s04fz0(~h2 z`ceq=r4Z;#A<&mXpf80$U*Pdeg1!_2eJKR`QV8^=5a>%G(3e7>FNHu~3W2^90(~h2 z`ceq=r4Z;#A<%ActR0XV5dDH$1wo0{CZ_0UvpMk$wLLp>=;BIUcm^FSP5= z2lDtla5hI+4ZuHME|bsn0h0J!Cc@+b`TjEC50B4ipdO>PQu)Ago&}Xb-3Kh?RZ|=& zDwH?mI7%UTCAoXa|No@izgXrU*k* zH)m$@{Cl@dNhdxZ-E!{aU~1!sjj#9hS?i@8K}=t8ziGps$msB9*DssRd@q0<1^zty z9VEZ*KjB1@p{qMz6DQ0sCX|dA(M3LcUpfsY`{GUhfwUYSswp zvaqf*Kkt}UX!VwR;ZEPlTKZ`_R-KsB`z$lxX2ZZy7M-opwTDD?mBNAXt321z4-5EJ z+XeipdPs)mhcfAC3u(;C+4US>4{LlbO#(@pvcWi5S&Kw8UlDj zjFm}X)<-7Io*x|uJVFJ8bDe#og2SL8LIotmkBuf%(iz=)x4A8^Czy`}9{OAfpfjWc(5Sixz@p20wa&6uvF5Q&@`>w@xu-Ce;g9@s_;*JZ&?jDy3-xpPMfd{#peVR7&cdA`mdaQ*!a zx$z)?IM_k}n6baVF&0Huf;fZ%{0`s;6_x>mI(9_s55C1g=)DII$l5nBCLkI(s|6H>LG)e} z@q6il^3|}iuq@z%BWw-)yTUa1EheorWe@^|GRnSycz z+z@@9CgvMNlh-W7yjE0#;0Hw*CzM0}yK-EPI$`w@FwZo30)BTdo?v|fHq!~^boD<% zIgs^&1zGLZRUgcj#rs}7LHjB4{DjW|R)s|9>Su&WF#`-b%P$3fMdR!^~w@}6~*QJb-%**U)ZMr z%R(Z+`hxcI<-rd?e*#?;{fz)Q~X4_i~E}ZKkUB|V0TZzFZZYT z@pOmnBrZ?<{v$?=AmV5JDSkY?A%1arV*HQ*g!gCuDSjfI#pQ|dLpPZh1yS$`&;O^$ zC2R`2OtDR&iau1KS-zT*LD2<10Byk;zLk86YzXw|{lSUdlcCH&XeHEYS_X~B;4;hT zMT$9!$%=Cnb!Zb5n<;}8Lug8hKNO%9z<)0N|Gz`_UtpbozrWeh9?X}vm&pi83l4M; zE?u?C4FRUymwX;x)MTj>qtVi_Z&<;lpjLDj#i`)cB0iQ2p7kcL&qDg?<8Wa2)ZZ`t zl!xb^KeX`$wiq(+zyuz|*gX4|1I;VM*VXU^{?5ji>&5wA86?AD7YcH>TWj}8MM!eO z`ZY5@_K(ug8#0dRx|KUF<<~a*H(|YX%f{^ ze>QP@()Sb78h&y{PHvuf7$Nl+(y*{2fjQE4m_m8VQ^xl}om#{`%a@G<>!W8DA3yUC z`Y7NN$?T)g65wW&!*g<}9lr9P_0j8$Yn4CEJ9dAy?|Zub@|e58_Kk4kJ5lxe_W@^Y z_v(L|7F<8Wcy-oPM}4(b2G(XJ3_z>qo?a_0jFUr!!#v+W2R%KH3&TMe=0Z z5Y|o_l)U-ln=Tu|RRH@R*pHf{$`kAu;jWWTqXL$!F5eN`djtu5+y!t$!Ff13ASxlo z5147?#s&ln&hbLa(Iej)0Wpg$#Ymrd10AzHpRXh%^pl^*suV;e;CVGSxXjTis?8q< zBx{%jy(3oxeGFkcX+*s?F{9SaUA;SZ>I}si+waRpy>RVu_`;0m^7%PE9U|gH?IeW* zd1z*+)3X`brf*(+ zZF&+diJ9zGk9jMH2E?iXde{M?!PPc&YS?wN4PgR?0l3))a*y!XbBD*9^3n?1(UY(~ zux|km93p|Bkv30W@6ze{(ZLuq#5x9eFP|L|6b_hFG2#APU|@P~Kv+U_#9Uv%w*m!n zbWN5{8_v-UTrfA5+cPm{KzL!+^C`!^+tPIfn-fe{g5&U~`@22ISlN=`BOX%)qsO-+s??JS}&v zALWo0Kh_gS`o9$()OPM0JhZ%1SMkHeQ$H+Er&$vHHi*}V8$=vf`~UlFPZ7OSAtZmS zkAaRbe~~A3y}32LGIrWLOU`eicd8&PADpkHaA0%M{?NT`(2nAt_^pD?-@P40IPqHt z_ys{@&wu5&>V~4tr=H16*B;*1^Yn+vcUB1Lhp-;Mv!7M_e4Kutn%`cO6LDgErVh8q z1w*@ihEE3!t)G4BYoWLvL>w4RDIQq^;GFtK=u7zx@TGi8*1AunD>jqcU~PbH!ZPsv z*R}~EUj@36F#+EK{;oD}Fn^*72_C?wgwF?aryJ(9i|ZI1?jIBo91Y-#+=gV+uOUU2 z@lPZDrYb5pZvL76_t!6j`?__m^9mh}w6e_B!!Kg@0za}{yq%`t zG&6T~`u<;q^(A+1Y?_u$RUEr1Td`AnIrDn(0DuMf`uU8_z)`_GgRBpgz@fy% zJy{=3={Ubq*NyFWRa;GYU^6gp`x}QzI}p+n;dp+!y`#};RXm%g<$dRiXXU91%MtpE zuFjh@XRki%*5Fbv@pzWP@h=_E74J~~-jzjhh}W=wGh4p^nay*;wkUo2;&HDX{rAkX zsCUh-m^1rrW6nFjokfH)ouWZojv#bynzyzU<`urxAs- zudY3)G3%PvjX}m~ohx3{HqcKE%eweNdsm8ndVX@>c%|*-<7UT^By9}xlzbwmyeHi* zSpq~yaCSze)(Wg1PYh<}!g}223-pQa1AXHAGVP3-JZf);WBC}s{MTa{>%A0gC}ZqY zh8>UZ%ELyrJQ&e%B6ACv3)VhxPl~Bl*JUZ($pE)ck8d`GU5U${ZeLKer?p=h<5vm?Ha|y)pKyciP%D&ws|E6J88jI-i&1MYFsFen0-P=3c0i`jW1c5; zkOkk7#DTMzOK?JhFV{BMcR@s01XnjSEFd^s55Sqg{V_jrmYH*HU&ADK#8DTDiaoP1c<-$%J9D0ktRg2*|IYwtR389OIl!RL}78~B9& z|9G@qMQ_DK1q+1~8jltvuOq)t&R@=fMPd0c)tT80PX_c2sLxhp?*n{*`;2r3gG-EBm6REl$J`7CW<8h9YEIhvI(SBlhtNs= zmP}5bqke{px5k#~Ll(4IsC_YSX$-%y_Uw7e>h;a^hMY956Qr`-6B`F!VyYO~W=wj? zB})uBF^zr_?UMf2wkc1_e(gWDfh%s`7oR=f@19wF|K4zA(yv(gUI?j3cp3A4c)zH5 zCc2KhmbPCyq@=w)+u?}ZjR7N~k18S4dVk|h&cwz5T)(AoVC#2@#(K=BP%VEIHlNp0 zDabdOKF`%5zvj>EEu$u8yb+UCNRSEZ3~WFLgv}1Sln3rV!4^(|n~M$^9sTpw{^RqK zRn}b0?rVLLr5%RS_pkXqI%SZ!-p?aGY-IP|eB}7pqlvpZl`bNrqr!R@+kWx`lO?L>{y$vG`e^ zuqXM!9-G^H{%~9Te8sJ^Bb0h5Dda4=^a40bJiRE@XkE5**6}v`oEFC7veG*$TowL= z3hfz&SxEZx{%@TWP2?mDOYkU$6qO?(qZ_h@Lzh{&`S7_8b2sVLs;PDj&3SD0!~&q5 zCTx=v>V2l$r{-xg7Y{$b^Yv$?;+^gco!(r{3nqMniyb6oT$>Pa{M*~4=ELC8Ulm`t zlzkszXOdrmkkW*0(q3!&vikdKk5#*B=nrxm26r4SY$d6A#C|nhp#J0dGfP~X5OLtz zoH)u5Qn3)f*G}}-+)E?%xTe*6ovWO^h@&h|)DNX_U~N9ul3fq`VKsjPHvX!eDM&J{ z?|}3*l*Z`0IwR)Q_`Z-^{QJ?(!9UEF?mQP%ekaWERkZS3YrXu8gh`{Pnt93j_p$Om zK5@z~ulb(>Z;ZAWyyKpn$K^Y#`wrieb8qodCa-K(>5nCKy;e6gG&^XJ1NS=QYxyf} z(Y+1~odX$>1%Xi|s^4hyxkJ*ajl~-%SFCI0(>4^nYFFh+o*~{J8Nb5QCSp<5*!&9? z>n8v{jE3;c&Cm2_wdB9hK4v^<^sUw&uD_qBm|W{^vhnVDRI>*%gDP%gDI6F-&aKqw zh+r({3HFpvDagfgO#>g_rO1vut6%S``to();&p2?oKERv6c9UX7l zvd+>}sRPMAX=-UUaDrZcU;VB8^yfX_Iw+b+EOotk9I;Vv@%;2YY~Cw_{{1uhztcH; zHt|F~@aQOPldAfkybE~?N2ul&t>y>1FB&O0U&DD>3J10? zGfp^E4A0F|uoejlK*9Zmj9nQi$q3BKG>(G~q6+R^;SE3VT&)Z`-nBWWMhTdbG=z^7 z@ATp4#Pe_30TcH4zU?(|#Sg#I-R^k-RnalU9oRHW3H5wmgmdGz-#oU%XK63&VR zzdavf;x0hw%Ylb5Fqtp#2x75?zg*v9`E@$*HJCcvHNeMWd|=UJ^(r!sR!;ksO<70z zXIdT3Kh}8j3L$mf+Yxo@c{+;fw21uuHVONuh5g$6Lm-HP(Ta!z)RRU!!?J<=H zXGkrdNYZFJGFeXFgzvZkNlh4&Jl!X^?>C;4|MisPd7M){JEA^C9rCT4o}M|GWpE;P z7=3ZX^l-g^FQi#U`UA;E(X)2<@#;U2{Mx#$#~ae)D9tIyKYb3nGWzYStA(3x&5g@m zyKdJ&tHz-{n)IH&D+oS#(*0fs`KGbgK|OU>-96iCF4i>WPw~#TnjUI2mgd<|PIKHm z&SKgwlVtv^st1NXaq4U}IaLGGJL}i;P0vQIR75qnJTi0lf>pIo>**zi>9uL5Q+)>n zjvO<7mxi@V)Pl;M4x2~64SQGk`l0;7xt5yViyo~W@hj!^k!Ld&$>Z90q;iExa!{25 zvcP|JZw@$f8VI@(Le!OaEW4Au^LY<5zpdMgAAYT9_7V3ZA`Yw{mHF7)!m;2c7z2>Gt_RSEr(jFR<+4C7c_^Q%65u{Dm32b6$2%-lY4nXAT~>d-QhlsVbXZ z5r@iDQZ9>WO2mQ9Zz>ZXq`|qNnST;j~5s>n$0y?x<7`! z@pGx$tJ>tmAver4&8D9?VF$X2;h0UkC}PYGGks zQ|#&^2D`)2MV)EiTy9?WNRMYv+120gis`G{shdn7CAGA@5 z?vf$cyrN5XW+IbsnwUj~DjmC6KlQ=x1968hcG{J18Xp>b(P6`)$D`^NtYCI5Lm76v z`?_emj-4*|c(Q-X#CrPC0~5BIe6>9hthXw&fBA)WW52%0=o4C}gIjGw>|RFCUT&V~ z-v9lTx0fGtI`w)ugvr}foIHBaVEauZ{u|Y_@=Is@DMpK1P2a?+9=H6bcJ>MCG$=NH zc5m726W>QZ95jr5X;VjR@j_NYG~aDz^Y#6ji6dj?k?&5ofAVxwj&m}#@N@3Y^gBvD z)m0dMdaqet!8OUxD%q#WSQIHUB z+Fb4YuGye<3W5mwAS4BfG$3u1V+xUSE^?M~hH~n1@^WpgCRQ!0l2yVw#L8x+vJzQg zEN_+*%aY|pv!toh+Ne#`T52V=gnEdYO--dHQp2d;R6~|JOP6P>n`XPEYJ(ZqF52Jh2o#>WyL%KR$p58`lqSewWX(hBn zv}{@`Es+)mcuA_lD;c=v3j$dAu^&J^5C%*ZQ6N9YZQUH3c4d|)@QJC;CtbN4;B%XL)H-`{z<*2@?duO40hw?+J_em0U(s1 zg7SpRga8OWeXw7m@AaX13}_H z=^x^D>|?lbJM16W^du@pLf!~=1Ce|w%p!3sip3!m!DPGP53EDMAA|sD)g|}kf~8^Y z2JwsJN+I}9@Du3{pTpyKfB>*J2JZs#i{wcmRARS)#UT_S!Hh6q4+wsWJ|W%VmV$s+ zBtHr>{s~?pJ-hG*VI_&)S0pbgz{?fyZm@E&%vd{vU)XjBkO){?p`iVM-2y=$6~r}w zt}#BY4#Y?BaW$}j;p3`ckc;C~lm;daaU3P!M^Q=qC@P5`MJ4g0s3d+A?F*J?Jbo2G zFnqiZ(2c~$d-s-%_W~See7Z6qo;XehJY9SoMSB8fJ3gHbrciMlMU{YnCqCW-2x5xk zWI}t;2=$>6>O(^%>qA2&>qA2&>qA2&>qA2&>q8^FKaKFdG*t3^X()$-e}5Xv1_GJl z`p{5Cz_Y{06~I9WAD0J<4L&Xh1PJkQ;QUD<&IAH__;ktkr=gPV4O9Uo`WFoauFoW% zr+`6?$43Scd>ra};^WYwo;VIv3nlPTQAvDMR1%*+*AxG|Bt8m(z7zs|DFpgb2=t{8 z=u08cmqMT~g+N~lfxZ+1eJKR`QV8^=ppx{Zppx{Zppx{Zppx{Zppx{Z5XKjUKwk=h zz7zsIfU2hieJKQb2y{Kg^q`=U^dJ-PkqP*K>L_?v{5%=c9mU5b@u7tFL<#MQ6510b zv?oevPn6J}D4{)3LVKcw_CyKoi4xiqCDb1!)E_0(A5>pryr5Wnf+-RNV5@?HFuV2v zg0&EXQJgL%jJtL%@L=Nr_K#n??lfjAZ(nDEEo6cx!NWbd-~;ODsDRy*F4(CGQslv! z2r*GW8r+!+&Qh=p_z(Ap>cPGI%VMK_z)zt1CV<1dFfA8kasvOY;CCMQHv#`pz8D;es4GK!c42q`?_r7c1DW${`HwUF9*HGs5>BCaL$I2FrrD zIvdsg4|`7nSHs%=oH=V}se_RHP?EhALKqTJh_Y{$N-32VvQOE%*6drzo;`aANeCf? z>|Oh{cCFd}&->1t&dk(tb-(-l|Nrmz`(Bzk&pR{E^FHssJj;-^-N(YN8bQ>6Ka_6$ z{2Ilf-$6z6I{P7djz#p)`LF{^&sIQBiRU9GWd~2Tyf_&1215(6!{fefc&C=`FiaPt zg=k0k4-E?UM|23{?2jKm6z~?Ruj^c=U-v2KuR!S*rV-8UeMW>u>+?g0cLkXeM5Q9Z zvwsVmJ`wyz+2N47qsH;yZJL&Z53MTT497ppA0-3LE79JH4t}Fx!}5!EAW;C*P53Us z_px`j-%Rw+!h)|Q;YPHB04;^fgsCMERaOTVq^oBEbWjaqo)oV?R`4F8hyGwFB9zD9 zuB_tKus_OM6sLnflplKm@P-#0d+rz^mqJqLg zaRor-ZvuIb;(b%+eEzO!51KN_np^R2QF{pugV{BdiWM$@m`LHEW6QrPE-w?Hit5v~ z1n;_68+C-)P09Eq5FZMACWzl(sZU3G#rLaU$zEGh+WwXL6lXDLmVAh9KV#|C*Qb-{ z1sq7oF`bzo*!goeRhZ_0t-b=#=+~-~RJN*grL8<&<{`_MhD!;ltun>L)+9xtQzXfg z!LnZryz8p5)mUfd9pkK{OsAvEx^~_Q(2BINfs{) z2MGfknO0UP&6gtYdyK|^0qFauOOnBxpDTFcdn(Qmr;3xn7oQDy{bWX@JbNm9fHdxcD%YoU&?#|%s}TxukKiII4AyMl)YRp~`W-d|Wk zJgR03N{ELZfS7M2ex8x|1S9ctjl|C}5%hXO<9;y0aN2#H06rD55RcLmYb2gF5qD6)xi}qd&+fu^eSOg<$=i?~)PLKew#9^B z>AwyADbs(OQ-j&Bb!6R!@XVdS{+QAbN}!5jGNT z-uPz`y+);?$LViIA|spO78KGWLP2Mn7K!LJ`Z<3MOGS@1=0 zFg?ce7#j&UW)h0z4^DpUy3Nnxi$%{l(ucRZO#4EJPDz;es$K6_ectJs5l&AU`&q8I zKR>4GB)_$pU(bHCu5V{suI?}zzg8j+Ec?>Ix{1n3iTuHEBl_yIxvoOmwm6)b$s><_Z7Mfgj2Q{H~RJ{Y+ ze-B~Ro2~dNPn8EM{+-_c{y*veYsE`R!&*OF*3Un`d69i;$^U=*f8c3FXhRU!x!G;M zKS6cwA)Sn6iynRhnRcT#*gBkGbbHdFp8T?I4`&5=D+&?LjQkFaPGi1)_?u~;f@XUssEh+zY0Y- zi~Ij$)@6v^fBpYOHR^JrcWRS!_g;W}53Z3YUyA$xYoo8N{|Em64CA)Y@&zHPg?0uZ z2(4!bt+mkjEnMaTi!bn?p-5ym%6?NR#_cyh8Mm43l?qhA^ct#C+Q<+}%@d+PrV}NE zQu8O4@1OX|vZDRq>6apc?p}4-Tf|>699X8NOx5jv+|8i)$!Rq=y?kq;@sO&E6*JES<=gwQ2@e92Rj)3x@kiFx*y>tmw(g# zzEIZZ^rLIDsZZtqK%&uR^`he;WJgsQsaLx!qe=&c zGC%2<_2kFsaqGI+oY*j9p3Q%*(Bom9JH}d3ybCExJ!3M5EaSenfb^ z=jRSyY4Oc&Rl^o8?KDEYh7?0x5#qpgCDZej6y-}ky$0t?{z>o=Ava<-S=PFDoVGle zP~_^#{)H(Gw0v!?Yy`5(SV33}=ErG!$`e>eW)J)$;8Z)pCwc^7rb~}&_trjr!RVX< ztN7fwaWC?6PIe&&xSvmLcdvP#m-sqI-y!qJ_?WVba=#3WI6QE4ZsnSXWt2;dK-d2Jag zI-$P#?LLm_*!(!L9?gmKozrsVNkL3_Bo$&0yF8G|(P(u?|P(np+g0FATg2dw1|J#*PER z-d$!Vaa*%{QjMD7*N%FPf9h=*2a4hN4<83kEcQ1ayINPJ|1-II>=@JE2~iKoGZYpK zdHBJ%N$1(WH6B;-YrQ88wY@9XKM?*Z=6(4Tlh7O2`o-h7@YpZJfye&+D-TXY|x*v>c z0Q!^b!WUGNG!+NzzN5W;YRaWL+_HDmrnP-oW=>$Q8x4D!?4D1E4zha_EhTSMJtba! zY$%)62Zz$hR#!skE}H`1%YDjT$sO$6>@?;RUC{bJP_Yy|{biYYn-;>kzN02b9SE!c zrC`NB54`Islu0IzCOL4bUm%H>=)fMo2b`rRkT!6d-d9urho`Q}EE89gEI9Q~m8;cX zRWDS(>hrHJPKSP84*{JkrKQ76)JUox zi+A>0F{X3n=X5TYmJYK&WkE6f{RD9=ua`UG=km|#Tq-Rc<{YsS1p+!aIJ9hx>0J6b zot)CrVbGaV{aL(kZOdaiIX|a!v9xrUeNszm4~w^F&KWn9Zx;o0Trpf!-!5?JF#4f} z4+Q!maJ~hC1&Lp}AiNh0ui;;U`gNX*7ww#IaSQRHcdR~$BKc{o9v~-wr&Pvos7H`tstDRB4o%=bRv!$gY1?8T_#rrGe&YUOIrqWrwz1L2{bh3U<=X7c5 zFe-m?%7Mju?1dGkV;BdR2LgUhm6i^3{zFi;SvuZlM|VQyZrE=wk%0tET;-}ZqU$bZ|%zpH%+>RU!>=`iE4CB>}sVFvzUH*SX+f_5kvPmXix z{K|Mj{kg*hweRBsyn^(nbMgMlc*2~AH>RopZWP>~494kC$B^M7pmVIWbcAvfNlr5{ zKgSFt@Gk+Kqot+8%u{PntiUL7+@}eqbM)tQj+B-Ta}HgTTEXHimo>fvDxV_)I)ZXf zcI)_S2hgk>NPo1A3Uf3-WFM-=ia;8ngJ)@1$Tldie@HIm7&tBsz*bWCdpV zW;tf*W+`S#W(j7rS-6?EnFsg;v<1BYtr=lfV4825W14Q7Vwz-HAj=0?{&ZOi$nz)2 zXprdl1|5L}@E#ZrI|v@8l&LNF5!9LzrUjaOO^zmAlcGt2eFa+ctGfcW;C)aFI}imR z*`EVG1yfW>sst6S3I~sb9e+w41tF@zo|)lSIG6WdzE$keYSm}r%MRx@GZn9x_EI7ayqEan`RER4-|Pjw z8J`op07cVWxlyy*4JWw79e?)fE9_*Vvx0P>jAUM7er|RfTi5R1g3`jS8GON5-KN@7 zURn)+9U^>?36rtWp~G0S+8!rzn`v7oG(`7_6hy8`5}QNT!@==X#~{g^%%!;bJ-PiC%x zaW=qc7?x(mQQ|F-R8ZT`+Cjf$K_t% z+cJ_6bur*Tv{692#MPMgRfMC}SNzD}Kl6caTbGH8d&#@bsdBA$#?g2~+yCNzpnbbp z&o4E~H1V*o+iD|+_)HF12{ z;{Dg1)_1Ao>6Lel)1QEZ%65|8&KyB75-ZzCdK(wsO43`o@D`HZ!i6`J^ky!cOw!3* zcoP_K=E56EdLtL!K++qy@OqM7&xO~K^g2{2unuooWnZ!{Q%P9357~zY_a=Mu;9g`e z9_&SW@nC^}d8NR=yi(v_UMcV|uN3%~R|@>gD+T`LmF}cFkG>n}#)Ad^<&~Yu&b;TY zq$>{=_?K4-{L3o^{^gYd|ME(Ke|e?Azr0f5UtUR(6py~Zzr0f5UtTHjFRv8%msbk> z%WDMwn>7Oe%^HFKW{tpqvqs>*StIb@tP%Kc)(HGJYXttAH3I+58iD_2jlh4i2J4_3 z>Z?ZJPg^bEM=jt-E#OBj;72XsM=jt-E#OBj;72XsM=jt-E#OBj;72XsMy~p0Xv`l2`v)kS%zyBMCjRA^(-l$>uz`8QF{nHzk|$UcyIAZzg8 z>ST2uT#c;8gR3H=L!9(fA*=A<%4B68EbvdS6!@oC3jEV61^(%k0{`?%fq#0Xz(2iG z;GbS8@K3K4_@`G2{L?E1{hLzIA1DR=fl|;PCcs5DTHk@OTggcQ=(q>L(`Qk)zo^+u!RThQ) z0W6h!$zv1_ilrJaO(xg`cnGU-3D^Wcw*S9MQYFYMU|$n+ldqcFnlw$KW}9NXW}wDN zQ&sa-eOsNTPE?Oqr%MN_ozzkC25LWfRW&0Ua9fqFN>go9C8}nrZo|60D(Dv6hIM)e zu;tf5I$jl`8mMyT*dok^)qMlS3s}cH$kSwc%YA``;SxWPc|nC^PWj(ixqPoS!yZTd`T)@%SyY4l0HN?^&!VtlbLjSaWS&%O!eD$<##1-=?hh{LhtO@Dv2V|S9Td`Z%Ul+j6U4_Rkgs0GqW?ZzIn`<(fr5chxN+UR}Ie@Vg6-w0;k-CII#U)sfCve zmwPZ4wOzoEM@Z{aL&t;K}InEaY(!j7NtR-_84*MT%}ShCKUq3pU^%Al!8C#XG`vr=m3g2%Be*qpNx4n zoL@u#vizcN57w+mT{om!TG{%aKQAFfgINCROs(fK!}Rj-7oT6(i<}qUet?Ih%DTt9 z8v2ae`EdM&nl>E%gg7vNUs^cDmx4doax=nTZwi;+U0cdlzmXHI2m4beO&hhl zxG}ip&WcVVZr>vCo&>f|*}{+P^lJ6x2D{D5r}Zw^wej8AX9OOYqKev|&;t`Z0Ns&$ z6`R&Zel-JduN(7{B%+M^)vO4g0C#eN!UH3J?0gXu~k)bc?UOjU$?G^HJ{l#xjAKJi|5C`TfCc5EH#iYvvmEiJ z8Mq;}9y*pLb1Ms*&o)GnoG(O{WuKF9M{F_Y%@5iVH+@Ik2AFyPyT#H~Xq}Ir(tc{Ug~GeO4VfnT#_HmzfX;o|_~ti#&wN>^8jw zb9FmfLS!2C%~zq~HS8B46|kc7Ge2S=(HGWx9a#G@MJ{W*A(wQJL@|l&|9A2qaUw0! zKXPbbXi(Hx{}7$E&f`Q{gg=_6A?KRyT2;w^a;tf^qSa?7?_E_IkK5a#t;nmH`hJjUhyp*?jmj%4FOD#n#XnV?SCxv3tAV?$osnRvp{W z^-{H24Za>*-kCFt*>dr@zQWf#MXhP~<2IgfIG<6e<$_-=6gU6KDF} z3hs$nmr1Pl;?%Yr?|{f<(i834%f#+VCOhVw+g`ExsKjqED+WZ2_CIyI`{zv8LQ#R~ zY3-S$2Ai^{91QGPQyO@GO;tah@?vkw)Zj6R+g`?sefIAiyy)}9=d}6N#pwLMCA*fj za;V*AsLPu7*Otv1mDw`zT7^R^>1_q8_O+h*(ln<28#BY2rWg*q-dh?Qt;6kQINM${ zKV8#+xaV(1HES~_&=o!|P?iSAQBK625f z5TfQRZ}*h`ZtM2VX_>vRddC|DO^!7Z<@B-(%CC976A95O zmcOm7sO}r9Ouf>5Y0Rf9e-1lbQ4$r?xOSh6F%F&TguPKb2r1&P7!EuJ9QZ!?9rTgm zgK!@izJVkj8to$$fJ-ITdKB}0B(iJL$kwh=6F7rGytpZ7%an5icDeg2EW96oyO|CX z14CJjvGuyuN@XS4A^MhaeN^>sgeZdL<(S#{<=?9Q5p`(7hv;xT< zKf;^v!m|_f5`||hjOI)^e12nvzvW-pF`lXQmJcp43(tm+yF~&(cQ?95+*YKtA zJUp@;h2AlTzmDh!C)9-B?mp2VF%%i)1A;>lA-WMk5jwYs6YHbFUnfNP1VzF-OdnOm zmy3a~@P9jBNYDlImF-4hdxp}%6c#hL?nJ>OY+KF+{SX8-z+HVJMubI-hz1yk)i{GagQ&M_W?7y$z^C{>Uqn7I}YXq{}#w2Yu!od37^!H%v2dr~;nv=8I$ z+Pw>g5kJoO0smqOAb8*k1BbAo!O@J{Edd|x|F`+T?PO0k3NQ59dsA3Wewm?uwdb>d zAub>K8YbYQ-Tw(6Z=ETeK&n4;Cm0x&M?3t0e?fe(CX0e2e86N8v=jj!)W3@leM-A}5AN$4_M&o2_6we80e~ZHl3@bq)A^ye6#mT@&>BdFF z9PCK%>z0kX4NSfrb#G3HOLRX%bVJG{ei=*hQ=ZaB#dK|l#^kkw_oAR!!`(IV< zcI(xtzDltTzlP?^#c<&H{OS6pAd8uzQIM`f9d;S5&M9xde}%ain3(mo%JtZnCZ`mbWaL_ zTKHoR-VsQs;ZJxN%4z?IpOprF4EA!+w@fh358m98Hl>*N8nAZ*Kl=3RldFe8Bnk&T ztmh{i1$VYzpcsBo`dNViEI-UO%aen#6qQS&fsfLa3+|87`coJk0h^U<(3gw;uIEGl zT*dxyWbbgyV+aY+6a%!ycT_HkOa#7Gg{xPDk6+MO@G#;N;;-uv-pT7R-`K`fxKs0CX?YaEH!X4+^HV+CtM*OjY8VDrN zyxAjcXz&=FC)iLL?du;AF-F%h1bB?#jz5U6m&UedWHE!Mxlp-cC^gE$KPp3^(lmtAZk(Q zih{lz^zB5SOg$`YM~>_ZxLju0Q5XrQ9WBEVu)2r)PukH^10SVpM|fQrP?@32nI`J_ z(AO^^AJy1&>GjI^{swFqe6$NPK51U?W0X;N$AAe^&^r9FthVsz&zxunJO@|O>=Kin- z&{sTo50%3L_I-3iW!K+72ra*a^OO08beAsw|J8A$5lR>YYfid>3kpZF;|6Na^Kk^T z*9UX0kP$&4Lj%z;abh(L7om97gkDL8=M6IaG?Lqg-GFzX=N||%^#e^T zOfo@_ej#Yt)26wgbDu{pB)#S7pxaMt2${Er(&)ewU_PwilhpY#8dmQVtlSB8K4|bK zsR%i(qUGM8y{`k!eQ!mQEFZM*)1^tEd+!Z;_moVhq@;v0A9U`MOw#2v=-YeCDbThj zO!5^vdAfp@C4p`~tw1mh|K6G0Hqp!aGm`#{oIjHC=gRo!f&PDjBnJByB(QJ6B-XQF zA(>BRfmcAiZ^1lKI`|eW$p;{1qL5lh6r@21AO-yYK|gLp{-2WCg5Nbm!tMfz?Pc4WwX!{P zzV_wlUVRVjo+hDjcAuCUQ% zqJEvLt@>Rw@K+26K4+b>_QM^_->;qdulosqjH{wLR9;fmqoKtZj2-`YkWu;B_;tjv zarcv_Is~@#oUv&^E+MMK@<&zb7u=t?U}e{|iC3JLZ0QMy2%5ZEEndHRnS;U5C;fD}KWySK!>+~`wE5RmZfLo}%@_A|8Y z_=(kGFJ6l6IQ2$k=lX5VQ~^^`V$2*d)2Hk;heuCO@7*!y)yS`P%t-wXC_FcT4yzk42B^Ryt#(CWvG~c0P zP}l5+af`EbhQ6T~4qQi8Zqwdl`Ub`a$gj)G#9c}`SIKlsTz;&zAjLR}4FFF+0teC4mu~sdb00V4E@}l;2sRuJJm+?2W7ZXM-J2HGi_wDIE z#brfn4ikM^-ZO1&<;QTMvCysuA!@|(6Oi5a+nL(RQ;AoGr!9_YE}yu5m({VUFD~s% z*=~Knd9H-Rj}Qmur&s)&_k4c5jBBw>D48EM)%N{#YOsMFl!tOqTk8MDX`iS$b6!HcI%U$h*T>buzz!q>H0orL;|{E#=BZQ9@T+0)?``CEN){f;LRCe^X)+Bm%C zz4(hCbbt1?J|_QhI5%-2_*6)IJY~z4w!fSCEt~4Ic;T_AZ&&6P4heo)$t-Teov>8j zQ?s{L8*;klxjK#K{FwgWcD{UX(`6YCYOS48FJVJmr7>k!W_9$95%FX+D^O*=Zyyt>zI&ixO~$+FXS1dR{e zQ|pflRi|Y4^XmHXoFOlCLLC30^+I<@A*wuY`|YovUr(EotaAZ*F}AH=I`wYBmi!AV zhQD59?|rDk!PoajRUT!3c(-EpFo*B;#?drtBDjqd!-2=B@x$vcD?X1grkj9vrH#tN zG4mKJ>PXV}2##6_qW@R&aJq@>%xlIKzG^#r>x$L!V7yqQW6OHQf@Y5j>Wv9KQxLRC z-GrR9WN}bT-%d*%Jsbku+QltVj7R7h{)9Mi-+XuB;Fg#_j&A8*qw?z`0GCnz0>Im1 zlKa}~{5~41mOjq^yyIrlZrKy6xZaFTvAmx9w^sd4Q!M>j6@F0?qG{~>M02d8|MTiE zE*yyw9}jA}xL5j>iErNaJo<99XhHNHyX9A-47>?(;Ib#StoW8I202{Dl>eXN9IKe9MxoM*s+21GDz7!MYSB(%oW$WXt1LCnS`<+N?T~@Wd z_Qb)5em`ORG&pF-^YsTW_8IGUGm+WPKy!m)IPlohub`s^DzEjE82Rb-`#^8fsBA#F zcH1pW;r9U_2EA}+H1aGfQf!)0{cLx4&70V4YH|H#>1Q0Sw0_K&N7YHgXIHDduiU%f z=jZ&RFW(|W_1OCP?7NLPdYfH^`62O9?!k3-?r2{7X8DsZ$Js63v3B6ar{&J$GDH^= zbd|!TG}!pF1-XA46YyVenxfHaQe__M0%;7a)Z^tT$`HAYe5uk)IUYO#_{ns#vZfz2 ztK>H|M>T6T(=@|1-84-!6*QmKchwo{jp`ZdP<2mrGj(P4ch!B>Db*I$994v>x2mP8 zy6TXeR6SOnRqjyESB_HlSJqRsQPxt*l+R2qnCv!LY%xA0z(U|s z1zL^sSK*+)FQFu$iTsyV21}(?0Q(Z*V2O|hTZ6W851D=kAi;(WTHSp- z?RM)ib{`iw*_Abna|xO&PiHkWz}!_zlSyyC6QbvAe<57y%&CxJ*;)JN!9qK-x72)1 zpY@0_+!q$Zf!o%O&0X#zp7ZDhnCHA+5@L$1YRS6jlCTkR{k{S|w605m`%m?n+8Fej z%D}sDN*oppC-{E;p(DbgBk>VFqt7HM{Pb93?;}>)n>{~uuKI{Mb6$Kbf7T`&^&f^j zSokB6^w^uxrtZ+1r*DdOf&BMQHV?i;&;9L``P8HepEkIds@e~D-8`$MYX6wXgyE6> zH?Qq?&kv|Gc~A@o&VxTK8ofnx+g{Av)*tEn80|CNai8gm^gVb)SF0DI3h(5CU#-b>? zeXZo)`|3WI7R`cu1Iw=JQ^zpY6vKhX8k70m!+v?JfjNIkV-2&BV?`aJcE0m4jG})r z*0^lzbFpQ?@4Ht{=(Xmu*Y`Puh&6IY%v8$`nwNjD*v0R{D935{gVV!CzF^jBI6rm3 ztjv&~i1i9^hH6FV2qev60dg6PA9W-rCP$A20WD)7fPNQR!SF*l0NeXS`h+y>6$;1f zAg3}k5DZ=l&*5Ya>}L&#(w#409o^@3DdzLy=U4jeOZ^ZgVd+$1@A_ir^VNjK*Aw5> z@UEUOe7@l0J4V+YNvwtl&wV5YK1#O_&m_l@rTf=>==sv0@3O7KrHi zNA%G7XwM)J918Vk9HD|BaTa<2<2*DnR3%LQE$jhqMt|x z6$O2Hpu9JPMil-{cf)tYj|q-oF6i4{p^<1)Eb2ts&|sZgP^e#^e^3;}GkZ`)d?^fk zm9D-ql=S&poG*R3=qjc}$gUd}nZK3{Ns-z&70T(<6BHGw>**62&WO|X2@DDk_xIB|NBH}oRh*!`%ME-465b$L=Yjo%AG?qUh=Tq(s@EvsartXk3IpB~sU4lrN{cx!Mtte}fqL+}fAml!RTmT) z4J_b2a7MV!Ei}wG#0Lb`8@Bfu7VQseDg=>&5f-&~se!MM((r|M=MXAAKl*ag!}@lu z=To0vOkOWfKs2Hl*w7E_zen*U^}`AHgQE0{4e9rS66wI8E4mslm!enx;)k9u?rT~A zxa|Rz-3Wi55cEzGx){a@WD*hw8_+K6i)De3e>r{l*VCuRq#uVF*nwj1{qP;7S6>b& zo}1nT6k$lO$dKNDPkv%@aM9Oy1f%qE^BFx04GZ;0&%)7#NuLgWkX8sR3KgK`HGnyD z9hhJ9=VL{$aDM3Ex2|eYgb4NT+Wej2Uz+K1bhFq!qGHI7BAD8Doj131)4mt_@4~+{$n)W8dr_2#sZ`Q zo`Ph5D#!)IgH(TCkPEN@`~HPs-9JmE089P0atpaumM?V#yLu_ArC{kl5bXRrf~0^# zRiMlRIe}zlI-KHr%U!{8e_t6TL;C=_zqJ#P^Ampp1I%tO$cI4|M0eM68yJampaAbLg3&}!}sFXO2mQpmM6bzyBh7Mcuy-pu~MPxe>x23|59ylh;Pk5ApI zPPLp3_L@@JK|QV7j?XE<>t~2xAH4LS?%Cw1IeXu38Z`9o{a4SqB< zX{>jP=hgPe4w#7KtKOjh_ZQh5O;Xyzo1uajT)E z_C4@~?S~0$hM@@r;=}$*Tl&b-;kQ{3MM;VJQ_@@8Qs=kM5Tkm}X+Qh-oO?FC&&jWY z-#>6a9t?IP_5Km}4hyPV$z#{yD=Ti5vDv$9+4r{FPi+)ArCgqV-TUlL(WXSe!|YGq z5aPh?r_TdtKh&o@q-SET9+sC7eljCFlw_4!z!gXC#;`Y2f}}d$qs8p@qqJyl&a5(= zBf>y8#3wWg)>_VG3eUWn)?!Y-!21{a9#`0me;ns7`z^V>kJ+G!V$Uju(@Rxg;2Hu4@Fz@aI z-XCZ73GI-D9w&UFSIxhC5;sDwH~ z5O~a)+6?ydxkJv6wyjGTZqSy#-P!Vc_JDGMPd@IXuuLB+Jy568avi!gik2i9a0dfvxn@C%cd&S?|6Jli!iMy%fMgW zbhr4-6@je>SuOZDWApSwu-}gw8-&v<4eg>B4$Ply*w+Jyze0K+F7rZvDKSM+qvSGIxb~j+>M0lyM*RY68^7SsDL_e~ ztxN^HjjE{}n-8|2-Lx?A_)Cp4)|_zrfW|UpPFUN`*LuLJkdsdKGmbm7(Kwe+tj@`! zL08Tz%o`758B)UZn|VSUIFH&?dV%E_a_D6^k8-9;h=|iwZM-Wg${cvUa){dE!>b<$?o=KV z+I3}2wY6Rws??Un_uuAMvD5iedF4RP?nl@IQNghq-5z+{dfGquY2QsF>;_B;uI+4l z?zHsWlc>}4YJ2V&dMzY!T)@}DURD{pf-61E>*gnQ_sN(y$T#7-^_9&V%5FTHe72I3 zXtk%uv)hYaa`mMdPuAwV zd22ms?(Bu`yZvkzY~!3sHY84Uv~b?}Xv|-nNgfN2U!d^YMHD}ioC{}?--*OMc1}&K zyVSMxskfX?xL@uMSJNf}X&tS>q8g`M%g^YanLFgu_20h?xO+SfeKI|wDH!w)f3m7(1vmq;=uh~(9>OQP@d2nIbw;_n0yLq zzA7`VH#)6D7LCxJLIv1IgqBSbB9RESYghjWP>ckl2@zmt$j2A&QYf(5zE%xSm8o8y zRL8t+q~Z7H*Y~x1-Q8vz)nsp6Pxohy>k%S2IK&~^*QCMb>P@QbP9G-Ckb2!d7g^mg zc2Hh@b^h^ow*J}6E;6sdl_Z)FS@JZqs%Ckxe$UjrQ)kJ&)m7E*u=b8oIw<`>0^dWS zR)k1xq=hPP({veS>MczI$$6b39c0^eraEc5R3{-!^I_fZElbi+QbJB^lE6=$wW@H|z1MWi6eNc6n`)Xv`(k-MEa|{+ovW+uXRV zZ0OXC$mj&HW^?SQ=A!)IN8^|^1f~ubEQDk_m~Um$P>0|C+4e~tqPOhJ!gq;F=Jz{E zh%BYdrwKRxnjLj~vNL*CrHF|Eo7y~G@`scEi;U_vW1DGJK%hRMR`&&kobOO*RVhe$JG$g`uj3!mTn;{Rge?NgRFf3JIb=I~TB(}iHb|9ey4 zyYCNvb%=22(P{V2L(_%N|1ixlt2kcX^IDh2tD5!PI9mAp&Z7gd!NL1XA3e68ST#2S zY|)`$z~8Uei>way?=)-rxaap8l2kN+@SYDTv!!A6XVXj;EfNRq=s&o-@Oi)GmSvum zOJ1I_rQ@(mwa(NQJ|8&e$<9zGv&U5zP2O{)j2+fV=F;z*Tr=t+d96yHX!WC@)7u6J zzYnn4k^HLtu9yM$>^&x58C@uR?qBCz%-sU==(R$r{X}KG<-+GdvDu!VGehW`Sy2J|E~Gq;;PjQ+Ck)>lK{#dv*{$A0+ntuy^CL9GBc1=T1K^-$MAj@2Px?8+)HA zMCWf;aXEU?O8DG=eNwwgBQ2V?UVfy8YS|0+*u#+j0~ULi?Qi)mu733qb%#k@Kw20D z!*lQMZ%uYD&y5vTu+6(OsNN0X^C9fFic=M1y|NlsOS&RStJon$_}=Y?Vz65G7d<06w5!qps!a%X&x@iX7#Vy zYsi+l=^Pz#!xd%xBdpUD|3HXQYSEBxNeUvqWe`9JPl_`O{%-K^cSgwF%E zl*`wat&x*Y9lLj@t0S7!LonbUDBpD1CHz{Sy3vortA4b4B78o$``S*A5kE!vydR7%7Asw@x7b(X{GciGZwa6Kwp{i$Dr(uW zgGy=Af{s%w37-#ab-Cxn8J8#3d$Kd~)d}4~;dB46d7r%dK2N`_vzRjS*_}Y)^I`X+ zZkZ3<^sdJa-;9G$!CsYVqX?W;W-bEXBcz~R*PXYm{ydu|`k?3o!6x_e{RI@^p=_~XM(TQS5eIL zp>!b8$a>qt;~`{+89ABGEwXr1NWM{CPM%B-X?1#X4cec0P-}k3bqyhEEM{{5dGq(j z*VN5_v#WiL{y&H!`ijQyfLQr0F(&=hpluH_e|YqN7tl8fXC0bz6~lq+ zN!Yx#>(PFoKVB`xJR*PMNdR@?Fsts1X4N+QS+z(9&p@PEWPx@Id~{L%$Q%qNsDq6THcuu9wY5@4=&2~ z4v%IE-^(h0!KNtc&N098- z-=NOcqr&4PwYy!+ULofAnRs#DtV%l%cp_{#0 zwyU7dHIEN(Z3)kg-gfS_hXmxcdf}VHyard27%xha6qx0k<(Q?LrI;m|C797>;bz`u z9%hu8EyxAHro35!X})QWY5Kp_{$B!E7YGNrd8$O+`G3Vapcdp8N+ZQzAkP6=16#RH zt_6960$IK+N0ttD5RzmGGFlcc(@O{FWLlXq3jkb+e@bo(yC{s5f4+jzJg^1ZidqSQ z<^OZU>EaY|k~l$3i^IjZZom?{bK!i&xghi<-xwOzC73`)`tgs$9gl})hS#n8Lad-W|9p)GPR~;7ot9{ z*{D@^4sWve%&oV-1-hh}x3^0kNQhkUcj#Hd%hBB}ue8}^n7>Ki+^+EH>tav)HPw>$ z_S<1Xi0Ys@K?&i@kS}vZb^TJOw3yqx=Icv0bMZR}YcU+SZ*222_!jC1zS5a^w(|9k zlvrp|v*i76`GiIj+~P9s{we+e;}~ZT{4dTu0%Se#Cb%3DBf=Ztsny{u~Jq&M>54fF;cyq;dq zgV)jPnEH$As*>#67bYV(y$sx^4pwty=NnmMyukij+g!7OaQqp=^X8y)$@_je zy_^RxqnGjErSwuByo6rDgBR0_dGI275f5HSFXX`s=mk7@K0TiY&!gw@-~>8>2hXMF z^58l293DKIo^2>!H7SGso(oH1PlF3fU`@k?#Q<<&5|DFY5sX9zSS7%(BKi1LBp<(u znh)2m&4;b5_^_oVAFfr457(^8 zhjltWT%!gbu3nuFSF6T{tHNG~Nn~=}vv}}Knl+=&&NpVzGkDK`qkrSU z@pL>7o=#8a!PDqzJa{TSl?P9ur|{s(^kg0!N5}EtSUQ#m(==`1&xD*biJN~W3$A`y`<-=pf@ZlKP?BU`Y4X1ltc+@C9939PvqoVjQvIxxmJ|cn- zj~vN|!^8P-SQsBhGBR9zBS!GykPto`9L$G@59h-{L3}tckPiHsU>7>$EwmfBSvuj-)Ms|;7BnnanTh(pAAiiL_msg*QQ(pQoRYf^JXo;(n~ zb~Hsg0HxIcFedTO==uL#$6v4C|8uGSUzg(l_pbaCBxoNZU6BKO3I(9|Z#-S7WMEi? zfYzUzO}{R9_-?;?#bc|BTc-zsoxnygr$J%eh3hFD3A>1ele^vfb7Y6mJ3Dn``xWV1 z2Hm>Yr|KmWH8gDqCE~z)o*CB@_M`RKQr6e`Qt)+d)W+O_I4 zQ`^)>1Fs$Q$lg8@CUtEn z1>SH52<ij-}~B^roR4x7@K^m8-H;yH7YWf} zgbu>z_d5q{l2RA;wd?z4{q?Iarldc`*1O(*p32i-9QT&@BSfe_tPB>La?`?s}W_TdWkTlA{BTKX}^``t}KWW(}u z-SuuQH>u;fyK}X*TKu-7?Y3157SwZ&nfm6v)4S0XHw;NJ@FK*4>*%++{i9I1<H&f88+0gn0t5(LiLlh5EZmVKhTkx?Z@OeDsS`UNo^T*UpO^uS2-nEhA9dJMB_k&L=G%qCaz!uCd72-8Udt)1?~6;T zdW$ybWmTkgc%4^$t^@MKLy2f zuK5F`r~+qy$_bhWRos9IlG2o17{%P>J%JMSq;hVM>du-f$ z;7IzZ{N+un2NFLt&C704m90I;yI@?S`g?&4+qVjF{70Uh_!aT9HOTham*?8!_v$~? ztg0Lj>pvt9*ZNwQo=C5O@ktyGK8bUU`rAZZxJt_S+vJrEYB$Vj>`%&MtJcY3U*?2k zXOmYo-?(xW*xs{Z>L+nGz0Za!<7~%_uY70ZB->t3oj+2&XWgA))9J;NmVrBmr_g|& z?K^}xaNqH|#{Oxjy>aC>jr)y;g`Y8*zTRw8sz?RDt675I=%3nu-E!UK!{H3;OPk^Y z_YX8b_L>lNXZcG!q!jOQuJM6rdDuDoj(Mw7wqx^W&zrN{&3wQ>yO3wS5{vjNh6C3* zi?3D6BmQ#fS-1t|R)Zr3qjsuPh2kG7C1XeD=ei1Ly@8S_5re)$LEC;5K3E40aq!}S ze1hkY*&`Iw*Nl7;W7eRiv+mx7ubFdR=;RmnA2Pq^97A&YjxB3b=iaw(Fmg@P6{cTO z&Nl?xzL+P17`t!0(q#PIem3*Yr9HpgBcps|{aDGG-4&|6?9n!OM42nFOn`vKguI1@rTBQTHmU3Ho(c69NBr#?Yi>q;s-O< z8+a1pz-_K!+u_luJo9PB-fh0Wgzz$E8%bKJ>b=*fq|o_7D%}54uOhuCC{&=NO2s5K zsgc?w2<&-;`eB`OEm5Z2ZdHMO*wsAq+p<*p1yQzl|LMDrTOV&Ql#1)VkIc1xO2G!{#xTBKwhN01;0{|4xjv|M$ zbZ3~&=pfz+=Bj!%dnFO3AU>C=X`j+AeB(aH(=EQ(l<|H1QiR<`8F=0NzOm`@+*G@z zKD}n{??pQjB3L5hV14jUlizz*uDQ@T%l7_AlXLlHtQrRwXm_qS6)*G4xVjsb$`J5; zT!;hrPwRun`yyTwhB5QFg!d#d#hBGrQuZBqWpzfJggPU*$(jQ-3sGp8E)Q;C~#p4sdw5PwF;&N8X+5 z(RFS&o-i-FSzXn+vmVV4X*|~qZ8BuhKEpbr7!F*I4?MWk7xTs1J4~nz_VbL%Qj;cM z415*Sg~5EmmKA8iz(x|$#UHGB>AZYk(M`y8I?HjhVwRasZ8|(7YI3}r%ur^@tLqkC z^sxB6B{FNJs=y8UosO6@g4o!4=pvJrCkJMjHyhYt#P|%dHmQC-;DK6mGh)=-A2rGu z`ki7paGAY1H`el3WtL#;?x!+K3cbuyC>US)OPQtQRpa(*j8&)8R!H z0psLHH34#D6|jSJIJOI@kX6v+Ncpw_yU3Asz(mP+)il|CmA4ex2&81lN?@M2w@NE1 zZYeNV!q^IYA+4oMmB^GgWzS5G$}X6^6Yn-zD_d+bUaGeoSXORr(m>Kk&e#uBOOXY^ zrPAdJKM7YGAfaqpdV{R!^FdrAd40f0-v6-oCU7ye@BjFjY1Vd0+6^VC&_+o(2q6j~ zgh`8{O@%D!l&wfbp-6kOS0tq{M2ZkX5k`_|5m~at|2}6<&73pM^Z0z8@BjDvKmXVF ze!c3B2^4h>Bq(OiFo;)0-MyQw{b{N3an#oa-&?zjF4K1IX=n12 zqXzSo$vmHL zkTfl(Jk)yLrd>;i8|7p5ijEs%GO#vSe53gq+P^*_z3VQGP(Bel`f*?zPly|+uN&xj zV)n%Xs7Jq2B5ok6yA&EValkG*M;+5$8sU-jEclQ{z*je*yYvp#U25N5#^)vJA2}Ix z%#8}O?YHXuq3)8jW=B)lkTz&y(5#W+GXj9#>I%F}=GCWPwTn*pzFL{G^z(s*eVX4x zS61vVcx;_HU2U#o%_Cu%h{?dpM3J$FZ9QOk&6RQ9Vh&m&M6rcA7FZ*^JWmxw)7bLg|-Fu15=Z%udib# ztzFM^W^CLB=4aTv1Lct|I3ehF&vQxp8cM^TX3zDlyE*>)zM=+*;@ra{ui(1JNmOQ@ zseEQ1<6W~Hrz!IKM(EuJ_QgHVQHE%yn(<${cS2969IG`sfZC>_0e$Yuf`YZWZSy;d zgH!e%Sf>FNfl@u`WEuo5f4w)ebYZ|U-yIpw6%h2L=ehaMM)#Mxag3p(?)>S%NGYJ# zcC3dNXCs9y*|=)Mhuz%QPOtW?0()XTyvU)cnzMbbuQIuaEKuo_ijGzV`6W4?e$n*qj}Fu4fe%hv99&;3p0J*B#8kjwy->1cRxACGfmB z3IYdmVnM`u6Y$J&J~qFsREGug0I`RN5x_D`6~yR*KO^vG4gTZ(95**3&Uz34jov?V<_I^p5f}+Y02+-2@@>HnI{FSYXkv3F9dH!} zRl(k#XdEo$qBV?a`eT8DcikQ~IQsjKaHP1{lRfF83DbpY_-bJ9>K3kumxgFsQ68EW zJdV;`Ufs{2S2V7B3F?F~dfq41{XTsx9&NjR`OR`?ruUQk@O@^>w2`s^<2nz|D(BIl_sGlQUj?Qa(Ns^b9LrC%Xh+LT zxOXEqMqv2~zpS?!-5+qqa^nwl6l^5UT>E|k^B~E%2N>i5Iz*s<0PkSRmL*)|;DUb4 zazG2~#-HWl>U73ln)-73{V26%;CpI_SNNztMu7oU&R5w;zryKn_oTD(14f>hSTJPn zuz@_CU&TeKK#pK+5|e@D#dDdwHCi_{NHmt4nqgpHPSUzdDg;^+4i25LbyqI9{yiow zy2V7H%7T;FUO{PPIPKIq+SIxZxl*OI_U6?lsynWJm3C8}@)Sl%b^|PWOMLH&yjRr~V%p)MGaz%`jLpzIJ&kuFZIdkHU%7WBQYQC)EIYVYHtj-c zbJ}`^{;CiK)yF`?krLLEyM9{BZmWOxUX)W;FO}=Rfc>*Gqhhsk3wvLtdLecf*5}DG zur_h~%pgZWeK zaTAl_yk3cx0{83>$FXZ0w~DkCvW$OwTRD5UWyI9#C5Dm}wmC#(Fg2^ul|-0inf{v}(^#6JDqVVRvEuhb#jt6P>61 zKa%(7Bp}F8Li&Tzw3q!kfnNYwcmlUhWth;8`fv8<{I**z)_Aw|;^|A)XP_6TvCWB$@a zyaf9-33Mq)vL6TZYxXzirxexkH}kU4oku}nLSxodRGz=3I;$b|+S}2(tNCn^K21U` zfGDr<2Wv>E1$~Uv;FF9C_@`O{2+I>72(nng07DSP2GnPC(mer&A&Mnf1N`pA z0>6L8v?`FZ2%uZv3H<%>sl9m%5NHx`SVsZIU=zS12fUDXY8ZyC|+ZI%^SZj|zmK=V|D43aGCM0x|_gf1uBle%1$2vRd$VGy;S* zP4gqr?%3`BMGy-?T_d5%IgJ~x*o{Pt$m-&L%5sqnMGO#f%>`L-&@|Y%h5Bd*uLMZ45L>1QuVPX0p@rlzM zjG~Hl^;d6@pQag173M1|q<+~Z_MK$@wBPpz3f`ulXm3zsEz)# ztNj;yWWmUDbXT9O?=K>c*98f`$zn3F{h)uZ4RY4}P_2UcrSc1vJxa11{OJ%Sh9;=r z5jLEL^|EtL^2!*Bn`)}9m};zbWpgP@?Gt8B`l96d7{P8szsX`Uu)1DQOSNHz-d`f^ z4?z;X#Z=`_;H!nL)dcSp{3qenfk-8sjn+2$89JDVhT8Ga$-5YS9T~??Sm#G9Hy?TE z-|s}H?&i}orw$qoQQ8Cp7DVA*`j+QM`5HK}zri|PyZ&U~i9y&q(foDQD*Hiyle%P_hG&_i5i_fD@&W+ZbIPqJ9 zbi~RbR?Ssq5gTe&W^Xjux%@?9&Wk&DH=Pvbi7W%Fv&oy4uA=>ukK54jfenqWM65Ma zhpgvaptXpe2?~A4_ky)%3yuWQvw1-!(!j|eFF=6H=Mn&Xy1V;!`*xS-z+2Rw%20Q# z&-P~Z`IeMd8~Lo1r%|qa$)d)w^q!PR{nCq`4H)#Sz4Dr|>Mqv1`w#_yB4R;n%GY!G zBTV~-zyH1aMTdvdv%|j{#z(GKfCoC?`{-1eFH#m{8Q7Za-{(s&D=h2IZ)%cM){rrq zLK2q&+bUB*dx9!+3Nmb6?ONV$S$OrpxpY;n#uyH#UHY*P98T~i2AEH#^eVM&lG5&?3dF@w4)uj=zf9z#`>m&H-?ih_NV}4y7G`z786_4!~i^;(9 z=j`?Z!=P+I1b$0fK(nsjp*jZmyJB zlQX3+J$*6k+i&fm+vBf$TtgCnEPgzULRm!La{0TD?v{i)md=d0?8O77Bspz-n%B^F z^T3tsV^;Zvek)>a8$a)ETm`f(C8R-Bd%(Mc>biH+M^E0V_~vb{k)powmSbxa4OXBK zbCcG|4j-*ra&i+-CHCQyhnM@=?B1d+vi{E8Rwmp8vgey%7J_$gF^B7((NZin) zE>CF|MaSvR5ADANFr6GMf4?lCRY8g)$6JJz3BPM%GO#{Sdpv53U_21)Bl5vMVvt0< z-(@SpC;c~gzt`u$(}cqUiucQP>J@uY2=zNC!t>tPb>2ZPUn))l=*7ZgjFU`I!@_YP zb8WNA0bi#n&y9*!pF2Vu3GfBbCIEtbVP5;o(KBb>kGk~f-r1ZT8PgRy3vCZM+(^hx zNUuwsB5W&SGO%xbR{oN~XqkLMvITpqpJ~v2+>h2@@72g~2D4m)6Yl^Qw@y(BU~hHJ zbtiB{xOF_fS7Q(MY9dl@R+?u*h%o8yy_!A6klnsv&OEbc6xxDw+U=DZKt)EhTqaE!5*GZy zXXCd}>qYM60T5*>-c}lJTKk@h9X&1G`%%#T0gL6!uFaiP#hi?s?K$%u-%QX|WT&TIs2S7*IUYY1xJ8y4r7PHUHrqMc z+lHp7o(!CBVh4q%C7hiC2V*m)$LlX)EV%LdQIyvBJKIZc4=XATaBZ{Lh9a?a-f)fZ zhK!H4WL5-GZFk+H*^o{ORbU~QpRlcv(N(~C4_+p%By<)3s`=3|58v)uIkT{GV^h9J z{}GdcjVu3Ne8Y@Ww+&{O#`Rfur6}ay*%7`F#az&RAma{>`sagbgBw)p0(ZM27yMuE zoOv}M;?|nRYafr!OSY@V??cc38z3H)ufV7CfbBm5?EX_}JVq)w>xWU~K7~{|M}fnD z6u5Lgu>Vh$N91`@TzP~J16_YU6CCof_;L`9%YdbLavZ5tIYbU(aOGft_{W!mI4Ya z$EoyKIzsoSbHUyK+$+LBEDfRggWUoL8Vq&}IGA<*Kef!~%lx%v!vFO8zk6I1bPe(K zKe`{_M-B56<@-{@d_`#=YM75G?M)5y7Nu8F!&ZsXD*?iQDD6cJ^Ae>!sbQX?^a^U& z3Q^jF8s;HNyHms5MQJx`n42i=N)2-rG+!Y;)__{tZHuC5Pj`iu95njsc#6!|YMpVT zt#;;3eV^9T?VS$5!VwL^=d~O6zD_);vplfbxVFG$9KMth^83y5SbzML$CL@_3tY8s z1VoXa?>7WF+E`lVxFkHNvhi~5WHMjVruo_EGM|vg8vN#j3DXqGeC=f;N7xRtw0(I_ z>Z7LNvbAJ>AHy!Uj;q&KUq$W=a1T&gMCSM1A^)ZAT*-S?`o*Ga(lJNL{C>|rd@wON zaQN{h6^+2hgIdM-gVf7XQ{tNYyuM?hy{BdinXh6yIIL6J)Ff%ZtRMWnkD>+;;pR;9BL%{apbMT!OVfwW!I2+&Xl9^GXj^9eVV;f$P3G!_sY|4Y1HcgYfyj6`daoeLN;HewEnQ&v0uZ z^OgFReNi%V8UEfGiZZe@7HdBmq5V#*`4tzP>#g~FU-31u_N&l&X9 z*H)Y{en6}K)cVtm9VZ5biS=)_HE;WxKyUXPI%&@x`@=_|$|BM}`kWcakk*c^8XpjO z^;&y>GqQZGy~C$84)7iO-o>!Abx{hw4=F4^<nLp4+KkY@{fqCzq1l~6CzFkV@_nFFhdivMkxj|ft{`FRAU_puo z;rrFk-g|$y?fH(;YqCC?cfNl^<_}DtedOW;={FOeK9VXqs*)+jw@G#NVCviDPA{y{ z_s|p@UwZK(PI&(So%{PPwU4R!ar44_1KWL3Wck`VM%B$J()-b#7ph-urLu-Q+_*d+Ycl zG5&@b5$oXA`T3sXmS?wiBM=J9SIgJs`zG_ebf($V69>mX6C3}vygfEuSOMzk9W4f1FNCvg)FEGG8@ilitkW z-@YdMH;3=5U#3i>heNC5v(lTlM4diN)HJRVP?z;b6 zpC!pjA=;OgnHc+v@gMCNerEN?D+^1cS~H|A`ib$+Wqe#yHf59a<+kj(mFvaEm;R2X zDqMfNfN8Imt7ms?K$T@c5SG8nyYF354EdE=Ifm>*u?Ax0uY#z}ehw9}R2e^JJsus8 zsN?__as2*PN^MANDN8&xeHN*Ux%X+)RE%x7iBXjeuh1bZ>D~}&_Xw2opQNt3Xw-q`w#oBM*ch*Ipzent8 z(cksxwX+%gWa6c++vNB6ofS3P zYz-~>*xbkccl}E$Sk!S`*Jh726-ZSsCSUyQ%o z*#A`o{qCS=ac*8iHg6N-&p&Z>MZ%`}m+$G-bUxUtPv-Y&vD69o+`iF!+RQ#hz!|`DEHWd3JTy!s&~um}2uYh5F#%ON>GXFFBu|bE4?=wTA)$;6D}UuNE?b z0McIq(EoRmQ_FEv0x9tU!Du>{b6}y zunV9l4*{EhzFZZ+|Id|61)l#9Ie*~$&jIWL7=wKPMd1Ihip68)0!;o`urBupKK2}d zmpx;!N>>C({d}MwkPG%2V#V?QWck2vAWt?I>>tF+BEWYbSJnY|4>XqL0RMrIY&-BE zSoN3w{P=(DzwiHD%YQ-c{aJ!y$IgxMF%qJIxFZtcvn0gh^CK}i84~VK??_v7DL!u@FZ z;Oi%`_`MS3?2!;3D?*Gg9e}WG$dIoCy zA?DNDJBNSjR*qEYN|8GX@Ve0!3Bm`h+)}IZ#`;o2I=16#bImm! z>*Do_$Acf$4{q|^s&rj20Acwd%fQYq_bJ`S`~qa+w!N9aw%1Lfk2IAzNjm=lJ`3e> zhW}V;3p-dArhpQchF~P^W9;ZzM^|&qVqZ_!^EbU66f+vLZ4kDrY4jK0@7j3zv6qLn zTv+!l2ckrxBN_;I-(2Jusp)C6w1eB0Ee>?!E4_PnIPdz6Bc_ks*!?f7lwfyZc_quh z+LdW3jM>1pASbcfYtaJzjWwuuJQ`Mra)@g9wr_8N%QQ@Pg9oIe8hU@}OA%P}U>dSR zVGi2D1S%W?ziGz2xnRnKnH#vQ@fqge<-NfjkdUIjLuvIWMFTI)Pue=laHR~FTL*?! zuk(02VC!tdY*Ad;Y4owRp&!}n(pD!WXWCZ-TfIeiJMb{KKCQm3v3&8iQ+d@nyMvoY zEO_W{#)%44{r+3t!Nnv9eHC`LFD3&k8>x}9L4T~Lqu6`9o`WId4uq39C1v`;#{D;X zI<{@|PGtMM{~DF>zOdePv=y*vqhpDMh8HVN=5n+1?UePdUC?`3xF8Q02>R+2zli93 zwRA6co?sD!jU!|kSlj-$+4l(hfbIS3@-2aCGvkIn3fnMirU%eb!OP^gR^w1REsu`$ zO{+)!UbSjke7m=D06$Ik_mCU?o5!zTlZq7`RwiT_*!Z<@@=y#ry$;!f^?|y{s2@>D zzBEU_X^=u~`O#CYzs9FPzh9UyO~e)k;1n1HjKdl?H!t56!zKo}V@+KSTG{l`aqWtL zN>hgIwOXk5c8mA*;H1S<&s{jusm<#vlK<11N0R&s$E=MwW9@rAFdU*(p#umAI?5EU z<*~8LJ9O!a`Hbd=3*2V2=>;b~INl1G`bo#Pl#kto<)17A%fFsUY8&{rgt3r&X#Tk@ zXebE}7%qd1$eZNtMi^tgym8T}1*wv}-t0q!@SyQs}7A2Og9J|8l#--K;z=jkr zzZr&IPiikM+A{f$+K9QTYOUkm)f&8+^DDBXXvCb(79-6~AU%R{!j>!pj1yGKaOF!6 z&~J0Tw?N-MUklZ@m(+fwelfaa`YPI@2tjDk_286Y%>}%Osti*UZ9%DV&@moOBO6Lp z>}>06+*;?eKBClR@WsSd8HT-xZiekv!-N;%H>8*rNVc`FH?WTwf#=P8!-IkHUk=Z3 zZlX;OO&dSqL5*8o_@wRoc4q1hyhnGPCj7RG$-vr1o?&V*nzvXN9Q)xq6;hUneuQQL z*b?}oSZpW~n<1o&8b|^dHi{~}B133Fz=Fn{zpv|kfPE)CHHl*C%a{!GZ6ATB1%V1p z0q6h93RPe&-y-J-R_p$0oQ8KD!E{$?C)y!==s`8twqXG3Rn&siUtX_QTeNQvf)aG)w%fhE3TYoQ|Dj(C}9m{uL%le9ryt*_dw zn~~?Xll@M0mx-`^Uwv?D&RAMp{lG$*@_n6bKZtSxm(^^c9kAM1e@6P2uF{iAgAOOz zo|d^acyv&X60}I=6Ff(-d4P`9VluG)SfaIuiC)V%ZDFd)$p{@PuJ zG+0c=zkJ?OuglJ$G)B&!%x}+BP?!aDYY*dPaz?ZN;;B)Y1K6P!m($*SP%2JyWa+AK z23#>l46pv8D2tQ{S;oJ;OrEq3AKM}S%7OQJ^kn0#3WySomq}Nh$?KZWI~PQzKVd#h zc~L`S&PxV+L54`3vwE{Q(}M`CrdS6j01RWrzd*Q2Q}-h{G@$1)kWZ`uVN!cJKDY z#?#Bv;G| z&*YEank?m}&w0Oz%bY&%WKd6D#AIN389E|E6J2Ajz((`nze3icgy{CZ#@vYR=zJdr z%Tu^&S4WC1GMOpTh(_uP?U85uQ$#Q(UnN(}j|}o_e}G)79W^y@I7Go6CO~@MYCpD} zHcR538=a{iXj(kt%fQOGo3Dad8Kr68CQ6SMwl^^uSbMv4z;-O!-uO7~4fe3-UMqXIf^XtLmY^CIsyv=uDT%080$hIkGa~_e7WF>p9r^${TDX zC~i6SPEqxBN!bAF&9A&~ZiAUJZj{jThow(u#4u;SOl6AdIM+{~;jlP3R2|kYeo>J$ z68NrWVf6>_9-Jmxk2qdbYvHl}+q{(LvtM5{^^y-`@K)}fve~NdS)*X=KD5n>$-wp! zj$K^Yh}QE;K|KRA_Xde=7M=EY`w&Fitw@{w3%}gJks!6Wgjau)Wz4@_Y>o^OSs&Do zG}xW9V7uR2IiID?yTB$IORH-Tj2`M@ef`T>OTa`8g^dw!b&brLDetcf8fuDJ!!|PR)4NqS0sD<5$j~V^X#X>x?V|>zf{$Qy-&w zi@<%VMF0)Zc!_hZ{y=|GhNkGr0U89h5RTFe#vD~pf0$2oG+X@fY)BPm!QEzOh>3$Y zS`+9Wlj9$!MH?yAsC!JV@PJpU$X;i?!cWD?*BkQcFIM(eI8u8E`d)b|u5{e>ZTZ_;cYhYCKe7xgkGGc}T7>2i!7=cV!GC2dZVHkq z(LTpR9bU)Doqe2Wn!|>Q!!|YYzn^}RdWP`^wohB-F@kDM5!TQOfYVWyHC!h4qF6R}|emI7MsZVCzRpkAl>~r>(w`oT7)wSqke72Dc{wi}MYhM-G$MEI)ie<*&_y?*;q0X|Z?R{CrIc31!wz zSRYd!8&cKNM#W@c^*3UAvn-m&PUH$UvUFajLqTi_c;ZZ5k9*iYOw=j zEf^_rZ(sVi6mMK`+z5X`?XA}s$PNM=Td-zW;qK$&>Is~F*?YMA4x18CTH@&qHoF1? z{Jg!XUP8% zz;B)t0|xf_sj?B^B;QFk0q6qo>98!=N08+)6=gfYX?{END6^AZE|V+60k{E*j0713 z;1D>-SOSZA7QoK00k#20rT^SB07nX;a-~wio48CKYF_|s8&K_o-VgyDJ$>i?wf?_Q z+W>1SBKk|~cXTADn5*vcqU>o;KV6|k=5LhhL&>m?zsPiu3n{w4Wel0`o3=9l$cE`d zY?d!~@wz^$hRpY_>Ad7xdvuJ`%$5C@ojHJhdqEKDhXjRv-J?)`q(-SV5m9>EcQBbB z82+|yo16Ke#1#3G=gtEriShk+PZ?kFbsU}T=;BhltAos6bN54wyM{u(!qC(MAugr( zurGYSx3l|!rR&<)G(>!jiL=gQlb>JJbpCoo@OfjupOy>V`lnqX^Ec*rZ`QXR`egs> z@p;;@A%dY)B!BC(=lN?qtZysyw%43HrUtjy7rsA8H-2te`JUTL6JR%$uk&Kb@`Ju! zIy;=+&>HvVX#d>{2Z`yQt*vg^d&ED;w|(}<{iZHgMvD?X)6W!8L7w znZb{J)nxv2*W^EaKHUST1psy@wlS=r{2%nC7nNd4QJV~+NJd~Rb)!-x1BGJnlboA;6J zK3^TQPOUT8(HESIqCuE{U$Z@0pO*ypyI^bUboTe0zGQxIS5E#+6~?mizGY^|4o!0* z^8+TieH?l4RMep8bD@kmlls_mY!v+EC(MyLgufUdT3Xqb=2JFmePHx zv_ligeBWUiRddI*dOWO9xX2%DrK&0T-Hh?582-0zRf6f!75#?@{R` z9&IcAdWlC*)A469Io;E9G#-DySUf)N3FB!tcA>)g$J(DKesjGBruBWhcJy?+upJPk zKPn9br2b{b6}P>4@SKqBg`HkUn+6%a+RJP0clKUuyF%i+u?Th-I_DRYfz6HYezshJ z&8-Nw&l1n9X<@q%{>1O)FTun1~5_ZIe1qhogJFkCOJkYdd|i zF&;w-4ALrFT~pBI_+>$8ea!odlt6PETk`~U?E_#>q4WFdg0&4kH>1vlHiX5tGoNeh zri7c!o8JHJ@`@yQC+e5_nk-?X*Vb5(s!Ej=+OnP$=I84`<)mFHdMB38cyu#w`$51M zOQHPx?Dp5~w=t|8>75Z-L0#dZsRyu6ab-1#jIGS#K3_0so$1f;yrcZen3wzrVOfx6 zU~QLL5ko`kHX>Lsca8`FK6oUqeK2h7zgznNw>&Da8#E0}C6RSOtLi`s&}9%h5k~*I zmp>k7o+;LqZM`=HteemPdNZVi9uM=8W zF{Fey<#0&O`OOd|8UG5AJ;C&+1qF{7yx{73^QlApKC)g3_n^q0U_g@oulRde`|a{Z z+2JW&N*V9%cC8zC3IHYHd0B7l_;ienF6}g>>+0jR+OzUD4z}Ig-~ZZIjoAf?8_vH) z&|(C`CK#v4GO)V7SMDuX1OC}K1@tW?t^ozQMfz|p%(=fxxD$oGzjxgtVO_1=eYH+8 z%*wtdlNs!oaH9r{!)UVrL4WELgBybyrEO>BT^?E)xaT0`^*On^^4It8PgAvCwJi_A z?!xj%mVvF29;c62An&nBLZCoDM!jLYQLs(64W{r+N~+o6BRy+e7SP{$23s;yc9uR9 z*HK!#c=(ay=VJ9vx9>?^3`<{uDD&_-+h+Cr=s4>1$YQ;D>6Vixz8I(&Mmd_{KFPk{ zrwKc6#f=il6IljUXM@Xcl%aVN^(!Iq%M#Ojp0I7SRRiI}ybBlIg_ZR;x+!b>6eLg8 z|1s06vF@06@K;y#bRVk#C}Hf)tn2qP;6;i@ZfrjFXiwbk%f`ydev8gj8JaTQo9YV3 zUojc~((!lAv#=e%EO(fG3RUQsmETYbQ5NFgRx%FM>y*LHjPGm4Ui@}ti%)>RoABEz zCIc%A_q;_oR)p{z^^ENR1HreofSS`h=vU)z0bV>`F_ZTpN|)_M<4?U-8~FqNHmm&w zfQld>B6LGVplI@u0M_%3V)}jPj2ioN^sQ3>CLBfeTpX|tpnBSW2gewccKI8M6{$wq zm0OEE=M1EK)~9K@5zbNP!}6TM-F<0UQMY{-e+i*85e!{{O$#|8M_4sL3D8MgUeJm+ioY*~S1L zKoKAWv`e%;XlL@7RRjwJF4KVtGmU`{1Vw--*v>%l|9Jl)0^pw`44{4h|0&9VAcwMG z>$7{Go{F^tRKJ-)MZO{52y`dXNua+XUkUUV_T z-H0?2=-0?=0^NW#5a?IPD*|1Q)D!5J$V&pvNB9K#1@eMGKS!Pu=w}EHmxY&q9a2Z& zKSiDr=qJb%0$q#L66hMFhCn|?9uw$C$Rh&%5P3+TtC4B~{Q!ADpzkC13G_YW9)Yex zstEL56$H8*DJRf3kQ)TL3@Ibf*AbwJ zCDQ({A=e0WDN;(HuOe3o^cCa^f#xAR0(}{|OrS3zmk9Jlg0(~AiPoN8s0s?&wIY*%Lk$eJu7CB3x&md2Vu zflf!#33M8gMxaxXR05rX;78ne|4v4d3H-yzVFI0mBoXLC$RPrK5IIPo6Olv$oq!|| z=mW?B0=*x>kEikU>_heu`0+?QfsRAs2=rcLFM-~J>><#xNGySlL1GAWG!jjqcO$zA zG{Ijts4s%QZa@?Kbpx8&zFl7DXomFVA_K_&Y4W>AU#y%|)Ze{Tkr=--<`CHnVfP>KG%8C0Tw zZw8g<-AU# zy%|)Ze{Tkr=--<`CHnVfP*C3Y zBA@8rn?WV|_hwL0|K5USB5KdYpgKDf>BWnQ^df*JBzpfsV0|n~J2?^Q1>p2Wls|ty zk)Ah?NINA7=>^c-N#E-G*KY$EO8K&0*MiS(>lM0(~-B2BbsV^C+zAo8bAC(_fV z5oudnB0Y5~k)ASzNKc+jq-|`7^rT5ddg4SPJz)ZohG8N-9-JPDme;s(M0)I4B5iF= zq{o2MN73i4tcdjJ(L~zPl1N)v5b05)i1f&jMB3b(NSm1vX;Yx;AetT%6C!PFOr%GE z(;LzIhYu&x!-f%QBO@YhXh@_D09uKtyrDyhv_4pHi}HsIA<}w!M0zkdeHFc5SC>fZ z=n&~agNXFNfkc|aA<_c|5NU028YB8XEpQ4WN^5EoX$=hsszs->SU~On?STKk7I`kq z23YdD0gL?vSx4Dx;N<HnMiIUA&03i6lk`@XpuQGU1|0{%Cx@I5YF^TFd>C#QXWlo+-4nw94x zl?#WFlkLgp#_npB4>tU$unDV6bYE6X2DZnQ5VnScosX>)oG~CkD=t%#?ieNHzNCF; zY0RY31U94WyfrXXY$KDIBMl9i(5-j`(j?rg3brzzHJ?BBTdDoFudgR7=0X$;JZ~?g z-DhN+i?*sfr#+>%-SqNsO4U3QuS%2RgB@qyUx{8)*poLg8QA`;n~zPp;A~8Q3;YS- z0^hgAF-;Y#T_(|>E0GXAZ?Z$SwKQ`;pfa~XcQ(+9)36Lf*T2p@>8AQabxt(B zp>F#2AH0agiuQ7orQbO}jSd`jeFh>d7qSejT(tAne!=Se56&9E6afUZ{fPPY!u_P8 zJaPYjVCcu6`=9gw7uh58|DON9yLZR?F3pB0r+d;;IzzE!d_$jT&v~`O=CIG~g($*v zs}V_;-ft->j#~I`=<$z`-DikW+VdPYuQ1zSNwe3F$#BW8d6nQ?0(@>jK+7||k#+IY zv5#3xcShc@e?2}Mbk!an*)t7j7doj=v>Ll2eNPYm6tq(`Qw`RXV3<;%V{WDhH} ze3A+dMeQ&iI`?E#m)NxT+^Ml*E!(&Lg~min=7Yym*X)8QFMD{-!v`Dw%tIEv{qQD2 zY5#Aa_3hQeOM$Dy+)v(ICLNDWhQvqV67!X}H?O=riuneux4-xFDdsyj#v+ zhw4mNC8uOGYU|6_JTzX|m&ZVpzB*k9Xi^))y|bmn#~Y#~;A7ka54m5h+;M!vJ-m*u zbO!^u65oi+@^4k$vfk7j+gA2oct#;613Lr#_xdumqJ5N^Lvvi959_BCxgr3k;Q~Is z9e-w=TrE2%Q77q;$+Fp%cga0Wq+FK<%;=lOrMQRNER`FzK^FK@pr9oW{5a}wdCK{A zWo^4b#JjeTYdo@jX)JaZ)-T91uyS2nG9V5eBd>)DzKhq+p?b&az1!qVv3^Jqe2Y7y zzQrLMh~!$F3SLT)(wqw`OM_nv+`Trq`}(+hg7HEIn#2bl)pt&IXm_ZC%hu{C)L9*$ z*M7kS1tAd0uhPqAFO~J1>CzGERYSvo4swlPLI)k<=-6ASNX1)F!_K8F`SnzFG28E{ zs$J@&2TE5HKgbva3G+*qfqfGi&pn;}$7h*fo!8s>tl%tD2hNclIA*5U6rdydjL-x^ zBu`fFZ%=MTPEA{4ylLRRZGm?nN(P>%nF=um+jgD1zs>Q=`v(I$iyVq$$F0zL@M3@M zgoT|o^)ABiznBcH4v+0|!sa$DIM#a$iuFEKd#Jyk^34!w3Y32Q!oKsjq%sv4QY3I%_)2$7E8G3uq>*evIR5!4!Y%EU|Z#ZhbYlYoNySUjqhEe+n z5EWF*TCQ*5eJ$n;zav**UAuGrxRs2+k6xCf9)^53TF<9z~*U0_zgmo<@1FP!^m2;H;xURvP zueZ7u_*1fvvcz7)?I!c&7vJ7m^k-1rOF`B=lIJV1CfbFuC zEU^Uog4@7ASW%KWSPCyZ89vZ=2I=)WCj|~$l zUY(!5(LjFPq`THDG3ztY@rvvL3ZmS`=Q>;8+IdXQ{k3qQC9i+6O*Mn;0ZO>u6qA8{ zOV8gn+JlbaL~JbyV>oMtSNI44vKGi8TM^-bQv1J+t;OD~?vnT@IBv-_mSNPXi1`rZ zEM7JNo2MJb?(KWVYjN4#b)V`NFb2+Cdg%QU+t&EThhdkByF|){ECbWYe7g8^F&5|SLq6`_8-o0NT!1e*aIZAPfoQoi#-1Ih z{<1&QBncA7V`AS~%t}2_@bX}?*POPgWf2hNAYL~5Zc*I3H}uZxRVdc`e>hlbd@IH4 z64@te>_K?(0hLnI7=G zlb8%FPYnjsZ~SSVgyS%Iw1p_1_&EGIBW!QH+S}Ujr&g_<_g{P>kG8_}i0#*5^Q#Z3 z`lrzL7rR`r#*PKrJi32vku3q&$SgqX7y;O5-EGu0@(Le^JCK^imO*4&(D@IKp0L`~ z(4lIUBp5H1A3_+fzwcLQv7<0vM$lk58pcrV?&&FG zX1p`qgS}R{_pDV|%UJ#akgLH) z`J0N27~Zf`-~8VPlytpO+3{kY{>kj{ao?Zl9oy@P-G`MESq3)tM6e>CqwBTBg7q5E zBl#pHY2-ntt};?6egtYiB(TK?DvcCXP#S<0%4^MY0lrJUmy9v&(!Ai{*U8$j%0h>H=GKVxL$VC4&4#ppK(RdjOphJt1oXBafWgYu4Taz8 zSq`@Ud&(nNTO3C|MqIn|b7L+G&;rN-JG4_x11oRqu%Tp!*34NR~5KiG$ z1ZR&HaN`Rm1YI8S=N2 zZlCefdhP5i+|Lq|fsL1Zs=+A1T;>SY+FF1)=Y6L5ewK%u)BN?rz<$=x;75sCD>V%s z?rvpuMeJ4ht<9>mRXtSoaY@^3=g?AtW&u|w zl?iPBfmJ^wgGlkEIZTAXr$H>9bSmcekIz78sZy{sm(Gz!{r+)jJT`}(%7!uDe=z3t zkI&-KdBCRtB4XR0OHTk^{yc$?KTA4?&Z4)|YG^##QCci57Wa@ z`%nE4!~&lOFbiRF84dsg!I%Nla;0La{?tGBPtdzn1D^$f(2Eym5Nibfu(>IHBn*Cn zfZ6353w}cka7`2ZCd8xP+EfYgDH7t7CBz?=5T8Uh9%Lt+dzQ!ReAxbka``1=p`zOj zQ*drJynF81WqsA!DmGwaRAXDB)ui!m{^oi6o`g}RjUIDM(=u^6g1rEpe~8Jz<{ts~ z^N> z#a$_H>U#2O?54e|&d1nmmAL{uR0J($5bks)?!Hj_=Ip>zBX=cdl*!GD8|S|xv_6>= zIqAx>_A#yqb{CdEvJ7kt37W9LQ+y1OI5WwTn7{e3;L|F<<`MR{qIR-m9+XEC2WUY}LdH1W=g=}AySlz#5!`RA9d6}Ck& z8Q552xxQ%wEA;*nX|OLQp@&hGK7qVY6&*OBoP|LNG6tpIgHHt*N&+SYtq%(LJD7-u z+VRlIyDNdB0%om^UQr(UCsJqZ%#mB%E;Jm9+jcg#bbAa$d5-5VWz5-)ryeOCi%y=N zIwkW)>^J9kuac4qH-4}3I#Ur{Ct|x>L6(8l*)j{~q(81R=ici~fR8s2PCtK$>hL#p zCY%RXWcpP<&Z~{s@bX$t@I$4GAj1HAkp5o75bgU-$T6&UG|}l$z9hfqOnG3#*e>;x zu%Gug*mfA+lAS35Z)qGdOSTVq|2*G7_W;gZ_W&<{?UlkvQV4n~BH9h!Tp=8&7N*`2F4t z8MB5p`*m)0J(hpB=j6A_f$%i#6B;Kz-mpC{(znPmuzDKyPCn|7>q)csdcxHB9&5w9 zkh%zyzo{pYJdM2&{-$&H&&4Bd8~albIv@2fm27`-SsizTRcvlDs-8{$1Pfq{gkskB@(;;Fh?} zWqo&IzBUhWa8CVgVMJe#Ab!7 ztyel+K4p0@z!?+8Fou=5{_~nCcT2*+GF`MET8}o^T(;WYBilgw&hU#1!I~DY-TfsK zIQGbIvpx_d3?Gv;uAfdwo0$#Ju;m?x77whMNu(QD68wex5vpMC${E%f}bsJ%?`$^Ew3k2=l zhYn@3B;n-I5tEU&(G+g8F?=Hag zFU<^eA2!3+Z@IV28duL@6J1uUaR>O*VABvPgjl(>Vl#z%=9}|ed2Ijl^=Fn0v1CTC zTr=~-SahpOqz{xw`pTVJG3om{v$Z=)>~p6;6hFM2^e(?jGlefypI@)XY@%`IlI_vG zd&)^n23GI?=W%Dt`|}%xiz>@IAMPL_e?#ntQV8???vam39Tl4cNpjw3FZJNyNfxD2PAYNZ|Yt>aOR)xfgh zs)op=+xiaWrC%7z;-?r_~%2I<%}vS zOpTyaLH@w!UV@Ci3=il9)UbouPvmTYhd))|->(Vy=_>?le-zmdVR^DF0eT+~VEM%| zxxkWM71+@?0W11c28sfRVgM>KI_Z3RIasZuD|O*I-3fU2(+9r&P%J=8QpFIcl+82#$QN! z-~aYAyj=dbp9u=0`}^|0{jB%-&Y$+PYzg0&?s4Ke-tJTdSNv`k3`}zgfz)4z{kP)- zwqK?;sAqf-*d&aAGw`={j}ICW(%l`+!|x}i8-jreF(Dur)icf-SrWMa`Fv*){(N`& zUBGD$L9Qb#AUUuRAs*}xVsuY>4F73*fXO}C^JFGxTSq%vEHJieoeULL{>-S9THgx~TtqW0C-XtOe(;d_HIYdGCf2xo;Y|pQ% z8<|5%$6q#@39s4gN9f=gYS%^F>&NrO-p@;rYQD-E z_p8LL#%F`$8GG{c=O2Hb5PEy0_t?nd#~LSZ3fLm`TSmFA-F%qs?CLk$aNip{vGTik z5gwbdsB~HAjP;{dRgV{YzIaUjxj`)p2eN*=ir8-X<{kO{mzZW>R~c;yGWhbO@@}g^ z6q#S5sq63MvTXl@Ij^gWq!)RU`30(Fs^i+tjE};+(xU zG?Dy#;lYTF!=J@FPt#91q;mTVu3ja4|J4`puyq<^XUynhVD`!V)(Z0T%>4OH+rE8j zi_$zf+Iab?-D3O^mDbAw%HHdb47buAnDdd$XVZ3U9lDsotc!nY9H`k~OXkbmn6ws7 zIq<2eK|^2n^S6g&K6|#Q@3uhax~_SLcmF@^y$M`Q?He$BW}3a3Hd0iYl9WPwsc4Xd z(n`BZ`<@gJan>DsIZp`ZnzlXT88JAO34hP`wY)7Ij6=srs3wNv@Ch! zb#j+O(xF`G?vTb*{)a!l(%>A;p1PXziGK2q^+5W%PTMV->BhJE*72`@-o z`edEGK@mS})%;t(rZ`GWwnpO#lfSF4^ayvh*JG~9SupXg0KRn6ySHiSQ^a+Y|g0jVJsXEPT4lEAvS7+wQ%ap9!>oJbmwrIz{68 zPff=q6t9zq1oCfHO7G6taR-XNmp8r8;~N?;+Aw@|XF>z!?wyKxVr|0lXgtmTLa*y7 zrQz1p47S8gA%YP9cr+s?ZJ@3D7HVVy;%Mxf`1ll-9?E~dc+s?iZ@h-NRBtRd^ zqLt9BmWMXY`;mI(HD~+6rB9A+ZXS4&7v@ygdie(H%};cGl37eVwpMY&;-Be+#C>aF z4Fr(5`H9^hZSyWE+Tv$TlDsGEB{2TuQqoV@IVWZ%kRQb7Mg`@e^NSoz%F=PzeD_WH zli>Aty9MTV;USXtnrr(!kFLyY)Cx+Yq4QHR0-qjp5e`UAI_Q_j3KM95#LIita_6`G zRO{SPXeBB67M-8=`Jksou7_)zZPi!z3E%di@wksuOuWt?nOwbQlYu@y^Aj3Rj($*^ z*L3~uEgN&n^%hw-G#+2?&RnCKAnMlqB6!Jadt)@7`0{ap!$DPzHJcLCkDRmREI+yY zrF1BFnU&n3Iuzu|6YX z%kO18H$T~HPOSIwbGl!DEG(nb7I2QoxOma*(`WTN6xPqCn;tp-dO1sgKGnFjCi?X0 z*g|>n>%>?QG@dk6^g(1sm0Iuuxt{~ERRaA-c*ka^&0?%0A{LwRbMLhX%&($vj<#<2 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�PlILa+%c+&B-WqV5Zs$I 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≈p;0W4JX{`+JX{_R@wWn9@^E=P@^ESW!?qeG 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 z

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 literal 0 HcmV?d00001 diff --git a/objectbox/lock.mdb b/objectbox/lock.mdb new file mode 100644 index 0000000000000000000000000000000000000000..d2ddfb890a6e997e12b827b93d5446e453c6cad3 GIT binary patch literal 8192 zcmeIxAr8VY6vpvE$TYXWkdRXAb)yc;Z_kCf*SG(y#j#iaPF$Slw(Vs5 zUYL*e_T-d&<#$qkVlpZ3yf*)`xJdn1<|^d}#aYVFj5hzY(ELlAO7mA<%isJ~>YrLI z@BBvUU)rDUPy4NA7XbtiKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1pX0t0+_hV A-2eap literal 0 HcmV?d00001 diff --git a/pubspec.lock b/pubspec.lock index 3e177e8..7a848e5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,14 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "30.0.0" + version: "31.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "2.7.0" + version: "2.8.0" args: dependency: transitive description: @@ -63,14 +63,14 @@ packages: name: build_resolvers url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.0.5" build_runner: dependency: "direct dev" description: name: build_runner url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" + version: "2.1.5" build_runner_core: dependency: transitive description: @@ -141,48 +141,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.15.0" - connectivity_plus: - dependency: transitive - description: - name: connectivity_plus - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.0" - connectivity_plus_linux: - dependency: transitive - description: - name: connectivity_plus_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - connectivity_plus_macos: - dependency: transitive - description: - name: connectivity_plus_macos - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - connectivity_plus_platform_interface: - dependency: transitive - description: - name: connectivity_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - connectivity_plus_web: - dependency: transitive - description: - name: connectivity_plus_web - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0+1" - connectivity_plus_windows: - dependency: transitive - description: - name: connectivity_plus_windows - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" convert: dependency: transitive description: @@ -203,7 +161,7 @@ packages: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.0.4" dart_style: dependency: transitive description: @@ -211,20 +169,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.2.0" - dbus: - dependency: transitive - description: - name: dbus - url: "https://pub.dartlang.org" - source: hosted - version: "0.5.6" - dio: - dependency: transitive - description: - name: dio - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.1" fake_async: dependency: transitive description: @@ -277,11 +221,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" frontend_server_client: dependency: transitive description: @@ -303,13 +242,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" - http: - dependency: transitive - description: - name: http - url: "https://pub.dartlang.org" - source: hosted - version: "0.13.4" http_multi_server: dependency: transitive description: @@ -324,13 +256,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.0" - idb_shim: - dependency: transitive - description: - name: idb_shim - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" intl: dependency: "direct main" description: @@ -358,7 +283,7 @@ packages: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "4.3.0" + version: "4.4.0" lints: dependency: transitive description: @@ -380,6 +305,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" meta: dependency: transitive description: @@ -394,13 +326,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" - mime_type: - dependency: transitive - description: - name: mime_type - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" nested: dependency: transitive description: @@ -408,34 +333,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" - nm: - dependency: transitive - description: - name: nm - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.0" objectbox: dependency: "direct main" description: name: objectbox url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" - objectbox_flutter_libs: - dependency: "direct main" - description: - name: objectbox_flutter_libs - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" + version: "1.3.0" objectbox_generator: dependency: "direct dev" description: name: objectbox_generator url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" + objectbox_sync_flutter_libs: + dependency: "direct main" + description: + name: objectbox_sync_flutter_libs + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" package_config: dependency: transitive description: @@ -443,62 +361,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.2" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" - package_info_plus_linux: - dependency: transitive - description: - name: package_info_plus_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.3" - package_info_plus_macos: - dependency: transitive - description: - name: package_info_plus_macos - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - package_info_plus_web: - dependency: transitive - description: - name: package_info_plus_web - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.4" - package_info_plus_windows: - dependency: transitive - description: - name: package_info_plus_windows - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.4" - parse_server_sdk: - dependency: transitive - description: - name: parse_server_sdk - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - parse_server_sdk_flutter: - dependency: "direct main" - description: - name: parse_server_sdk_flutter - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" path: dependency: transitive description: @@ -512,21 +374,35 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.7" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" path_provider_linux: dependency: transitive description: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.2" path_provider_macos: dependency: transitive description: name: path_provider_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.4" path_provider_platform_interface: dependency: transitive description: @@ -540,28 +416,14 @@ packages: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.11.1" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "4.4.0" + version: "2.0.4" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "3.0.2" + version: "3.1.0" plugin_platform_interface: dependency: transitive description: @@ -603,63 +465,7 @@ packages: name: pubspec_parse url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" - sembast: - dependency: transitive - description: - name: sembast - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.1" - sembast_web: - dependency: transitive - description: - name: sembast_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1+1" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.8" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - shared_preferences_macos: - dependency: transitive - description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" + version: "1.2.0" shelf: dependency: transitive description: @@ -685,7 +491,7 @@ packages: name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "1.2.0" source_span: dependency: transitive description: @@ -693,20 +499,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.1" - sqflite: - dependency: "direct main" - description: - name: sqflite - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0+4" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1+1" stack_trace: dependency: transitive description: @@ -735,13 +527,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" - synchronized: - dependency: transitive - description: - name: synchronized - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.0" term_glyph: dependency: transitive description: @@ -755,7 +540,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.8" timing: dependency: transitive description: @@ -770,13 +555,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" - uuid: - dependency: transitive - description: - name: uuid - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.5" vector_math: dependency: transitive description: @@ -804,7 +582,7 @@ packages: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.2.10" + version: "2.3.1" xdg_directories: dependency: transitive description: @@ -812,20 +590,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.2.0" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "5.3.1" - xxtea: - dependency: transitive - description: - name: xxtea - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" yaml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 95d9cfd..b200920 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,17 +9,14 @@ environment: sdk: ">=2.12.0 <3.0.0" dependencies: - parse_server_sdk_flutter: ^3.1.0 flutter: sdk: flutter - sqflite: ^2.0.0+4 path_provider: ^2.0.5 cupertino_icons: ^1.0.2 flex_color_scheme: ^3.0.1 - shared_preferences: ^2.0.8 intl: ^0.17.0 objectbox: ^1.2.0 - objectbox_flutter_libs: any + objectbox_sync_flutter_libs: any dev_dependencies: flutter_test: @@ -31,7 +28,3 @@ dev_dependencies: flutter: uses-material-design: true - fonts: - - family: RobotoCondensed - fonts: - - asset: assets/fonts/RobotoCondensed-Regular.ttf diff --git a/sync-server b/sync-server new file mode 100755 index 0000000000000000000000000000000000000000..39e5c76b28c1b404b711dcee7d8a38eeb73c19ad GIT binary patch literal 9206368 zcma&P2Ut_f^FMqjQUoC=Dk5s62?!by6njum5Yb@oL{Y40P_bQ0KtXI66?=;vd+Y_h z274C^R@5kp6^&po_@6y9=lyx}khrY8)r$Lb&qqzdKi(vjVgnu$(@XQ%xvk=J{4x6;vsM2MKi7ZD<8h&s-$xgu z*I`yMlJfsE^Vs)7`cC4HL;BwTPbu_ED24tpEsW<;|K^#?;fNi}S;2+z|Nmbpv}z4F ztBcu5U*nWikx;34F>Vn1o?`V-9#O2$`cLWhl6e69Nu|(U41ACE@Bc3e?RBR1#O#z0 zL4OJ*w$5?&M-Cg;I&jY^srFfpW2K%<~~V@KBuyYVIo{+GfL zv)LJ#X=b0lYuV;z=4ywd$6`-pT>8*x@6Pl!hpa(pBPdXVOa)-APfaep;_caHX7bQ8 z=2C8$ue04k2`Bf|_|MmHZt~@+<)og&H`^}Gv~;z#sOK!T@J^O2l!lHo(~o+ZTCrV4 zj&m`~t-?uVQs?0jVGGMSRJU+)Q$q`Gu2OFsPM+!F#BnJuo|(?Ixgbte-cq8j z?OfiBQ-it++*)_bP0yrmDPCc1=F5Gb=IQnIEXuEUP7Mv&I8j=A8@I8iyhCtx?m(zk zR*{qT-z0AW?vXp$hNPHtDP~TtoXgp8PX=kFXWDy4a24Be+5t7nx22yIxo>sIcX2yUj_d1a7|&+zBEpzUU=Fbf-b z9}9VyHr+<1)`u>SliOHG7g=!mA!8iW8tFl~{qSm*J2@CHe~FYcbC!F0R!Q^pRIfGj zk?&KdCRaAwSoyS_SxiL_PUCE5>!&u8*fw_Kv}0VVUt2%)d7Fvy153)=o2d^}T;F$5 z>)G~d?zy=gH`9jO$6fg58xb05)1arBMUIP2np`3`tF$17;|6hlHk*8;mgeRX&Ze!6 zeW0{a=pnAPmvfdRyj+BYvk2#`xt^8f_tf)TXPZfewF$Z7zhPu2xm2RD@$pVKuO!V1 zOE&invT?b<`MZ?ooHuCfy($z-%!9(Z)@+?_Vb6u`)LP2VruUR`E^2pk&j#rU9@1P- zP9nGHo_5LHs#iLYN)@Tp*;%5tt1?(A*EF!?ypp-{ zRt9ZAn=q-qvJ8ULrhT9*=f^quzz|6-lT*0F*9~8pC(Bosx7VAiZ7PShHdn3Sa?~ri za#@N9Zh%e})5Tk5o4$}UcN!??)N1aG&PQSvY3n(AiKV6Wg}|{2+twCJwOrkGImeZ^ zv@!Ec;iNMsYUR#;o3EI01)L-`MlQW2kFgydZ0{>E$gSrmS*p~Ma&ziStIN_O%{dp& ztabT_iwbkjCfR2;x9L=snNF57xvUsVi+Zy)eXP!!>C|c4Ba~dUWpAmuFDEtkG3Vs+ zik2~E=`*EMIJ35##%HA^C+)j%!}c(_`ji=jlyh!JPP)bO>p^?tP%GSM=WbGWlql@_LEi$FQf3{ryCiq>4@a&0v( z*@BaC_MEM~|FBG_)p859UhZt}^&-)Njb&(ayDninK@hPV4+~SfYD|u zw?es%>I~lw^&P-_{=)V`eLo!^fbtOV5#Xc1$AB3fhw@+GlfZhy7=9Y+XX*GHmFKCv z0OduhUxM;7)vr-`6Uy7bd34P5F}erG4}tUl!k<9>DR2Q{FQ6<0egpg#_#NQK4?*95KwTpQQ}*c-SGFe5)I>q1!%xB+lO;9%fJz>R@JfEhJ`vMF#g;1-0n zgt8UYL!oR9+=hA)$#Gl5fq(}8CL&jFqb%=Qx* zz>F49xd_U|z?pQs1j=Q=D}Yx5uL5SY2FkU-8|Zi=m7Ad4Om!x=1?pMA+km$N?*!fj zyc>8Aunu@H@IGLH_Cx(39UuA&KMeIFz}bWyhw@+GlXRQ|$4V(fz19&EI8t`o3Ilyy)=K(XC59I=24e%numO!}_cp2~t!qz~krTPXa zHvw-2&LV6ZlskZT0_%YH10MipbP&qJz}a-nu;Wla0sJqp9yka16!00~bHL|;F9BZ$ zW^@(G>r`jQH=%y(uVaSg!SUU{uzOHvr%Vrk9}=Dqr2+UE9T!0P9QXxrA@FP9H^2hD zgL)D0d*Ba*8=))){tWyT_#5y~V1a%^y_6kW!kPrk$bw2%x1_oimF#@LhU#`yGC6yw zI{-Tp<^*LWsPd7w5y~mR)96@DC6h~rdI}wZ||4*k@We-uM@`3F=wE+y26s+;%wL0lWuzFMYNT%KcP70Oe8OsGc25th}47fRPOW;<(t%1XU!+|4#1!@oVDBupj(ZC&n zI{_%&302~KA2zUtaP+&&Gp&S7`ijGH9se*D0 z)sv`X^5dyK;V*0o)TaU`6E*|NS-`V_=K^N{3$zgGi-4B^FC%;flq-Q(0j~yL1H2Ac z3%nk9BQT?_RI+*&)VBlgAZ!nmI;!u3@&MJD>_Mm>0zUc|b{y&_fd3`zB$PS8r-9EB zc7e)EP+p<>btrRzZvx)}z75Ri9+Z!${shWrR4;(?In@iHd=2~t_#I*FyG2lc5BveR z1o$&BqpwtcgYpN}e^L1x%2HN`i*DtBt$?k8ZGZ(T5A_Ok?C=-vNcD;haJ z*bSIbEh_N{<^vqN6Xr!_9VmT({ebHN2LLmYK^X|#kdA|(45m8!yb;tJ({adOcvGl1 zqvPgKwxYTm%22Aa?=uRA%z zOmm#wB{|l&qW1f{2kmaY>K$9*{ot5S%Stb7vTLxZVxvJDszrCoA04z})u~?RzIV6l zw0~X5kK!A$ZH3cslzjG{SO0jthr;T?>+9nysPy^Hh1W-YYkxH;$~a`B-4?^fL+SPw zbLGM9PJ{<-k6Y|Jc8TxPgNaF}dyLFY-lNPt+#))6Nl=f)3!h!fU%Kd-?Ixv%%T?vS z@yde>t7R3-3Xfo&1zu>DbU6`7e8w?$qh( z1n9>PANFI!i1Cvj|M>S?X`O!*jjH=qpRuKh)}?M~7pLV5jyQP?s(3JUde0T-7S3NY z(j_a@YW%abETQVk(jZ6P*pD@4Rq3;xT>4pgpLQkG}RM7HR z_X-hH-$k_gUZF{paeCWo$L4P_-j}A0uTgQv@V#S)Rq;PkQQP;jM>yFR*h zSP~QP$LiJ@!`xrZT$lT7%IPHSGb8wA>raa(&1t5r{VDkF)-BgM=X+IXygI=7Vb!{E z&qrMSv}NrQtKuWa*Zdh7-zGfo-OSO0gX7H`U+??*(uLYf-V^nLl6Ca*odb=^L=M_O%7j@1uOzutI7gk586jcbvkYiNYk&V1(pW5TRg zyBmzkzue$RN`+CbowFOBOE|q{anG<8yP8yJYxDK`fPil0vTuypd+X!mrU`8ZzAtWl z>hb>A*jcI$y>u&wB`%tfcr&2K-7&Z04IL^)JxDy0c6;la9TE4A-(2Ie#_40>maAFS zo+@kX%U%*%-Z`^y>$^Q>i!V)a+1l;Hl7&u7_xWsax!=8D$pQVR?Ck&fAb7xe6 z-r?y5-?}|^Joay)?>@u9dhZl^q^<(2N&5Rx;@eI9H`>So( zgOvTZYV)&JMebBiB-O?si@V(ptQv-8OH962JZy>WS5vrevAF7BtJQcL^Wb5HBP zn>{tM>Zsq-K}{0m#0I#LodV`*HymSGw@6v~knpP8*l^+qJX3@zk3y zU!OwkoCs4b+qUGlzRQTtw>8iEC2Vf5?ijt{V*BkWr-lyX6op=!N|r`fvm1Xr!!R;_ z%kfLKrhZFwHng2o5VdiB_NIb7+1j7QrM1^ps6NK)eatx@&+r+$Cys93M4454a$)Vu zF?xmf{>WjSgPsric5z*PT0wVf!{OBI`o{uJTi^HC{C<10e`3=2pPi-8yLQ4Qx^Co_ zfNf?ki+W3{--u7rh0OB&zGmHtkA*w>+>B_N^QhzW;Tx}cT{zWjm-j;Xr68B(O8=U1 zw>ookn;q}>=5Uw*Ss;ihWy ze|mNCix?f)UG^sI?V#hk>ds#8^W>ybwbAZvi(7-d;+yQgX5qHyg4Km4ud=R`E_^VEHj4R{E;6%^>or`>8Fp$4qmDKhPdZ?7zS81-_dV=(Xuw% zYX#iDpV-sQ)j8GvL}KLGr~~#7!cWz>*$eDxRe6fvly%>4c)w4u+F0TA(ffe|o=sn| ztxoCWs5R>sTJ+C&t?7BT)N$|gw!Mdqwr@ZB&91RmatGOzsXbIv_D`4>UVnm5X_UkI2k8wfH6FRQ$SpK=*R9(%zpv{tE&HC&qlNx9>!*Ai zcT%@xflInw-PsMpH`~AY!|koxv^cUtogTmX*>8UEE2R7?)u*+MTw)(B%bUMg7dbI_ zpQdh!(cGuTNBtZ5`tb#0?2g=BJ@>XQchls}7gZ_EGGn5b|2VXM-6T&lv(b%Rdv54o zM-gZLvf`-no!7_OJwJHz!&Sd${e5n4)kX%4PD(kk=Hrj3%+y&4iOt@0Y;q=PTdUN@ z;|wcq9&2{%+a}qJf_d+zw&>R4tNK@V!J;WUW;7n|d+?@q>c9Y5hPT)t9c`r-m;T#>iwAYdWmXP6Q{eMhPH4&KYP!~X-#I{y)!L+((3D- zCs=gyP`BF>{O$LRoa=RWziPQ+)P8eL&yV(j10NQJ z&s9Fjf7&$u=aCJqY_^PC`}|w@>dGUY->^G)vTFXcU$=tqRk1#o_AR31)|Y+*B-LEP ztzR5ozs!@-}bJR$Che^J9al(G$b)eU&Vb}OUHr^Ta4C`GsiS*p-NoV zZ2p{XpBHTnYtSv%JE7RT$)vMMG4@f)z!lGpiT-09J+i{K|1%(eRkyB|+uv?TSmXTO zylvg=b+vQt?IT}}$*qy1D!w^#U$LRqQty5Z z4lnhccI`lDiF5GoTVA?aZypr~y)LTWa{8EW%dQ-I*#7N~v>khYFWbNOV)Ev9V+Tnx z`)3YGsQJXU!lmum5`}yB1#3c^Z{E}5ko>XQ&+ON&0*AQ+uADAEA#*{J{EB0d*PWiP zR({Bg&W!IKS(3J6wu+m1+WX&qkwMcc+)21|)H5#qM8A$NqCQ4{$?QAr^sgOpiYaGw z6Z;%5#aj3YV>p4j;A6Yr5UwJ*f|t_V&vU z9p=?PAg0T$n&-ZpeC;^8@!ol_UR8O0bZQ%qq+e~*uExF03(L^WN*#6fW9PNEW99J! z28L-Lo|}|a{cx*y<)^lvb#%n7sujMaj2+>(^352p?yK7!ib^rv3ubBp{2Q)(P+@DUUxbMJdUGs629 z_{yp|K4h5s?^f~-4{YcBYb~{^)7#n>%T-wvGP09JH zPH%f?tex7XTh!d1>eXw++cUP+{=MOAH7cdK%As8H^3Cbp4^%xn|4Spqy7h-LXT(_b zb@#q8=XaIxRd@UQAuUW zX@%7NW4HJw@6T_T=V%OzcAXhneW|ST>q@m>tXrU3QF=eeb@9!6&)xszzqt3{YQfr( z)t$0OyuGl;>`>D7lK7PwO8XN>XIu5nkXKo15qV|FwVuC!*Qs=2^QbXX9BQV-4>UVE zy4zQI<=F{AMY`MhBX{3UjUW7_zwYJyh&$_lzkFpA*J|yaH7R-T2Mt~RV#zhb#%s~Z zHj{ov>%%^l4%#`aMWDUwy_&@#p^uM@)O0&>zE73(2$!=(7Jc&%J#!Rr$1`r{mTe7LaZl)Tcj#O=yGOPje( zjqKAXy04-G6VO{=^u?!>oCq16MP`2ZTblWOtZ7%W-%Y>OQ03su z#l82}yQS^?+b*Qn*r&QJt%m8{E_AMa#Ix1;7F86NW^Z-(o#A+Wr_#8quA%kyz#doI zZMx`k_vVo$W;IVm8;Abue17AYCsDiL7V)`2udXvL_U_)Va-Ht?);bj4+kPU-?D@QL zk@s^R9!;-fm#m3RytMr8`8!LlOwPM!Re#E|yJOzj^jCE+zP`Gs-^c}5kB=xCsatDx zz^k@X`!>fWeV%g7?t|ir=7^Q-lgqZ_lh1d(dEUX$V(k4*TcbwVNAEg%u>H1^<31fU zPHftH!I>p@g2#7rt5G~_!1ycg*Dqh0m1f_w*{L@D-RpGTcw=6 z@MW>({MujomHzpiJ@|LJ^lD**pIK?+v^pNCJ0|#EtUUbQ$Co{oYYaALHdP+ZIerSW zbG&uZ=vaB|+$SFnYcItvUF_z4E#XG5oqdd3BV^NUd$@H>b}w1nquHos2drOo&e{D~ zF|cdt>(J5}(ev$(h417N>&|V_(etVz_WhWvv*T2|S`181}n>Xg&tna#2ao5i+xJB6N8B1<7%C7!pnA_Xax!ZzkY&+g(Y_Z#^ zFX_YMkBw;8pi<)gD*JDq^Bgk2_d`S1vB}n5Usc|7Pc?SXcgvp3zEz&R|KknCuNdk2 z$yeTY8qw9^()sN*meh1cG3es42H#`00iBTi1P_9w1Jf0t&~ z>lT^)Syivmvyavt%=_-H)#%pRKtui8gYFM}w)ybB*-7J9Wu9_#=T;aNU(gQ=;>vYC z^V93$0q#$V`ON4qi7(SKmL08i^w`N;@fDUe^=(?`yfM6XhgCLnZHCU;b8>CMtdA?y z4+?tM-eJ3;lUjQ+|E>M1H;eA8+HT%)q;=l3v7Rj~x`rIAdfLZ-*^j6nG0iekxDV6j zwRGw*Yk0pO!`wWM88*6ZmS0;hA7ee*w$8B|XPV}2ik{?U{p928(gdA8&A4>R%xcYR z2-^sKArF4~oQ(_S-5p6xl@>gigee4X|A@X?E>8k8NDjxU$W8ERxz zj^CMj?8Tryzw53J&7G;awD!|2_ki!VKRYGq^3ystaNF@A;N|QESr)aEWW%m~m{+2& zleXx{^QQIBeSN=sdrYrptJYoLdHltxJr|=qD_*W^|E`jQ(qqT7CsjIMTo&9s!9qGV z=s-27>vr`yow;}7k%dhgb%?C>exOg^TJtIxyC3`>lHT~V)y(LQi~EHgI@B~QFeAw^ z`j<-`rFY`3DHr0?mp?i*C$L@gtOXZ+f9QbhHF3;WFLq?W(3{F%Sci7y`&3)K!{M%j%!?B3o8_&K7 zoc@o^s?t>ptlV9iq&L2mcfaY*{qY`OWCbm5chSz+?w0iHzSWZ-P6N(f_Z?*3D%5$( zfGgw8Espw|#V+;z(EC@zvzJ;mT{Zahdi`w2w&?}mI`Kz&Rt^G zW7?y_W)+;Dt?fPa;)@ok{am^Sx7oS&&jIcJp9Nnoz6m)#UQ_Wv2mkOtUem{!O>UYs zx>DlR8$%9%N_U%*)kU&Ce&OCx-yNK9T&uoqaqs6FgEvg-?YLl}Q{uImmDCPJg&l2{ zeNR8}$Zz+qpOaNtlQt)x=$bjPtLAsuo|Fm;&dvKe+Ynf!%4!vRyL5S8u;Ix1s@C?O zeA9AXaQnB7ux)dvTuR2w!pAFW|NEp>oS#)Xs>$m}CqvOlGlL}jlDtMY35j3bfWZG&@G*BbhJ&xZu& z=n{4Bru=Y7?NS`lBP=0x%lw`vgU7UujIYYqQCti%3AN2! zHMo{v#zzOMl#S1TXH3eH53N}?-d#k`>1k!lH!fc`p5szBzPD=G_&~UJSeBhycvh(_ z++W202i4(zM;ZPZE+QW+VoyELQ&zj3zm$zzis;W58Lze?`p3dG?6TTTg!?~b;VvTW zj`4;2Hf8u>u}Hh;MaIiR#Qp~`?q&J;qe#5j)hOG3y<^$8to{~?=zj#y>y#y5UBrH85kEwU=(iS$s{#={M@0JjNhA)h ziNsrsi2Yg-zom+_yFp|gbrP9J-9`M_Rz%M(5k2fVva-fSCW23iD0?0yLY$YS$3w&q zjYQ_@Kk(pwS$g(~jEg_4BW2Btvm)(Ai}=4%%d*=&CNl1uMeux)cz7oghmj)rJW)h{ zq=^2VBK`FjnHQZz{CN>_Qd$1LDAMk4k@3pcmaS)BrLu7=k^X8$^7DI<{>nw-yymB} z+m(sLZM2B~TnM(Z{No}L HmmY*XsE*(Vte_CX`4v37)Q!uhDJBvi}=YEm+Oc(Lz z6%qfu5s_~pB40G1?0oW8#19T4_(Bo;|FJLI5AmR=EdPuavA>7N_`)wE%GC3DaM}I3 zE8>S~BJp4=vhH^ikv}VvPh3RW%@^q}d;YsD|GXF3|MwNyA2ty2v!lrVp_xb?xFa&| z<3!^Bl*oMFDAM1}B6$FQWm2XePKm4|+aW)|6#E}47LlJM5?A*{J#Gk+6S3qTr*K?8nJ{8f^OC(ONi;Vj& zk-QWl;m!vd=LWk*_K;UMofL7b0<6AhJJSBr@)6 zMC{xtGQOoE^XP+!KQl$}A0mEGiNv8%Bz|^^=(hyFl{N0!B7R`M<0wmhfQWpq$b1hM z8Lt$PeOi=={lOw}7zX28)_!J&$hh1W!B2^-Q|xzDW%)rZGF~1ccAAOkZzi%{XN%}h z6dCtCk@3AK(k}ZwQCa=!C*uF_BI}N|i2bca^pq2^|MkSO?b#wSucJilZ!V($56tVb z_Bre~TxI#;Hta*nk`EG@kL)@4vh;it@y|7p@f{)}f6u0D{oO?J`5_TItBAB4C*rpN z5&!(*%*ymnO_6b5EV3RQ7TNEu7O`i%h#$s_^y`zze4i{bFP@0V+lkx{@)zl^N~FI& zB6)I%$o$$Zl5e+)*waMB58fhpC6RVxMEsB@5?ARWb{-ayZy_STM`YZ)i>%|NBK~K; zF)3?4PKN%v!`PUTy@(&eL9i@6Lqy^yM#O%VNSu!rSs!ym){y{_aa=57zgoo4hehmk zg8WmKf38D+%fb(daFKm=iHQ75 z5j*2V=4mnLFKZotB;tQdk@LINBI`1Qf0^^*govJ@BI7bq#GlVZaBGoxZYr`qUWFu9 zmLDQT{Lot@ZYzlF2iWgl%gU2EBJp-kWWU--Dc~`e3hwt44zu|?*RpcQKVad~)5zKxEF1LId zf9yrLax3Cm=T1BVX`iQ0wNSr0eFcBap4(t_-V^1eqftNp55G5;A#O-QWC4nEX>h{E z?3BbH&el0bdr6P-Qy2bt1OGq#_MYrCT%67$JqWLKh4g=z#3R+IV^!ai{l(xAppX3j z@H=Ta;WJTB8^{-oZi2$vTn$cl^FDt}-Qs2+M?1OuY^M(I`XK%4%jD+)?RXqcS9w~$ zmh=xpzrl8er@_!o=4Tc8xjW&DJ|S*k7xsY$6J9tG@!T8e2e$uUr1^|Er~0oyzaK(e z5}3iuLD=wQ(;IQ^7?g+f&Qpt_h|At}#ACvzfE$^e%3Ij3FX2J05LbJ4<&podU!4(` zA45G5HayijhyKZJf$h2yzI-Oi8;buMS0STOUeyNWdy;%}HOedE5r?$E)7)z`F42fb z68NaPsgx6i0h9+1!yV7 zLtHlLpNRGd`qO(8ULEIG2hx9NHrd$=<%RgK3jx6U-wyq}jO0_ve(foYlOpO@-4iIU z8jE`He|U#L3&NeSU#m%vaRTBRiXTBf38o2aSJ%HAFGrW2r!Jv zOB!YH$1r_(T3$@@%@^>;aR0#mh)XH{g}p)jon%jcY*$TsPI;ib{3+_0OZc-)wy$u2mnTd`guOTp zXr0LU+Nd9>UmA=3y-W7^_@jR9G;FsTYU64_;IZ+NU+Bmql?eX~d4~B%*$U;$5#F-_ z`7ILhHiVC&xRTdG{|NJIa!b^&s)BKDMe+xYi0dey+$B7JBjRdD)WhCE$f(IcY**78 z90J7Nt;eX6kY}o)eqWLwB*aw$+KKeUPAuy0>?7_D(Qdqhf_S{wpZ}__fo^l9-BbdAIj(XI`F;3X~eHfLH|5cxd@W(#<|M0$^n<&qfpqB4>clgA?= zgfE{%{S86?I1)Y!f{OXg;1|UsiwJM&%kqN@r)YeKN92TWuFl&1U%CS0!rEOfMR^wz zkwV9rf7B-H)S3p^u7uWW!JZLdFtbNnzYnjWF3r1v5Uxy*bR^o3|HHcxwbUI4*S%=6t~nW{+w-<~`v(aIGOAnSR*| z)H8w-Q00asPy0+EZk_%?dBv!%yyixvKbpo}`yA&xO)u^$bdc%SwOqhU3jQ2$8}&;m z&h1H0Q&>lsok|*CVSbIJ@m0(V<0Y$6f5%dMa?LS5g*fr(je2BvvA=?Uvfq$@hM?z# zJRe5+S(S)5S_|*K%S3s($+}=Ti24XALh@oFykvnk4}8e`nfB0MVs<+Y#D&ye&sJ^*GxXQFZwx<I?^xv?c_LOVh|slljtdIoUZ5Em=U{Iyj!%4Mn^H z;q_oDGX1)0|J9#I}` zZkT}W?jrv@fxu?^^>jWC-RJ4Y55zS$ao@Or@RVe1S9c8p5-5@;KyO&bnI2^ajDI1I zRXv6BQdckxi2aU{ktGBklQ*nFdsZRnoJw2g!f!#3K%b--Wnh?aJ4ooz2KjJp>q!n_PFg0{&#UF$(pM zAU$lFIKe;eDB_fExpRMwOd-5wcf@6Ha9o6OJn=8-p>|<;<>^Bn;#$h*Lfqbhj_~uE z@)CQeKcjkbl-HaO=Z^;x?ifh&m2rN#^Pj@I93xO(H4yuIj_^a((w?X)JmJFFv2kJb|Pgi(L{4I}y1DDOb>>%nX`Ub#tVPYl_U3=^N}QPK5^ z#pLJ%`DEu+>@TV3EZ!i_(RF5Q1>T!W?J6ivWYli8tJtnObt#Vs?b^V0k+rKCg&G!+ z{Ov=8-$wsK8sVuN%tt;i(RwZT=i)MySIxrwbAUR0eKq2ec+~GkddBETeiGuogzG7u zC37*K1W|{pd!annFoTz@PWa%%h|5j(KYi99E|aA3@&ibJ4&)zZKS%3tdBVqgBQB@& z7a^atg1pDiug++v56RaXhx&8R;<$qtPe&kcF?ns5X#V&i;r`huuRS<~M}+IBooO8P z{+J(nl6qcpoUlKf9lD|J5p95{8K!adp>pKkq(4M zfgWbRtT&G1F~Vn3f8})DOo)>SPtYDo#~5C+J@xlkDB_AfZFzhZO~~s>s9#c9#p7-g zY`~JnQAPcAN0{4Cgz~vHF;2$9_%SL!9dV_}^}T*DFWC4Ra@z57!nkw@K-@I{-+=_h zpb@w-Qf`_;hP{ln4QWxeR!lLjeDErWY2ia zGebyTUIF8?{w?em9P$+Vg8aZX zXOHtJpC(xGPqLHt6~ese0sB&Re=XPK{+bQwWAiBX=?1=C3QsQbB(|%f`77k5jlB_< zJjHqRhyND5PxuDnGG~liv#p$nF-!*ANi*T z`cugBJqu7?dMTCH0A}-)wHf7ACfC*9dZ0Xa68#@c^7X;(tX-wa^~s_{#0{0v{)r?% z6A~1YSGi$N+22rL^aXGhC#pD#H-tIgbj0;^zD&c#jrfANhW6EyNq!4_owvtipA3JR zjMuNOhVihG!7g ztPoed#=J3@@GtqOM>`eAr5WK#Ft3^YdLPW#&V(-nBKEg$7=;!hE~V=mU>;BHVMEUJ=tgzpkADmE#fZ4tJdMW})4ZE78gVWe^WHzG zhPy|8lenO~jO5e5qr5x?<3A4%Ljmd;OY+|2XBF*pst}&hlH#W_#*du*qdrRQ z(tUX$4p*E)c`fB<8`4v+KFZ5VQ+PzU5A|vf;+#qTcYKSu;ymUJ2tS^>oI(9Y7qka^ z4ew|#L3w==j$<8?Z*&)N>8n&8@ghHe>W#Qz5Y9&-K5M`*vH2*a^IzEZ^HfLhTM))A zY(IEf0K>=pFQau|LijSu^V+&99yvz%e#(2=k!YtN-_RTNIYH^(ZeVJvuO$#Sb?C{lNa76r(?STsN!dVf;ApDEwWf;V7@7b;^(Mm+`1y z>52LUKXilzg|(}o>s<>-eso>5Q){wbd%;4???Zgs@sidQ|Gmy3ZZx@mD5HMq!*FJ$ zlK$rfq^CRDZ%_EwHe?T-r$ZR?)Lx15hE((e`&&SaV#&`slk=VQJ*Y?j0^?r`b~EaC zp2cL1|GBTR&lmOUPGFv7f18Yv)px>8&i9`$L;Z#UIPcJ_@OK?9qP#p7`?VF-a8<`3 zt{;H7C*eh($%~gZ)YLoe*{De5y1pRD9fP;eJ!nT+}aJ1qlu4J^w%aT`Lc=Q;z)-;@?_@@`gzY zUUEA5b4_cMH%b@t_zALe!yA-W(0#WE(%%*~2K>BefF2h9mSA3Y)RUWw_RC4nv&ksW zF$m^BK(cXRB$-!m%$6yFQMJf&k)yKNBQBT=iwae zmyY(g5^6VO2=#Z`3SLsUzO*q9^=M7jKuSVug-FeYz$fA-yD#N}Qp-jY}=G{}<1%Ru+p1^po~ zF6=z<8=WWiB>Nl3pdR)81Rgm?_;HxFES`0@(DH5Mw`|JKN}3myN!}hNGP6@&7b6qB z0e>&273xvY^~tIvKYTgL8;@dt>kxjc5OFCzpR<7Q)3Xp)zJY-T`j^J{qtM^389e@g z{~!LI*L{?iY(@RT`qi8AlIeZVsV&e>DaEHS@6OUbR$7GZcA$2rFClv5p22@(Pplj*eGQUfvPod>sER*iXSa z!t|@B<2VLW2fBMBuCc`taU}UFi%^fQ0|Wq2FJWHHL|oPg=SvI1-8P^e?d?=vp8al+ zQ8;vv#fh4(mqHlul2;4H-P^CrPb$A zUhy6M*_ytfr1eD}jDCAYUwxL0?W*WG871KdVI5)iE9koA5W=Uz1Z4Y-2&oXs_(2*N z%B;?`!XrL}CxM*|H=alRqY3{eM_lWLe(ON^d(y+v^)VbB_}h-) zA7;PQv%LRxX`_bODK<(Cp{WZ#HF^_ z-^sLZ+y;4!ou}yOc`Bj54WJ{uKO17dtVvIW8;EPlPvj9{d@u2FF5#XZ5qgSW*mV-+ zmCtbguCzkjx)gEK`><{>p_o1Q=>DS%wYw71FYo^*3wT6$-oA7&;%XPPM;PC#w-8s+ zxWG1^ry5h31rXf#%8ls+DlW`o=nc|bqJ1|;c zK29Th===!8c*pa^CKi(U0%`l9g7lc=Tih9&n+VV&a;k#+PbhOX$Cj8S@lvkOI%VYQ=vr}CK zt3V0lARy`3H$tIB`9zDoJ`dbh%29gLx9ebAN;N$u0J)M$A$dgwl(UPUq$`G zea~*t9Tta1dLFMG|1J2Nv>OoT=sJ%b;dwM4rK?eYB;f-p;C#uV`76wq@)Qr+Hz~a2 zAR73|pUD0-sHZ;Z*-yBHu3xPtyd?`zwT|a-z46i!+dA@mBna}k>nRp zo>Bfu34*IW;pjGj7P4R;|FhGy7Bp3p3DOSNxsbo#JQcAH^!C2 z5B5MlWP0RXF+PPj)L*7{O`fAZNqS7zsliK7zv;S@P5m-mM^?aeV|J?O`2-;^Wx%*F zdyLdB^pL0VU^c^*G#^6=KMxB!)1!&Pc+(SZxfkVgTVlTi|7##$F?j_&uOi?pVc-~U zp!+Y?NKZ7lm$j>kZp$O=y~d1A97cK5=QPZ}kRJVify+qWvGU8A5D6`VH^tk z_VC+?YfY}7I}S$N^nPw1%C|bYetwkn$3VK^`*jZI%OJwbZ^ZL%ebqZWg3-=#8#2jn zbe&BY7l{^e={bx~VIA!Jp6s`q$m?N$rlyYR=tJ~o*0wqXJcG|(!Fb5F?g z%+H#eeR#YT;djoG{U&*-*EI5H7>+NkKAfK#<&E@QH1-<)E;%g3Oux((JumEA4nf{v z{?TXRynyM?Qwb~_3|G@SBKYAojhB(e_Yuh_M4-I%I_{G>3an}rSEkR&EQA4K_T}4^1kW_w&lot2s}RzE4jj(>&ZC!@VAMJ&>n@!xc33SF*~_y5J*5RNdMRNh^r2wf9wh0l#jTYes2iNB2SJx z5Z9f;c`D?AdEj=YKR00kFBePlv2lo-K96w{5+>iT*^nrJUXcHbmLsm{i}5*x^cdEm z9w}Xyb0WMiwX2|fD6DG*5FUIS((}M_(jW8>>NgC>o#ZLP{mBoC{u#XHTBLspn8E9* zJ()*t(s~hhl8sjlPH%F5WOWYeS9U=Ah52Q8jC$lI`LiDkG}EtGg#NEj_GBDET+$rv z5$2I+9n`OKMa}of&VM0KGCfARUwMf1Jd+`=T8ZN&jD z97uLPMgKP|hw^JZaUIms??KcEbCpTIirSq?_(Cv)`9ZrJ{V&YNd>!IS+6Rs%`Oc-- zu9WsO5Z*jx)<=1DEatIhgs<9z@=Ch?Amp)jv`^NZz&v~b#+8w;JL!3y!XMY9@l7J! zSg8|_3x2o*0nf(87>)iE=5< zL67p1GuW;(=?R5}hSyKe3(X=t2OP`n(GG6MBYy~g0NZum&#zI>cXRweJ`r&PJr83? z@{!<1CeN9~=gfB-yI~7o~oBoPcA(-GKTt_PwR+*)@5swA4cnu ze$#Xw37`+2y<~aSiOXG;#p9I(c}K)&Oha7A|DS7PyQcX+EEnxm4a0F4e)l0MKzZe0 z^v@o$Gvh7d`f7-;rgoRtL!3LgK<)c^l#OZKk0r% z6_U5_Px|S)F=iW%Yc`ea?*|JRkl@c#U>F-OX&}y{cBFq4Oaz82O`dbm33>h+j+86O z9~?;M#RpcQB@`#ml1R@!>~9W!%DvVjuBP892=UY53F0z}TO-NG!!R*>Wc@Mzh5d%p zY3kPs%qO)h@Cyy|5LeRu=tiU`vk3L%9zlDgWd8tA$oruMj+bzK_`?r||1XV!g_6&! z2mA0Jj<7_TGmuF6>%b=0U5`CO{Sphb-XHeED6Wi8 zQhB5k*q_Vu;(Bdb-9ds^wqH4nh0}MLlKuhz`O_D;i=6h!s+?^tAw9|_-Fo+ z&%`(!Ot>q_8;_wsJqd3|`ASRcNM*t&LtL@n>FD-joX7}Q!nEb}Q#{lle1#nSWBh`V zEc}isVG81sE@+SNyt*}n0UH-(dmImak=;D_-8hdecc4IcBqYUvU@Cfsp1;)cGNJR)2l_J@U)%`dIV zdk@Y+Vq|(G2XWlv%}`Mnkmu*!9@O)c^vC?bd8g}hpGVN!@cYInv{OR!eJ{yh)FLi> zg8mfjf3+F)YiS&DHgR0S1L|*FS6%~V3AkT>7;*I(Tz77hoeyZ-HTmeDR<_u1pdR&0 z>3SnAQ{0_ps7E11{a;a>D^il3t48z47{bqWAbIaJ9`PmoMNhAP%<%)8pM;xS2fIo6M``k0Vo%V+;!xKTM?_2d??n)vh<@lw`rkpE@Og%Q zU)h@EixwfyC1CtlCj3=j#AOo@7uJFW`w=(N?<{ciIj%=%!tY~TRV6Q(tUivo|w0&N6{mL|Gp6aU&)__ zg(#Uq`Y#ugJpJBZ=4WzoDT#Z%_D# zFQkXYw+i7;t26w6$>jjbo31ZGpr6H+a&;>IrJMBC6Aw^cM$glBC;Zec#B=F>fq;j- zLfp6qu9bx+l<Uc!EyFS5Z8Xfae?meRJAtR zqrQy!R(Kwu6y_1LQ%?EHo#g##{gu=H(}D0gULdPRlnh|53X zc*#k=DJ-B&k5P&9?i}HPy%6VahV#ej&kaI%c#5HYqk^9I z5YCJH7o&ceNq*LBApLZo*NyaCgn?lF($anNe+ZwTL_JC)`ZLQMKM4L!_$9PoxPEex z@~80tj+71Q*;=3U)AIwgz2%M;BCa%v6N?PQRVMeTC1(hy_o4{5F7|6Q_3Kev^h54b^p6Mm=lW!n z*Lb2HVSl@y_SF$TF#aW^X9B2Y?V7H4Z6K~#{OAT|@{+&F&gq*_UT)Tj$2FuU{SD%r zi9g#yx@P)K?;B2BgLrOb2zVe+%hSJ*H(0yMDBMwWpmw`_CjGzBZ(RvrDr57y2A5^> z{PsLp*LeHsx*xcUCw7|5?2%Hu1rnYaOZx57c%&NnGov2jdODA*W{F=&aYx)3ihiz0 zdgg^9E}?l;ned@0h#NX$e;*Kjt{TIEYPKc>i!pmpUPbR`C`X^3CVxurCh$m4vh!LS zl;;c>CwAnY?+`Gozeszgx93~02iCV zBNu5yaENeK6O<36@r`JY>!5^w58^|5t^>~Wt1n`I@$8J_)}G_I^>Dtar|Un$xSXnw z_M1LOo%Vp~cjCU^M*mAle}u3G zw1f4L#e;>FUe202+FNgDz z!nz~xkMc$(OiZ8;{QvOUz!iwATrr>6QosH*M?HGFp90GSPbxLa8%AS`Lf?%rk66DH zgFzvXa9_*~a6TSdb>eYBzxOA^)mL#G_t3Z-=sZ+vvVZs(Li$f*zl7gy4Iw{h?a@Eq z`Bpft7Hm^lyON$5Z@UTq(g1NS-7gqHxa$nWO`m^|=n)yFfs){z^@LuX?mD z;wt)miZHLaE{NwQpnrt-2H3}=etjpje=6Bywu9`Xd31$NAm406Ts;ZLQJC+`BFIjY zeMJqJfXojv+Rs!W{o~&vE{Q`u^$71U3~}y93Xcfa&2*DBCepk;Y)f}7oeV8ll}R;xhS7Y@@+_d)D3Ev`rDN7870)N6yy99 z;SXR~nf<2EIh0b~GhKIXl0W5@AYg#zk^L>bQI9$T76PEN)ZcuvNB;@)hOobS5A&V* zQ*MR+5uR5uAB1@|x56D>4@@hbF3|d7r0e`IsolT>s7Gn?e8P9gGpt{F`W>h+FA`|} z$_*GlfwbVglc65#ajwxD*Sw!Th7Acmp$d+CCHI^`u|89{A)K={LFG(clQ;GP8;N z_d8R&?!OV2umurlF0~uvh3zWnISL_v>i?j;u`23;u;=L$;S#IK{4tI`{2px?>XFmF z!k*+$v_L)D9~g%M{({y`!)?^ij|S{OKa}TwB3^8ciUz>6W$R<-Jk0Y1bFCn3*tjdk zAzqo<9q^0n@x*y;L;bA*d5rgSHCXt7gy+q!%s@PMQ#g;;CBHqKMSh_BBSOB4Sc15e z&S!-@`SStlF{YrNXJlwjW0Y4lf`kLqgz%T=5LeUtC~EPaa@-o2;CwvOx+e51Z#d!_ zx;|fl%fI*)?ZZ!`Uj>hPpQ4g&RE2&5`Oyv>X*=UGgzK@iVi|~ zohy71NZ1!;o=17E1|$}srOtf8g@b!pyV}mEe=x#au@Q0ZInKLGva{D0)T5@~d9@<> zYSiCcT1Q+7Ur+haSZ*?pI1yfd4eC+R`>fuOe&uFt*Fb)#M)ED2QoH|ReEviDBQThc zE5iK=-$3(M8i4WHlkgr5QC>;!`JwRPbce|vPt-5$1GO;ynSK@h9$Cm6!^ofdZWt%K zNdHd{l$W@n9?X{T`+aZ}A18D@joi<*p*&!^o;Dvx?b3b{!i=Xg&~Y|i$}O;P1Ifv6 z{pKOA-;eXfkMOrqsE3Q~#>*QC_wRx7+Wk1b352H{LwTbY+P{(i7QB}U;(_<`>r@^A z^LXmo9dRwazpFOk&3SqFePPwsgka&EgYxpHU3g%p1>!3oAg-qKBf&qKzK9!5&b#Y@ z9_9xft-qGkiWAHu-p&K0G4aA6!iF zqbx;#{ubmZ56CD!9SDy;O6_*Qc9&6H>HbArTLJOQB;SPk%e7DBkzIcHL6g~NkAkir zmM8gDFfrM6P8mJ7=0bQR^oyTg^!vxBggb9SJ<5^cJW`_^e$ey^%5#4(&T-V>y`w^Y z?tp%HPI@}rLOr@As7H9u>Lu_qKQ2`^bYeOmO*O<)5HxQ6aUN-^zb%pHjJP60pXoeXw zg!Ct8qkJwszaiw|ld-7Z*nA}~DdY#&0F>98tiJ`Yys~!nH*p3TNKsEU;_BAPyq<`P z*l<*JhW{_QZNqj|v_ATfh)pfBr~e8b5uOWu1L4H`%>mT+%cgde7&y|gQgYvq==>M)Hf12i_hVEBxCqM6o_+;(MXdHz;4u*-(_Gz}X zPZMy@5^OhDhVd_42dml&^+=jx98$Nq?=KOTvKP4k4WM@W)?oPm(xVTkUrXz|CyCUK zLtIAlT^M)Avxsx_{A3=<_bx}i1v)LLPe*&@p%SC76|-5_Pzu@ zuB$r##Yu?c08s(~6PAdOfC(hkj3rqPrO1mC$?-B+PGTHjG#ZVhu}3qLnUO4;O(f9T zNln#2!K4c!-9oycrY)p_77-{hX`y2MyP*XUmdatN2nF2GlK=Oed+&Sajb^kw2WWo3 z2x95`=FNNe-R0bK&pG#8{21xsd7r@Jc%M0|Cw#?R?wvbk_y)V*u;23Uz%8*DkB^|$8w87r5ZUAmMq*C*a-uD`~% zZ^Omr`l8i8pKI^`$#0qKtK;aN@^^-xv-^?;?0uRbSNUG!FERDM!FH^_JXZxEU`H5tZ%rFZ!I}8$V*6+hg1DX`eFugw@}kZm)0HV)*v=y+s&w5BX{SnBkjjy}9du z7yX&#_w0TIH$U!MXX`< zh2JoIb^gz9wwU*=&Xau0u;H7m{?=}8t&ebVrg zcD?f~%fH2rufzd!AJ^wU@E&vh*zvc^m7}))KXkt>=M82ae7oh>{KW8Mhm0IP-Hq#; zY&l@wwi(B5a4okyl^oW?6H|I|a~{!`X&{8yHL>>rG?7VP+z0Xy)zs;R#<|$jv-jC1V_1FjVtc~_c z^Xq;0n)@_W^|$i%hELddbyuGCmm7ZCmfwwwuYAbxGqyaxWuNlzGq&Dr90H0VKTY2@ z*SFjAWnBOH>KD!R)%zL$yWigbyj}8rr-z&vv+Y=A-~NL;4d4D=R0w|DKBJ59`mE=% z`;46Y2l>?V?z+reKmGC>gmL-z{_c~8pRjosUu~~%w)J1_XK(w6E$2&3{eQ^5@Si_u z_{mAbpJoO0^NQyF2|IpW{dgD%?B^4|-yu(IvJLshzc=@3wDI$4;Oa`tY=koBe>fjdu|8g!h@W``jnH9r{lwY3 zTK~!L?RMWKif4YlX6whwB{OS#-ZQVT*W0}77un0VVESWuCTtvqn|H1~ZuHpcJ^w0K zHrVUm{6FUY4ORAyVf262L&DmlGWPmwpU?Z(_{n8^`*K&53s=OwWU^QpEM-!C$$gmv z$u$0|WIzrK74pe)B~_{7!-bXTE4I!b=a3o<#L6ztEly;RXinIu9UL*0sNau z4RxjYsPtf}gyu?)L#JJ8pL&^9O^8Wa^1Jf(j)pO)51 z<9Y6Bi&R~6d4H;ix;B;9U1>GlwV55szGHSRx~u!UrHq#!=*XcwaVbwXa9@_y1*%mS zC!H!+Pzq`Cf#FmM)sVh%I9p=TrMlyV;Yza5pDd;F10?%W2`M$25I1M%LpAkhb8O0W z*>aM@jO8$Q%v8et4L4vXU0WK?SF%Is`fSC`rhl5E6--^bK31d3Q4zREZ-MyytyJATc45ddgTHTncs;IcMFkXMXYeO{{ z@K*9RtX>qhFa*&wl1*pU$%w_sGIfxokV_Uzh0z1{@;H0{{!D5gMSyJ#w$dWKGS$sH z+CEum*qxk_t+Zt^ z%JGm)a~EV*P-m?WA*o!(@6k(bcxm(QHY*&1j_bFny|EEALGP$;=YEJ#sRq_%jj13g z>0+(xzry6RiF z;^hP7N@ge|7V5l7tSMipWcv@GJ7-M8b0P@cz&y}N@&d#)uBejV9WCixCROU-cSTe} zd{;!NV1cZljWhfAeQK7BwvRSzI}YI$8LQ_P{#AbKcm4B2W#Nrz9N z{`_tiZ%QUgl!>LxAZNZ}A(u@bh&7}0bT^n2^Z;H*YpWF56#!u3TuEWGmZS6c)J!%7=^R zO|;v)%dM$$IXjRS`EDA&HI3;#Us#*GF7EdYXou;2Yx9NurU9?p9z!*xM@Lh=*^wAk zf^-h|5s8CYsJ}q5g9ip$S2hnda43_nKwN9y7Z~^g)spqTZe@w8zEAc#+@VT)3EeYz zR*2S*;!M|!fscWQo+iB`7?<&EUke&5+b1u(*jPfx;B_Ltdou&sd@`M?K%3>PU2ab9 z%oNdOx|5lqV&wojWDz=dp_Cdhl9`p!VtRqmn(FjQqcW|WZU81Kt0VT^O|R?j%n>LHCvZXKFM zp_k@zC@q%`wdPU1VCf4MEa)D--r@IbU+9@>REDmsWN`mL_qJmi-QA67xzK3*C9Ghf z%AlM^Ikptn$BH^ll1GIJYlk9APmE(EhX-Ad4^1V%qJx(d4+RpwwgEZldc z=d@{IQh!=8@%f|HTo1JMoi;Bh=9VpyUy?;lK=W!kRryu+!u zoUJwWh|FG2P1Jp{x;B2AfJ~cEk(R8WSN}&qeqEs|HzNP|Kk8 zK^lho5Nrk`cs8)sJaU=*KxNQqd`|Powp22?+<=?1{7x^*HeS!JA#hK#uJ-3y*3}}b z79$y*+G=kmx`UYwd~K8qMGN|JZp|BL=AzfR(Sc>|K&}8|ja_5PR4GHGFN2O-IKVsE z<))ePtM%eCN@AZT7lgZwsY6_X8mhWe91Fb^CTiavLZJjjGdxw{21YRH>h?+9cO4m% z1%LRq&4rOnsXqsMN$6=U!}-1{9u;az8(wESLx!m)Om?ao+@L}6L+_;cd9S5Di|aR2 zynYWwSG|h*r21{_N4vVhdLp_RjB;rx=EM2@RK93a95Uv_QUNvMrP7762lGhYOJOO? zj|bA}WSN)55UVKPf=X3}F2N720g)d!Y4ag0Z<%Di=u@KUq$-tC61K%sp?A1k@js*O zPpoJ@BUfW#E4|QXGdI$z=S-I6Os?MtrTr8D$^9k%@=BTXNPnp?Kv6JwU(o$)8n7TY*4l4hLzF*c?FEEv>BIZpJ7~vu}~=t=W?(U z;!nH>M~7ENX*2AHqs0L+?XaJF*)j^`_4nt7%Y$-t@qkwz9Kta028P6h39BlWLIdpk zrDUoCp|B6%!om@Q2d)QLT?Z=|8(z5xOLC>(Lm^Ns7>T@oaY+oMvRFoyj6}sB`SeiH z>#x8tpk2ff0(c7UrR7!nFERUk4_zqdT&HDAp zaygwsK`^B91AB2>6uY>eRUjS`mW`ca0P?C>=7$5N0eqN&=^>Yt`t9dLjEgYAll5|)B8~!l|D#D z6uW|l*~%}bP$Ik{-xr@0dr_76xUfIN_ox4cFMty6%i=ru8@*GCgNw_>yeVf9wast$ zvvu49P*LeYSmZsadfRUD@IKp)_DVDz`r83-Xefo+ObOH&^_GE z(8*<`4T>*IKNjr~tRYe&g+^H5Tz*)dfQRrwY1Tz)h|OC`<4O)7uNQL^Dxbq8J;;x6 zNA_@YN0fwBJq#VFqfG5^Dl~NFPkHtbJV9_7{gyjZ(HkYqLQ15A=+ExQP7$gRb8= z^=R4lhG4y}u!G4(!+1b<>$9^y{ga+hSlEY=H ztI)y^W~7jr49lDG*zs6lkPPg*C?Oh*lT5OgbCpyRRNLMIa&@+lh5#QL&a(sIT?Y&0 ziv0+PV~>3x+t1c4yGO&xBo*W6Y=4qBtH8h0ml?(L`sLAh&wL-nJIY{RJ?9bU3pkxp zoSycHQj}pMM?t0cV^o_~#mo*nz1MGlN&VmoRz(55_W)`~zHEemyi2NYB#Y%CuF6>1 zfst>&1Kp;O4MvqzHAim-CXoy;%H&6+hR~7peev8%CI$&1qqM(IMmGzCn#SARSmsKz zlEw|B_qrOlT~z8l;6y?Qho!4nH(AI2ctP(Nft`d62+@v;6IqL{Wm}Y8YzV3?gc#df z#4^gj?oviaM8`#|;TP}0u7u8=OmbGC5QNK_`Zwf*I3%T6`XFvb`t5jt+#JMRP_P0- zajx%j2+HBn%SYQ(gmu_RV?+X}EL)2Wvv4>t+! z6H8(px;fLI8qQVBhkf#?`zSHrKrJ7^YTAjLNU5A}bZc)@$JXAM{MXT8+`QJbof;nP z7=oU^4ijQ#pp?pq_DFwES1-R}*JxNk`FHJtceRYS?Jh6nb#aw@U-`l>=!MP8${XN? z#X>S9UVyGGC`Jd%#3`&wHv=%g^@c6G;-9UU~E$IZpQAA9TeZnphS`q4WuyA7jA3GqO5 zm}czg=-rjR_@3 zew-mp31Ut4t7m<36I{WNl&I(VFK;?0)b*El(>GAJCV}#VJ;jl&Dyk7%OwwykM5R}(= z4S@kHN2tX%1ucf!MSX4BR2faAN-2mq7I?I!X}yc=ks9I>30BKou9q6;2s~q${R=Rm z;_LE_a^^-Tq8WUM7BdgyJ<(>VzRg)#Go>I*dk^f)KuW`P2bF8j_E>CFb|h2jrd6sG zkL}O&cB73ml}(&SJE3Nvv%ubh&OV?T9)=**Pvc2%aCj)i224^}97?fF_yQ;DUJkyxfLsgN}`rPnvNvta)?bp+J_K}Vqk!#50d+w25nfGk>=Bix2UN0b~BZ@YZ(=03&V&jm_D$)HlA6TIUvc+eA$Fz zjo2<$Wo=JMgi6x1wP>6WACVh3;PAH$tcSLsK`g zDx;(o%gdX|;;1*cuMwYz-Y-LM7ku9$>gGMQdTh|?#jzox3cB#TH$$+5izk4*60dr* zQKo6D7$}quY;JPH{fVu;#pxcj{m;6ZWeC9RFWQ??O(jOiYHm(ztuqQyU67|{Wa^P; z^uqA?T!-=5oaDH~UmXZVlL#kQ9O&v57@fua4NU?=IgX$)8!{>imM;wD20I}zjcycc zf-}2(Bg|AIqj5D+qF^!sW3`4w(H>Dc{DDdlkUy}E>SJx~$te2N5-}9hxsG%PY~y*O zf<=&VEhRseVP5~^h=5j$S-Dwy^d_qnFhZ0UQvp?ei|7-p+-td09W+lR{f(C`T$k&U zPPeYBoYzoKWkF%2GnCRosSj1W78W?Xu~m}isTATKmMLzi59`eg!ZO8l9O=DKjkb3E zPO+Fi&3Q00Dw-_BP!j!W$ck&M?mBw0h%hUm-gL)KtURC#Y=nr1_T~4pcyjlyWXEnU zEI6{@?hqSnvX`28Ro~5J`UWz6-KDfF14J|r=R_gv8-{&Nh;q*Nf<&qW1Sg4Nl%ig^ zHl92vx8<50u^AYUCL~w2Nm#`WCR#Ss8gmvVC=1~h0$jjxnic^B58@N!!<=zBh ze29K*RJ<$=(Lb-k`Y*GI=KOrcAH}J@z3^@Znt8F@XI6Zr)P94d}%dA&Eh^23cQ!4N~2d3mPDnrtUgRj8k`)TkoNWHwcCt zHh7e?E=Hr`DrX3lgMAY77ibG<8u-HE^)|GWdh6PSXf84O@2p(UJuwlwDPnrMWwiyv zK&ph;Bj^liXjA5H?nRwNvBNABpeEsAA-g~zw*BvDa~f_c%cr%Nq|7~9Y?r2_v6hZx zSxrpv#})EfEIbiWUKR(8DN-;iz%Xj&#%qSej2Tu9)zS^?I=gZ^B@GdGl!>FdzxtwQ zkrg>B7D_D3qN}F61$9zanW>geks5hZj9S!)7z0p$Mv!Odfira)wjFW?!43%#IBtsC zC^4?a3PnrNDH>4L7vUu~78FKUISZx^uL%N8f))?0)}yZzU{Us$EV5RqwGjqaL<)}QV$wFik!9lNF4nA--IXC*aiwM=8r4Yme^WPB&4BRa}M zmMVX6SrdOpC|u0dqmFd4tr@A`___=%Gol+pJyQE&9`}Y>Ol4ykiX#Q1romNPJrWn3 zIpSt}50x`)QG%n$EYz@l0PzCQx$U})CK5hpFXF6|*xQGl6XrR~okNOSsWL$Yj8ygb zwv9ckVeHs>O$13#Uy1f=Q4Y)a{Z8nY=0%@=LGDcNytE`i<-H()J8QU@wwr28sNX~xeN!HS}` zK62Lc$4Dqn*%}!AjsWYl6^L-Ch`p2}A;QyJ)3STS4!_>kX3QvQdOMAWOfBE5d^G;F zz%p^!I$X+Oy9InV5)k2S+WDHqt{tKt(hE=3aNgVj3pE@ICfvx{%w&Yo(zd8(kGYuc z1v5fKNLVdy$FNzKSm9h#G%R@ye<~I|r>{xjXezTyC*wDS8HCgLF$GqL0&Z9cWzh<|HN=6 z;{qbYs}1+WRdfSKbjmuD)ec{4U2->AuuJ-yHM(RJ8^xyhJRw)J``TF=&%jJvXK}LB znaAuCmG!TaAheQZx(%g)h_M7}{}LZ9ks^UMU&h3TL>1u|ab3;oHEzC()?!$_ z7-cGoP84eu-#zvgGqr%Y?(M#C9lhsUUGSiJCKY<=YnoKxcoX?PC}AsNfhc7d7$_cm z@u^_e@5{grEX^LYjIw~3ii750BJsHhVdy`DD2yOS@G!!NGB>sjWMC9vs8#|K$Ou9) z5C?-xVsUZGS%-HFo8}orlPHuc9f^=tEm0LzY$8{dY@tATrt9%UvlnM((^8fvPs9X9&?qlI}!06sm~v=Q2)&kZ3D}q-2l- zC|OSRGdKV(w!X&FPHIfYAfZ}~8&*O(Fdyth>;|ujpn%7*%g`>Mmb<{Ot~6U`3q;#U z?^y0*DE;Oc@2ae?v2~~t=HftzTz(*d0Jbvbl#nJ!Pj+$u!Q2p3`_~1%8|uNp#^HX% zdr==wBKHVt5_>NFoDQw%1L(puAAnRdLbMSGwv4LOe|=wy z`QmaL4fmE=RD_5dpIU^tIRwi#=%kQ1d`@WWug6Cn@{x3N^l?m|@PE-@KJVgKa|t2L zi1oBG1#)CwI38yL)F7N)h|)xmyK;3IO&Kweh$5FP23A)IyJod1v89jCgC)Do$!`)nSg_js!Yy_f~9ZDhwgA6#-4y>yhFD zQY5r_cPv;;bZijrSlH)@2xY*X5uqU^LBg;6PFOZ!DKdtAr6Q6vVY3*EMaNF8L?NxI z#iZf?%(4sGb`Kdp?5eanYNFVCB5>in;dj`v#C+r$vIgw6w1;Ad4J|DAv9>LF< zt{jF462gfZ61ds1f-7PoVjti}kJ@p(Y%a{0eJ)J08v)3E*shsp8P$r24r8w{kFTQ% zM>o$(%nEbtNv49j?vV&G6LnQ9^uShQD8gL~gs9x*KBdDSvD}-5RkRw0>0GUVc$xmX zGdI=@h?h84>>A8qzLmzVH9;=HoV#qtV68cHBg0VVE3w+e8o2PV*%6%$Huj3BX{KZO z^1!HTX3v|E5!RX_vxvWiEs_w9#RCQ3#^pNotyZLDd@Z7aWuuLapmcc~k+KCrJd|J1 zK+7^EpaW?$c+L#Au-;O0-%rjrG30(pCWhsRmz*&$xE`l$tcYh0b~Z`SayWh&{cIsG zn@j$;>|q5j={BQXNScbMIV_{787 zCatIFrA2OjXCJLGLPdjR4LCD|ORTWGTA)|j+PWpTt&Jdno!hr?S|wn)0tjpT#dL%; zjIuDwNDR*g>*|pqOL1W>lg4@&)Imrxh+6)5y|D84m<9Q0g{wznx%P|Y;<`lX@Xe;q z(r9+5p^IP!XAi*`sXdTT?L*jt!}NJ(;FNE~E+iA0K?%vN7EVqYBb@C6^Gxl&7+*%` zmu`r?h3xD zf`71}_tV{0?K6JUqZ--qlDOIQwJs4|vUe~efA*6fy=D0TtK zAAzP7^|qE>-*nJ<+ksmk;fFIFX}g^g1`pY7YkR(!)Qrk)H*RY805+Idb5;T7EH`@0 zgO)2n!eI{+eWp5?nK7By;x8&-!miZp~q zn712Foiwbq?4}nB#j_5VypO(U|n>Z2c_0A z$+>)c%kMXV4aejBbZA0s#3}qWkUOYeLl( z516ohu3aU0VN0^R2p+qwU`Rx&dI+lWR^5E@FqyME;@CH~3A;*ixoj#4mjk!9 zy0{d%AHocS`@L$_*D zk6ynre&$8bn&5V8=jt8KV!L}DUN1N+B^@5V#I;&=){hucwHEdbqZXL*n%QrRlXN>0 z-9r(SY#`f^!jFnkOVY+UxDgc!_t(t;VPCy%pE8s2cNCnhm|2WL1a1+EB8KN0$3PID zYaOp`-bfLexRZy-@Ffwcl81(K1I3ieAt|-m9Wgf9g@rHSRk&txNmS?UGKgrXFe=)O zI1&ap-YI0d1<4xjZ!m*ULdbHiJOl5va33P(| zIlTOr5t_6dyCE{?Fbe=HjAm1tzgVoitW{1yu7in@33>5sf|&W4QhlXy*L5MSk<}SN z%GQYbz*sOI5uBEi9*7ur>Bm&d(I%KD#MB%rad`PLB^940eN#aIU-ak2z@O4?+jVuu2#;yQwgJ=?cAu#0%fSo=|jZXUoIHC&GlAEKJCa+hidlXt|Zp zB5n*EqY#czfjIF^-ciJC*fomzPeu|~2yoE$C-7f()N`p7Aa{_hG-Fjiyp$xRv8rD; zlQ$ovcWkKaLhzUSk})2ZX3l$K>OF`Z7w)nj*>scX;;<>7lWTqeqAwk~hTtYr9!cg{ zG6|JrS1vX~2P@GUn=Oazpj>Xj{aJsBb0qWi$!0yN?mR*jZIX;#1sWzzaISgR8YaGK zSGriFDen-n7FvpynFcf3L}N5|>Mv&CNkN&t)0!IjxN;E(!!X-A^kNrR7BP*5dz=aE z#1i^iDB5rm4P`4ERH$o6SoZZnSoSSNSoZnCl9&H7gr!V?c8ei5J>m2amZ^T$$-W?o z)>4vAvNbStBre>#aGB;qLc{})i5s&1;y09>Kl()GYp)bXPJ@LWloQ<(y%2lCWElm< zbXHN47z-llZe{;xSg-}5qYTtt)^TleSfA>X_%&MNKYL%L*;SuuqKpTvACk%BVs6_LwCRM3`4fX^eIpN`+1$YGq%GwAmoe z?}W3O=Y8UUr4kYmTY-PIA1e`QLNn@@>{njE=tE7h+Um2IaVcc>G1d)j_ldGvbV-Kr zrV(b@wjpf6=bVKJ4Fi>VxoHw`6=}L^jTJBVq()LKrI*c=BXTL-++OOdl+&&<(5tFq3=u(qJkDH&6(tiDe&PH8 zZG8`i4ZHCj-u1BFI3;lVMFurn2qVj1Hn7H+{6B@&tl8Qcp$9bE){it&WbUwm2~YsV zOkoRYl3T&B%7o35pddowlrPW80x75OV?j&{R0|&D8{{xvf}&F|#t?4ac?QoVra9hJ zGtKd)$0g0N3=Jgl^mmfP8Ce~hA6G4vQ*GWvtFY(TxfipX1WhU3IKehDLp{EB2pjn` z*u|5qAgur+%n`)~&AMx7>(JVG$JU|Ncr*T8yM7)2MexHA0=(BXx2+D+75>6*zl1> zgX`56RTa}DLL$6W2-1hhhmd=lwo2%KG{LzpU2^-?BaIw)tPy4zDG$aqg-h3FG3N45 zm4A_@aoFK;j3ARR?%dRDv!*C7cD1h{vZK#*A-(c{BBhL9jtRKmuKcSMKH2|HPWB2G zkqQdCw`gE5X2f8+d@H40ATL2K*;E!BuI^}zNYi?&-#N`lFn;x}d^b1xN9wQ6(_v&h zs|TiN*=ml;NewWpBHE4p^{KT=o4fb|ezD#73rC_cbEM5;W4uN5S5aqlR#4F+{e0(i zlbYvO8`2~PN0L&P$>QhjXYuuqd2v?3M)I&&HqJLIgu7sh#ePV?BXVbhvX%PlY>EXo zVIa#QwIxI2;XsGZ!ZRPL%r-J%LlGP{Io_;ZRm0cIX~hVOYNgBnWT~wv1>)fq3?>xO zkIk0;8LB!LRn5ePXga>jhElu5A}aH8v%tUwgS*Q^hb?+A zB0xP{G=;d@ULJ~=WzJ#A)nOmvuUKJvsedX1)dB85bNYkofj?J!ET3x{TkWK-HprT7 zhBSsq?gH8o&E!v4j0s$ICalH!LU(VM-{?Ew9#@8iQ*4jNC*#!SMKVq?q=*ZHB7Od>;l1NNo@@$!vXjEE>b#E8~a3>P<7@ z=vT%hEuIO9M~*N~)<1wLLiMr-#bGAIzQ~f7vjL`XyO>Oc_P@J5e8)~v15`c1Y1R105P>gw{zFJHtawSl(h(Z2>-9C zYEibf`E~^(vaOdtYz>oah0z3Gkgd$59OPZXGnBQyCx#cbzKa|XKeL$U{55|#!alOk zL2hq7BYGbM#%d6S^F+=R=Ty7eiA-IlI3C`i6PYf5l@9}r3Em1$fvBZqp=+dgb{P^; zgchzQM>^88^NfQ8f!4#%t(;`L6)tbaHrKdF5-W)eDw-{Qg1m=xe{d#Q-=>?pFZ zOByX2X&}Nv7N+L?gUBWnaTg|c%kVFztgiu;RdY zBrb#ghF~rmvdGp7nMLBQNDN`mt}?{hMGr@a zxIt)^m!P&`x85`!aGNwvnwXwDn*a7?B4*N;d~xWpfdSD-_z3OcyVm)#(hRghTKi*Q zAUVinoyfB)S0E*x?=%&q`4`n)B}O}ZkQq7y3yg&^j3T8V3HdNmyJeC3$>jF(Gf^&g z#f;_+Tm@!B5nIk}vSbTNmCWr5oWgtD=KbVVn4^ODYGqHLOS|+BmrD$WgeYk2S~LS+TY~9d@U}RNK_|V z(Dol+F!iok|3bIyH5H1Mw85-e*$$+?T8}}%*O&fAU8M9Eq3X_RFlVeGo^pr@v#~dh zIkRe=y?}4_TI-PAPP>V7k^S30)0xVO-nAwv)YYC4$^78kNZcf22$L5`Dl`-h>F3&! z9u`!HlYLSUHoR7~#G26KH8OgTPSBD~{7BsY@2m9@dfv^Mk@)3oAz<*8vz7PrafX>ly{^zTPbACLbKi4ecF*Dk|iKVDu$2%%H!#QY4$Cz2K zvq>Cp52R!&Q^--%`@|cGQ6(OcnkOi$!2HF=NR$jRHT3D4X%CV+dA3N|lP!jDh{z_Z z)@Igv)IRI-N745g@jk6at%+*fiqiEK$i`Zh1kWxzo7;~^HD*1$ObF!~g2O3D@?690 z1kD6Htru%&b7W#06N`i$<`1OVa8asSQea}h%!6Cu#?PUPCupd1xF=F zqCP}y)!U40CwI5+N0Q##z>5fT7xWH_Qe()qw?@J#%s=Ls>WDi{=1;tfGy~^liPA)b z6^g+%p;KRsZ>eOCBuODhWvN#rfjQyWWD#IwpP4O}Dv4rZRH}I{HWL^`I2SvL>fo%h z=y%XfU3wn>MC7Vh3N2@){8-LrFfn1LB+tXa$fXA7Qq9xF3zbjmliLFA!PxGmDyQr6 z!^Zy5r1#M-E4Jo(7M0U1dYdp`%;6|ph zc^oFO&He&4IG`&tT5a**wlzd@B3Kjs5K*IfEXa|m!r9F#k{5tV8$>v=b()|~&ScuF z^h62}3OssCIUdiZ2M(P-B*PZFDH!OD!?XIhbU5|MOQS15Dxg~|Up0>~Cv8W78BPN- z(rBZ7u3gy4Im}{>v|~vu7%DxH@ojbCY#s4{b#x?nWm58lrB84(hYfdTvw72=Xn-^6y|rsf4h|NR^0_A0!G%9!x1^-T&rpp&tK4 z@}oMxsTD*R<`uV?kI>U#MnUkmJ1lh36&SQjF`dYnJsayEf@5qZI^{mnV3`>bLrtbY zN&3sSh@v`HC0()Z1L-C;O!%j=mO<&}?E#CmxujQx9FI2*(q46!p^wQ{QMAQ^qt93b zB{>*IpF2wi4{LUzAts+#7j}WW@yJ@G@Xlu{NT9NhC%Twkz)gENxXOhKOOMBe5-DL^ zH4!U%trGQ5k!#7_U#BugKm^X#GaYuRMWFv;#Pk9-{Zs*4H=%C2n75=c0&IAE$n7ejk4l)nFS^X#Gmg3O`w zcOO(Gdy3XWFdIc*x%*B>x7ka2hQw6)0iv8V(5Og{)Q_2NxRmiVV#&nlT+rQR%w$YB zWskjH=7Kwsmi&a6M;P;gj@y=HD89c=XJ&gn;ZlP!0j#FlY7XWlI*Jw_%dnNxpv?GL zo3x@us-?b}+pLdGiJec9BhFM8duMRI2^Jg3JvHn$W!K6?5z5)0MJ>Vf<&yRz@0f3u zmz4!g0Jg3m@>x@%nzQ~jzxTDoaA0RiMhw5sIfmuKDS_s|X5Wyn2WfP_1MlrZeqoHj zbL?(Kb0C#y$?jy_-ZY~NBzF*0i|S-sFbYaMRmkAD9`CS84voT+FT524)mDaK$5h5V zfn=AE5hfV3Ws2qy(--I4a! z+Tw}M{@ynk7g*xEWPf&bZ`9s!j8|lpSIL^1vls?Q1^F4>5Opp%f0S0Q{v^o-uQnSG zY5((In3f)dk)hk#rDNDvhXM9;*onAc@D}wiMDEjnuXZAu3Jx7s28E^e`F?@=5caCN zWFJb?sqf&H*a55L^dgrCk76BiRva05-h5AvH5f@@m#eynJT+hyWlnbzx$acEh5vj~E_ zPG;937wushI#PSWC6Gj#&FnxP8L(ZRVPEGA8DuHpp;OMPjMktC!8Un$p~N^LEy6A{iUf4nUZ3nem?;&^6MePJZR3yFi`x9H`^JpU znS|>q?C*jN8Rx&@zPq~F0=+N@@6V)=-n=5Iq3x9>5g!xHC#^J&(wSvbi`xF^B6Rm+ zC?e(w7ELLVtspZQpa9Vt7)^`2VFMi39=0FKXz>FR?9>9`z-VaLXw-osN~go9^}DQ+ zAd7f?C}8U44651H8Dq<(7}MUu#tbJaLR6wUETK2~C&;2Y15YiY5OE$tRqrzDHuZjq zw^5sC)Qc||NGCp%R1VARJo1HO*Pv*Q_lt&f$r(7uEQu3%uRa?8it8Le{HwC7t2x7VwYBM5LxVv0# zD3;pr$q>PY01>5CUguC6`AWg~v89)X1m+U#^$SZ#^na5vminBU)R*sXU8WaIJHc?! zRVCg8LApPMxg8TniHTgqUT9z0U!W{F%P!5X?T4+8n6|Nz*JhHhY84pJC?4G+8#C=N zvU#dJ^U}J3Axd&*s(=PGEq2!+&j1EDPH8W}|H7~}jC5p|#NFh`_Js}>!Q_eq?XgoQ zQrp}0H;iV{1T?G%LpGg8(2cQ>HX%zvfTZzjx0v`yZI$GPBX)0AqUZ(XEF9z!r;7+4 zeHY!x#e@s$Fsez&?z1$rgtaKRP#t}eR!GDmD|xDGhynIWJ*=76pLP_Jw}6-bg3=b4 z9j`WR!E&i``wuDT(EjKk1G1td9nD9WTP>X zJ@&!W0Ez0%4H4o{{4Q?24D((P7w`o)sDn4g>xt?ZO=l#RplK=5)6lNl zQlr;r^T^#T&OWx4^LLqKBfiUvANiYARgxW<^?YvyIshDx_RKdzvQo+fMv3%ATW z6S_<~2vCxZ=6UHo{Vxrh4?(4T7`_#YLg&$*?`HP}2M6G81vj`+~JPZn0)8Awa5ot>MS7X=z_`}nwcBUMO?%iqjV zA%kHEr*Og@O@)s>5v-)Dw(Pi^8vI6Jh~UuW>qJ<2`6@57mH8pTp@WL!GB|l=89Jgl zv~2my9iEO!Vd_rDH2XOYhWmj*c&~11@vwu**vDI`NzfOzkGH`TPL-MlQy%+Z((R_o zupvMXOTwgT63Q>X9+n;M&pAcH{h?dgy_2=VB|1!Zc2W|?K@18QjBCn6+>?Pyi`5`* z!azVjaU23(=((A<(PXjvV8e+k7rkVBHh#F_1ox+(Of1{=_LZPthXhj_`iB@B=0!W; zwQy784&mUi8}pMRNGQ)uoRJ18-`MWJbHfJ0%B&iM7>C}v3=TAdmQX)G z)-T9fV60`XGWD$HCTG2N{yYmktWg>5qidwsizi+dzYD3Qp8}sDT^{@ zqrRXXnQgSG(!elJ@vwo!Rd#WEFtFS>2!*z*xxNv4%}vas@9|T4Q$q83WZ6Vbuqx+v z1R2*-;_1yc8HC8TQU*chFn2JAyp45?)P{EFjC?m3Um*e5U0Dlr4Y#h?)N#-#>`H;- zKuN+b!PxrStyk_)uF7Iw`NOrk+pLEy?Z+ssX= z+A2HrJ>vT6;29VWsP#D0Jt~mD@f>~tS9VfmAVQ|yicU?>IG+6 zXpVZ8#o?pe=7VMD zTjBh;vc8bF+h&Ui*4Tp>vV&;eX2>fzmvUAGUG#|hL75j}pBprNEYzAIDe}Zqqm12x z;qx7MK^tY@LK%#WTdRbNYzPxsXk(=%e`~M{%*9h+7nm;rLMFz@nt^Ye<4KgIK5QRz z`}NsR=tZO%Fj+)S8k~5Ky+k=iCz){>%JpeStjwh7ffAmVC=~{*McRI)s?c0K<6fcu z8;|+!$(_vP;XFaryHMbpblLliGQ;^BQ)#M?ssSuBOrC{J0M;$;WMOwGhnp0)R$PeA z{>BnEZ$iLeWs_aim+`h{#Y*>6Czc33OpU!-6>oUHWF^Ae5f5euwJy?2HVqGWsL*8G3*vTd%LW!5b7L z9>N(qxFFEzSgr_Km6&d6^b^mIJs@442vd)-mx-uS*QCpLK!-LZ`8&IkseUww zHCoz1ZsReX!Om{{k(Q8%p<)(kU($ov`DAwqRu6F-cmS~!gt0+YPF@#}HH(&mXqZZ7 zpinyC;(?=dQI1TruhbcoC73+a5#!#$G@M@ghNm#reE z@r)aRZ4M!{Gt-~JEaw&=Z~BZzF$YM7WIMA&mf&Ei_l(+XJQ1c%c^X zBKvcqySAps3Vt2PkmY%-q~Z{f2v_1TvObM)qoe;W^Tg$;*r`KxupU!PN1nzLZc|6W zZMxrV*=&T6V)4*ySZiR@FBb8sfy~C1^yny#akhy@n8ZWE zP(pIYM2?0M`V>cyc`B1Cr3Xdw%k~NGL7|N}X!y`_oIwsyY&Q+2@P8bKk)~CPFCA*p zSX`3i`s(d9Rq=P;XrUB~xB2rjoFT}uW-VvYs<1_L38T5Xh}Z*Vq+ga-^N)+Iq_Q?> zeYtJK1(99zqXq(>sS&T@%)xA6jCt%A{v&%c2s}2^FU1j;A%*$TBe7g)^5Ps^lg+-VEmJS?bHS{=zLQ_9Pu9 z#$5(+)SOkt;Io8THI{^i%zXVWo#RU>ZX05Xf-)e!KLs+8!T50yVwM1inaC* zv$*zz8=WqQCXG;&+a0ea#yBRKsv^|7%UyB%8SyfD?bCa9cS4h~6)e2%^L&w4<3E$FTtIEG^XeT=F0Uaq1 zB|(lhwL4AG9HFfIk&SlJO7pX$ID@(xwdkx=mi@6>+c3Y}{sjd`yb<$tC)0tJdq026 zbwbR6Y%P}@HG&_PN(g0zHKh)6Tc}G?hpmPSx`N=Ir6bpvTbvz0TxdA)aVTm4f^h{w z9|{g!S(3FyRzv=_Xz1krk)kevwP^t{FYuiuP-tf8KX;|-x8(;DzMqQ(5ZdpE9Vz9P2H+q8T4hK*gx*cEH9h-nZHU)UCc>q97JAK-4P?-RbTSwEpg zgQ{Cp6*Kfab4$Ee%$AX_ct!BHy%=nBaOpb#&)~0E@cCL*NikJ(xP|Af@J{#6z`tkW zzo*FWv+%F^AGsCYO8NI}T(wfJCwG>&3g`^)9QkYo_%q}#{P#@!k9RbG@!B)JvwG+G^JO}@oGMSRB@Xqxbyz{_49iOmV=gT)&c+bG!<~#h} z3c2?)rCjDZ^P~%;g#4Ze#tmV1*1 zVOMyoz31SX3vstIrQBzFyoY&~`5w!_=X&0A@g3gZ{O{R`d?Z_{(7aHrMlCzB@mE z0seco^a=C1xte#q2yJ1$$v1HIW6H9^y8xWI);!hJFWbu?0YPgxl)(Lyn`t{ z--!QXPkOrChjn6l0_&WgHKOHB&G4K2%>2*XnQg;zoaMa`{{|)CH~9&l!&>Ei+2)2n z8|`K8&X!=0HScn|l!Wigt5BgL3_|y=@jBe#=Yo{bzZvwKy%GKf~K=aZ2#{-T{lh@WFj&a)ous z;y(HOY2G_69+u~=^6s#>Eck5igBEAx`m?-`TAUU96z`ubuDtX%ED+D|9t7skY0&Jy zY3rjM__p7E_ftG*>EE{3oBBCZ>WA-NdJgOJbngfL_s{X#SDX6A$KG?KJzn7bul@cr z1wYR_YlW%5_sIR9>z!xuv*q&(z2{l{F8Ta9-is|R%kwVqViu3f=jVB^wAhrVLCVAO zRpk0}y-xeN=^t1_hTaG3L0kUzN58~kqaHl(sHqacyH|c$epmD3XV>PB*5QxU;iv2H zqtB>)|LHpX@jCoW9e%bBKUar8S%>$YS-YH*Fa6h=^>$AkeyR?CtPbCFS?&9e#cK11 z>hQ&FwXYwo!%x=XXX@~4US0eCyX)|)udRK3V;z2X9sW=qe$AfR_iwAix7XpPZ>W8r znL2#aYinQMsm9$Q^cap^{!FXqYTi@#(fn?8pH&#F?mopj{GmF0(@z6ApzqUJhxh)s z_Vw*`_}z8*Vjcca9e%D3KlZcQ<(aC(AFsnVdBM2W^|1Q1+Wf?d+Wb9r_~|&I8se(s%h_~JRWuWvuMHov`(>b-nGruFiex@J-j(zP?z8pR2<+?XG>F&N}?KlH0oc zGj;frb@&<8ub!jyvBB4y@<2I-7b5s6D*kx^?Tsq_rHUU@{L2-8Nb%bgKd$(83mwR_A{`=~^CM|zHu6?Jv{vLJx`xQT>_zx)lnBwnM{IueaDgL

P4un6rZ6{aM{0YW=gy0*|8IDb#M6YNUll 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

`Ojvs%#@Zgoedx$9+JX;2 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�SowqNlKFz*y&{C%C09=_hWf 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