From 0eec7de4b12e519f155b0058afd468f9ddc3ceb6 Mon Sep 17 00:00:00 2001 From: Yaro <9028029+Cifruktus@users.noreply.github.com> Date: Tue, 11 Jan 2022 04:21:39 +0300 Subject: [PATCH 01/31] Fix, exception on start when using web --- lib/main.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 78f21d4..8e7aa84 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:math_training/home/view/home_page.dart'; @@ -9,7 +10,9 @@ import 'package:path_provider/path_provider.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); HydratedBloc.storage = await HydratedStorage.build( - storageDirectory: await getTemporaryDirectory(), + storageDirectory: kIsWeb + ? HydratedStorage.webStorageDirectory + : await getTemporaryDirectory(), ); runApp(MyApp()); } From 87f38947774e94cbf909c0b9264088d66d88ea0b Mon Sep 17 00:00:00 2001 From: Yaro <9028029+Cifruktus@users.noreply.github.com> Date: Thu, 13 Jan 2022 04:02:44 +0300 Subject: [PATCH 02/31] Added support for physical keyboard --- lib/math_game/view/math_game_page.dart | 29 +--- lib/widgets/numeric_keyboard.dart | 211 +++++++++++++++++++------ 2 files changed, 170 insertions(+), 70 deletions(-) diff --git a/lib/math_game/view/math_game_page.dart b/lib/math_game/view/math_game_page.dart index 14efd52..0188f91 100644 --- a/lib/math_game/view/math_game_page.dart +++ b/lib/math_game/view/math_game_page.dart @@ -42,18 +42,7 @@ class MathGameView extends StatelessWidget { appBar: AppBar( title: GameAppTitle(), ), - body: Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: const [ - Flexible( - flex: 4, - child: MainGameWindow(), - ), - Keyboard(), - ], - ), + body: PageContent(), ), ); } @@ -253,20 +242,18 @@ class QuestionTextField extends StatelessWidget { } } -class Keyboard extends StatelessWidget { - const Keyboard({Key? key}) : super(key: key); +class PageContent extends StatelessWidget { + const PageContent({Key? key}) : super(key: key); @override Widget build(BuildContext context) { var state = context.select((MathGameBloc bloc) => bloc.state.stateType); - return Flexible( - flex: 3, - child: NumericKeyboard( - onApply: (s) => applyPressed(context,s), - onChange: (s) => onChange(context,s), - numericInputEnabled: state == GameStateType.going, - ), + return GameKeyboardInputWrapper( + onApply: (s) => applyPressed(context,s), + onChange: (s) => onChange(context,s), + numericInputEnabled: state == GameStateType.going, + child: MainGameWindow(), ); } diff --git a/lib/widgets/numeric_keyboard.dart b/lib/widgets/numeric_keyboard.dart index 3b12e5a..1422219 100644 --- a/lib/widgets/numeric_keyboard.dart +++ b/lib/widgets/numeric_keyboard.dart @@ -1,53 +1,165 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; +import 'package:flutter/services.dart'; import 'package:math_training/widgets/custom_theme.dart'; -class NumericKeyboard extends StatefulWidget { +class InputTextProcessor { + final int maxLength; + final RegExp _validator = new RegExp(r"[0-9]"); + final void Function(String) onChange; + + String value = ""; + + InputTextProcessor({ + required this.maxLength, + required this.onChange, + }); + + bool validateInput(String s) { + return _validator.hasMatch(s); + } + + void addIfValid(String s){ + if (!validateInput(s)) return; + add(s); + } + + void add(String s) { + if (s == "0" && value == "0") return; + if (value.length >= maxLength) return; + if (value == "0") value = ""; + value += s; + onChange(value); + } + + void backspace() { + if (value.length <= 1) { + value = ""; + } else { + value = value.substring(0, value.length - 1); + } + onChange(value); + } + + void clear(){ + value = ""; + onChange(value); + } +} + +class GameKeyboardInputWrapper extends StatefulWidget { + final Widget child; final bool numericInputEnabled; final void Function(String) onChange; final void Function(String) onApply; - const NumericKeyboard({ + const GameKeyboardInputWrapper({ Key? key, + this.numericInputEnabled = true, required this.onChange, required this.onApply, - this.numericInputEnabled = true, + required this.child, }) : super(key: key); @override - State createState() { - return _NumericKeyboardState(); - } + _GameKeyboardInputWrapperState createState() => _GameKeyboardInputWrapperState(); } -class _NumericKeyboardState extends State { +class _GameKeyboardInputWrapperState extends State { static const int maxNumberLength = 7; + bool focused = false; + late FocusNode focusNode; + late InputTextProcessor inputText; - get numericInputEnabled => widget.numericInputEnabled; - String _value = ""; + @override + void initState() { + super.initState(); + inputText = new InputTextProcessor( + maxLength: maxNumberLength, + onChange: widget.onChange, + ); + focusNode = new FocusNode(); + focusNode.addListener(() { + setState(() { + focused = focusNode.hasFocus; + }); + }); + } - void _add(String s) { - if (s == "0" && _value == "0") return; - if (_value.length >= maxNumberLength) return; - if (_value == "0") _value = ""; - _value += s; - widget.onChange(_value); + void _apply(){ + widget.onApply(inputText.value); + inputText.clear(); } - void _backspace() { - if (_value.length <= 1) { - _value = ""; - } else { - _value = _value.substring(0, _value.length - 1); + void _processKeyboardEvent(KeyEvent event) { + if (event is KeyDownEvent) { + if (event.logicalKey == LogicalKeyboardKey.enter) { + _apply(); + return; + } else if (event.logicalKey == LogicalKeyboardKey.backspace) { + inputText.backspace(); + return; + } } - widget.onChange(_value); + + var character = event.character; + + if (character == null) return; + inputText.addIfValid(character); } - void _apply() { - widget.onApply(_value); - _value = ""; - widget.onChange(_value); + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () => focusNode.requestFocus(), // workaround to avoid losing focus + child: KeyboardListener( + focusNode: focusNode, + autofocus: true, + onKeyEvent: _processKeyboardEvent, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Flexible( + flex: 4, + child: Container( + color: Colors.transparent, + child: widget.child, + ), + ), + Flexible( + flex: 3, + child: NumericKeyboard( + numericInputEnabled: widget.numericInputEnabled, + enabled: focused, + onBackspace: inputText.backspace, + onEnter: _apply, + onInput: inputText.add, + ), + ), + ], + ), + ), + ); } +} + +class NumericKeyboard extends StatelessWidget { + + final bool numericInputEnabled; + final bool enabled; + final void Function() onBackspace; + final void Function(String) onInput; + final void Function() onEnter; + + const NumericKeyboard({ + Key? key, + this.numericInputEnabled = true, + this.enabled = true, + required this.onBackspace, + required this.onInput, + required this.onEnter, + }) : super(key: key); @override Widget build(BuildContext context) { @@ -70,18 +182,18 @@ class _NumericKeyboardState extends State { children: [ _KeyboardButton( text: "1", - onPress: () => _add("1"), - enabled: numericInputEnabled, + onPress: () => onInput("1"), + enabled: numericInputEnabled && enabled, ), _KeyboardButton( text: "2", - onPress: () => _add("2"), - enabled: numericInputEnabled, + onPress: () => onInput("2"), + enabled: numericInputEnabled && enabled, ), _KeyboardButton( text: "3", - onPress: () => _add("3"), - enabled: numericInputEnabled, + onPress: () => onInput("3"), + enabled: numericInputEnabled && enabled, ), ], ), @@ -91,18 +203,18 @@ class _NumericKeyboardState extends State { children: [ _KeyboardButton( text: "4", - onPress: () => _add("4"), - enabled: numericInputEnabled, + onPress: () => onInput("4"), + enabled: numericInputEnabled && enabled, ), _KeyboardButton( text: "5", - onPress: () => _add("5"), - enabled: numericInputEnabled, + onPress: () => onInput("5"), + enabled: numericInputEnabled && enabled, ), _KeyboardButton( text: "6", - onPress: () => _add("6"), - enabled: numericInputEnabled, + onPress: () => onInput("6"), + enabled: numericInputEnabled && enabled, ), ], ), @@ -112,18 +224,18 @@ class _NumericKeyboardState extends State { children: [ _KeyboardButton( text: "7", - onPress: () => _add("7"), - enabled: numericInputEnabled, + onPress: () => onInput("7"), + enabled: numericInputEnabled && enabled, ), _KeyboardButton( text: "8", - onPress: () => _add("8"), - enabled: numericInputEnabled, + onPress: () => onInput("8"), + enabled: numericInputEnabled && enabled, ), _KeyboardButton( text: "9", - onPress: () => _add("9"), - enabled: numericInputEnabled, + onPress: () => onInput("9"), + enabled: numericInputEnabled && enabled, ), ], ), @@ -133,17 +245,18 @@ class _NumericKeyboardState extends State { children: [ _KeyboardButton( text: "<|", - onPress: _backspace, - enabled: numericInputEnabled, + onPress: onBackspace, + enabled: numericInputEnabled && enabled, ), _KeyboardButton( text: "0", - onPress: () => _add("0"), - enabled: numericInputEnabled, + onPress: () => onInput("0"), + enabled: numericInputEnabled && enabled, ), _KeyboardButton( text: "Ok", - onPress: _apply, + onPress: onEnter, + enabled: enabled, ), ], ), From 4e67dd2d45dbe47c369cb22f6aa325afc227849f Mon Sep 17 00:00:00 2001 From: Yaro <9028029+Cifruktus@users.noreply.github.com> Date: Thu, 13 Jan 2022 04:39:25 +0300 Subject: [PATCH 03/31] Hardware keyboard support cleanup --- lib/math_game/view/math_game_page.dart | 20 +++++----- ...keyboard.dart => game_input_scaffold.dart} | 39 ++++++++----------- 2 files changed, 25 insertions(+), 34 deletions(-) rename lib/widgets/{numeric_keyboard.dart => game_input_scaffold.dart} (89%) diff --git a/lib/math_game/view/math_game_page.dart b/lib/math_game/view/math_game_page.dart index 0188f91..d53e4cd 100644 --- a/lib/math_game/view/math_game_page.dart +++ b/lib/math_game/view/math_game_page.dart @@ -5,7 +5,7 @@ import 'package:math_training/math_game/bloc/game_events.dart'; import 'package:math_training/math_game/bloc/game_state.dart'; import 'package:math_training/settings/cubit/app_settings_cubit.dart'; import 'package:math_training/widgets/custom_theme.dart'; -import 'package:math_training/widgets/numeric_keyboard.dart'; +import 'package:math_training/widgets/game_input_scaffold.dart'; class MathGameView extends StatelessWidget { @@ -38,12 +38,7 @@ class MathGameView extends StatelessWidget { finishGame(context); return false; }, - child: Scaffold( - appBar: AppBar( - title: GameAppTitle(), - ), - body: PageContent(), - ), + child: PageContent(), ); } } @@ -249,11 +244,14 @@ class PageContent extends StatelessWidget { Widget build(BuildContext context) { var state = context.select((MathGameBloc bloc) => bloc.state.stateType); - return GameKeyboardInputWrapper( - onApply: (s) => applyPressed(context,s), - onChange: (s) => onChange(context,s), + return GameInputScaffold( + onApply: (s) => applyPressed(context, s), + onChange: (s) => onChange(context, s), numericInputEnabled: state == GameStateType.going, - child: MainGameWindow(), + appBar: AppBar( + title: GameAppTitle(), + ), + body: MainGameWindow(), ); } diff --git a/lib/widgets/numeric_keyboard.dart b/lib/widgets/game_input_scaffold.dart similarity index 89% rename from lib/widgets/numeric_keyboard.dart rename to lib/widgets/game_input_scaffold.dart index 1422219..6a09514 100644 --- a/lib/widgets/numeric_keyboard.dart +++ b/lib/widgets/game_input_scaffold.dart @@ -46,25 +46,27 @@ class InputTextProcessor { } } -class GameKeyboardInputWrapper extends StatefulWidget { - final Widget child; +class GameInputScaffold extends StatefulWidget { + final Widget body; + final PreferredSizeWidget appBar; final bool numericInputEnabled; final void Function(String) onChange; final void Function(String) onApply; - const GameKeyboardInputWrapper({ + const GameInputScaffold({ Key? key, this.numericInputEnabled = true, required this.onChange, required this.onApply, - required this.child, + required this.body, + required this.appBar }) : super(key: key); @override - _GameKeyboardInputWrapperState createState() => _GameKeyboardInputWrapperState(); + _GameInputScaffoldState createState() => _GameInputScaffoldState(); } -class _GameKeyboardInputWrapperState extends State { +class _GameInputScaffoldState extends State { static const int maxNumberLength = 7; bool focused = false; late FocusNode focusNode; @@ -78,11 +80,6 @@ class _GameKeyboardInputWrapperState extends State { onChange: widget.onChange, ); focusNode = new FocusNode(); - focusNode.addListener(() { - setState(() { - focused = focusNode.hasFocus; - }); - }); } void _apply(){ @@ -109,29 +106,25 @@ class _GameKeyboardInputWrapperState extends State { @override Widget build(BuildContext context) { - return GestureDetector( - onTap: () => focusNode.requestFocus(), // workaround to avoid losing focus - child: KeyboardListener( - focusNode: focusNode, - autofocus: true, - onKeyEvent: _processKeyboardEvent, - child: Column( + return KeyboardListener( + focusNode: focusNode, + autofocus: true, + onKeyEvent: _processKeyboardEvent, + child: Scaffold( + appBar: widget.appBar, + body: Column( mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Flexible( flex: 4, - child: Container( - color: Colors.transparent, - child: widget.child, - ), + child: widget.body, ), Flexible( flex: 3, child: NumericKeyboard( numericInputEnabled: widget.numericInputEnabled, - enabled: focused, onBackspace: inputText.backspace, onEnter: _apply, onInput: inputText.add, From bd84c3b3e59f6ee07ea79bd61e28533322ada928 Mon Sep 17 00:00:00 2001 From: Yaro <9028029+Cifruktus@users.noreply.github.com> Date: Thu, 13 Jan 2022 04:40:48 +0300 Subject: [PATCH 04/31] Removed unnecessary imports --- lib/home/view/home_page.dart | 1 - lib/home/view/widgets.dart | 1 - lib/settings/view/settings_page.dart | 1 - lib/theme.dart | 2 -- 4 files changed, 5 deletions(-) diff --git a/lib/home/view/home_page.dart b/lib/home/view/home_page.dart index a8d234a..6a8066c 100644 --- a/lib/home/view/home_page.dart +++ b/lib/home/view/home_page.dart @@ -1,6 +1,5 @@ import 'dart:math'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:math_training/home/view/widgets.dart'; diff --git a/lib/home/view/widgets.dart b/lib/home/view/widgets.dart index 9fcc604..2da14b4 100644 --- a/lib/home/view/widgets.dart +++ b/lib/home/view/widgets.dart @@ -1,7 +1,6 @@ import 'dart:math'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:math_training/math_game/models/result.dart'; import 'package:math_training/widgets/custom_theme.dart'; diff --git a/lib/settings/view/settings_page.dart b/lib/settings/view/settings_page.dart index 0343b97..eeb1b86 100644 --- a/lib/settings/view/settings_page.dart +++ b/lib/settings/view/settings_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:math_training/math_game/training.dart'; import 'package:math_training/scores/cubit/scored_bloc.dart'; diff --git a/lib/theme.dart b/lib/theme.dart index 69bf67b..6d273c7 100644 --- a/lib/theme.dart +++ b/lib/theme.dart @@ -1,5 +1,3 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; const Color primaryColor = Color(0xFFC56C35); From 393cc9cc60fa5174b8a7c04cf7f4a849ba1bc314 Mon Sep 17 00:00:00 2001 From: Yaro <9028029+Cifruktus@users.noreply.github.com> Date: Fri, 14 Jan 2022 06:21:55 +0300 Subject: [PATCH 05/31] Default settings changed --- lib/math_game/training.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/math_game/training.dart b/lib/math_game/training.dart index 5a80d2a..565f41d 100644 --- a/lib/math_game/training.dart +++ b/lib/math_game/training.dart @@ -9,7 +9,7 @@ class MathConstants { static const hardQuestionGeneratorName = "Hard"; static const hexReadQuestionGeneratorName = "Hex decode"; - static const String sessionDefaultDifficulty = normalQuestionGeneratorName; + static const String sessionDefaultDifficulty = easyQuestionGeneratorName; static const sessionDifficultyNames = [ easyQuestionGeneratorName, @@ -32,7 +32,7 @@ class MathConstants { return NormalQuestionGenerator(); } - static const defaultDuration = Duration(minutes: 5); + static const defaultDuration = Duration(minutes: 1); static const List durationOptions = [ Duration(minutes: 1), From 05047efc17476dcd2af0d09c72760da2a94fa35a Mon Sep 17 00:00:00 2001 From: Yaro <9028029+Cifruktus@users.noreply.github.com> Date: Sat, 15 Jan 2022 10:28:30 +0300 Subject: [PATCH 06/31] Keyboard buttons now visually react to taps --- lib/widgets/game_input_scaffold.dart | 47 +++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/lib/widgets/game_input_scaffold.dart b/lib/widgets/game_input_scaffold.dart index 6a09514..5942322 100644 --- a/lib/widgets/game_input_scaffold.dart +++ b/lib/widgets/game_input_scaffold.dart @@ -260,7 +260,7 @@ class NumericKeyboard extends StatelessWidget { } } -class _KeyboardButton extends StatelessWidget { +class _KeyboardButton extends StatefulWidget { final String text; final Function() onPress; final bool enabled; @@ -272,23 +272,60 @@ class _KeyboardButton extends StatelessWidget { this.enabled = true, }) : super(key: key); + @override + State<_KeyboardButton> createState() => _KeyboardButtonState(); +} + +class _KeyboardButtonState extends State<_KeyboardButton> { + bool pressed = false; + @override Widget build(BuildContext context) { return Flexible( child: GestureDetector( - onTapDown: enabled ? (_) => onPress() : null, + onTapDown: (_) => _onButtonDown(), + onTapUp: (_) => _onButtonUp(), + onTapCancel: () => _onButtonUp(), child: Container( - decoration: BoxDecoration(border: Border.all(color: Colors.white60)), + decoration: BoxDecoration( + color: pressed ? Colors.black12 : null, + border: Border.all(color: Colors.white60), + ), child: Center( child: FittedBox( fit: BoxFit.fitHeight, child: Text( - text, - style: TextStyle(color: enabled ? Colors.white60 : Colors.white24, fontSize: 69), + widget.text, + style: TextStyle(color: widget.enabled ? Colors.white60 : Colors.white24, fontSize: 69), ), ), ), ), )); } + + void _onButtonDown() { + if (!widget.enabled) return; + + widget.onPress(); + + setState(() { + pressed = true; + }); + } + + void _onButtonUp() { + if (!widget.enabled) return; + + setState(() { + pressed = false; + }); + } + + @override + void didUpdateWidget(covariant _KeyboardButton oldWidget) { + super.didUpdateWidget(oldWidget); + + if (!widget.enabled) pressed = false; + } } From 28c34bb7c4d0344c8c4a4f4b8b91882996eb1eaa Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Sat, 15 Jan 2022 10:58:43 +0300 Subject: [PATCH 07/31] Added link to github pages --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3f5d79e..00313b3 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The app has several different modes, including simple addition/subtraction train The app will save results of each training so you can track your progress. - +You can try the online version out [here.](https://cifruktus.github.io/MathTrainingWebapp/#/) ## How to build @@ -17,4 +17,4 @@ The app will save results of each training so you can track your progress. `flutter pub run flutter_launcher_icons:main` 2. Build an application: -`flutter build apk` \ No newline at end of file +`flutter build apk` From 14404db78bd2ce99e90ff3cf254cb0dec3da287d Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Wed, 20 Jul 2022 15:21:30 +0300 Subject: [PATCH 08/31] Added link to github --- lib/settings/view/settings_page.dart | 18 ++++++++++++++++++ pubspec.yaml | 1 + 2 files changed, 19 insertions(+) diff --git a/lib/settings/view/settings_page.dart b/lib/settings/view/settings_page.dart index eeb1b86..b8bafe9 100644 --- a/lib/settings/view/settings_page.dart +++ b/lib/settings/view/settings_page.dart @@ -4,7 +4,9 @@ import 'package:math_training/math_game/training.dart'; import 'package:math_training/scores/cubit/scored_bloc.dart'; import 'package:math_training/settings/cubit/app_settings_cubit.dart'; import 'package:math_training/settings/view/widgets.dart'; +import 'package:url_launcher/url_launcher.dart'; +final Uri githubPage = Uri.parse('https://github.com/Cifruktus/MathTraining'); class SettingsPage extends StatelessWidget { const SettingsPage({Key? key}) : super(key: key); @@ -33,6 +35,7 @@ class SettingsPage extends StatelessWidget { MathDurationEditor(), MathSessionEditor(), ClearScoresButton(), + GithubPageButton(), ], ), ); @@ -72,6 +75,21 @@ class ClearScoresButton extends StatelessWidget { } } +class GithubPageButton extends StatelessWidget { + @override + Widget build(BuildContext context) { + return NameValueCard( + onTap: () => launchUrl(githubPage), + name: Text("View project on Github", + style: TextStyle( + color: Colors.blueAccent[700] + ), + ), + value: Container(), + ); + } +} + class MathDurationEditor extends StatelessWidget { @override Widget build(BuildContext context) { diff --git a/pubspec.yaml b/pubspec.yaml index 50f05e0..bd36c0a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,6 +19,7 @@ dependencies: json_annotation: ^4.0.0 cupertino_icons: ^1.0.2 path_provider: ^2.0.7 + url_launcher: ^6.1.3 dev_dependencies: flutter_test: From 6e306d28b02ceec306b88b98d62a5b682e647d2d Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Wed, 20 Jul 2022 15:23:50 +0300 Subject: [PATCH 09/31] Icon update --- assets/icon.png | Bin 129597 -> 137858 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/icon.png b/assets/icon.png index c5a7833073273edb5c30554dcef8d8c7fc42411b..4f3df686a6ca4148ef1967eb4cf91fbd93837373 100644 GIT binary patch literal 137858 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

xcoRghp7f2DAJWK7$ zz{P?lfH_862PtZH+$jpdDrIm~$=S?mYc#f=PiX;Od-bIkKmQqjSG(ps^XR?>4V2Um9>eRQqd>!h!6s9$ zQ^uo@{I37(&pi3fzunQDLq%QMbxysSLptnL(Iz1g2NddICSL&Hdc||ke(@_`e75m! zy+mNSupKc3^7K#q=*NHNCx+dOU2fU?qt4@nh%FUJX78Dq*_0@;*m^&NbHp)G6rB*}dB)`%;ZywuCL<2{h7$ zPQ6}{D+E`S$KLk#-}hhq*YEzo?@rYhE2YjF3ugy>mq_eW^DH-kSAk{J1)Lj41fP29 zUoYV{G}>Y`8fO5KJAuFb)A=Y4D6mYNuR!*vwG( zr}PB zI&?C7;@5Rh_}?Xpq!ks!D6Q(1Dot>p@!J;>`#@5s4K(VL60SEvT=QHPJvU+bw{pv5 zjhc4()4%6ESgw7vcjS`7oZgt_-5Yqf*z(wLe_>zOWT+xw@JkkV`Ej_*L>a*IFSqyVd%G57Jw@M+6>&PL* zH)EYS-%h#x#^3w*qfjD;2-`Eo_xnQ zeC2b$@!BgdBRd^32DdPn0D1Jux4!Rt{=^6WlRx?R+uo4`S?tDC9Wmgi*m`v2SQe*S zV{C-=7a7wsO<*qR4FLFOKla04`NHP~7(=8^B9kFw#DVn}sgvuCRuKr~E1&t~Cx8B* z==J*eJKpi=o8Byvqf$baWZJaIU|kS;Lkne_H&k9)Y4@>RZ*e+~{<*JHH%vX4Uj&##hv!|EA>(&_=nuXByZ_LaKKbjP|M=5i z_|>Oh`qG!KFTe2MdIg{Z-md&`qgy!{*A{oe0**L&apj^FV+$K?V*V=36YI*$H; z>UAPo7xR?VYL+6-_)uF-IbAG`FI9Z{>8BEjTseqjH&tI}4?zMzA;9(3SD*fgA9?C0 ze&q7VBTu~Rn;v`XTYZP~ghH>1s|8BA?)2G@DkdhTT1I}ImeqQL;LdEk@hiIfkN=rJ zd%1fwp#s5;Yzu62m|}H@&>)o(Umz6cF`lZCAAW%*dwtNQt&rwC6Tpwx2xXA$zvfU{ z&jMQjebm0CdOfWgiqAH#9bkd(JltyZt@Lr`4!LthL=|@kQESF>P#`ptCFX+nL;M>u zV~dF03Kkp3lx7zJuG_FUDeUT0!o+3Hk)^IRp!L0XSXwcGL5cpqrS_u9${TsQlSzIy zZxICnChYdt6DfT_sEWwy+-KTai|E5X9>DA;C2`Qo(myEl`r!Fb{p#D_`vGgzsDsgW z(*Vj5=2|g}fbF>Tf{jH685250#RAt=MdcfQ$G5-x+rItx{D*(SA^EktadBI+*}I|H)5${gqcn z3bn>*GNA*K=Mp|fLx1>ORy39w9=!JYbHDK!TFUnAZ`WAmelY7NU+cDY4K*(6q1RSj zPyI=148`^?eTwUY2P1U6-5E9sF%ARJtL*7Mr|qS%{2F0(#Hjc5ARC=0VPEkD`D@c{UC~MS<-9RB zX*-azcv{Ht1nPVY_d9nC;%?#3-a@v@Z+A?yug{aIUP!YTq;7)vuIczbj*s5(-M{oO zrJdv63zwu#3Hz2o$RDfxOlMdbqkan-D<2qzTy@~=Mq z_V;~2X1H+@D*UXxm^iZK9)P6%WU9Ya;8ik$}_Q*=zv`25J-qw?fq zo-kb^JU!rbPEGqUyWNhma>HMz8cTa_?h&47L%FbFVoQ{Y(N=CpC=r3zIZEKXJ3Ig)b{^dc9+=hVG{7?3&-i-kH|o%CCzWzaj~3fz1!Ouz z$oz7RBSTc}h)NhFP>)W8N>G6v#$yE!vtWp>92d>TCtK0U(Ur~=NN%4hbhrWD-o-l1 zBh|itPPXt{LG{76(O62DQ&X1Hb<2KL?J$MZfysp$`#TMzz_gEHjaoI~k9pl0q&MP2 zgqB#NZp}Lzc*p|uC)>k|%959VN2-W78wW|acM(yRl@7`Wi~H1Y=D>M2r~NB&o2OY` z2%-N*Ky4gH%B2J@sOh5kWrr7gl#&#jQ% zRMI$4jhlGtBR`KEeF^RW4Af&iQz{-*U?-D>=UURG&YtdJ`T_z!kokT!ybJ zTx@{>xD&aE+>N-?{pOb;1NLNlcTgertN)Apuv`$9IvOx_He3&sL=M65b!c7irM3h| zx7)|Tmd7>>UGz`Gjc?ZQ+G8$`Qdc9(cdU4lR1I3=GdWtDAA-yG0YwC?#4fP5uj}?Q zkfMo?ZC`aEm>Sus^mV)x{k)|`TmZ5 zQ60nCvhy%?YzbM%>%D`4H-NJn0TPpFuPEpo21l8?XV?T%|v)VYdnwIl9F z+vu%ZE!xn3E`ae);1c`-boQcYKd@yjJ7Z48!28^a{F~H+?s)wcQYq?s|gyGYoi-c<7!D~mFDO51rQD*jm zYiZ39F?vUj_}I;$cE!8dCl~8EKiDPaSvrTrF~TWu631)8PZnqebIut0P$Dh0=T7^I zLfL{SKCBI-VVD&hu|-oOQPoLM4&?qyBi#pe2Oo`|>b5c!GTnOd$~h&6N)_K<=jQOp z<+AS(3vTS!USMhog^s&h`O3Q@-yuT=ic%|=k0zm5FqhpZCy#{Er`cP(k3m3XRsEi zickH_kG|_WKj`Gdn9@KDC$bR-z_$duw?#2WG+5MdW!k*Ka{h#9&8cxhq$bxrt^^b6 zIV{Bz-5Y1-#I>14cG_65D7FUJhO!i4^?VBvu~g{qBSRsApZ$kF=&?s>$0Hm*QPddW z^oK|+f7&{*rE#}7OgLnqP%`Rgajls>nDiME?|I-8i(&Ui-nv0ZI2?V9R`uDdK}#p-_T9&Nqdfb9zF zqV~zejDwYR_QyQ{`mnl|Hn;AJzLyk&*&3dL{xB7@ivB|k?M8j0Ee0Iw@G%}mN^j}< zK1c7|dxoIb)nJ+o0d`HfkQo2~AOJ~3K~x}C?e|2d^*b6GD>+}3=8EYS`Cyp$)z5t5 z*Y4ZP+Y%#5}@i z9|}KRN}K``N6L7;5Ko1qeqgM6b){{LOa%m=dirCZ{rE2rNV<14vDRER z;rPjbpU@K!n<6Mg+$_Hg*D7{0W4Vlmok^fFWGb#cJ%BHg0}2_D08X2j#Wa}LoJ!iF zb2jm4!`Bn^iM=D!m6jheW@`JY0!+!Ru+Hl-Wt#HXvhmzMy)N9>Qc=ntxy9~Tu-)A| z_F$;*qcL>bwUPjR6RCQ0ZXrfZ3;dO&;|%%-wZTBEE6qm9-J;MA6wq~;T%78*XKBX1 z*4h~FR-UkC+kHx0OEsJOd#}Y!ulgvc6qvd^xfIeFlDxjB;jNs-*6z z=mae~wO&XMz}EhLQKdE6WHo^JocdrL_fb1jr|m^&a*jRL=+s!B^ov0C*M8!M-uWFL zG{R;&^)+=;gbg?&lCJ5ZLDH-F)l~&@I2-L#WGK=pG{s!)st`{cbG372a*rJ9fs_d5~neFYCQpQc459BWHF~H8!?Qs1y^kv<(OLtAWFB<>3Xs(_fd8 zLfPodSP{mslH->rUhL_Vu8O@kJmFeGmtaY_+KEgzV2c$}f1 z1e6hfv7pP?*J`<1e)eFS4 zzqaN(2ZU<1K(xO+nMas(i><1<0Gv0V-F~;nNM*V%gLP^Z-<^-he=V znsZK3I}zUf>`ox%wh;jM<={ZPoj5Z~`K-28{Yw&>c|{9pWJB?=Uo zvqx<2!*q<*9{J$gUqX;zE09f(`Wlt@#s=;Eqe0QE0hr~autzADaqig}d`r8?T4L{q% zL7`GqlBpsB>MCThzZ(wFI$}dMR4v&er8{@@6kC)H{g>7n9*Ljk$8C+tXO!3LUb>-! z%-OKT;W{=92b)U*de$`DN8G$|9XtN`m@p*(HZ#9dwy0$(W@+QI|L!`{Sbv-NkSgv$ zY|9(G8H0$zkaf2 zv57%or$5z7o%A3`(TG&kuD`80ssR{KOxRIq3KptYkdI@CP7$>_Yhj1%x9}(VIi9I6R>_!F`vRHE71t(ae zd0YJH)ZVp+I=C#nh!5^()x?i<98#5ysfW2Jd2x z-XfsN>7u_%!w%>{R{@PQm-niTm#<;~t#BhLEWJh#Db+=ux?`#s7E|WHLy`a{V;N@B zizWV82`QqxVmnSBndBjIEi=^~6M??)xlcdyum9D%zU%kM^i4wMy%-h~4gi>%DoA9= zoDfN$@zx(}f2o18;gLDwjnNUiVKFk% z0L0uuHEe6YCy2YGzoR8w3}LveU27GM zWx%g=YKW+}QiZrhkQKVh)q`x~oy4hdC|FSqpR4c}rV(wXernEGOAgNT`z^c$mpVyJfhW()=s@q|3Z%slBzlV-ru5mc~@au&Imw ztYIoMz}hgDFwlt7_EvVZ~ZbaRqeFo!PIx z{PItI-`}o-dGiA=@P^qx%<2~zHbux_N_)V>C8xe=`uKZ?MctkTT zLz~HHlrsVMd`*<;{I7KZnYVD0}z2RVqL`519@Aq>4gstI%RSuSh1gXV- z?Ng}Jb&%0pWXC1c#etn}F1-4+uRisIe>Y{(*SZEg-UXHU$qc69YNQYRxu%HGj6wut z=(O#-2I=mmS3l~|JRkzkAP-T4L@UXY8(WsHlA zJCVB~cVeH%MdUK%F8*DH+=<+Y+>LQJ<;T_;^5Mkz_*8;2#so2lrhCVJ%sZWl z%RFT<`I}KpZ>?k}bAg;;ua-3P>vS#JC2?xkv=6!180czwi6!-}J#<5^;0xtus9$m9 z41Z0Ur;nR@rZ?6fUO1yzs8Vg^6es1ZHh5~X)OhBkMq?dZ1NarH9&n-l1Ag-tfBr4s z@}6)1gMV~-JPs@>Q=yhRz%W1okFu$_D6eV}DJ9|6tEmxDKaSQq$vih=eu6p8Q^C6w zeIIhIIBEiyry=r=4D_EQ=p+(=;3Gfs!%zRhM{52-_J^1nNRyww4*2d_UnovL5hC2v ziSclMv&=@$`~Zj!h-HGa6MzdnB=!LqE(nd~)i!cBPX4rY_#l-*V+b96ea7Iy)t2MW_IvflF?Ww03A=MWrKfD?c5 zcck5p)ER-Nw@R!+zJT*!9|nVOLu1*A8WE5x9d*G^>0&sX}8` zZhost9_KDMJF^-E{N&ykbeP+TzaQ_GN~tbvtXYfRAXsPrk$fy0)|ZQv8=TURf6v#B z{!EYhyvw!DJvk8fK)~xI26p?Vyn)Y!WFhyk=ZcCv6fa`Q$ z%3;YWxaJ9pLdmEj+QyeC_Sb&tqaXf(?-xnGzY%DbGR&Nho2($rWOmn3t^>n2GDE`j zkYJRG>hui_ES@5ei3wax|3-U;02-N24H5-uoyhKBX$Tu0d4+~Q$`5M@2nuOeRSd=S zU1_4Cwi;ojh7KS%ymi1Pmaev)jI>9065}OpnXK4?ZI}8?!%9ssVGDBY-h^h2v97L+ z6BCGhLOAWOWH%A$w~DCw==7KF*>%7P{fhFOX{BWv?M}iaCbT(t_zGu-{m93Xb+&p#7j~WJOs$WkZUX8VU2WZu6du`J5=r^ZaiLTH z#ozirU;4@yQRbTXLemJhuvAc|n^!S@XuDSpPL(;coi5;F!JHOlBq}qaOsAhW;P7MB z`QKFgmYY-~i?Moy&2?Vw$lbjQzVw^F@k9Un|K13FaG?tZ?!i@S{qhQuBZ^#~_ zW1s9Y95F5hX1dtLxx`Vs7D%RCg((!DNhLr#0}?_Rn&@VukXsr>B|TcK1N^KW8x4YH z^7sJIx}Rn*nq!N3babyDuWD+<7soNCfek=7j53n|-Z~=t8n)k8^ zLU%|N(4M7*l3O~tgpy>UHDBoGBOK?iq(ZRGz0Q`!4QlgiQxa5Ksz6(4bxja5=TR8y zsS+gTBKE4fH{7m^;PsbZ`p94XUmtw^H5umh424g{^!?T zeI=I5JR@72SYm@k(%W;XpL{Vu1}-*rfKQ7;{n-qlv_&3)BB3)9d=32v4AVzoy}AC! zW!S2K!?&*u6S}LakFO10wbi;Cw#_e=JmNmc53=&t zz6w35Ow9J=5vp2^*uE0fN__QG*$~<&qdqoC16G2fMw$=-Jc(Z4-dn>STNYWi2&BKe ztT<_F7cOskyL$1N&;R1z{y)se zVjICkn;6)HYEH*Qz)>7A4*()SD4wo!7!5Xc8sclH2_M?d!x$XXb|>ewASlV<2s8X` zm<9SmmLoO1thas_2o!y(w zv&{p({o1J2Ffv^?_*#U-m{Ns$CL<8fXN{_gH%cjAVlF&-dA9i^&iA-0VNeQ4h2Q z+k8vH^zr*Vib-!NH7eT(jRU|5zITEN;+r+Lzi5|l%&sP6m2^o5l;!JkRjYJ+o_Hm} zk(wEa!{5O~-Kxt;hRDN6()IHqE(R`|vUW?13Z$bA4gJq%zG^2R^t=*(at>q%`rd0R;4?ks)qVN0?A$b;gi5xi=C!o403RxEhd(5lWxWMdYI4{K%XZTPpKZm@0L4@6|CjXHOOSj!eQZ{GTRn%Tto;kp<%VpEJntV>U5aU+%+Ld*pzW2I$0#hX6O&V6z7;*`%GXm=`LoOKhZ#`l+PX&M<1IZ(9%s(i@l<>-CdtW z&S+5msI}zg7MVKYv#u$rCa+GFBVmLs!fxDJWflH&x#8YrT={*(&;Ae1}$OUPtODr>J>lI^6{zx%klHOQK2n|8{jDB043 z)z6X_ucby1*y(^&ky&}})=(LcFMj;vKm9-ccVGSNXZ(Q)^|*439AFScNFv7q31p}p zGZH-<0$Cl0;M$!2uc=q(?lth_8X10cPKSO*miRk${>Cr=%3uF)|NIv|_35)Z;+`Um`a?P!w$dFjhv7R5y^Gc;h2}x+^4#aYkW(KiIi#M* zo>!z&0okMNmHY}C9VMJ;{GIIg6dFWhX8fJ!XINldgnNNGHjh@Cq$U(B9-gX=-`()M zoGzYbDt^v~jEL2L4Q7giQLYNq?>y2pz7a!Jm zQvn8PzU=(DkGwEu9IQ$0CEt>DRrNmaSy~j9LjAO`^j>xqPi{YB)p0zJMKo!w3^jqf zEq05!p+Rk`Q&!lP?2K=kg*ybVJolBK`AdJ{6aU{oh3$kju#?0Po4^VHJLqMA<|Agi z^Ymp2(os#AaK!f|U^_ZJEFR*vhMrhVjr_mr{O3ROQ{VSL{e@Rvc)@DUrUmTMCNJK) zRdWJD+uRtOmS;G9Bu>!+tu7FhkM!ERD@nP=NSUL48ka2_@B#pPa_XcoNLwm^F9wVu z0$&Ga9rp4UzbKZ)LsVo8m=Q2+&P+Y(qY|)b-Ha?lBH4eEo;I1P&prDr6sGe+!%I$y znv9tVvJ0o5s7%H?*$-L@)n4gw+XVL|JOM9S`MkqZmg^P{aT!$24WRJX^M?iT9}ZGUl90X$O;d^K89;lDL|cr8KTz??Lz?QfLLhx^}&N*{Jy{Wl}~@__x?x!smPtG8-63gDu=3_ z<|^c+<9^`pVp?wP=kEf%{`zY__Ba0e$3F5;%i#k; z{|Nt2JG$H^qmEHbBR!$sVr32ABLp%hz9N9m%?o1M(VHBrBas<<#<zORq$RT5%h5UoxlFG z|M<(F{q!IB&;RsWzUf<72RO4WJ)4bX9aFC&P}dQ{e3Ki@_sGeq7|<&zT59f*3Emqz zzwqf#|L|Y?zrOsr-y8`>;xX=t{(O$Exm+r{gRpnrvtW!g(&032ax5=P7RR{FBXP*7!M}H}p?2JGuM#mfFg=&B|uTMUH;^Ez2{KU z(td8Bl#&4{G1iUSJ2z{{*AMMkYM1^YgDRpA8eY-rX#7ul5fb>`WCdXo-nw)tImZyX zIk4!Yo5i(832AT8{FH_7cs*p!#GEXdc8k<2#!Fv)?&ClAPhNlZ)pxw-J>${G!gnK?NK=71V{fs?8x9wXJWgcZvk7~h zv@I=R7-SK6;kmDT`1}9<+K?6KfAQ5<3;r1w!9_;y)#6tK zBh~|a*Vn}`KLC*2xK5T7f|n}@ZWPmCaBrIk+>ImQU<${TDKd#wXDdhQYSy>So69c; z=z~|k{_YQcfLTsF7Vkh~X_;Q4h;<$fQHjX{fDiw@fAHMrK3@wY<#ZagYAs^?q<>>% z7N%I3Hws2z2g`;;BMeV#bl+>eovlNDW|6E^7zI%ALF<*9z6Z3~MwQt|Vk3$%M{)U6 zzx$v7+91yoGXySp5ps2^^~NYW&ae(ca?!mTTUDv*g*9twD`jTso4FuTFG%>fm;Go= zOiiz(AkuH$x=2|vZK{pZo51?UgsHvQxu-si(`=D2l|=H*Qx#n1y=pPKHKkc2jfWJ| z0^kMItE5qKr7m)hWcW~Yw5mS)$zOl^!~f{jmtK6wxBm7=9(xRe@bpM7Qb)7uTt)!4 z+1E)leUQf|0uao3U_s8}xc8D1U;FZx{@?Hadq4Wu{_5vH@d<<5gnn_mK7IOF(0@ey z%n-R71z6#TALWrB2K{3UQv-;p1#%%Y`WPbpXoujWsHfp%eBWD}$|Lh`agtxjTG0ME zvtw!661&+iFMi>f$KUzRw|vt#nt7oi1G5k-r)Z)v9u+Yq6+ov(P6&nk@<)E*U;gAz z57%dH-<;2)?B*b4fRP$PjDZ*!_|E`#7S2AA=BG?#JPCJUS1|K0~6OD+8I zHuUABq3H&C#!E+tiDtO(N6wR3Ipzun(K zN&Mj{Wg5<^FR;Qv(Jw%_T~8=)6AjiC=&EpZv_rFFgO-zU5mVd;D>QSXxer35?|I zLOcmEe6$C-43r!f7`nlFy~z-@;A>z0($D<8zx(5V<#CGVaPL2J^ki)zVk`f0YOIC+@{ z`^Vq+f4f^ONkpup_#^-W<6=`K-}f*EwPLgnh^Y-@+!zJ)9w~u8-*9_2VQd>AX1^TtrsGhJr>mF1bbFuA$$ED~X&r zH4m*ufm+n>E9#)$IaMPw^HfY&`ejVjIrXZRfI;owgE{^4)CW_is$TAX=kNc}`@Z`R zz3X>;8x#NS>o@Y3_o|MMUF$$#^+KW7xQoo`N;hRdm?o$8$G`VO4z)BzZiI11Z}M>q zt#CiWo*Efu>UtYzWxL3!fRK)kP(Nr_NsEtoCuk$#(8b5Gpqj|`>QFEgs&ONorI)YaW8B05k!k7OmeNaomQ&sH*7=;@2M=0i1b*es? zI-wUg1RMYWAOJ~3K~xW>L;r+cr(P8g=A6KF>Q(iLx4-inzvKPi`u-2R=R4p3*jwKU zQUju}b6)tY7vs&9U_YglIH^Yl|MJog+NYt!y_{LLj_pyD#! z5yW9X?(T0>0fDFEuW(E&WYksw3zkn~-#?@#psqX{UR{6l0}*3$kE7W}Rx~=52by3w zqQlj>T2`frX$hDvcklVoANYp%e*2r>`L4&`{3m*({Chvt?lK*+{k?s$$KZarUz`kl6@qYe zH!XeP(wK}^<{L1Xn_oqX$epdXTh$oFW8=33`bEYqP!6qjQkO)`e(#2F=ROJRt;@XM z4M`sQBAP}__G*MB8fxSuAhK=hR6K}OJlBbHf9C0@Kl!nbef8OAbTcIq z_ZdEfvOSLx>yxPf9N!V1pV5NuW4G-Exa79mz&H^=<>CqJQw_Lwm$~lzJ4l*1ET%8;G+s2zYeI_@d4|K}iBYL@*j(?y!W0H4OO||jb*T4SY`oNRG zWpo^nPO#d8CbW=FNhx;dzY8x`Ce<*nn&fgy3ip<%ZS(p^8qo4 z681zL3olhoP0~JNu9MH*_eW~`H-d>x2{XG0`u9$fO_&x=@+<8~PncwBx_98@tFdL#)?9LWkoKM`{x2#& znyK90=(2kNQb4W0xLQ>QCs+Qs5$#FA6gmVR8YpqHNu)?qk769^F}4#UB8LQ5cOEO^ z;DN6_^SS4~@VS5ekA8XrZ+h~rZ+*u*9)04;H$C~}<4->M*b`4Y{+74C>4`T#{^VO^ zT(0xMt1rIz^7Aje^3sbhzwpA#FTD8ji!Xltr5C>Xr7yqy;tP2YjO0>rHpc+SZ#wQ< zkLTKNnC-smco7VB9dH+ugA2_Jc)>s*m?9VFn0gi zQL98+V_RoQQNV(YI}bKBK#fo<6~w%Oa`*!fmHFE15A-#{{aGqp^$MQ`ShVVD^hItA z0cx5Bz$0QIp&P90#Ii^sSE@_?Bnkvg(~+34sn3J8w2FPR^p~!&(Wki)EYx^@<$<<9 zv4ZI7#(GfYX-%BTn?QDIl#O^Lw}r1s-}iJ%?k=Q#9u0{!PalOB8+_^XyW2e^%mV@ z>CbH^L6t-BZ7o_E!(1RXvPLQY;`9YelnO`%{0MJ~nPG6jyIJCR7BMi2MwOmwp3nQD000zdN0;X zT#S8nn@G>GFUt_#24-@goXojJ>s};Gj;)1wZRb_tuzWhBt z0}!hC1UE<5#KSM5J}GjzPii%^Fn_3eUBq*<5*-V@Ps#xXogAy7MM5VA7XXApUKQRB zxbcbvuUu%ta8{NoG*g0_(>|Z!m<#GVa?{11KP8KpY#PT^&HjP@Qry&+GuM0B{Gn4nNGr${Zu65!Ubt z5e${7Iz-&LgxIPIH*~r4v)>T7kqS@fArC`@Z+>;}zlYIO&?i*x1`?anv(I}1EN`0R z>5svoAu^0aLCkX_dGfASQFkOpnUJ(J{@2B4=-302Me(4x&p`1mPTc`TgdB*9%A9GR z*lYn7oLGqm58fiL{qYt{$hELghM>_38OGAwVIV~(kFx5)cK%9!f=x;_4~yMK?kz*`j!SPf-SA5^?zGY0 zOK9UfWGR|0+3O8ShGj^I`vH)M!E9-~i!!o@>dthb4>1Mso?Ixb+trsa4_8|ia zCWQt1>F$$+TgIvzwfMVTTc4E;>ft`MKW$@9h>?|D&YWG4xQgs|dQzgvLv(r*#t^+K z;DI!Xi7DcnVAaWxpi%@w@W3Vqu-r2S8Y06Yi!cOpLWhhvTX?D^LU7}PJp=Z?RinqR z;*6E>3&|)QP|hDQU;hxHuoH6iAfr=+7m8^PVg4m|Xn6lhGGBObhL5Ot&RtJtL$?M* zteewNLhbKy<1~FfYiAQ&MvW=nLcf|;w!<5&U(yEmxt#|NL4k|EZ4H>>saVs5m5?Im zu*8Z>%%X~Qv3=T?A{D5sH?={7th$-H{|Ia$$ppSoPr(DiHN+afufZ z8be9pX}w5&a~%7G_>%6B5=HSE9VdZh=0QEX1~hOt@bj!=6j%<0KlJxr3Obc(RwP!& z9E2^1)n0XyUG!?+ig2yQ81VWxg>(-eyWUe0ubn*WS@O5{WduKxJbVUz z;)Y0^1~&5W7ZJqaA+~a3875S4ogzc8Q(^Xg=<6p6U3`c`nd=`hz+WuI#<{L&y@W|sU_9K1GVk)G>a zRHz&T8Y1Mm$|4Jzi%A8q@!8b5h|2U-aTddKowjNM6&)CH7)ml368kY?aClNIp8z2N z-WE|PAw+tI;<3oAmwgD~q;Cr!1hzwD_49ZGg}Jm|%)>lXL;C}4d(9YDtUp?ZYDQr> zJfazG%h)`+8Qd?lc!z?{JAM?2=DL=$ni1&OvE|p?g z%{CC(4Veokd@ms-P{Wal;>}TZlG33f*T z!LX$ZnW9rMr(Dg^Jk(S9L*lqkF_51#PW|E*C9_u3%DTb=E2MHss4oDd3qnW-h`5hJ z=&;5*dC{i}v25TK2l~6Ziha@ABIU|lqh5$E*!tDgaKOPjLRa~zZ|N7(#;6=4B>d)9 zE5Re%4hlpfXf*{qFch|A;HkWkZd<|7JnIwIYrYdAoo|5f{K-fN+($nF}+r{>(bp4^mB zdUDvIp9^HSRLf1_JGQGgJP{t9KLz5Q+x(Mv<<*Lq*rw4h(KV77^k5Ub0; zCqZS%UetWvQSuV+(33?0ur$wB?NFIAeTrkgAkj-~>_YUW&E8bt?gND?E(984ibRO# zaV7yd)7;~4Cl-iX2ANSK2Zf0BZ-S#l#EO=9H#}j1PZsIM>DV4oCFnYeNmWPD1RZRK zE`YXM`rHMjW_te~G34fX095J$4IL#IK?3hlfvCDOu|mBJ{_k1KMKp%63>jxa_wPZ^ z^wkFJYhu#g1b!IyhfNM4L7pnw;{)>Ajc#;_I z?A^s|nwS^z@-g?lxWly$KLGA5D*~cw!I{5%i;`jxc1K2B02#IuKxfc@RT-*N!v$(SAB8Gx_OD)aEJUY1^N|!rX0%K+0NeZw z;j)pQ0?2`BfIU1CUZ6`LzQi(snqSA(iq(xH`+pww5(ZNOlQof!@~J_->#$88Sn&(> zvYdPT_%#s|p@~g)%nmROsiE58F6bC@X7x|Ks$77pc>3oFTwj3J$J1S|bDSp!ZnH|!D?##680IQ*|`_%$Yn7-7p6sy!GzC>GNwcaRj z>CtT6ZoJ1=rgrJkv(l=k4H}GLl4Vx#!0Gj7fNY?D(%!x8>gewT08JW}$GENAvfilOM~03DLMu^i$&V#HDmi$L`*<7g%Dq`V2Tl&rd>g2)*pqfh*_lHebL{#n(ejG8#BZhMibz-+Ti z3+;|eyHb}*Z?S|()i6tiCklI?qh37PwjhAMRdpCBsvf(XiaD5LT-xAo8D=*@KR>3a zA~7pcdQ5MyNLM*)g>S~rkwPhlujoWNN;QvEplPo^Oni%>TzA}#7PO@)KPoa}D8dF5 zf5X+5#e=E`v8zJ-ct{b;E)cPR>P{4O)SeQ{EQXQJ+#XbtQLU7RW zR0RWII~~Q@6C+3v-aNM3ZAsr2aBM%YscQ3>ng7R56SJ_d)NZ=yx!e#384)HtL~I{; zbUj3e>t@rZKs#h|LzTq3GQt+-bmdy$dopVh18J9a!~LvCc|_c}*kjSDu3zh`d&mP; zrHI*e*d34X9J=m6^+$c#ZPRx}FBP(4{p#gs#iu8c+8uBw{vNNaT7p^SIEvcWP6fxR zHUm6qSV6WpL0+X;NG!Kcz=XEv*4Evp>iYvFxawpSf3i7QTHXu}s5pn2C%duF&3Cx> zy^kpg`8db#R<)&uHnqwi)tcXQusK@P!5*;S!I)So#Igd_=04v97Q43|xybdZDxOQg zRFR6EG-+NR*U*3;5a@$638QsYp|GX$2D!`5!6w#(fecFz?~&cS4FAdMHYBQiWN>Am z3X#FV0M2Z${qjJ4y>ToA9WR+S=ho4D%9Ka%9N9u1^T)3aIr9QAK zZcS3osNHLwtu*B5X9nF?9Bg{;CjVlXM{Pm|qHqZRd18^kEo&|JOePq(!89xpU@V2& z@57P8i6$CU=%=OT?Ix+c9>VWZmTIrjuzcl<<`9RvB&ZF2Tx%%?wH~Y^q7%dO{yV&k z(oG(*V_7pjU{nOEwi>J|V<1+5yPEM&y(v{uak8fXlF$qlz+>n$!n9Y9>koeg z5Q(FqzLsEX-XoYT3P*p|uVhkiFBi?MUt_XZ1<)WpdU&!lU;j%%E7w>GqAc=UkOV|; z_~+Q;Ckk8CaSFy%6^j6NP!{jWTF6jdpo%6);HuR&>>U}l$w0bh^$rdrOqj^fj%A{C z6!Nzh|7y4vviVHj3RGJl23wr1Q-oew`lMTpBJJG5!d1PY~CjNnVBHjHj5;tTX8KD#LzxQ|>G z7Iz}8wyG5!E^fOSgU;s;1@|=gSNm=O4jOJZ_4+PjEY6wX*`bqUY7g6^5{&;gO|jJ4 z@By8}N7N!iGbTvA_%VP9ix^E=$haVNUF-VTSrmHPOnI9Zdbm`8ArunxC<*!pXlQ6P zImt~RGJY0&8Or=!*|{3GPsp(MOR~D)r9HV0RYe;Xnqs&rmHfZiRoq$mBqf7e0d;{C z>4+~$=!*X6z!YH8M6nBBdz~R*!lG+_1^P5V@*%r!D8?_)?OwOWGW1C`62xd)`8eI@D-0{DszL4E^11 z6ht~e#z?YRm%{*3AjzN3pkL4KmhK4(md;vmg{{&9+r4&oWFF9LTO3{r=VI@GG&+{_ zI|cL$DXS5oBrS=9w)%QoMjI=X?n_q*WOX+6K#UG4TiCR=_LiTDlZ`0yaBGU(2mFT{ z<`0i6)&y%aX|oBB9FxdZgW|>q=F(FB?JnQ#{Vr9x%mYn3G~h`)N!m+b8t$1< z4QE!mv)*uzdlj}*-=c%mUHA~uIU`D60f~h~MJ@(d@iTMl0~hrK1L4YBo5bXWzkwuO z;$~t^+^iV@fb%mkVCH zHO;SmOi{<_jGP{mhP9p2hERp7B6c2d*yhuwWkZ47Lt`33Xf`IfpkQ2&!MffbEW@mBB5_heImx>-%gE?ThtJ~P zxz)(M4t_GJVS#Im;K5IiwMzFeo~>;_oAd4v+~j_)vR&yJQan@|ZF%$5>L}#EhyG~w z69OeQr}JC8_IIm+aj*V&`}K_;dQ>Hrcu~PTk;9~E8oT{fga;tq z2#LDtx7~zR&lDgM`vYw6s3L;SGF?z4p;w6D0$dIH5zEL@Bro<6H{b0|LcJi&Ih;{E zi8}#F3H?fuK5+L1p?_+b!yGH+93ekag0yr^YeI6Ed%k@T9y?s%an4$T$Ao2RU1~*=ay4mj-@7mj)I~vx!s*Y$72}zg&iRr1GoxRhS0@OL|t1`}IO@SiBZ*26^ z-RwIpgSG*<#^>| z@w$M!|76~BBbUa+GGMh<}Jaf#v*p4=30xaow!_$Y#}e7->_I9 zo#B2I$eiv2v;AVj?aQ3c7F=Hv?&EXmREPc^B$x~<&?&6XM&=v<6uBRmUa>$%e?A)X zfX?JHB3fSw^-EJr+wuT+0TtU-MTK(F{C4kF^)5KcBlTndP2p3mSjo*6sEe78sceT+ zZyp=V)D7A{+_02nX>>2Ksgn`Z6f zaKBz(&d-4CdYwx?TTz{=X1!^D5iNxGu0#K-aHwXg@`yX2wIgoJQMoP3s-)C=daZH0 z82#@DqpUQojZo-NL<80SiiGvB#P(Sf7gZVsl@aCK-VM2os$gACP=drbSn?aEF1y!&g!wJsVJ|w9p1f_*c(nW8Mda_lB`6Y>Miy;+-2zk{wh8l_|EfPFKF2 zINQKlfQl8#NaY(ZE}h#%orh$~d15GmU4sE>^8iLBcb>U2Q_B?*^QG8VmQ$~gKx7P6 zP-4H-Qc7sJRe$sy6hMZ_l5BW{TdF65&eo_+adwbYU9<5l8dqoX<6)gb@9tk0EK-gW z%gUR>s-k#WE})xWy31dD$fZjG4b8k((B3Qc>=oGw+1A9){+3pu7~;DCEDDK8 zTJV%BJ(ha_@NhIr&KYHc*FJ>MD@svYWp0P&wc`X4OjqZ_*Nm~6rvR0QxJ0HE5p+a%mwKX3bIRV zSe=0g2)AU^MJ^!4^r#<@8qkAXSl+b`wVu+oG*;FO_S8I8TQBn#gtd5*TfBHE&SwY_@k9 zor@pZC7in8Y}BH0Y{!}YmY}izuvOM0aTl|1Dfq-{UHmA1vxRPklG_f1=_CN4=7rZ~ zrC=e8BzTprctDksQ)j=VfwB;=NxZ~#xJDF*MRr*<^iMSqwnBfnH+)C`rW$wXC*iB( zi@NQ$H)`Qwxh$=9>r?IdWdfvu!5-LN%i1wybZaQV(5^=h;;5amO!27CI+Y zQC34h6%h!{?O!NaLRSO+f)_67ZV({nIqEyb3@!lR;&WE5Iwj*@s}~j^w+DwOwTVC! zME3y_hN)z+(=|h4Wsak^96*1)E%C6G#&%CKlfjWkQt-y{##c)F^hrpy&dUDdT-LL@E3i|!J<@cERIyW{I;9APZTDUv3pEOFNB%5-&?|fogKo5L4%o~{1y$L+U zUS2#-N6NCB;bN^Ft7d0afJCG2hGIDgRy-f2RzC`wgPyhxHX<3evh7MMUj#NJ96f{oT5PSH8zE3 z!O&V>i;k7jSEkpaQ|yyv%fL=KuUR5LjaJQoWqP{}1v-_7iTE$&|WS8WKgZ6TkdUDPH z03ZNKL_t*gXBOG}4bnse*Ds4iqI>okfV$q=O{%p`+BqXtns+l0P<(?k@s{b%gZ56@ zSfTpBlWx4^P#1^&@N%xrJq^(nL~am<-WP@by;y#X5x=3o5l{Q+I+mOgMwI~=%09@; z4>cPg+Owz}|0#tYWuiX69@RlHTnb?WClXpb`MyNe#KTfAK1Ij}tkR6JGd3Jg=g0z& zC~Q>-FY&1pNgcXr(5y9k94?KTY}?=_pDa}*RMaLpy#6OnhQftYJy&4WV%{)K0+PYT zLuIo%{I;n(3tYl@YKn8|wBUp3iQM6=>U&O>j<|*LNx!~pMQ zIQ}FxTYk3sNzlvEOeSapamAr6JDsdebLc))r*3+l^D!XT#gw_tBePp-%QRy3!!TGN zM%UsBAUU~pHBe}bb$^O>2b_inyr|;bf4DK;HnRo@Pr7rs8>s=TVmaejhcr)dxpR!! zVJPF_2(S4;jIopa-JJkJ!~Lb*E-kgakNF`^pK zt%g=|-q=>O&ekZvJGLM>_0zVrTR1376$=-3{w~#3VH`1Lcf^&!`J#T3RE^76y3GVM z6v+0ldE*QyPe%w-Ltd(5cOo@v$u@NIazK)AikrN%w0e*iz*z@0%T)NS(zt}MRcZWf zi=rpKh5Qg@8dOs{(tIXm#Lopl=nh4OrWE~JuNLTFfhsbM!ut;zVvX(bp&#nf+Jc3P zrP^Y%!wtt>BdD(}A1INMA7*bol5UMIZ#4zC3AfcXLsB(4)LPW_nLn%w&YN5hgjrCc zpPUcAnGW8My9mo#VyAeqq*}qByQu5NF4YduMDN0~L#MFr(QNvO3??S|MBH0)k+n>* zM;iLbD&p-($b(EQmo`}RCNI_*Hj3kayhfB{B_9uN;sw7Jo5+w)Exn_-*ew>##sy~a zQM)qIrZV$RlDe}hvu^j5TxL&$xVLq4_nG<=Qmc_&3Ic;-ILY4L+4BeN*2K|%Z@-du zZ#W)o%rV_c(%uEhz>-vI#qw5< zY1m8W6^h%j@VT`QzG7?O%77ZC6sfY zIon$rTKI6kI=Za;&Ux!)rgNYq)8FrNdO!-!EpR8Mk9 zuNR~cg=MjI!7gquV+u8zDxPPPuC@MN;BE)sy&?49*^$7gY#R||u}n+*0FtdnvGls6 z73I^6K)vSPIgK&ymBR#?hfDsWLMhXK${iDkmrFWuMfr16BF%sq=z;CPF|Ue{9c z%48NPdbgQ|JK8S#duHD+bPJ%1ZDM$O9veiGgcG?@8)WPQOpcO93fMfz;loD@yZ``9 zEi?cBZ|@4bBuP~z_UZrslau#BfrtRJXV1NR-|TF8c6+L_QU!zn(KKsiA-7{s-daU* z`U;1*%n*!_Fjhi`+`8OpXK^%?U1zZkYg`5oT*y!BZ5wXK4HS}wb(Qn78mvWKYj(nl z8|b$^`UJcr<$C3ioAm}HsGSMJcL2s)Ib-#I_FFz zTu->CNKPm*8YB1qPGD&3oS>48_!Rm%{B78Aof%a}n8vmiKe`LjEbVKI@q1b+tC!w9 z_4_j3kkaUse)I3(nXuk8=VE5!Z;zyMg2fGD%OmcO^s6%8c{Q78MrOBv0{%5fc?{oT zq7g&rpW*`Wm1MjG3h0S99Z00qL-gNThv;UpktSPG#Bsx;@mAc}2gt^;$VD=q1lTgm zUA!O-9Ne1+RbU0llnk9J4Uo~C0VvqY)JYtMv!shzIbl%F#b&`s@G^VG7t|EQXOMKb z_LxHHad_Yrw!o_|z^oojXDc zuQs=gT;IGxTf~#ttws%6Ya;|u>l!Myj?Eb_YAY%T7HM9+H`zQB!&=5aodKXRc(4Ms zE-u}9V(Rqc59KfgZnE9*qH?H63LVTys>DEoXxBcBD4bD(CRJ6}1#}A;Irt4m_%(`X zMT>3-(3c)^yslv=GN{T^xIbj}m*SOy%`RbwyD(#=de-`K+&pG^6oiKD(?h?#l)rtQ zq;EE|xs%L9R#!-YKw|FEjHoS!yW`o0A$4WXV53F zn{xbe6bIIw>`Fua=7EygTRbw-e1kvXEGQwv&?GG2@foUu{xxA4aTL~;%4Q3;Z#CHw+Co#LhCjHOQYJ_Uujw8@ zgGTuf?d?^lbXp_d{TbaMwFP~_?CP4if}825?O+~_HokL4a0o>kdjXMV&o%{*M<*fh z%!K~oWfcVX=ND$)MuDp2M-+PCVrU%B0HC0 z|M16oWa9d!^j%5}Uez)_heEYzlYa2nT8)IpMjxFHHzc}6`U9Q$Pg7{2!!eD6E-J8| zI)%^p7ajj~A~I<{)!mxyXOv@YobDn|lRSc_+}KwW!6q4mq+?-=uQP?Cv`;E*Ba0g2 zYg8BgCQ1xC%zJOFwH7}`U{rPyeiPc%J?^9OgjtQ4TO5(8EV*ZFko0h1AwG1yow;6S zhCABd;0_b=UQ(U!&(@ADLxSQc~y5LpwMc)F@ylFXp$#QFCeX-V@khf^oO&etbz%vE@zKOKTfm2SDd2mk+bCSAPi-Y zst;Zou0Ij)7$C&sJg_%Gw5Y!yO_Y#ih@@e^IsbUYL}%JZvl@&Sd^XYMwam%ex<*0ksQP|1(n_&L z^TGNz0qzgyE|?z}$ydH z60Vg4Xt`!ojvtmBE%kWO_3hVF;g;h5z{%86N5;BM=4e<~&a4MLK>jO4^SW__=0;Ul zXv+h6vdtIUmWXD?8Y@L#%^AGxT+%j0OlEN^VeQ=im887KJgNIO3!^0p@8m6p{?R$* zZIFNhJVW(+aWkmHoF2Se)@3a4!o%XVG1#vYKNH0SQVF25FPXJ0%K2hAjNEBm-0#$0 z;UJAP_5giApGA|&l&0YbPN(VqGu%0ZLAZ=$K)|>Kpa@>TL*1ahfu%8OQF$PER7C?v zYN}u`gWznxlhKbqq1jQ_ncyrBf-E6C(<_3L&XggPZxJ6RcHW>r%jW7iufmW=lPOip z25DgSZ+YPe_N8uO&|D5$SEO4Wr$$%~g4i33+-kGnsidpF1|9g6W;d;g z+TOU30q4RW*rF&^1mbY*l7d9#$#&iX5E~XAT+L&do$Z?^vi2M^@(sAOxEkd}n1dJ_ zd2dP{<}4JtgB4Vb;Ew7Y86cUN~D=i5e!Vj zEO39jnU>*69-Tvn8w!1k%3iGkDK>ak%L@e00R}(fUHd#bt3$n+rTH{KxpxzP5>VoA zhjoctfxLWr$bbqELe!n{myXOs?7a2FW8Px8^@=IvbzAlT@xej{n9h%l280e_Y z-upo2B{=}FB8Ns$K#e$(of7fU+LL^x1v+3^1FSdP_xiV@5U0m+f5>rJpC~lM^y2ck z*wHR-6s99j)~31;UB1zN$fws+g`}qzYmCMxSrx+jtBprCt=o zOLX&Kj%Q^~pB`Sg^!J0AWjwugB`2pR2)uK_bYiGG1V?tkCeTGF8Gf4O4#*_zOJA|_ z0}2f77uTC*TedQ`V*4BkzNUAE*^E43GDHo_O2t)2jXw8CZ7lUZBeAPS-l2(4JC#n6 zU`d?`iY*@fd^0T(cB3Bv+A&9T#(D**N%LI@>Hgc)4L=kkmr=gXmdq1JTHQHak*H{h&P*@bgf-GXA;S2IGIS~RgBJvU<<0AWiX}s$;31m zaLNm^G7KAMBVe!1LJ;PQ@}uSc3f%WXuY|16;Q9&6`% zFSKV*yq!w0Zo&~G)52hX2UDk&QFG(`g>b)S)qAheOO!<{ScuN)MhPm~(3 z^FSyhQiB+Y)cq$TgXLF;aY7j^{&k@zAj3L%V@UEj`b@67bXD z&yLtLgrV+y>ZJrbK3(x^<-0g3TF%g)?P6bhbHff7-asD-{kbrxA*8wm2KCm0)LQ;B zLVU{7w(xn2O!2fL#KjqXak#TmPFPJZ5o!!w>A6^TNsh7|Z&XAD3;{#)jEwo>f32g~Dc z69EPSyl+4A&K>^k*p2ra_;Nl;tw)8_KAH))DM*bkEYo(5y<_C-VJ49%j|fR0hUufp ze#oux%ej^a0ofir93N;Zu%OMtm5d`XjEFW{yw9w4kL57Dl86Y*75H1iTIidSE6hfls99@P^ajvHq5y(4h8@w zO^BEV;YTevP~HH661cYeOr-~3D!*po#3@@fk%8eQ%?)Kyw~>*HLi>YLgJTv#@TiaJ zx$wZCxEUWw4ZJ8}H8sHzZ|sX;7YKobDN-CUD2dGJSHdEj--do}QQc>asi=z4*WLc& zy2Xxw0)8&3?!0!R$4Em)qdO~*7a~c*X-!O<;YdXbM?BAYabqe^BHiF|S=-N;Pk0ia z5Etd;2eh|}I+8b`Pp@4=$>2R>dWUv!4t|jbQC1u~Yw(akT#>c4YqZxb^uJQRqxB8m z39msUBI&fMiJu86fKf*SF!0RdRK25Tq)HZ!H$o>@Y03e?=J_FB6CKZI8SbyA?(MyF zW~r`dJl{t6-r(T;eX2Il6H2-NZ_{BS9wI&m0pLCUKC)hlQ6y#KD1?1Y+iBT-$dBV! z^3(8&!R&g#T;VuiqKhIcu5EPrc=j^Z@< z!UYL>5DFV|L0{A$ke3gFpf*$xmX!NVb-NZ#m^h?2Jwvcs(G~jl89|CCPR$OgyKk5l zfn@vQ5S+EuED5S~prs4188$wkd-a#8W`6_dWBJak&PnTwzA-;yTA7m_ygev4!Q3=` z(}D^um#1McBN`z5+$J9H9u3^jTz(R^GTP`NId;`XDC$onB_mruCLP7TX0a?pYku`0 z=<*u6s*WpLb!<66KdR zPz8ESfaVU@w${b_l0_%crPaloZF&t&b_6V}c@N9dJEgDm?l+ZaLBk3a+!ssPRPzBn z{$}tulN6Bny%+Cf3|JJ%B&Ni*vY+H_DuRg~tFNReV-+JhL7*_6rFrcc*VLX1`oGBm z>osFjTzT5>J7Q09D?nZo5B5HA9xQ(Ni`|q>LgNNQT2pT2m|ra~q--pmwn>I2aLA zMX!3!cBDEEx6JKGnY|Irpg&S;Qx5ijQ`!q*EbH@&?wamWY8G9J6@K@d4PDFm6sXORb%@|`2sRJZOf+gHxYm21c!u!h;HxIacQJJU|t9ZT5m8be{5cn z!PG@}glQ!sBB6oX66XQ$9pU?>i~1ej)n%sn>QNMCR;lJ`*TB%b|Gz>1F7PBULzOkV z9ZIsngRw@3#zww%^z7PXg@)J-YCDWq!OAj=gLVOo;%3P5Ck@a7HO|nWVKTymF>5k` zxOYK92vKF7jr(SLIQUDPTX8KCFcmd0o_d!p+^4jr^YQJLk^&>igFXz&%|~r-El&D3 z8g9dZEW`(aWeU4QnNy5AJ}9MKETTs3`K%J6#*^7lMq6K=XR#&aSWyulH~ctVaRW#a ze>UqET6btyXrsg{KQM*h6<4~WDr(O~+_rF6Z~QnZgJ^QO1gl4Lswvn_kB_XTFvq0a zxQQ8A8$w~^?v}V~HuyV~dJcfB;^JM+K_(FNL=dc*KSCBKUZVrrvjCitH2`_%x#V=Y8&Hi?&T%)n0r*?EL;QFY^8tlHZZ z`7ju8lgvQ#CiSUfaeb|V{!4XjWT(sUItCfRE@l5K=FO2on+5e^3fZz^F$%rW1l59ce)b>5-`*~x<} zc+?i{5`h~>7;7-$!(fZ|g`VMvx8DrOPa6xrSRnba+M^}-7rqUO$g~_u~K@qE-pkpvKh9e zRP+VE_6DI55M@dsi0Sea;P&RcapqJFA~7AZA>_B}6kjJNBAo&kD*>9TZWo@aT7ihB zQtptuqr6IUlNw`9c(<7Hx+h5OXBq-k%WRlIy3@ELRSLCU7xT7dFaztgQgA!wf?#Sy zf6ufVh|c*2kxx`-SE^-!2(W(Kaz$VU-LF?N1yOwVp`xIp9_KL?n zEXGOHZk-p$SJdqARW?LJ?3|7VKQzQVA3Wa03bU*<{Zrj!JmT{(#YS7V`s{v=uh{`I z{)7#dxI|vsyNYvs9RyX$kleN3zHv2X z$V1Sek3u*m^i?gJEq|_Jq}CA1d9i{17NJFwXH?e+>#k)x@wl+G{nxt5W~OcujIzZp zmMu@h&H7S7w|H%o3394)L{Pa>LTh@6nWc7&34{(zJoBZ@UG@dI6&7n$iosLrSex8a zXGx~Ve@uW>bTf+dku-idgZ%44QTzi+y%0ucrndDutSj&9su}+-7~K*y%A$cXW=oO~ zvJxv~S%%NZgaI@g{=xTx(u&^XnnZ*0;)23$c}Gu#s8D~0Cmm^-qD_E=BohYB&eEX= z7=kq8i!ku{tOL@Hj5L6F39*qyay9@T1LzQ~fr*xemngG>V4!}Q?og0n0h-J7w%h=wSHHKlu~ngohWwd0Wzg^ATMk&CxL$dGApmH;3ori=+|Tlj zLLVil#cQZC7$h8Em#ejhRj*}+i;9Rn70_HC|6z-rX*Rk!fd=~|%K=iwn7u83#Sfc{ zvy&&;nL!i!@_<1%z=)IZ(yS10KQ0|vL1oEy# z#*AO%tw#MQ#B>$ZMfNBU;4twTsqx5;i;ak|hXh#5MZ9=Nf1OiKkl`eOb8}XV_96I% z#RKZl;qQcZgs_*Dsv*KS&8{1dmWna{^stcvlAOk8GUh3T5UKIL0c-E~pL<|A7kLqX z>4(hKtm7YA;xITfL&)fu#h=T77mVwuh51du%Zxlp^-{-gEg4s^97KGx3;Hl6>9I~+ zj94#s-u7lR`vHOv1GlF)E6xfeqENI^i`8i&jP$U(8rqRsvn2`E zpq(D1L#S0=ioLJKTqF&^Zo>y42%(sF2v7WW4-={EZwc&RaEfb`&ZlHD3NzV1-%^<_*9G*!5JW?U-esF6hzRO7Eo~hQ94%<4>w{1g zDtFqe7kK?NvM_=BBf#Gb*8ooGobdo>-tUY^Zr{Gl&lsuuOH*TxkBeZ&Yv>r}fZp2+ z;&bn0hoh6@DwiJ)F&qbZG=AUkAlkdH^r&s3yhsATLScKKKyY*{Ph64GW*l(_V-$ySc+y6_ZzAb`+1qAH;G8DCz7mN#ksJVs4xwL zmTGAr8EX7^If|BY$a4B+!z8czLdnN|>#lV=hbZ*d*2j^RGY|5%VeV^y_^$U`=xQB? zVMMw5Ib7^Pfmo^85R~Nj`hIo#5`xhR7T5hF%Qt-!9Cr{+UZELr)G|}G;&F`t89j3R zdDea$Y!Bpi3Ox<73l8dH)fZ$x-_Q;ra=ejBSERvx=30T>w$G*2Q!m-2sfbd^fQupE zMZVyh!}p73M$Cv;(2KOGy2G#JqeXIvyqBR-nyIg|Jra)Ro1)7}6-WFcR|J_oXGx*j zO!E=~{d#{jh|9XlAr(B4h_yEguaInhzJ*cw zbu8QF!h&*8(<6aB)Gjxgo02k*;L_t&;YJjO0 z9%PT_)En$H4cIr=F${{Fn zT&e0L5$!I-(f!4do)nY;%@WkMalLA4Gpo4JoY;L^&b7RuaVNIWD{=N7@36?2VjYw@lVr`nV6iNJCZhBb|c#ou-xjIS%F@4e6om8ZWIYv^4fJ!U4 z?*(zF*zlsdmd8`4ec}tjOBPOVYE%BK5-^d{C1_CjK$}HR%vL+-;C8rWJigW1>B*l{ z!8cT84D_l(@TG!}xA{T2C3%y?TS!FK!S*%W51!9W-|1K_^yEH|7lkGO7vj%oh_UOm zi1ui1l8vD6nJO3r@aLCrh(XMZSGQ4X8#=eBJocmHdU`6E@graj&Tx1zo1DK&3|mU` zMJR9^!-~z9UQdK#0Jhj*4%rE?H0+3+< zA0hTWOQRbLCev>Vt=jmOQU+gh6^$Em4utD)FKXsV)0rS*brIvKPIHhUcEMTcB7+Jd z<0zhD@F&*x3nsJ8pqDBtgRA&iDePczcpK_T>O#>lZ2y3gb}C-ayY z91lAwXzgTRJ@9^;vqjlyyoi2vQB7+ZMjWx8-Zx~Z)?OS{hZELcGgm2XLI1lQMw?;5 zC9!BIBRlqRGwfz}B#og@amlTf2(rq&I7Jk=`7LD<(SZ@z+>+zo&w85zVG&VIfYx1TP-@{P)jNAlcUz(m z;```G$@weMsSoJ(qj<{QBJ5a<+`%C(5og);a6OW3z|)g(6En;1{}PhSDC+`(5`~M4so4C8lQb?L@*Wh_NwD$w zMiyw`cTj92O{VDr>s~2CzW=>X1sL})C+{;o9)8TG<+;jxx07&qWWh4k&yRlKDRGkcXC#_36(pPJZd?{0KJ=&4>QG2hxO}pSF=nwec3cV0U z0zf~AWnf`D#lN3_=S%{Y5tQLWgt46TKvRLK<=8SC+a)!rd7j+XHp~_?CZaBQQX*A) z!fNn6Y(ir=(^v@5&-ptNCT4$c(}R-XU_z)n(3w(gO__OmeZiUmkK%*Q36RL`pQNK^ z)stohcRSceoHCVdZ$U50F@>($xN?OnRF_3p?ofl%Y^@E=kYw|+2(0AHU30OslPgic zDlz6`M+b%#oxkD-&GYOO{4^z{Hb51nH?^kRm;l>1g~!1+=X~)4`M*~5K`{QBLbU+> zX=dR>82;?oZ68FtE0EA(D#>%3fHlEo#w&q@Xh=|Z!p>iGS+2d z2LEaii%Qb%-l?9WV$fJr8M9I^#Dgnxvm=-1!S@!lQGk96KPLqcJpAe1Rqz>b*(~D0 z`(Vww-G~`*pC-ChxBO1cfndB|OevrZ<9!KoPvJKoWUYz*A&#lfX=p~P#BIjFL;~Z^ zf=$HNJP!^EZ#vRQuDRY>8;>vXdVc`yS*pA6g<_j^D&MBy2$@PV%d@!9%^Kbx zU-=}genYzS`sydO5*LP|;Y`Q7!R%u}f{t9CS~t?y(-@f9&^vDm8p@O$xO5Hk<6E@YdFf0oGpkef3*hkhLyWzQ0>yC%4NcT{d`|Bu0@g$o%1 zYNtX7vCEObcXzs>m=9snLhq45`HODgQzFwmhEU=${*9|6`z2vF;Kd zL*vrj?bP!VEn_6P4lidnC$x*4IGx?KaXtR(t z+*}iWGo!fpifD+!7soTgqW3kx$6^jvG>s?A@0&yJ+K$PG1T`GNsq}mr^m?E_oOJqX zs@stzV^2j_@kWW@7Xo-bRATXMF7ZGBfabKm#S$pcXR#pe$5+r6q9;C!4`T-9EV*h5 z2#(cbY1-0~}*^4}|a8|W$&I~i3N{{0Us zYyK3t_G6%0H;gIB3;GYBzl5M&WkD5**x}v`*5bOe83+N$qp)+FSsFZ%lTZTF>D>|@ z#nT)`KaH{=Pc|kxw4J=jQHzacjqFw)gXJY6IEl~3@H0#?gFXk*QJ?4+$0uO#&eZ~x z3il`HA(IB=S5(Wnisz(OrYSIp?aAu%L4$Yb6iFK0SW$9W9j#_drFPIgt)nbzwvziP z{7GE(>%8%%nNOd|HKvd+xxUM=xnKpz#3AIP-BIN9f&Rate7o6#3;-!j1GO;`Kchb) zEWh{-Z_rBcW^f8C2=p_pzeaT_+{_ldtVv9LfL&89ED0nrxP7p5amaH>l7jUYFTt`I z*;w`hHcu~QTiS0AHnp8xQrpNv&w`$5dPf<&F<)((CEx__rZD z*#>kiG`!`_9c8GSw6&U>M;){I{ zYoyK*UT-7pN6w_tDBiv@mpRpzjQW(nwS4z*(jeGJa2axlcp*3TD3N%;<;^VT(ZW(q*SV7j@&Z~y?TpF$g*%Gg%l+*emro>@%3NimM^*C1_>9_L4 z`+`4feWBG(hgYY!^ZJT0=D>b_2JBPUIEoj}Ut0-(5^>*rNx)FiaN%VSVilhD87LLa z9do+C4=#x93(w^D&WwbaOd7hcyybo`< z{T!IPnLTI2pqq^^)e`78+*$A`|HD$x0f@!k0uarmSVSc)0M8F^+cR7%azfuuSkRP~ zXbvE7ua@+l_$(jrYX$Io14C}i8E!u7 z(Lg)pngQnMASw9jqd5X`-h2W52CU}+x7x{5drPiUnHpu8gW_<5A|+PJ(D}3S{SC5} z<*@JM1F-io$s>csfZJxwMeTw^#py)iWQ3|;yzhK5b6ItLdc_L+jJ{+|IbkMa#{Erp z?iS%*xG61UdH zDa=0<-l6$iysSUtJJ~b0khm`dykz0ZJIYCOj&}{g{xdkFW&5}>&|qc1A)N;M(F3Yb zRwOUzwcLWbk!_NyJIz{r+D+8ule;a83TC!GppO(6`;ciHc(^|G!QL%r8^@t~E$s#Z zlnm2OFOKa~{`ch^1u@Uoqol59i1h9%H1Lu5-7Peoa9u$YyN6u%dT%^`nm$MGEov5x z#O==su95AbWE8Y!Mq(ryfb8me3W9oWYH?(m2_;XG7D|C$uA*=+j!k~WX1uUK=&|YI zRUe*{+$T0)7v3ubw)#8r;>;H}XBMLCtEsvUY_0l5be8zV@hm1c%s9#8JdT5mNHX9u zXLA@_cm)t+1v8tV9}U5Hy~LOuq0mC>o_JgXc+e?zgamigy~~bTHDSnBzs^> z(-a3))Q}iLRGKa3EfHLRBKG#tAM}!FqUit#yXL}xJsKXO$z8cU;J+Y+m*VI8HlMbjW{v$e_MYo{TkZ zV#*9eho%=Xe*NVtVs0PY|D6jQ2W=emWxNAl?ef*ZV)a+Pn&<3SMf{!Tq5Dd#UTMo& zm)8u=ZN=6YkAzisFoH-QANPt{VmzG-^a>Vp^Sg%_rVFhvy0c=o3sRWkT?WxLM(jkz z(Hh*}nWgUN;;M`D4Q72pV--_xS_eU)gF$7mc&<Yt!3@x&V(R@9OQnG+AW` zbc#6Qmz+@E-p$93aFVaQYe5w<)RT3e@*9_L z`A*ijOP^m$_#lxz)yg1B(HX0_1RD!$;C9~7 zt&j>GFQjTp@(f&ndCPK(**Oerg!>NtZXiQ(U~*fwkN|2!Lcjahe8oy`;Xy#3X+yb< z9$jwEc~wjZC<9jQFEgjiezx)YvT}l2xUJM#h6WVAC_MyB`~o92S()sJzG4apNa8Ab z+CC|mJV+b_mlsLDd%@@o8lnnzG;P0bF6|TY|APt~2i?q-CIk(96EX(4wX%)twlnCc zF2AlW;AgbPg>AZ7ZhxG%076rV9T7XF^#g@3k-kMvMp>DFFRKr&<#jxCdO8C@Yk{jk zu%K*%vkCL;s(f@CU+U43>_yMGp)_6=lNzb#E8@EWS~)k4wF>&p%<93V8`1&X_tlYe zGu|)V;&>GeHHDp*uci7lcN{kVn7%tN8d-d>l}N3uta`r*OUIieB1M%Z1McVHLNnFY$1 zl2>=pK@Q$)^sRmrmVU@gC0z8q?O) z4C5@3YAjD?ht&+WZ?<%YPkG2;SHdRvO9?=Bnh?0lyr=EpqFF~X7EF)S%V*AaqGSer z_ST)4EZvFTCMf5p+^`hKaB8M2xcJ$|KjoiO>ZR}w2D3|9Y?c~$ih%0(i)MH{QDT79 zJ{<}0^9-OM^I+LBUZZ2Hi=4h!9ZnQ1u)??8C5Q!JKoRFQQ?XS-*d*{z={?T0X;|3E zUdm{r+tG!`B8SP27lwP8k;LDa-EpvK(2jsUZ5A*9?sRNeJ+O@0zQ8dw8i!Wl-cTdS zONiZ(F};aA(4-l;m6C-zqlcR~x=n^sCOLnVqNlKVSq(Z5)vLC$qCL_jxCPI7J-PlC zZA=>SDSt-!?kJ-JKc9+q?hG8cKUvy>uhX62f^HCdaZHmCCH&>!Ud8?Y=ctW@$k*Z*5=3Q z$y?7Uh0{F()<-&E*T z?Che3g)gWFP=e8%RfvkUTsWw*-2k1Y1ATQTiW!x}eKVs2_h0spiqWRq7$-WMc_7dq z5ux=3lM@L-?>LAvr%mCqK4GByc_ID$qDS$BWDfo>^h7mG_w@$x*(k1@y>YxuKKKT> zYZ0@Z&7Ls9S{Kb0HM5ZC}J++d-5OH z`>N2aCJZ5jg>o?ZsajhQy`nR4NCK>!OLf2+EgYc)Q|jQPN_@SMa$grsxTpE1=D)qoTCz zM7pUBA>_|EZW@eJdYN8%ftESCkVNW*Uk`1}_2@aUeef2&5S{|o;LVo=^zm+SDvlzN zkB&Cjsew&c91BV^K@%8{E^5?0{4R+u$7{;Q++^q=lOe*WkUu4UQH-Qyde>kwLbdQ$ z(5qqNCJ00pV-SnMMe^xGGO{r?`6fjkf?@AwUg#6DPx)6BISn**rGGfZb2&F>^z|Fw z7yrte?efr}FXhXMn7kq=)^JBUngjnM)nzF_pu7W6j>o2_4tX_}70&JYujE&j8NL{28P5w* zph?MX#zxQa@n6=Q1@B|X2<9G!Tikv@M)bIjf|~WGUa2Uzp}=u`$9Vk3H(M%_S#9RI z>D%IpGmD?{ZzIrQt^%7H>&}W_zXX0p0>d1ByRBn^pn7d$E5>}`g<1(f6c0X{@boCq5t$?1Hn2e36x*_W_sDVe*+Y}zGVB5 z_y%-NlhAlYlviRnqe9NLJ)T|RyumE9otVbkcqlTl{uo_{WBB~?B0~$cpDS<4T_ zDQj^HL;9?lLSQq(ARvB7zb=SmFNmMNUiUbsA)z@X?jJhK@RW@G5#Eee&88dz{R?;6 zIz%T}1C_oRvyaMQS6@JYK7aIgk#oZw8#y7RzU#1%Id2yuqLi4<2dO#;%m4}P1d8&Io z{w7%Cu^w<*3Sx?t<^r&c5l5mdV2^v%uXU{p@m871eJ zY8_!gMR7dX!sTU(aR?<-ZaBW#kY+z*j+M=#a7Ga&wK*K(k}*s<7#) z-ouA33y*%PftlpM<&W*?w@>+$vCvsS8>HfN*R-Y|;x%hFRyP<#ZP*Un574&XuY#aB z_iGm@tTrvNd%9(stn|!48DvKGKZTaqNKN^XDx?#0{l);%aKFB`LD{RQ1w+fs?U^1W z6CRU7nv*dBL|aGIOGTmlDIs+OM_5mBKx%k1Wvx&AJ2-0HcEs$i=6J zI-m!1VO%)q?Z@00003rQ~&93QFX?+12e?sG_Sgq46*^$LBp3)82Z_T($lF9Zkz|T>(p@@Tj6{ zIpIm+>9w3{@{Vwul8P=1p9#A)DNy*%)MF)nH91-0ZV^yrAw2ZL4 zobF6IuaxUCU*d>o=R#t;WObkuWCA}frWhl@ApH!>K8Ob&eR85ky!SVLmQ{&WWLGJm zu|kp*IozV=C3{?KLiD)IGzGK&fBUK@27IOL4nH(J8^(JN*tVg#Wf)&ahEY6*x+l2I zR^nF=Vdz8jt%}xt0L~3Kzp7}lUAWkU_D40UMSrC_S=K}X-cF%80ke9y@P zgxBS(u3>KXaKcK@MHi0010qNS#tmYLT~^8LT~|Y@?UKL03ZNKL_t(| zoYcK((5=~Z7Pj{J?sxm%+jFa>ZmHYdt(G-|C9AQl0c2x?EDSa_F;pM{LVy58C8+{C zaRmY-sSFi{I0>#4sUoQ)KT@ecs0;-LQgK26gM+bCHW-gsvgBY{!fMNEP2Feb$9LA= z&wAFg_WPc%ujFJ`-Fx0)?=`Pyt^Jel&617XJ?LivOCKU5M-W?}Fy@`tkbS zXC8dTyPkRQ>8BpL_4F(5z4_!lHx3V89@?E77wyi)q20MWwA&YlcIVLS&edzX@v<$^ z$r{zQFU0sl@%duOzn9aSKKOS( z`22_d)=xeEaWgxfq`=psIDd)m@xPbEdZu0dGkE3WFZ%eU42$a&e^tD>@L!1QWpnV{ zllMRT8-LlW-u}dc_dNU1?Hf2txqD6Wmy*T3@4eZTF?AAiRiUv=lX zSKfE?xqEM3JZomHpUmG@MT!C7+=6;;@w+Y%TxU0e6x@wK{#$J`8XQ()qikH6sKi`@iN4M0`=u?g5J`26o+ zW)~ODZu~3nd+P0Pf6e{xe*C_h&)s+H;tj2}3o~1Hqg8jgC@k8;pbp-C>wFN4+u&bak8Z_YLc1b|9v#=zZRZ&%RRZ-lCkIKd^oQML; zh2)&c!s$RwV!-BK*UL5KATbc#aLK?atU<5)I4 zYy-1wpX0O}>V+~ZJykK;YE098B@g@Fhz{#SwB>vp7(*PJIEUf|2g*CH6*>nSkqq3> zs+=0)h*-dwPfZcw6z0gP(Pm8j%!|jL{pp|o%wPLoe)#A9@_+w-fAptJHvxMZ1NGSf z_0PoX7jy_Sd_j3&$;5yBe*aeCzoCwwd-DEA{>67b@&4Dn;`RsbzjfnHUNAiX%m`>9 z`EjJcY4N&IfC2fSXb+1f{}SY#78FhlcC~X+yLT>t0q9i0bNZqg2{r>dBS{;9BONoq z4SFk}LK*}J!4_mQbcXvq_`w7SbPIms!XJDHehKz~W0q_1zyfxdAd_MYi?Wi3;#Qb^ z&Vv|AMOihTAgdY3XE_G;6o(4rDJ5djARxzv4rL1U5#yMO8rm!HMcWNiY&sbq3i)CAtHm3VQeK20az{20DA?R7|5$7am%4fhQlq2CL;T)13 zLjY#VG0H*fW}p1bi~s1yKmNjB`7gfrXa4&4efX3A)Mk-?u{d5m9q3j!1V$28D0x># zvdjG4D9% zR7EQUmCHm0pagp^3`5u~k1te-!O1kPBM&0Upca5s=}0z}HUopB?#qS%We0#qTPWKE zvLIZLl>pEb%_?@<1f}FlkUhjw0n{PJ2yCm}@0jNHK%nHfW&X-$Mqm!Sf_+Gi3P8Q+ z4_$2mhYM;?J+uQ-X7z3>Y2X)gjcr>$LF||LraQSn$K~AN@72{gv;1 z?L)uwfm=7;ip4nuC;>vQk`X+|wMO$Tf_Mrj0(qwsl2Cz^m@5m93IUp*fU(dmdA-ny zK~jQ}m>)n~=rlkA?Im>Jor2`Y1x)COppemcuJ4778QiKk3ir*VoMskw(y2jV8LIfh zHGU2t9qhVAOMxP(#tlwqKfs(pQrQWI$eR={I0wL3#sukG>6mtvTWiQZ$_8P*kzG(% z7IzEU(LOscK=~V=Kn?t1eJM6flghrtc-kq)Cbp^hAZvnNfg>s=Pvs& zvoHS8-~7o>{8#_(|N4*rmR%KoYy!3#f<4WEiPyV2RBGN$nhnmI)qmrUkNwqdfBd^> zcKIj1?sZ@D&Zi#u9rxY5@%kl5I#&)1E{;_}5cec)v(RxWu$IYD(exn#RbDsK3B_v{ z3F0)&gzQLS13*fB7R60nQ#(}!z^T{(9e(PQz_}{G!d9|CtGSl#h`T6$!V~zTz7@|i zVyTQnKQI#orEc&H`?{TUh`e0xaPHN34* z$hNeBl2hr0=Xi`bS>dIhAhs~C9e65jRM}Lmt9U3ZtnS14RxG-2e(|#}{@C|^=okL$ zKk-+8;(vRo+vjaI0je3`4;rq%Yrwgq1b4L=xZ6#DY5?$G^}c_#>mUE_Tpn)zTVMCO zU-#ut-2dBeUtT;NxGbE{k5M-jAi&<#wkpUQiKh6vyqo;QwatP|Nx+{I*aXsA5D4z(~ zg1?!4=Eavj`1e2j$^Yh$|J9%PD=&Qh_&LkXK=pJ$eO{o8e}io;{dwbVHUWDYfIU0^ zOQQzh55DKgw}0bXU-hl`-E;A!iQ~DZ*x^vK^BRXyRB6p-19Hto4|FTQy$0R8ot*OC z%i*!$t?X}B_+T-AYb|ef2Yc@X3d6eZAA(yR+wc zSI+C!P8a#{*B%;M*S}DMlS1k8a^>kKgRp%hT}YZ0?{nqqed@GtzG}SAv&$BZF*bl~ z%MQa|1=zAZgZ--luv0JBXA8i#=q9@$7`OU$rKh@A$;0n!SFw3DS?gz(?Si^gc3^*m z&nEy)=f9`xC*ifWUIoQfnx^wbrL26N5y|5z^*aQS-UPm9o#*`F<&}cpMUf(ojxz%%>XwAtEU3pVl!ak z^;+ZQHUX;!fWPV&-}g_uet-Sl?|jW$fAg0;_HFmwbMfYNftan>On?~JYoM9;7<>iiZKu&{R24Ox{Ag_RDMPu5`EEcdyUjdQ=P^LfSoOAKoR%3y-Jgq3fFt53i zA6xuf&^3)!BgC{<;Kp{DI?p*PKJj|ahivCbIL<{m;vDwv${s9t&O0;CJr%=zJ<1Se z<-*Kzt$0;5R*g&*^9o1UHjF=<%P992#wa^g`YS$pV-Rxy?K1Vseu;(O%xE+5@*1vwD2iHx*H5cS?bt*pN2_%j zG>~52;W4PH=0z2G<(&dEN?y4FtxG7jQ(U)#GK|ItT3_2+;8U;N?!@}+M6!9jdF zpc;Yd2a4`WBXDt@MRtAzfCc~3%x=Q#&38Zj;A7wU&2Rb-zT}}>-*81E7J)eYx(5_G zBnEoC4#JOn?9iBq)!M6940LQ9VnDN8KxxoXLC5?e58buS`EBTxlbr#%2c39cYycYB zMe+4>w-4)mb=nTfx6>{;29zDtT3yVm#v}So)6DUe*P)zj*T`?iAKLxuxJO#Uem+Nm zdR08;y-AyGl4E0z49c7nyeo|H)?f|Bf1JzoRRffpP?xm_J!0WU9B9N#W5(1MWmk4l zepRvRbLM?+&fND5b*k}>*u;(2)GHQlE7ssz&MD@re5ux83`d(Ff7Ev#XPM9@h-+8p zbFRiD&OgS&O82<{#^W=Bjd(Y*UPO>WD&2n(YWMQzY zk}}d*(Jbt|nVf=OH;-J|V6;)0iI?@UR)P7pesOoH0M!%GlVtD-O-{wLYmpZ6Sc?E3 z@5d%gH-eM3g+#CX&5d3Lr3{c+rg-lDx_Whx%D}ZXRBR6dgI5GG1=tlRGoR|5S)Y70 z@*vs}caz?rL^+TL#<< z=EW0V{p=$jc*VV!KmI)*eEw%aXeDT~+A(VGS>xO$fSESa4Z!LNz)dr|dGn&(`p>`R z&A<1(uYKs-FAj%$x7k9niOzZ6vzWyF^r0*PFtu$rMgo*7;b_6|vMAj(-S{+W#Z%iQ#Ba!Fft^ZH z)zqt|aJh+4AaweVb&w`&(M`f07p>iS^JDjZ;5|=2c=267^6?*hsShrz;8s$p?sWG! zrwL#N&9)l=Zvw*Z|0|z*;IZ%gO>g>>Pd;?(>)Xllv{ASkD(GBgHmq)lg*jt@8G&GW z-;zNsnPU-b;`Uq)!K45LjulQVG9Flnd%lCH<2!E!(?VYn*G7Hx}!#DPv&bBm;u+ z;YpiQliWpD?~C1iswn{-LwukO>2YOX3o$ktQqltyjts*+l&i&Kxg%|XN5hy?pr}Rx znB}?(!m8qdd6#apyc@wPV;W;!!~yyh+4w(*ljQrAI3uo#f^y3170po0lx}R32Im!? zv5X4eI5v=PSkt5(;!_LAQ?@D6XWjfl!rgfqH#?TiEOWR)+ME_)f4${bDW?frlR&jS z+oSj0{PJ&j%PYV9C;#cEzxN~0fA%vr4YwtUl4uK+)7aYtFyUtBJpmYvz&E_*(P#dR zuX*jCz5kvYZ#1*u0LHUm*sWfN5=jPK=+0^FDWJ>EtSS;#-1E_CJvOnz#pCHR(40>_ zTF^m#7%I>)qhN;w#{yUdeFc6N*Hk?Mo+G$QSzC)XVLvUdwbrJL!*0OX4^;8vSU}8X zfbl61XPwT?ACaTJEJmL)sv6EdPPT2+W~p%^8c9A>fMd_)|>w)MWO7LRP5C~Ys_q46Cgsynyvo=;L^lXfPdjvy!tJF z;9XDt*?Vpr9<*i0Z|7CoD+u zsG3vEX`T=A+Qz*pcMMc+;8b%PUSXi`LXr0^WFuXy@Bz|10xbg@k}s4_9z#B5#H-tZ zbRDFE1e?3h=m^8iezO)+F*HB~;hsdsud7W&Eam-a2`6ygcn~o5xC>QY<8yU;5jF&@K!rAbX>QVg= z$3ds2&k+aG69Ko=Va^TfD0f+(;ZrWqc#Ui(F%0BJd3m#nvY?(LuOLRbpAtM&`C8LX)Puo z1@AakiP@%n<$b(^}NEx3sbKW>D&5nVJ8#$d=R7m0Zt$gXTe)iTNKdT^ z@r*i{7=V#J9~*&yD~K&zI2n5(huFr%KE(<)RN)@+8TuLE37&fs3T6mvAbt?T7$a1U zV4jBt&S<__vb)?+Ax(;xi$lBl##i3?wXc2T_D_HJPyGA`i5&MKC}lMYZ(NO46M%NY zf9g8`%0C1Aj&FR!x4iqQ2mi>$p$%TiD5P5GtSc4J+e{bNVp1SqpF?jE1d<3qD53zU zu~rnQQCuj=Sr61ZxSE=blo%*@i0(Nz$cM>HHbQ;aR>3}8=s0;O(YSc0W(nx1xZs2i z^DVeABz3TbpMt%EZ9#sva{w=jyVN0~U0FC4hi(t_A@U@UXhh3dj`a*UZd0=W_;NP} zbEV9vZ_87$fDXa9$l~ooz7=9q+1h9UHUv=ov5+~h6dP;@ioftAhjI{?7}zHjz-DP< zBJ-DZMmoiLXe?}AlX4(!9EIE|rwiGFjX1tAe~Hczg=2)}#kGtLi+RDVm~)lgdAKdf z4sxS_IsP=1HTOUNT|e^iA1Nf{v1$e?Ez2eV!x8_T^=E+J z@eObImgk;);9IZ0{||@@ank$bBuPqCFFchKMWTlS%^+E<8<$kztdd%(p>(4nWM(lT zTt|_Jp@ZL`y|S$oRuwk3i%QznC_rtn!$c+E9upCKa0g3ZJ-|iqPG+czg0LYsjhdik zf2kqjD9mRNW}xH2zCt~Cj*NGiFIX4RPCb+{iI3B_Ms#`xfdva++Xm1;Cm zHpRTM71P|(g^Jf!4ld^iy;GCDM<#Wh?dk>2EbPuz(@^;&VZ0Uh;J$3&a6Mzz#?Ox{ z-fZ8{uy2h$zV9YwYOS?bKX}i3-uC!?pZKmHEgOOBBJdciCIC&Meg}Y`0ED*y{_Xca z`~G)7{oo&I_;+emaG7bxEDX3+bOS%(?38GNJ{E)UVHVK|5ArVu2$1Khq1c+EKv&7O z@`s{{|5j5M$&Ban6Uipzu7+xCw#Eub_pVho*t_0exmaCyDB!yWz0G1@<<^uwu~#r`tizs9fI2$SBZAuujC;ecw_tO2X4OmwU6BX;CKJT&;OK=q&n~PT1u&! z0A+@=o&fye_dWHluY2Pw{@p`sd;bJcOW<0l0NzoI#?-rzY0F(j1(qg`E$Wkipo@8X zKvi+o&ft5lTxZM) zAb&Ub>{+{~DL7-Sd{D}=li#vgR&*D1@OJvF6!Y3aJAKl9&sxN)4Svg~CR>B^V1*;A zr$AQU8-MY#$45Y`tW~SAf$_~+d-~y9zv_|Om;c~g>^2CXY^r`{a`YnK) zW_I&;eZ_0u`Ypfwu|IR;aQYA+P_BT>OczD`vmIWuwCh~}za_|CXB0`fMQ;oEx8ysw z2(9M79Q`p_5v0s^0;?ZhgFnWWAwZr2xqW}A(`-t}9tcsF|8#2S3J ziHUf8M$@|&YkN04w080ONAG;qp|$_(2Y%+0AIGV5eD>DvLfr7z>h}OHtY`qf@hy+O z_V<0|6aT6I86YcDIkM_n70~YK%+K9Htz>n_F6p$GkkvfCzei3bFVFL93J{PluT^7p zU(sPXEBmSfbxxt!EW8`*m|ta+l|JFM)!?I=oE5JXz^S|8}5~k=lJg& zJMO6sd#+b`&hu3r+cWmWs~;a)yL{_o_rC8FpZWaX{E?q~;TKRGajY7GZkF5EstIV8 zKL@b*{?*TX=go_YSE*v847B%HCD)!}dQQ++;9mi)I#=>m*Kkx#g1Wy| zXw|=Jr=aw%uBo+^ebij$hv%sKmL1Lk6(xg`wJO*v9c+h<)b%}0p~?lk$8k`_H{ah| z?3A2g{ldn3niREe1@2X>Gp(v%qHJuB(!ZAJ>}hl>oLe=7Rdch-UFm0f(pKS_l8fnA zjqFx#?up@Z@S@WBoE+l%QPqnokN6tX+p^h8#}!5@IW7+E_H$3%|DGTJ*r&hy!_R;A z)3{6=^Q#=*1YmmmzpdW`7>&Tqi+1bJe$yNO)V()vyg@PH08;n-nD6ncTECS{>iP=w znMWlP2hf&&E1DGus-WFVSMjLy*tzm+T%uHii;ZzX>fKU;ZFjVj(%d^2yAS6ekq>8IwmW_IJ^@W5Am z$pdfti$D0$zxGleJN~l@zmqeIO@On;w*giSz<3Jq=YG?hfB%yY-THu1x>BaP#%s?l zcGXxpu9{z6+X6)7w^z2Mjs@`ZwXMWk?X<03ZNKL_t&%cvXP5__3@iVXI`` z3vPR4Qu^;H;CsPj6*JZS>fT;msZTl9Dbx7tlt^6Y80tA={DW|d#1 zT-{7PF}aS-_uynD>veEW=}d z?rBf4f7u{;QmrbMGLXm_TYPpW@?J396WnJ2sv50X_`2Y6ZL9G(lh?VjT_-8dk!#EL zrLURCj=0&RafYntjO(sDm)1E2@H)k=!j4Lgm!tPN@|`Q!IkHtYJ*W98c~$Xu7oJ+J z=AP3CRQFx4Jx$$p$5y>r$#HGm3Pd8kivP+6kKDO@+oSj1{Gq@7!RLPlxNx!GiuC49 z0RG$hM!@j|;8#BL(5rv%JD>QD8yAP$D`oZ!Rj4EwuL5ePGsYK2D0+BpX9q3URdW0K zEty?T=0WsSXD)XkNNeYVqE(|+4v>4fevuRvuLK+$vYab_iX-I%pF-a^uRq>j%eESO z^XQyHrefv`K2|w#T^dHmdwdL=gEVJj6Oj0B@j7QtKiyh1oV$xT`*$lQuj!jmJU3!$ zS3?XqyelrZYQW1GJFzV^0A^A43j3=KN5zUak-|o;wf5{Ix8L>SAAjMm|Mb=81Jn}% z6R%-l6R`Jf0RJ4oJ^%4HzVSc2_vVdf*Xpb^wNwz)SB{QEX|!f90GOED=$M=(ol3OB zW1xyY%fkV2P61izu;=;;I9VRljcITBK+$8_Dm%iO1dtV7mS<;^6KHMCVfHKE`?VeR z+4WWf`wao20v%c-ZMn0_4z%1iTXK_sD*j~=RJPrlM=N_MQ06A1)4eTUF0i7q6Tkft z_zFA<>l9Dcp~?-G)2!A@4YtinwmtO0zQI-%#+-vY%p2BKm{Za^$vM{TZL%tU8?qnp z_ZyfloL{td`?)6{c+>yzL+SGYstJ(C@Pm$nv}y)!@W21;o8SC<9=d(`jzO(p*ZaJO z#|{9gu+p!ejqV4|`vR=IQ*#3jc2#nm=yjr#=3AcA=*G|!uX9l%n~eMHGAc~C>+2+! zlv@?HMxrRcw0PZRS<*$B1psui4} zpgo$14i)2ZT#ubG9I zXP;xfhd5IF!-X9fSFOWy%6++`XL)!|)jSF;ux9q~t;=_O=Wl$|?=exQZPswC>xh`+ z?Ev+)z~xhbf9ai1yzQ%>efZyO)>^mO(T1O?wHa_8xDAer8g+Hge}WW(105_eUFQ76v-C~#p%oAyXuIoM^W;IbbFrC`q_aJO8b(H=dX1|GByZL01E zv8y7|vyJfm%AkviL3A+8O*~D^JZA;{zT+k|Jl}t^cCcm(`aGMjO~}uK6W?_obg(c|@C<74c5h` z+-lcteF90dX+H$s5SV@H!rgJevKFtQpZe)W@Q;u!HBv;sAHii%#D|ZK>~&hh#b^K* z_!WPqcj!ykf)9JV#=z_`7n-^@^&db0w&bT3!&DHz1HcGC($lI&wEC0{<9&!AApv;x zY5xG^EiUD_miZ{|1?*%S_&Mhw#1h8FC^mp6q51Ly^s676&EExanIR6;4i^c#UuB%4 z-aL9f#lQ6*dF$6aCj1`ibXpVQo9KHi4lJUdsYbqr{KAr1vI()C7r1%w!(+r|=i&Nsb2H{2!3K~Um|ITw z&|3TEx4!b*ZeFx|>}s=)PXX{BKM`nnW7nSq{+ZwK#^3Vv!?%Bf*)(qYIbHxpPtIW@ zKgXzWr$Ey%3RIjDcb!0kpG5d1?&|nwiV>6p=&C@Vq8A83V9A{^=$!NfVQ_~uXu&$3 zH}3HVRxo*h=CBLU<|N@K8rU=_EK{HxCW0TrF6usKxu77lZU6`pD^`yvF`PyTKgh<@#Wg8FU9;NIT@Tf!v%^$Cz_0H-}0BdX(Aq z0v%XREEw37VAI1oVhj$lVIN;c<<|E?eX_&+4e z@IQlB<0e4;Lg4syz;`|M;A6k_?T`Qa2WvOcSPEQ5vT{%hMZ&;>hn7+FeV(dJ%uDg6 zVw9>yK{FI?f2G8qzc_d$D1$I}z(Ga@!r;O%1#Dp^Y;y8LNPw!6W6(mfr-Dm-IY0wQ zVe%eeF8DV90q|3H!FW@=r=X-4T;s=VE?a04iRQ2c7a+1ff=;l9zp6Mx`6w=`#w(|C z9P+Oki09a0;w|bDMcHY4*i5QAWqR=A)Z+;;S08h!Q5d^h56m2+yUEN zKZrfFV`!vR>>A;Y<@+h7$mWT!pc4wbPlb7-sbIb$FlA#TgN6k&d*!`1fBBDo?1jJb z;pad5f=vt4Go;uydBNw;0m$D6_|sqi`fq>Wp3656z;wqefm<|0NbG7fdM(kfv`8_y z3J^~MYgw3sTvzna4r;U$(O@S|YLbDIC>5C1=zP-hJ*MT!rgWy}VkQ!xwF+QPI39{$ zk~<+1+uV-8vI0O#(qEDZ`81eIOdoDf&3S_ldq^~ zjl#qCMNtXB&+~l_#tF`$LYD^6;rJhX1-(@hn4UPCCZn%X)1-2n3lZEeF@SYLe%S16 z#RoPvR_iK@=0cXTDN^(}7Eae2U&ok+ls7Z^G$zCd$&N)GgHCQ3h-Z3h2y|0#vt&F# z+EbCTu);lwy$k;YeQ<<&}cEKHCYFNbC~f7xUAz2YzY&`1A<zn+>3o$$gFgZF=~6#-YaUS&7%57{oaPzXm`Kq?2#`oS z#y(H*5nb*+DMG?^k~ytwA~-oSDI<`rSAxGgnR8)?wIp3SO-WR@Rd+fp{ScCtNf0b5>hAJ2eGkM(@wcST}aFGX5 zL(^H=C>2@mEXW64$)h>}DYaO4bv?lKDTe$4#&$oV9|%vRe>)jVW7dEc#&UR+(qL}V zn@RF9#Oi<-GB4Omp*js#t;0RpML)TvD^q?1JKR#F9pia1>AS@;?@UV z|H!wR^^lc=BMMI{^XMW2DE8_*d5jdGuOcbLcehGv6gmAhz)w4j=(I$RL^ zjjxvF>c><3Kw+1F2)Q`@!#bgw2zWGS(1%zG^H4sbk-*uejiPzst&|?75BH^_+C4NV z#r9M!%ssx|^Lx-k5D{k>%0n3tJSYQX5Iwm8I1%h4SN(dUwHVtokbE85d8E%t0MErB zBd34RU)U9ay(6P}m~bhKUY}wdaV+ei6|PTzU;XRZoo3+gvO1D&P;bmJ#DtoA13Jg7RNmXmNXNS=1Q?_7}tAkl@TBtqKZX`6s^uWCn zt%=3XS1Oa6227bgZTEGrf8<;5yLoZT@}COw+y6~90qJuAfBb8o{SCJ-FP_Qh4gnYj z8rTaP1;4fNh%>I^^;gCo!FZbDMR*uC$e;jQ6n}IcCTJxK;vP05;Mkz+hHi6hqx%Ml z(PF}kM4hxI_;t`($&h`5!P+rky?7k?8W&8VXY#c#CtA(s4t(72(UqexqHR0mr`u=R zDL>LB01Q=jq07*dV_*XCxaPOL84M;M{|-5Y-*Kd;A`u*7oG}l)KATI9%~?c)(pUNA z@s;dFYeG!UMzy0}{uUZO-$k;;QwH>DEb<($^9fpb%LwR9Jt+UB-H`NbLZZ(st_?hi zZiu6KZ|0Zao9w~<2oioIAm1WAVs`-urypAZ+Yb zSTmSKdCH-hA+pK9q6RuezlF7@xWIUval)@1?oXM<#t(5s=`=1o0G{Tanr^3i`|{$M zKlZiH{(8&b8Nju^jRVu43%Iy_dARvykKgytIq{fG?c}tn=+%8PlPb_aD+g>2@EMGS zaiFOf1}y;2=k$)w%E`gSWi_T9+I&h;%F6bbK{C2b2Rtb1<4#U^$~* zRKsbO{WxnxydN^H}KY#P0-850x4eI{t z?SLC*cH@u!>es&i*5$>MY-BV7?$Ty4bd5Tl&+9HMC-VS<2Tc zwzFBpj2P#N{#Enu@fsU+KgT#n9dWaTc;P%;R%OE}H{%`aHFL?2C;c9-`EjUCkaH1B zIL{5{xvZV;p$<{Ti9L~D@7-=)UOf57zUJBYoBsB|^dvxi9^m4l+2uQ4^T6*w=dnRN zAjAD58Yw1rzNSDeKH8gs)B_#8n?l3Qc?_Cv^dZABcaR)}W%0-NuulJ`O&ZBOb>Yr6 zI&$iy)~jTkdd9{n%G`$?F_5Bva9s<$mEBP$v^zIF>|-1ZYBR28EX4xHdRdCYxej-7 z4Bk3EPG_W}-fb|@$_E=lC%PMs(ayO*u)SJXK5gGf&iE9B3#bF^w6oS>(&1PFfTS;W zVx1iBY6QI6Pn<@Y~@{KUq8fzlsG3Mm7ui0}?-2dAznq8Xy(x8Kx9WKo5w&gzw zyfm|$f9z{t`?ars^v*xSMkt3XM7x(O!C_8;fhpM&9q$0=wdiDhUGs`O!{7RLp>Ma- z``3-GiDNhq7?5-^m3v`cC%dqXlCHpS6!)W;4*<)FlH!^M79yXU{#?=vihmi5<1#kr zl@3BKoEvoY>j#|Ef(_;kt;Zhv;Tp|}e^~(YcF5mST+HK@4U*5>{`<%)_(cr?qSbu< zAYe-85F2zIftA1XYcYbZm~(W07k;svbS>b^(MHi#dT#MczqAQ9&A5h7TxuE9U`%2e zL>%)YdCqnATllRP;<=2X21>j*m&Ey*L>XoX#|8EPq49Zyy^ zNV1Ua-7hz993Fo1!COD^fBfT5{FGh&l>q+XQ)|t%nZC z*CvgbMEX71aLfq@*KkNW&9V(y9z%Ou8wpkOyO!C`6;M32b2*c?TP?>X>CgT?XD1-!#ejCi7m% z9tIaki@J{;anMJq>h^S2sze8rq`-TcY4YFI*S06zK`QVqGGL3-zt5ByHkp9#3I)02REZGJC+zux@z zuX^TvZ+Yy#-Z4H#nAZbIc&f@_o(?0>&~=_&(|1SQh11TuTKetSj^?<4nyv{oDGkhLk^Q z1mMI3vhA2F;z)k$p`e>~ZD@0a4HfpR?khg3$T2ULSIAQ4?3S%bR{71W$}WnQ%cpF@ zaftV-yijwwmWWzV>VWbq4BWy_Ra2_kqUZ@e9_BZ193FlAzMKE(Z+`Ik4_SN~5S|3^ zp9WsM^T`LkC3KHmNKS&O$K5O}cHv1O6?lpt88 z&-YhFs9Wqxfd)Q0<*wh%;t!)R*`v|lrMhUZt{u#&rrISOc$9LlDZyvpXMf6KRl7z=O+Tk{i~YF^M^<(-m?)>Jv1 zaLb%t*Zu+;@(HHJYauRGydW)wbt<-1To#zXzAoPaQpE}FqkP45tGM8yWc6EYFA;+h zTUK-#Z>qekY6{+Cdd#<3#z7^El68^C%eUkz{86-N4c6Uve#wKs+2YfHQTOEs0^j@e zgRgq{){U^DLyy~!v=j;9rq%sWRh1j6o7J5 zvjVDaSzeSw0Ri$+1ASTfz8cErRfDJ2Rf)pBQ2wkEd<(1M0k1Ic^ zc;R)G%~$gKeFVWOkGZ(5@<7EH&r`XgWW)R16swro!x!&yp003iRa7g#?#$v7+m1$M5(LSpNqta^?R~)~pe)y^S49r$NQZlO8JRLuL z>&92S=cxx@Y2pKd@-G8^+m}85b*;67de42gAX{@$$W`#r++I11`P*V1gE3y`B<6Xb zU+Us3T`BkS^7op|u z(g%T{d|#Q5_vF-$bGa)ui%;?z9iz-hcWc*%*SM)vJ2Wcn;eBg<+hnDyDhjK@kC#M| zR~w{IT(`izl39&K9G>+7JU?VVD!F)VRe;s}l^kO3?k5h_hDMz$9N)?zjt7pJsu|gn zcX(aV-xD87j*X_j9opfyzU}c3nD`3;^>)DFnTK!xIx`FJ<;zdl7EZ@PtsYUQ59=(( z`0&b!#yOwzMPNffF2T5R#2(Ogeyh2~z0D6Y?x3{i!mA zzVH941d5+Ttz}WX_we_T_%CFt<9_ug~yy5Iix$KPNZZwDN{=5-H$eN`Z~3QcvclwrCUBzW%gIIvY>^ZCk|NDp~# z$*pAep%O2A5V_@KP$0gy0Q=g#9kh}K&vEd5)o`qKWqUza(I^YULRSWqRWU<;Rg9@d zfeRSYs2UWu8`^bc8;+%|VpA1tjJFj(*KJphFLHv{aBi`EmCsZTRgGH!Q6V4NT;&S; ziDhKnl`U8JR~3TFx0P&)w#r$BZ;Ed9PwC8$qpEa!TPcuBl|Xx@h*buY2U{jh+UC2H^JP;qr+G?)fz<-A|m9JKLqGC4z--3>^+n&O{^6jdbt{M_$2iBG6 zvMiNv*^hhdv9gWw(<)9@8-{9rg?(H3wu&ni->64ri>mqOri*#38dD{Yl0n5owVB{+ zDt46Yey^He$)V0GozQ=q8wbnRRyo1;ciIXAsttl_7J4^(&HeZMn%kF$OQY`zc+^hc z4e*EF`_y~h^vZj`NeRwO_MWfkumP(eP(ZfY9qe7p^S%&+^{awK0qtJ;_{!JSdBtn5 z@6MgSN^+K?>e3a@CI4=w-lJClyP~souS&pG@%1^^jXRY2<<`#L$QY**Q_!X;k6r|>9WGVQH=SF-HEk(CZx@m}$} zo4Bp`;k7-qR=%y)UmV(|m(1)KJ{b7sSKj-stsvOybi%pn@``S( z+7ay8CCH!<3dj=UeJ7 zc&kFHI(#+wYgt!zKc^9@?1krBzGPce#b6avdwEr3FOAi1gXzSD*OO1t+k*>fXT@M% z#F)>o3f5MGpyFX~gU9xlP3eX$R`T%tEi97xMmWMWR~TN#2HqEs)mQV8@2D>Yo|QZy z7TDgEy|{icy_bdGXZqL*->n8>%3B}1_gyAF7{+*l7mj0 zj$47pP>d5reDZmh1B9{huLqFUa5}H)Q!g{!kd%MsA!JpyEOqI{E8ic)Grh`oNe=c6 z20A64>nlO|j3D(`Q9!aBMdEYZ?M+fCw~|NDYb}D4;_16oHBY{7#8Z-G&wP?+>l*5u zV!e{%+?^5YP))=9+?b1N(x3JfubXs=cu2)>&tGU@KH*yAfw_k36fHZ?=CUakfA(A! zx|dP>kpAXCdr&ReY8d@midn+$0A@g$ziK0yXe=7E)%xY!JvI>XsC!F4ovuH6=jJ<1 z{dK_G9>4FQdv9L6ZYf-g#L`^27X%Sc0n(R3^e{!s;Oq7TpO9UBi9+>vyvgCGxw{I~ z9ssO>VnI{B;{8Q|N^)%#HuhhYcx+cCv(sA@E0u^U(0SddsO|zvynRkmG7ziSum}`Y zocLqvFi+WC<83a3_sY?Wv$ z`>L^l0f;X$1`2zWGFLu7*B`_yHCq%Tyjd8BY`ZOa1PvvZ$C#`y8#Geg!F$zj+^lkF zg}Ka2HFL!%8(hTx9e89$adtYtb9wmEw>^H}L&i@6zUeKm`W4oJ6eOG!NCm|zL4*T( zKOHu(Yw=jl%z_b?k9`Di$otT^V0T&4!Ru9^IhnoP9n(|0FuV`4mcC&dR=(IOghg@S z21$Y#%Wakel^Z%?*VO3?QMmgd04`h`)4}d6 z6Bf17KSe%D`!Ova;Md0YSFx||k-h=EIBtMP*+dF(3!)JYs~4Q@dA z9*%}QDQ_Fw1MRYS5;HHtxoXl+ujTJ9Y{)+Bsv2ydkznpLxA8p{i(*|8gVwB`QdKnl zxQX~O_9f3z&A!F^(stYcz`7+aW1JLvBn;xs1kBf;acJ$E-twyFjQ>RNb&uSB4w(kq zpd!u`v+QYSzr>3O==fM?oKG|OMlYnE(@x&|HL7wTBw z<)1b|uDQOc!BD_OvT?qR+&bL|Z?&NeEQiH=VGh|^))tIkvV*@ZBXgec#$Vn4ffwi@ z-$Df5Zinjg2q9ey8ey{qn2d6J&iHF85ZzK-Fy01%z=ntg2}8`1{Zjt1&4HJcL&%S@ zIr5wuAyup{U9et1YsR%2)Li_Nw^hH`W<7iy&zy|DN{0cN)_sH$% z44wouGi#6DzI+E4oB+<4u=MC;0Cm+Bp>9qO0g93<6n%qc0gavn&Bw#msvxkOAfz`m zoRq<_l*oy+ax?{E00k_hmhFf@8j7MH!jC0|;H6|A_5gXtj|@R`k?IZkI(;sH<(41UYaH6mu?6F3b495{dx&@vCY`8>~xlX44k<=r4?AD8i`PxQ9f5U-%3S z$b9u9Pg8cxNz^gub(s1fAT_c@%I`Mk;CyVPQ*5K0@Y!p;z9%ym$%~EQ=%$OmdhO zjKYd^a4yXmLG1zR$NUwGU_f6pf)nNjW5b#e7$|z5F9BR3h&%jqxrZarc0T`T!LbPV z2^b5Tt7Joc##H!3ysyDvRSA;(GR=^S8`y#ywQ=3oL(x>cTDy`LeLegF^t`#L{K@k3 z?g42H+plDVf7~p&+{h387;I&54t5WP*yDrj!bLhgI_^ZaHi;sg5?8o#L>3KmOIfR1yA?G&P(*53S=31D`Wc#%7;L|2ugLzo=MsWy^ zvk-6NF?=IiiI^L*lPvfbOryCx**4q*83xV(u7terQ>KJ#z!wdrnvP*h!kjR_TecD6 zs?9op%>d^nHo}YpDb9>yi5d&1jm=YtKbVJ&1DI~mz$Z8XH(kaf#48qK&;@NC;veQa z6U^OI3?L?k4rsSv0JB>+E}nkx)ej0?y&dptU-!tDy8uSc#Ka9n4491qsDj4N`5zj| z=5_w*+c6!%*2o~h6O%d_4FM8S0ptut4tW~@SDz#Ya27IovGet*QGtXRW(66;Ut~bg z40>Q+Y&dua=fwwYHFU=WblwJj?qGiUops(NrG&!+w5juKQKvx< zK|ha2kTKMiW-%|YGJ~wmgiM(4Krh6O(>YFGjCwRCMcaf870AMGS&l*W9VYUccjAX} z8gv33c+SwvKwr=^V9e>>`@i%RZ#REC;8pkDd}b)a?{$K5MyH{m`VDs$Cr8t3L&tjJ z&yRXh`BZT!;JC0Romj65KDNQH%y8P;07 z6nx}shdG$GpL@KJ{F6w5F)hA^rJekS*DS|RgM$I47Uw2gJAKOOq(c$sXikqC-0`u1 z;q4xvD+{)W2b2*TbXCwpA!%{Wh%G-o9V4a%y~&qJt_7cfX$m7i4qndrZ4`Uz{b$eN zMsql(oi_Rng|9BZ(TlB7C}BP0Eh(&YlsfN2VRY!h~U?i zd?bs^2nH|HAj78!5ZDcm7u7V8v&Ll(5(Lu42wgoSfa1-~nICdf6!bE(1vdw_u)Dat zY_O0G>R_hrAV8vwk(G=XJE~xk+*=KnA6N2lkz`Ux)?O0GPOr zJV|EW5szyu;|6x}&YhbFr#ChlN=GM6c1U)ob8cGj8h@66i~3d*sv7xpOxLjKNbx9^ zjir!32~RBAGnj+s%N#~x0mV2k62PSz z9N4_$5HgHuRfi2U*iJoct)m>tahMqhkZNq`$$;KZ%+lv3%u@0N9_m=hvN6(*K5Gfj^6c@alVy`Qd+i2XPfYZN=DH51_@B2)&%0qRm=2iJ~22W`# z6HO+p4*J%^{v ztQ{_zUEIFB_>y`F3*U@^F>=^>ZRfq-`*c*NAgPvZ6=bJHx7uk7mOwfLc%O6683m~0 zYmmbrxpsgR(%s}wJOlq#v!muSo8ISrBzx?2fmU>mkp>o&6@Td$O2o0g0o@9?j(ynR zswr!={dbJsyS3JW40)11XWmtjWf~*Sj=)pIBd*=@RpkS`E^TEsSdU9bk{9O9oUvp> zi4`DMlIIM+WgT?xt~LY8W?K!Rl6RG_%k?{XC*AIX&2k~{5i3mO2FAVBG0AjNeLANm zz0BNR(Tlon(`G-*+Slp+8RPcF#gk@sIK1zfhhKGZXt&PY&6q*5?qt4IJk+(;S_}*^ zXDhi>z@hwnJd3cVotgQ<68G)Df`Ai z0I%Yq^p`4#(9Cfhqh1()>+X7AY@^RTsmq3J505jFf7l<2Nhq8&mu*$~8|7QYa-}EJ zUFC)JeYfN*p1UWf&xt9gjdbtk*xRJ9*5Ngk&s83!7~SBf;-uoGd_1llqD?EB3U8{o zsN})5=lZUqw}s;=R#s0J3t1}}{66MV<#!(!hj#m`pLzIIhcAEi{ZAnn?Jay<#P$?v z4g^I@DOeSt>RJ_yRUlS0RN+zuZqV#Hz_tqID!^HeN={Bj){}j-A<#&AQrRbuaw-Rt~PObD)g&D7(V>{MU6=fxxT2t}n`zj7lhrNZm z!X0I&73MH6HFpK!R~2gp=t?Ff-zve8$Lju;)BL*P#d>bpjjySM+@q6{@topP1?P(QmM%zx z?{9%G^Hn;nlDpYjZskwrC+Uh}K67TdweGOQ$`U&GYyAb~U#04d<1sQs+`#JuaX&Q;ysk%i3jd^`o_bzZah&buY_F{tCbU!QG!$PLpwA$DE7#^Dhx^= z=Cc|siwaORe<(=_+X}XG&ZUk5cq$*Wj4bzx)}986Y2h^mNNQen zt!j*LTo=H$)>J&JSl^1}ie?2qd-8Cvj4S)`wXIlM(b>a86*(1ut3tV=$8=Y6sT@#+ zYRis$3kTa)&0k^Z9)Iq|vaOi#u?G_?xvPezYED+Ns)D{(uj}N&N>($oM{Zv}dANDe z9#BNK5(ouS;5;X0!6blD!K=FIstevbsxD5=spzW&*(xyV!*xr!;W2bIN>E*VfaWYZ zJwFO_nJQ2lpm*#^=PjA~as8h1YAwo^=nBB%_`=sMT1v(}e%hl8%Cc%6@N*(~5C2J- zy2;P-T&GxW75u$+8rOsfgJ#$FvB>f|g%{^wMKwIWSF{-)M^0Gw^_E-}9#?wf8a}S{ zVH(TWD{{a3e9OzRd0N}g&q0;*=kVOZ&6-fXM&{EQADrgVT1)m^e3u)2&L!LxcaalGZIPaK)l<$Y@3%?|%^{FGv)(-Wf-qqNh zKpkH9*U|H7gG^On=)GI|d*CC0GSWj5ZC%*$c-Xm!nNk((hS^X2=R&K55@Nw5vGW7#`nMVW~c3 z%<;X616wubWfYA-XQRPWvLx97cT|4h;P|OtV425Ns5=tsQnJ zU3x!VI|Xtu-c~`SA~uo%gQ$DZ=Cyu3+}kQ7)ts$0YD$%`s;Owj{hfS6gWz=8z6{6^ zi(%)3azQ-p>CPh%Ln3Yz$FuHnT=4N;e~%aiAglCjJa-{;#ZTD)fv?%Vr##KJ^Oa)= z;%ry*y9bL_w%vr{jFmDcE+0 zf7D<3l<`0@(9JToC|Qcw%r!;(ePCb}cYBI_6>{Vwg_Ybi-)Qa5;n3QhKwJSmGg1Y> zn+Km(bnYdO1pF2a#R<;qwlD+ZiHcfi+B|X3rO(q&GI!9o+Vr<57mh{`e@u!@(X`f zu^4g%UK`6?6hxMZ0qyEKEk->>QCp2*Q`E7Ge;_CG4!#t6?UDoY)CzjMF@SiK1M#Ks z?ebm{)RIjwpSrRc&Ml5NF^zC>$j5QZx@_@)`3*Nr7zgazLe>gXsx^Te=+Oul(s~t> zFsDH*mwlnKortyNpm=5bD7@+F{^|PR(C$6lXzeySfq&I3fCL#Sfpw!;;IHolB~xI6 za@}GRkw61viyA{>;4d|CVu9Z_{U(7CfTm{f;R+P zXZ^9zfDEJ1E`pg03>U)i!%#RMuy@e21F#+608b&{{Ldqdk< z<}pMkJ7ELbIKD}K2J+5)CaDrDx#8jKWB%zp*jC6Bbf%wJR=c@D9==ZrQzu1Q|;?L4Dh`T|Ro<%Vjg}Uw_opMd#Axc*MXNt>yV$&jF{fg|`3-*~ zIGCkmLb;vUh>13jogWsManEIgpL%6Gq52_qvGCZuKIG>3z!+)7AM_yehFE0GQ@}%F zN1x(7@>7Fr=nv1SutPjt`MaNv)956YiV2H6e8KSH0pu3BNhuY<<$$&NwP6NWJcg%UwH&iRjdit##Zi}M73oI7X)Bhe{i z^hqxjm#v2>A>IZKTE<*M*=h-G5JIgc@Ouy*HgXm&>i z10-j62>@h#34USfg=S>@1K^C{mOpApzm%D-jgb@1VEBu4%{UJcRFu zUE$|p*(PZ76gQ}siw$-Uwm8yjw+O~4AI9}D%aNKh=WCElC@<)5bZr3U0YD7^t^qyI zp%JgB57LI$UvJ%7%(uxqG|DKGfj%I|C;-99QKn%-D3WYPmD6J#_&xZ` zrhX3ISdhkiq95`E3M%3g>f*GAA3P5b8_*7JH?RfE5k7{5b^@Pwv#`lA)`iAUiK>Xo z(_mw9ZP)^2aX(Xn64syEBxVc^J$=Fv4rD4~UxxqFA6$ z=xDJJw`d1^S`mVi9wDM`X$R_d3c^I$P@WX%-Qw=cX+ctqIgo&!bi*~cn{9DUXq1o@ zM!DM`b{@V{B8-bM=_2xOnhIYk0uZ;u*YGq6^ENaJU_&e@sWG&vf3TUwx#JS)#QKFB zT+|5A6zKZ_KP|yYAw3DSf~{O1La@>N1J6!0qB2nI5YP&p2umaI8t6u{rChYA58_|Q z;ZxiXy}3}h-cHtO2%Ny;$IWM$N3n!49q@y2Z|FdD(53-vR+|pW6?qHoOVb@c0zQM> z=nrnxag!M02=Y6`7R(9qFt)&XBbnu9h?6k{nhjgCEjib^MZ93&d%O&+Q*(Uz38Oms z1??StY-Sg&-M-OUyMf7%f~ucP?I8S|IPW(|is0-qfdB{rndgCqs66uy`NI5q6canz z+yxLFe5HU22~RpSv+?#tC`cIOkfh9KI1_l8uxU_}!4zqeevM>G&5un!0r1lVunRt# zM%pkpfN$kD0g~MG4Yqy^KoY=$edBT}o;WzJ+XR_Tx+JpzusI2CCIe6KDaXk;hU8UE zY~^Px4u*4;zFZ)Yj#=0cFgv6XbR~IuGFIjj<_q~ezsCJec4+Y)@?{qwtt3Y!ALpIt z@&WWa<*@s$gCA5u2_Y}+INn}Bx~MbT4{e|dI?+#?J&}h2FFD^hCIqGoSr?5%kiU~n zh=%7{*wHH)**?T9$;lYHnv1@Kybht``NSB)d7^wMVx>a?$8|wZh&APhLHCOIjT@DM z61<)e;FfkK1f*sb3ZRmc6KAZaLY3xK z13^V3a-v7~*iWHJf%WsImO<)8fSiiH2;f0t5y*ol`BZ`s^5t0M_)(1xgAT_bCSS!D zWiE7*g_NgK-buODT+8>zH7o*rTWknQ8q61MUKGMaTf{}6+r-?Jd{7hykX9h6=oIm; z{GAG~0R0k6kQFwH$GlF-g*dZ{qfqG7hZETsbPweVI3bF>q>Db>b4+W4eQ>UlX;TKHu4YgiyL!QOAX?o@(Vtx3c4z6+pu$A@EJ5tdK_eDb`nB9@-Pd=48hF~WQM+` zTcpR*t82ylV6ZL2aM2<8J(*?Wv%~NyIN1h^z^WRqQul={3@TOAC4*Jb;YsKCPFxS~ z!B#$9*}Bmy%C#D5&N)TErcL;L!J$qiyV92%D$XafoP#S_sToZmDnLQf7xJg~`IStq z(7(`O+30N8zo|Jim+4_%Y<tumUzEETwtDZ>t=ua7fs&tMz8-?Trd&w|4G$%%ANUvSQ=7C+51@Vb$Hr zuAYVK;2Z`awYH$M>dJR1V=(}Cb@*FFfgQb~={DO_jKnzd2RWEUCFfRSqUf>T%mR39 zjy*hA;_N8|qFAQSeiVR{3ek?{pnQB;&`6KW_Y`ZEPsJDcHGv`z-aUvX4tUJDE$PF3 z1gKq27V}hc;*z~FM@3>RQ#_LqEBb6Jh5QF0z)=gym<(agie{Ioa1+xXe$w z(%hnU>>hh??nE=aAAfG)J{Pl8^H7WxZkugjg`Huug)hq|oGhas!~KJt;7q7EtK^Y^ zR4BO$YIiiw3$lpoN@kaF56^1sZaPFz_O9(ztw(uRk8e`J9w%$r_KrP|paUd`Pj-){LSM^?UJ{wuk|2hS8=IN$O)`moB&t$0ZD zH{PBol>h-m(Z_UfB~crgw{f0VCGo{H@}&7w6R63d_xG z-Q1gw$v|8DjsCe$D7Kn7l)uDgi?$DAV}reAmqhav3qvmQGs=kg)4SP0Ihz?I0yJmk zP#nrwY*>_s<>KqBuCcnm3dE}6*(%KHwMrnitJ3itJ2LIvpj^ncyAiN#XXVS)TKDxT zxz+kA9+`Kg_Z}asbB_JJ$%|_$d8;+m>sAa@_gD75y12M!IfpslR-mcmUtt2qh-%U* zf39!|!JXHwiXQu@`W#VsJw|@ZrnMN==3vlU6b3E=oHtc0mQ9kd=c)kWHRiVm%h{im ztt;AM&$8k~rG9lDYUkE=q#!LZ8|79qDZSKsysqY<4k|`C@waTal7o3EU#Y^R z_-yTL)VwW_!#OMeY!&~?r>L{?8~@t^lvR9PU0lZ&(pxpGD(+W!!S}1UyUuXhst~#! zDlb*sskm2|v`6L@rmb*}ZLij@Hg+n1_h8KmM^x-7IjcCv*R74v9+_9KD>__gmECwv zrOTGSTXL^zE*`7KquOAqdV7PJu0VZDXr{3$uD)&sHf+GvZa~pk%~vv1yQEb&xVm1+ zqRw$Bda5X>HLH897vHOBRmG*Up}JOq`Z=-1*A?A!8=h)@dqO5$V>1 zzV!8bf;T0p^A{iFJg2a#u}ZG8P#oj@b9N&5Z#CD1?Y9~>AFD=~<^Q>uwX!A4pk&<2wN;%}bJ7O`cMqk=-h#b@Us}I) zzO}xPqjxj@kVg7Yh-h+{4;PX#PuK?eZxtNpFOQj=^AUd7TiDdO3iNRv1^SDA1i+4E>|=NcVkq| zoy4oLXq(2}7^?;pa(lUfugXKj@`@Hci#og01!Nff}$LiyywusWh$wO zmUNaX3~*1b*<)+7l+1%4^E@YMio|98WujI-+rx9GOnZ2Z#%`57J9)Mh9grshlWKHO zW{HTTX7LrIk45FrHfgv)MU^Tw?My(`HKI__X}A{U8$i=z{&JgE~#U+ zPVwh8D#o$sv5dS!JVrY%eN1t~qitZcJWoV+&If%{b4bUsd0gf5Dprd5n;TexuX3Ka zC*xe@{DQ_LcAC~R{>bkUP%@e~0TmD-vnqjBPT6wUYKM#9y9EpzffME_T~@lU5@~gv zX*plEjj|EyzS>=~Eh}1;uU7L{HsQfE_kcJ4WBIDaiNG;kS9&U)RSdAar#Zcw{xdIS zn-v(Kd}_GOu>f-eQZ*!M-pYp@heFn}(9yigC!0@Vh^Bn<$MSJ=qU^zTT+t&P)Yt2# z^Hpqe-WKsJ3;AlZu#%DZ?{4<196 zViN4X6<(S}v8>SC001BWNklO^U6mlTOer`{;Vd* zwXvfPa$r!bioPmB6%Ss+{|bEqtu48g3@m45Te_CMwzSgiL^J%2bOj_Tp!O6~K3?sJ z6n*l2x!bLZ2Gdl!EaH6p`qt63eO9reuB&yG|M^%o2aBSyDqQ?lSUGTa$zL%GyOBX( z0j!CTER%sChfK@7+H z3}hfq<^giDrk20O%dq)VaIU4k`@1*uBEU3C0?BT;fa9Ktx86m zTlrprtjoCq?=63*!f=}JKSqN-2@Mv4moMX@$JbF8lpT1a&rYbKB5c-sPep(Dq?^uh zrsY%6w-9UP7X~R@6THfT!OIC3_^rhyFW}kW*E@qQyuN5i!Wxb{^)04K-y-%p+EmaV z>y@6UtBUz%sWybq0%1G=KS{6R33PdcFVpJrTG+^{^}wh4GAaCQ+K|7BYf+z4ZB;ez zG-tjY00MG>P9L;l&@>CbPahhG)BNhwy1n;tKdd>)vHZlW3MAIYVq+1EtAc?FrlRfd zy|qKz{v3c5UhsF?>Rj5c!!f*yPO~5Turt$EJ83SCr5Y-MPks#G#B@BKsBmMPrN4*} z^V54^D2Kru1R|dUu{9Fz%4&{aFOA-4b~RRGX0%MbZfO`+4Erq1J`Y9RQp z4a}(Uqh9#R`8DWw`PM@9;V=2L<#gN*E&Q3Kna6gdk?i5~8Q5`d6W39Ms<^O>++=oG zgW%7_yl9H0ols_$WvuPSwpMbdC$FSS_#p1;t%ws(wDX7`*kBCYf;n3sd{g+AeoKIt zc8mE-d6(*dX`6+icnkT}`~EIZXcPc*ah}tNw(sG!YSIwrT*uI$b8gw{gMp-A_*5_% zco>h941%8n@rquz*4ns#RRnsN(@{C+1*7*~equcB)~~Lnxf-N;&>Pp_&m}hxY!#5J zBrf=uT_=HFYc2Vv`c!;t?W$oBiKF<MYi zPx{0+0sN2wKW%pN#F=f?v6*7;#3JSm74qn_0i2(JcOSv&G}7 zYtQ!t|LJG3sS{1m6>pEN%%k@X&FZWpIM?f+`%A|b##cMtcLQgvoSSJ~yLh;N51i05 zDZ6-t4+?is;w0dh(|CUL&~$DKM$rJ&1Dy%L{gm7-6#Lj&x@>sA4H-gk0guUtb{RhV z=(Jt-21(OHw}t@|5(Lh}Qwl0Pd5w_Y{nb&fSa~8iPQJNNM*ko<=Ef6}97bASNbqX$}*jre+c>Tr_R0X61pMHl6nae=nw+*9-nVj?y) zvH3n-4KJ0B6C?WkckHJoX8LXBS|h!X=4=oK?LPI6-@g%KAm;Flb%noJs1QTvwTiYI zG1{Y@x^0!?qvnL`oHHk%_Hm1_tdk5F%TsTkKk{za3*#qlID(Db&ZpPu3&6M|>tdF= zBJ;TD;hMrITp#blI$5ui5NU+(3BaxpJ9sXPbIlB3Gz#uk4W3&~M@E2&ibll(z=JIF z{Azwkq(qOCY8F!DF=d{*pga?Zdbp>IJp!oMWd$%0y3fR(w4?4BOmN+7%xFgt_;Uk- zO;!d4l+SIbeChOz3borJ^2k6NWyK+5Mh(M3Aigx2%a=_)n za&%?3Y#;okCSJ-7n?T3kki)&L-=59R#i9Sc2R%=Yk z6xS%e-Fo+?yal^m?PMUHN1(^IjbePEe$ftB_F+(EV9#-fI$>P(X=sa&seAF41_-h$ z?>N7W2=oC(c}@>=bJL1NCC0O;qpPw*iG|?HS;szJzp`Mt( zY_EB)p88CDD{Rv(b zPv`s@gXpLD8gta&X2Bd(MY89AOdfKkF7O)g@reTh^}N;~#K9h;=wrT3duBO;z+>)w zoZ6>Yo$2t?LdLZ@SH?3KjB#W(I;anitLwajPBsDgke>zH&v~wUJ7g@${))be1!3wH z-=>Z6nTsILL3}Wfi=JY_=L06sW}(RO8a^Jfa8Xvc5o2=VkmWVruu}YM>~uLA$(;R_ z#?bR>UK{yv^%}5qh=#d?V_sl5;dzXe2MgyE_|Ct3a=_$(WuPeAzv0CzV(#ShK@m41 zy+;!L3GF0f>p19XT~}*Z;8PNZq(f&*<6`hJSpj0`=mJ#dam#bDz@Yd;ZB<0wN1#8F1Cl7pcGB1Risp3c>hr52E#&V}e!tdP z7B7BbJ==k}AF+u!9*VqZjO68Ls{dzITkK22sj@gcv#) zUl})s{G1Dndw|DDSD1q_*2AUTv_eekzYa*UP!flN6bV|J4oo$p_ZW97)>*%9(;2Q^ zZhBAW*dVx5$T^|uQ%QdkuDX?ug@aM%DBxT}z7E#|p*|Z;8H+90BPHF*M>DU%hKr_| zYpN<^8sL$;|0MD*kA&1aqp1p zDdi0g#8n0dj8EAJ37v!wQGRc%<}%&1hk5uy&8IiYeOv=44cUF&)Prk2Hh|8X{o8xL ziV+k9W6?JiNsl-snI~aQj}sCOTC!J+4dma$5|wN-r>JPTuBr|q_WFFZo3CeOJwmg2f0p#n5r$o0@k%6 zvD=)-xjUAj33VShbwqln!v^z=ZVw`eO=^P!YYxJG@sxueKm~IjLEeLyK@mUfkdmqA z%jwU3Ml$;+oLSaB^~AytG2_Rbl?~2;1qdLVlpgr_H^jb1J>?*}a)8{ao@3$<+EE9# zulou6wUn&jzY%+(u%6D{@8bi0QNAiSxDQJmGsqi>(P$(a%1*Rg-k305({-6Zw$U%) zdH|?ErpLL+j%vfyQ#4>Bc5Es+b_uL2f(4Qf2?Sz8ypD@3D-X8?gVreQTr;u*2VmkZ z4D`T1({nxnJ3HYSTq-YDWViR@3nSb!HlC&R7uK z3hP4tQam)2nQ~+b9xtW%100a@(gi$od><}wy|FjsoC2j(ZHRx4*g|}VUVt!-@oOk8 z8moxm5Vvi{)T#W3reHJ%MQ-8z5mM+|j4iz8w!j7j^c&NQ81eHU55A(#-Tyk^NDL69 zU@Z!UZ^2*!;~4qR3R_fUG&?7wbB!3+2AK7$>G-#zea;yS+T`udbO6ZRA=rVFh~{xJ zwFB@0`=O40KY=s_DkgtJ+d|^|y#OFb;6>l!)moG<G^;~ z)22_FMHzz}J^I#P-5y8>^KH0~zdVJ$AZOTx91~(>$2abwy|HQMW^VApg3UR7oX3Hk z$GXUKmyh2@p7_y2K84(b{-7UEYv@Z`u=xnNfd#TpUvvzr(?!mCOt$d>+OY zzHNoMrLf3}51VugO)%G%gjpm5Ugvmoo!!2HrrYZjJ2$$Y^a&Wl5EhMqNja3IFAxde z6xZ#l%|OA-qEk)=YaT%0+>T&LfP=fi!5j2-F~d4=uItKjSA}CZnj(B81Ip^W;2Y@t z{wT=Dc^tw2%4Vn&@?em~!a8^yfF2kmG!f3z{X;=Dzz*#%0uKXhKE{tU(ifCCZ=%Od zPe4Ai;6t~?pwTS)6O$SaS~D|j_DGjhL`6|Uwb4(hafG->A18k{T8ergJ+ce$s>c)p zqQR?YI{3A_L4_mHuxy(KuN-e!*M^@6*hdb64T5ozw<^?9&=4oy?t5$`j)V=2 zXKoXhQvh;huk@{#6mw_`#v9B<`Xhk3!ND&@BJ54JQE>$_#GPniPm6Rg&WEpEZpb&) zn2k7b9LC%R{l_^3VZu6SXu<{(?FV^}xD#>}@g3~X3Nz+}h7j!A$?kry+36nJ5OfK- z4*H@UQ0Gv$`LA#YdkzDr+%OpMJ{Uki;qVCRBz)M-L9s*HxceK1^I!&J@EFd(uU!Pg zb&I@5lL7of(4pL@9~jd>C+^%*kh`3ifX#wU+-|J9kMIqFpt~x%<~1yKC{GAx1Sby84s*fAvx-<=guLB8)i3D^g1K4!LAJD^?LXhOIOC9r0{`I;1gd)Wg49qX|x66@q z1i207skLD~=oJc&%a1~Jag4UZSi^YnSRoASVr_VWg7%<*HPCn1 z@@T;hTqlNkRdK<2XxEUOkyao>buQpA=s)a%oA1-Q;bO!o^o>n_Al@6S8BeH`{XtH* z;~@l&MWXmBAFDx-agwID2RfayF})aI;U(H(?nxPbRFjh1Y0-C*54#-+oE;o3+9k-& z-wEF6x>16$8Txz;kM)NlmXdAg3wnxBB2HD9@16awod>;YNSQiF)F6b5;fRGQ^^quB&<2&d;#~q$Tz*`fY*5l4BBy-Pp z8+<(10GNVFj{!RZfMJ2<#-DA9JO>@}M<_<{n()H^gLn$DeOiMuWA235>yuU^A0&RL zPp5p5U$Gta!`~_x*N6rd&cUC28HzJpXCF7xNj>pI9-J3r9@#1Q`53QbQE{0=V-c7} zY#I7<&Jgwtm02dRMc{2Q#$-MbACytWMe>P39<(S99)wtjf{GaFa>@D!`Ng*6T84Sj zU{Tt%F?|&S)VKtU1Xmr;?Cq^D$1KpN4r3I+ygE-h!7CsKR~~3`c2&WI zJ|w5eh76kxi#nz?6a&pHJf17#o59NI3h=cpdO{a|%ssAQ&MCWbP6F)|7vfmja}md# zbmj8|<7eb zcnbcB2lJxe31E9MEk!59G2`zkRvO=D8L`n?#W>kD)DIy;S2p7qgY}LZj?JnuORrU< zy2ypFw#rMEeUZQXR>!#3)n5lxfn?MrL+6{EQ3<)l1J|l+CoNV0J32HpJ_dzfZ^iws zv6`ps!9jiIsDdmUi^gV7+NN2}+YDG$oM`=Cvr2jj*zg|c%uf=+dcN0bKHrD#{QqU| z-M?*1uJW*1r%$(#T5kb*A+@CN3TEJd85m;*VgM0fBqN+S!H#XP{3qnE$p8^Th#f$( zKwt=#AvOjw3?ar33>tJxjU*%lLT|NN-F<2G_4sU!#G;A*cK*`?R( zN?GYx7BnWwKCX0HfW6$i$m?>i^4%&17crn7sx&PlJd-(wqw-0m_X?lQ^aTkO+1+tK zX1*hq_K{9~B?IXhb#j#_E4lGiExCZE-#NjW;W%;49bxDpf=hKd{&++gP-4Hl#kt^_ z_R_Pnd2V%8EU&1G0-2l#^JbR6NLK(&b&E3DxdOiPJAYrIH&PTS8zUEf$jLX-SaHF_qi`x2z7z{Ptu-MZ*+9rdF)ZU^T@}~BJBBH z39vd=^HsyG_)$I{!q5f%BUmxT>kihrtfdTU`weh;Z{Srw%kOueu2DI@wN)`Iix{2f z+YX0=sm%$hK3C??C09<~YF6j1dUq$kSJhNvuH#II^L`RYsAd#NwVd!S(M$s3=8@5Fa$lOhh) z`rSsZi?{=vz;k@(s`70mtK>z;&-t>ivIpMyL-wo}9Bcw^(fH`^|E|67o&SrO&33K) zuI#_Uz_f<#O>+r{i(9{1(IXdc*HrVIRU#|_+h+N0auv%uO;s{o-&#!BgGRN%CinEYO?JCe-R zd31=9P0?F{D%<5qAy$E-bl3|%ro9Ku>|141#YY_<<)>^>1u>7kL{;+d#m1i9nEy)N zOZ-*6O4*7yuH@ST<0E;iz<#J6==e{mNd~ zI9UN#RRoZ^2MZ4lBsPHJp`28`S4OT1Co5m+xd;B$x{4R?T@^qcdxh!<_$iz1?XP58 zHAKuy#l;>tR57t?7L?tUt$D9{&$1sGt5{os(h49d9rud%UJS4Dt&*oIj4S`I?C;0; zs^V;=PZfuI{P%K}WkJ24_Z5H59{AqBXZJqm{&~~Wa8w1@tS+Y2{=H(j+OO8JKbco0 z=L&zSe7i&@-m}7XmQlsJY9>~^R{mmneZ-##?j^?R+zNP(7R=TBUdI`)-O}H}?-kIB z&nmc&+G&!_>h4s@%Im5`QAto0(Ut5Ic&@%-UaZ?oYW&6$uGzEWUP0rve(p%zRCGL^ zRyI(e!Sb#erJP0mT)X4<(VLox!s$3*A%Hr6j?JOCEEy3#LfV74xTB`_>>IAoJ%34~CV z@`s?RhV1C5E=r@BQdwxUW841GAkLCPJ0&uWo_&9alr1V)&N0e zyu)Dc>(tufTm^h-x)tw%M(B^SuH@k9q5w}Iyr6$L$dJY*#gX4%5a37U3UOBPV0te3 zfoSp-@G{15t>yhvpOp=}e0vBCr<{1Rg)IQ(!?6CDXKtwBiqN)hHrXa zw}&Iu4=hPMUkurd5YN4)b;7TkHqUGWBiX9_=l$E;tI7}C>vi?{$WlOFgTg9sWd~vs zLN_P<(&ocOZ+DNkDA8*64)_deTR^}YYlUh*|xzZCPy z7)NTxz4PP8xzMy@xwCGw#daq zz(#(UNzBCy5sp>lm2$ms%w8VF1DN1^Gs1S8_gy2g1j@u11(?7I-p3(2O(bPFzd-?k zxuhJNb7M9jH0{T|Y}}sLxL*EbsWN~ndw}lpGbdH#P$^-w_oAIbv<*D`^F@@!Nh$heE*C{%y7EO^BW)TojyByfZX#w}pDQcv zHVKZl0r8R?8_m$ADp+U&24d3FZ=Fs)D(DVFfZ2MjlOKl|?1!T2#77y<(!mSu3G!h4 zCwaLb*nBLpfYv?x6<=cR>4DRtEGYE)}E%#YBh)+d?KUMAv2 z#E|NoHUIG;O2e%z|T9uzQj(jI&^WUxN;W~YbE$fn`Lo^?X| za8cpJHMB3tjrL1Vb@bT4$Cg5|NWl()o#;6oSQ59zQBCj>+o8%CG!Dil7x2lK7}uES zpnsB+KnCMI(M3~$j`$=pLz@u@1%Ky-vFlHV!`N~@FgL}3FDrl@a|WMmriun`j|&F? z%>ZfAtpg8?S+`?~v#TM;G+MJS{_Edoul%;}v8#LT$*0I1sB_9QuoI=&MaABE#Xgm< zv`+0;a!j<1NO*zE?m8=FLQ$ws~#%o-h~n3tzMROamY4WaGWz8Uq5bCUO^*?wL=r z6~r&<6@JHjMY?DwT(4>n%Z%}kxhiBrOj7yfa;duJ!i~QU;3uG|O=wd{%9N0xqti`5 zNk-xTn7Wm#L5G9O_f^2!&CbOMuBu$nhU-yYkP-dmZ{jMA_Ip7_Cn%8OyDH5=m~1iy zSpl?IL_LTRpfCwTW^@+N?QU;RQh0(MH*u*^@i~wUbw@v;Ox!qxJ}9fuo9{4KJJX8z zy~;MPVmKuwBvx;F@9O7?rz>rvbxy-YZV>(ei$HY0D1*N}L9ATm7(sh;tWM2JKgUHg z8xKoqM31kkf$naXL^(G-Vi$DBEnIL?BWNIB%XW^~+wu+l7I9#MR^Rf1Kc7am?z#Vk z_Q0Ed*k173ubO2iy`#CnoGI4CTGAQ$PnZCFr}!Y5B9%R#n2rq_fJxH(2ExRHe0%}! zJ6VcfpT{`F$EP#yby%AkKk%o#5TU&WvLNOf*eMEehnJpd7}H0b#aQV>X55PpG>W^( zs1MvB?2aRDU&QYoWDBO)Z!`g+I0i5c1kIFqq(J&rF#sHQ zCPyOpV*;HhXdBIr=a39Xw;v*Cpe|sD)Eqz}b+Z5!z5|f>HcK{}?p`p6gY&Dv;($o< zka9DGhyVZ}07*naR1K%biezLPBmi)~gO6MHl;q9|k{ad1Lc|?^`ofVjL%GaSqZ|%0%khNzlD*U20E+)8giaRo z7uNvm)JRxf$9vHRQ+!gMCV)d7DA!Pr2Jdl;p}j%fRJa=G1LrZ0@Bi}u#$NNc{=VJ& z+~;KsYqO1fKgJCDM9m{cOt@g#j;sTb8e!jQy$xB_73UTJS@q-NpW2f6% z;cW27I7z`~DSr&t0`5ngo6fIPk09sqf`G9g$>8?mU&KUg$6UGsI%x0Hd=8uP&>!UG z*a?wPHvR%6Vwn+b13bDq%QWTi)sW*Fjeri|<#TYt#3|knJ)6DW406OmHgCfTpfYj z(_I%x$N-4byhjzZBn!<2Etf}pNo4|B6pI=WE<~Y=YK|=XG{qA73z96`@VubIUc6#W zs#6Y4ifpf#SE(7|FIt&C=F^EzPcJ&XPUQPIx8=e1zMtAeW1_`0IG%Wu2Wjd`#xxh* z0J-8%w#+D3RNTe7^X35ed#>$e-~Qj*%f9LLSq`MDczS*i2xB}<5cj4g0et}e8umNKan3o# z$T9|kZgGxf61I!C5fCk390(jsr4Zjc3A8KhLAwMwl7TPO%`9E)`*i*|z!xfjx130Q zy2nJ?r1Na}>;yD;>NHctk(^NYQm2n}nZ79Q=8X&$3oMFhJp~JDR6au;-}jc*BwN}n zL$U|Hwru(dY(QQKDhYIv0NA|c4YSWpALBgAieW$rJYCUk`%-as_9(ZtRO}O|SU0<$H|)h3)>5cXHpok*EfgSQqtaZwn9s)HiF&|><&7ro40^X9kM{V#h}#t~Luq} z3G(5E$TWyPHlm78kOto+j$cYl&JABGYX!NXne|h*c15ucxsaMCj!~fx3eo8}3z)YkLq@|Rf}@8}ZTss0 zUQi*~W|Ng#|ENv=!iP8Y`kXJhwr=?+S%`&Z?sZV-ut%46$3kZVMgY;QV0_gW+;77 zXK%VUnP2#|f74$5-GA5ax$jv+-a0*%0D7*Eniu=)V>G~skMR+Xd6)mM_7uzcv zFuqOq{%33$=M3TtYJu1vF~LQO=}p2mp(A66=l+?0#2D0%Liy0aqt}~-9P>6BCRKpD znZ|m7bspn=;1%LK6}g#Lg|k(_bZ-LE)emo~q7Y?4=b{lj*=MJtLC#L;v@R>r1Ell$ z^Bf13P4cMy%**#7K(*HMc`vpRv}_{;xgpowROq1K;t_${9DFw=pg0e(M{pelIPrl3 z<+R7Tu{YZZZ0Q9%@x^6mbM(WAvEXtVHl02i0G&7~&NSJEV0XNIPRW;OrWl7~XhgCO zS*N+kHt<)UYGTbHXY<$9v#^1u+{m z(2k5d-7tRgT7Jz%LE3Or;n^>Ht-a>^|FM11i@$_TdUubbh5o5x-$%EQ@PIDHxTzbs zlIw}*UXEkN>pZV7YI1?CM{Y7=%ZV{z#%AP)d4|}nVr|gQy69#c?J#4FY$%NDo>AV; z=ZWide61DF8{#Se0DTsCU2t=tP@;D%thsRdKCO_=&PZ2L=i>=D3xmuBG=pvq=xmFz zCWBlCtS)85h9$0=lFZo#16Z*TGPqh=!*ZbCaxucB#)e^|3xUhY<3-(N%8f=(iIfWl z#~y5O@*2MDupW
<}YD=<{B-n^_NF80+V_(haQ{0$GkH28s-> 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 z&#h0s_W0_~S06t+deP<9028029+Cifruktus@users.noreply.github.com> Date: Wed, 20 Jul 2022 15:30:47 +0300 Subject: [PATCH 10/31] Dependencies update --- android/app/build.gradle | 5 +- android/app/src/main/AndroidManifest.xml | 4 +- android/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- pubspec.lock | 166 ++++++++++++------ 5 files changed, 126 insertions(+), 55 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index cc3c6b1..adaf2dd 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -32,7 +32,7 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 30 + compileSdkVersion 31 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -50,7 +50,8 @@ android { defaultConfig { applicationId "org.cifruktus.mathtraining" minSdkVersion 16 - targetSdkVersion 30 + targetSdkVersion 31 + versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c3b30b8..61bda48 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -9,7 +9,9 @@ android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" - android:windowSoftInputMode="adjustResize"> + android:windowSoftInputMode="adjustResize" + android:exported="true" + > + + + + + + + + + + + + + + + + Math training + + + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..184586f --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,12 @@ +{ + "name": "math_training", + "short_name": "math_training", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [] +} From 704d78603bf9f32abb270c3fbf509cfb94763176 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:14:17 +0300 Subject: [PATCH 12/31] Numpad enter now works too --- lib/widgets/game_input_scaffold.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/game_input_scaffold.dart b/lib/widgets/game_input_scaffold.dart index 5942322..6c3f5e0 100644 --- a/lib/widgets/game_input_scaffold.dart +++ b/lib/widgets/game_input_scaffold.dart @@ -89,7 +89,7 @@ class _GameInputScaffoldState extends State { void _processKeyboardEvent(KeyEvent event) { if (event is KeyDownEvent) { - if (event.logicalKey == LogicalKeyboardKey.enter) { + if (event.logicalKey == LogicalKeyboardKey.enter || event.logicalKey == LogicalKeyboardKey.numpadEnter) { _apply(); return; } else if (event.logicalKey == LogicalKeyboardKey.backspace) { From 34d5387364d2c971966292b468599883fc53ad06 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Wed, 23 Aug 2023 19:20:27 +0300 Subject: [PATCH 13/31] Upgrade versions --- android/app/build.gradle | 2 +- android/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- pubspec.lock | 448 +++++++++++------- 4 files changed, 268 insertions(+), 187 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index adaf2dd..694b63a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -32,7 +32,7 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 31 + compileSdkVersion 33 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/android/build.gradle b/android/build.gradle index 776ea4c..8d1b929 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.8.22' repositories { google() mavenCentral() diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index b8793d3..ffed3a2 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip diff --git a/pubspec.lock b/pubspec.lock index cb63989..ae0d6eb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,219 +5,242 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.dartlang.org" + sha256: d93b0378aadce9c1388108067946276582c2ae89426c64c17920c74988508fed + url: "https://pub.dev" source: hosted version: "22.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.dartlang.org" + sha256: "581a0281129283e75d4d67d6ac6e391c0515cdce37eb6eb4bc8a52e65d2b16b6" + url: "https://pub.dev" source: hosted version: "1.7.2" archive: dependency: transitive description: name: archive - url: "https://pub.dartlang.org" + sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" + url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.3.7" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.2" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.10.0" bloc: dependency: "direct main" description: name: bloc - url: "https://pub.dartlang.org" + sha256: "6f1b87b6eca9041d5672b6e29273cd1594db48ebb66fd2471066e9f3c3a516bd" + url: "https://pub.dev" source: hosted version: "7.2.1" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" build: dependency: transitive description: name: build - url: "https://pub.dartlang.org" + sha256: de3ecca84980ee5e632888a04f4a72d8e3c390104fd5edb3a724785f66e9e97a + url: "https://pub.dev" source: hosted version: "2.0.3" build_config: dependency: transitive description: name: build_config - url: "https://pub.dartlang.org" + sha256: "9160104f468c8117f7dddd3c94d8f440d0f82a324bf29eb84e0b434cff7a0e03" + url: "https://pub.dev" source: hosted version: "0.4.7" build_daemon: dependency: transitive description: name: build_daemon - url: "https://pub.dartlang.org" + sha256: "02d9e94f2b7f6e4de0f0cd24dc9e2cd0c00fec082265ca89d3b32282cb7381bc" + url: "https://pub.dev" source: hosted version: "2.1.10" build_resolvers: dependency: transitive description: name: build_resolvers - url: "https://pub.dartlang.org" + sha256: a171129ff393d360a5ec9ba3a2277e0d7e713027709f08196e8192688b537074 + url: "https://pub.dev" source: hosted version: "2.0.4" build_runner: dependency: "direct dev" description: name: build_runner - url: "https://pub.dartlang.org" + sha256: cd95f4d4a6a13b0dc1408b0a4b086bffdac08dcb61e45a0e1f2f58905d4c97a5 + url: "https://pub.dev" source: hosted version: "1.12.2" build_runner_core: dependency: transitive description: name: build_runner_core - url: "https://pub.dartlang.org" + sha256: "653b9dfd0472476ca837ef62786717434b8fa4f5e5521c85d7376dd3234aefeb" + url: "https://pub.dev" source: hosted version: "6.1.12" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.dartlang.org" + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" source: hosted version: "5.1.1" built_value: dependency: transitive description: name: built_value - url: "https://pub.dartlang.org" + sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166" + url: "https://pub.dev" source: hosted - version: "8.4.0" + version: "8.6.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.2.1" checked_yaml: dependency: transitive description: name: checked_yaml - url: "https://pub.dartlang.org" + sha256: dd007e4fb8270916820a0d66e24f619266b60773cddd082c6439341645af2659 + url: "https://pub.dev" source: hosted version: "2.0.1" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.dartlang.org" + sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" + url: "https://pub.dev" source: hosted version: "0.3.5" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.dartlang.org" + sha256: "48ae73ba8dbf1923de91e0fd65736148f63f6c6fb0925bdda05c1df0298c55e1" + url: "https://pub.dev" source: hosted version: "3.7.0" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.1.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.dev" source: hosted version: "1.0.5" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.dartlang.org" + sha256: "7f5b48e6a448c4b46250a6113857a00eaa82821ef5a3d7f42e68eb69d1283fa3" + url: "https://pub.dev" source: hosted version: "2.1.1" equatable: dependency: "direct main" description: name: equatable - url: "https://pub.dartlang.org" + sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.2" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.1.4" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.dartlang.org" + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -227,21 +250,24 @@ packages: dependency: "direct main" description: name: flutter_bloc - url: "https://pub.dartlang.org" + sha256: cdd1351ced09eeb46cfa7946e095b7679344af927415ca9cd972928fa6d5b23f + url: "https://pub.dev" source: hosted version: "7.3.3" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons - url: "https://pub.dartlang.org" + sha256: "559c600f056e7c704bd843723c21e01b5fba47e8824bd02422165bcc02a5de1d" + url: "https://pub.dev" source: hosted version: "0.9.3" flutter_lints: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + url: "https://pub.dev" source: hosted version: "1.0.4" flutter_test: @@ -258,268 +284,298 @@ packages: dependency: transitive description: name: glob - url: "https://pub.dartlang.org" + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" graphs: dependency: transitive description: name: graphs - url: "https://pub.dartlang.org" + sha256: e84da18c5bd9854f4222e62d762e0ffd290726ffc5785dcb976f8c16ff797f5e + url: "https://pub.dev" source: hosted version: "1.0.0" hive: dependency: transitive description: name: hive - url: "https://pub.dartlang.org" + sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941" + url: "https://pub.dev" source: hosted version: "2.2.3" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.dartlang.org" + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" source: hosted version: "3.2.1" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" hydrated_bloc: dependency: "direct main" description: name: hydrated_bloc - url: "https://pub.dartlang.org" + sha256: "1e8a67ff40604d30ad2b9830fd0a509fd5bdd8992ad3b0e38ca358eb1f58f3e6" + url: "https://pub.dev" source: hosted version: "7.1.0" image: dependency: transitive description: name: image - url: "https://pub.dartlang.org" + sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" + url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.3.0" io: dependency: transitive description: name: io - url: "https://pub.dartlang.org" + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.5" json_annotation: dependency: "direct main" description: name: json_annotation - url: "https://pub.dartlang.org" + sha256: "0aa7409f6c82acfab96853b8b0c7503de49918cbe705a57cfdeb477756b4521b" + url: "https://pub.dev" source: hosted version: "4.1.0" json_serializable: dependency: "direct dev" description: name: json_serializable - url: "https://pub.dartlang.org" + sha256: "86d3edf6914d6562ed4c7d9288239fbf1a9ee3c498ed0089a535c0d3703bb323" + url: "https://pub.dev" source: hosted version: "4.1.4" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" logging: dependency: transitive description: name: logging - url: "https://pub.dartlang.org" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.2.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.8.0" mime: dependency: transitive description: name: mime - url: "https://pub.dartlang.org" + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.4" nested: dependency: transitive description: name: nested - url: "https://pub.dartlang.org" + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" source: hosted version: "1.0.0" package_config: dependency: transitive description: name: package_config - url: "https://pub.dartlang.org" + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" source: hosted version: "2.1.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.8.2" path_provider: dependency: "direct main" description: name: path_provider - url: "https://pub.dartlang.org" + sha256: "909b84830485dbcd0308edf6f7368bc8fd76afa26a270420f34cabea2a6467a0" + url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.1.0" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: "5d44fc3314d969b84816b569070d7ace0f1dea04bd94a83f74c4829615d22ad8" + url: "https://pub.dev" source: hosted - version: "2.0.16" - path_provider_ios: + version: "2.1.0" + path_provider_foundation: dependency: transitive description: - name: path_provider_ios - url: "https://pub.dartlang.org" + name: path_provider_foundation + sha256: "1b744d3d774e5a879bb76d6cd1ecee2ba2c6960c03b1020cd35212f6aa267ac5" + url: "https://pub.dev" source: hosted - version: "2.0.10" + version: "2.3.0" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" + sha256: ba2b77f0c52a33db09fc8caf85b12df691bf28d983e84cf87ff6d693cfa007b3 + url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.2.0" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: bced5679c7df11190e1ddc35f3222c858f328fff85c3942e46e7f5589bf9eb84 + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.1.0" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: ee0e0d164516b90ae1f970bdf29f726f1aa730d7cfc449ecc74c495378b705da + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.dartlang.org" + sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" + url: "https://pub.dev" source: hosted version: "1.11.1" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.1.0" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "57c07bf82207aee366dfaa3867b3164e4f03a238a461a11b0e8a3a510d51203d" + url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" + url: "https://pub.dev" source: hosted - version: "2.1.2" - pool: + version: "2.1.5" + pointycastle: dependency: transitive description: - name: pool - url: "https://pub.dartlang.org" + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.dev" source: hosted - version: "1.5.1" - process: + version: "3.7.3" + pool: dependency: transitive description: - name: process - url: "https://pub.dartlang.org" + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "1.5.1" provider: dependency: transitive description: name: provider - url: "https://pub.dartlang.org" + sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + url: "https://pub.dev" source: hosted - version: "6.0.3" + version: "6.0.5" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.dartlang.org" + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" pubspec_parse: dependency: transitive description: name: pubspec_parse - url: "https://pub.dartlang.org" + sha256: "0e01f805457ef610ccaf8d18067596afc34107a27149778b06b2083edbc140c1" + url: "https://pub.dev" source: hosted version: "1.1.0" shelf: dependency: transitive description: name: shelf - url: "https://pub.dartlang.org" + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.4.1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.dartlang.org" + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.4" sky_engine: dependency: transitive description: flutter @@ -529,184 +585,210 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.dartlang.org" + sha256: ffb7124eb6752de71e87a122cc50a8a191044add69fd990d76958bc38ee552fd + url: "https://pub.dev" source: hosted version: "1.0.3" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" stream_transform: dependency: transitive description: name: stream_transform - url: "https://pub.dartlang.org" + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" synchronized: dependency: transitive description: name: synchronized - url: "https://pub.dartlang.org" + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + url: "https://pub.dev" source: hosted - version: "3.0.0+2" + version: "3.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.9" + version: "0.4.16" timing: dependency: transitive description: name: timing - url: "https://pub.dartlang.org" + sha256: c386d07d7f5efc613479a7c4d9d64b03710b03cfaa7e8ad5f2bfb295a1f0dfad + url: "https://pub.dev" source: hosted version: "1.0.0" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" url_launcher: dependency: "direct main" description: name: url_launcher - url: "https://pub.dartlang.org" + sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 + url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.1.11" url_launcher_android: dependency: transitive description: name: url_launcher_android - url: "https://pub.dartlang.org" + sha256: "3dd2388cc0c42912eee04434531a26a82512b9cb1827e0214430c9bcbddfe025" + url: "https://pub.dev" source: hosted - version: "6.0.17" + version: "6.0.38" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - url: "https://pub.dartlang.org" + sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + url: "https://pub.dev" source: hosted - version: "6.0.17" + version: "6.1.4" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - url: "https://pub.dartlang.org" + sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.5" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - url: "https://pub.dartlang.org" + sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.6" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - url: "https://pub.dartlang.org" + sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.3" url_launcher_web: dependency: transitive description: name: url_launcher_web - url: "https://pub.dartlang.org" + sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 + url: "https://pub.dev" source: hosted - version: "2.0.12" + version: "2.0.18" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - url: "https://pub.dartlang.org" + sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.7" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" watcher: dependency: transitive description: name: watcher - url: "https://pub.dartlang.org" + sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.2" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.dartlang.org" + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.0" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c" + url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "4.1.4" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: f0c26453a2d47aa4c2570c6a033246a3fc62da2fe23c7ffdd0a7495086dc0247 + url: "https://pub.dev" source: hosted - version: "0.2.0+1" + version: "1.0.2" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.2" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: - dart: ">=2.17.0 <3.0.0" - flutter: ">=3.0.0" + dart: ">=2.19.0 <3.0.0" + flutter: ">=3.3.0" From aff64d80469b78ee75dc491f2f000903d127df82 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Wed, 23 Aug 2023 19:21:08 +0300 Subject: [PATCH 14/31] Fix, impossible to run icon generator --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index bd36c0a..a974f4b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,7 +32,7 @@ dev_dependencies: flutter_icons: android: "ic_launcher" - ios: true + ios: false image_path: "assets/icon.png" flutter: From 6c8fee7c148857a5fc7343227526b9deba876703 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Wed, 23 Aug 2023 21:30:48 +0300 Subject: [PATCH 15/31] Using freezed --- lib/theme.dart | 41 ++++++++----------- pubspec.lock | 104 ++++++++++++++++++++++++++++--------------------- pubspec.yaml | 7 ++-- 3 files changed, 80 insertions(+), 72 deletions(-) diff --git a/lib/theme.dart b/lib/theme.dart index 6d273c7..ddee4cf 100644 --- a/lib/theme.dart +++ b/lib/theme.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'theme.freezed.dart'; const Color primaryColor = Color(0xFFC56C35); const Color secondaryColor = Color(0xFF8B0145); @@ -54,29 +57,17 @@ CustomThemeData customThemeData = CustomThemeData( ), ); -@immutable -class CustomThemeData { - final Color primaryColor; - final Color secondaryColor; - final Color textOnWhiteColor; - final Color mistakeHighlightColor; - - final TextStyle cardText; - final TextStyle cardTextHighlighted; - - final TextStyle homePageStatText; - final TextStyle homePageMainStatText; - final TextStyle cardTitleText; - - CustomThemeData({ - required this.cardText, - required this.cardTextHighlighted, - required this.primaryColor, - required this.secondaryColor, - required this.textOnWhiteColor, - required this.mistakeHighlightColor, - required this.homePageStatText, - required this.homePageMainStatText, - required this.cardTitleText, - }); +@freezed +abstract class CustomThemeData with _$CustomThemeData { + const factory CustomThemeData({ + required Color primaryColor, + required Color secondaryColor, + required Color textOnWhiteColor, + required Color mistakeHighlightColor, + required TextStyle cardText, + required TextStyle cardTextHighlighted, + required TextStyle homePageStatText, + required TextStyle homePageMainStatText, + required TextStyle cardTitleText, + }) = _CustomThemeData; } diff --git a/pubspec.lock b/pubspec.lock index ae0d6eb..10115a2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: d93b0378aadce9c1388108067946276582c2ae89426c64c17920c74988508fed + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a url: "https://pub.dev" source: hosted - version: "22.0.0" + version: "61.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "581a0281129283e75d4d67d6ac6e391c0515cdce37eb6eb4bc8a52e65d2b16b6" + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 url: "https://pub.dev" source: hosted - version: "1.7.2" + version: "5.13.0" archive: dependency: transitive description: @@ -61,50 +61,50 @@ packages: dependency: transitive description: name: build - sha256: de3ecca84980ee5e632888a04f4a72d8e3c390104fd5edb3a724785f66e9e97a + sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.3.1" build_config: dependency: transitive description: name: build_config - sha256: "9160104f468c8117f7dddd3c94d8f440d0f82a324bf29eb84e0b434cff7a0e03" + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 url: "https://pub.dev" source: hosted - version: "0.4.7" + version: "1.1.1" build_daemon: dependency: transitive description: name: build_daemon - sha256: "02d9e94f2b7f6e4de0f0cd24dc9e2cd0c00fec082265ca89d3b32282cb7381bc" + sha256: "757153e5d9cd88253cb13f28c2fb55a537dc31fefd98137549895b5beb7c6169" url: "https://pub.dev" source: hosted - version: "2.1.10" + version: "3.1.1" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: a171129ff393d360a5ec9ba3a2277e0d7e713027709f08196e8192688b537074 + sha256: "6c4dd11d05d056e76320b828a1db0fc01ccd376922526f8e9d6c796a5adbac20" url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.2.1" build_runner: dependency: "direct dev" description: name: build_runner - sha256: cd95f4d4a6a13b0dc1408b0a4b086bffdac08dcb61e45a0e1f2f58905d4c97a5 + sha256: b0a8a7b8a76c493e85f1b84bffa0588859a06197863dba8c9036b15581fd9727 url: "https://pub.dev" source: hosted - version: "1.12.2" + version: "2.3.3" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "653b9dfd0472476ca837ef62786717434b8fa4f5e5521c85d7376dd3234aefeb" + sha256: "0671ad4162ed510b70d0eb4ad6354c249f8429cab4ae7a4cec86bbc2886eb76e" url: "https://pub.dev" source: hosted - version: "6.1.12" + version: "7.2.7+1" built_collection: dependency: transitive description: @@ -137,14 +137,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" - cli_util: - dependency: transitive - description: - name: cli_util - sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" - url: "https://pub.dev" - source: hosted - version: "0.3.5" clock: dependency: transitive description: @@ -157,10 +149,10 @@ packages: dependency: transitive description: name: code_builder - sha256: "48ae73ba8dbf1923de91e0fd65736148f63f6c6fb0925bdda05c1df0298c55e1" + sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189" url: "https://pub.dev" source: hosted - version: "3.7.0" + version: "4.5.0" collection: dependency: transitive description: @@ -197,10 +189,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "7f5b48e6a448c4b46250a6113857a00eaa82821ef5a3d7f42e68eb69d1283fa3" + sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.3.2" equatable: dependency: "direct main" description: @@ -280,6 +272,30 @@ packages: description: flutter source: sdk version: "0.0.0" + freezed: + dependency: "direct main" + description: + name: freezed + sha256: "2df89855fe181baae3b6d714dc3c4317acf4fccd495a6f36e5e00f24144c6c3b" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d + url: "https://pub.dev" + source: hosted + version: "2.4.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" + source: hosted + version: "3.2.0" glob: dependency: transitive description: @@ -292,10 +308,10 @@ packages: dependency: transitive description: name: graphs - sha256: e84da18c5bd9854f4222e62d762e0ffd290726ffc5785dcb976f8c16ff797f5e + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "2.3.1" hive: dependency: transitive description: @@ -356,18 +372,18 @@ packages: dependency: "direct main" description: name: json_annotation - sha256: "0aa7409f6c82acfab96853b8b0c7503de49918cbe705a57cfdeb477756b4521b" + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.8.1" json_serializable: dependency: "direct dev" description: name: json_serializable - sha256: "86d3edf6914d6562ed4c7d9288239fbf1a9ee3c498ed0089a535c0d3703bb323" + sha256: "43793352f90efa5d8b251893a63d767b2f7c833120e3cc02adad55eefec04dc7" url: "https://pub.dev" source: hosted - version: "4.1.4" + version: "6.6.2" lints: dependency: transitive description: @@ -488,14 +504,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.0" - pedantic: - dependency: transitive - description: - name: pedantic - sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" - url: "https://pub.dev" - source: hosted - version: "1.11.1" petitparser: dependency: transitive description: @@ -585,10 +593,18 @@ packages: dependency: transitive description: name: source_gen - sha256: ffb7124eb6752de71e87a122cc50a8a191044add69fd990d76958bc38ee552fd + sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33" + url: "https://pub.dev" + source: hosted + version: "1.3.2" + source_helper: + dependency: transitive + description: + name: source_helper + sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.3.4" source_span: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a974f4b..8c3b1f2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,17 +16,18 @@ dependencies: hydrated_bloc: ^7.0.0 flutter_bloc: ^7.0.0 equatable: ^2.0.3 - json_annotation: ^4.0.0 + json_annotation: ^4.8.1 cupertino_icons: ^1.0.2 path_provider: ^2.0.7 url_launcher: ^6.1.3 + freezed: ^2.1.0 dev_dependencies: flutter_test: sdk: flutter - json_serializable: ^4.0.0 - build_runner: ^1.10.0 + json_serializable: ^6.0.0 + build_runner: ^2.0.6 flutter_lints: ^1.0.0 flutter_launcher_icons: ^0.9.2 From d6b8cc3f0630f9e4ab82bbc814d2c1e2131ab8e7 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Wed, 23 Aug 2023 21:59:28 +0300 Subject: [PATCH 16/31] Using freezed --- lib/math_game/bloc/game_bloc.dart | 2 ++ lib/math_game/bloc/game_state.dart | 53 ++++++++---------------------- 2 files changed, 16 insertions(+), 39 deletions(-) diff --git a/lib/math_game/bloc/game_bloc.dart b/lib/math_game/bloc/game_bloc.dart index e70f7a0..fce795c 100644 --- a/lib/math_game/bloc/game_bloc.dart +++ b/lib/math_game/bloc/game_bloc.dart @@ -33,6 +33,8 @@ class MathGameBloc extends Bloc { _questions = questions, _duration = duration, super(MathGameState( + answered: [], + inputValue: '', duration: duration.inSeconds, stateType: GameStateType.ready, currentQuestion: questions.next(), diff --git a/lib/math_game/bloc/game_state.dart b/lib/math_game/bloc/game_state.dart index 6876625..fd4b785 100644 --- a/lib/math_game/bloc/game_state.dart +++ b/lib/math_game/bloc/game_state.dart @@ -1,48 +1,23 @@ -import 'package:equatable/equatable.dart'; import 'package:math_training/math_game/models/question.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; -class MathGameState extends Equatable { - final int duration; - final String inputValue; - final List answered; - final Question currentQuestion; - final GameStateType stateType; +part 'game_state.freezed.dart'; - bool get noMistakes { - return answered.where((answered) => !answered.isCorrect).isEmpty; - } +@freezed +class MathGameState with _$MathGameState { + const MathGameState._(); - const MathGameState({ - required this.duration, - this.answered = const [], - required this.currentQuestion, - this.inputValue = "", - required this.stateType, - }); + const factory MathGameState({ + required int duration, + required String inputValue, + required List answered, + required Question currentQuestion, + required GameStateType stateType, + }) = _MathGameState; - MathGameState copyWith({ - int? duration, - String? inputValue, - List? answered, - GameStateType? stateType, - Question? currentQuestion, - }) { - return MathGameState( - duration: duration ?? this.duration, - inputValue: inputValue ?? this.inputValue, - answered: answered ?? this.answered, - stateType: stateType ?? this.stateType, - currentQuestion: currentQuestion ?? this.currentQuestion, - ); + bool get noMistakes { + return answered.where((answered) => !answered.isCorrect).isEmpty; } - - @override - List get props => [ - duration, - inputValue, - answered, - stateType, - ]; } enum GameStateType { ready, going, paused, finished } From 58537a860a1ec54a9ca159cd9532d12cda084d1a Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Fri, 1 Sep 2023 22:36:05 +0300 Subject: [PATCH 17/31] Using theme extension instead of custom class --- lib/home/view/home_page.dart | 6 +++--- lib/home/view/widgets.dart | 6 +++--- lib/main.dart | 6 +----- lib/math_game/view/math_game_page.dart | 6 +++--- lib/settings/view/widgets.dart | 4 ++-- lib/theme.dart | 28 ++++++++++++++++++++++---- lib/widgets/custom_theme.dart | 23 --------------------- lib/widgets/game_input_scaffold.dart | 4 ++-- 8 files changed, 38 insertions(+), 45 deletions(-) delete mode 100644 lib/widgets/custom_theme.dart diff --git a/lib/home/view/home_page.dart b/lib/home/view/home_page.dart index 6a8066c..1376edf 100644 --- a/lib/home/view/home_page.dart +++ b/lib/home/view/home_page.dart @@ -8,7 +8,7 @@ import 'package:math_training/math_game/view/math_game_page.dart'; import 'package:math_training/scores/cubit/scored_bloc.dart'; import 'package:math_training/settings/cubit/app_settings_cubit.dart'; import 'package:math_training/settings/view/settings_page.dart'; -import 'package:math_training/widgets/custom_theme.dart'; +import 'package:math_training/theme.dart'; class MainPage extends StatelessWidget { @@ -114,7 +114,7 @@ class _TransitionAppBarDelegate extends SliverPersistentHeaderDelegate { double smallStatsOpacity = min(max(0, (extendedValue - 0.1) * 1.5), 1); double centerStatsOpacity = min(max(0, (extendedValue - 0.4) * 2), 1); - var theme = CustomTheme.of(context); + var theme = Theme.of(context).extension()!.data; var bottomColor = Color.lerp(theme.primaryColor, theme.secondaryColor, extendedValue)!; var buttonColor = Color.lerp(theme.primaryColor, bottomColor, 0.8)!; @@ -255,7 +255,7 @@ class ScoresList extends StatelessWidget { var sessionType = context.select((AppSettingsCubit s) => s.state.mathSessionType); var scores = context.select((ScoresCubit scores) => scores.state.getResultsBySessionName(sessionType)).toList(); - var theme = CustomTheme.of(context); + var theme = Theme.of(context).extension()!.data; if (scores.isEmpty) { return SliverFillRemaining( diff --git a/lib/home/view/widgets.dart b/lib/home/view/widgets.dart index 2da14b4..cfa87a1 100644 --- a/lib/home/view/widgets.dart +++ b/lib/home/view/widgets.dart @@ -2,7 +2,7 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:math_training/math_game/models/result.dart'; -import 'package:math_training/widgets/custom_theme.dart'; +import 'package:math_training/theme.dart'; class MathTestResultCard extends StatelessWidget { static const divider = Divider(color: Colors.white54); @@ -23,7 +23,7 @@ class MathTestResultCard extends StatelessWidget { @override Widget build(BuildContext context) { - var theme = CustomTheme.of(context); + var theme = Theme.of(context).extension()!.data; return Padding( padding: const EdgeInsets.all(8.0), @@ -160,7 +160,7 @@ class AppBarStatText extends StatelessWidget { @override Widget build(BuildContext context) { - var theme = CustomTheme.of(context); + var theme = Theme.of(context).extension()!.data; return Opacity( opacity: opacity, diff --git a/lib/main.dart b/lib/main.dart index 8e7aa84..43411c0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:math_training/home/view/home_page.dart'; import 'package:math_training/theme.dart'; -import 'package:math_training/widgets/custom_theme.dart'; import 'package:path_provider/path_provider.dart'; @@ -22,13 +21,10 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { - return CustomTheme( - data: customThemeData, - child: MaterialApp( + return MaterialApp( title: 'Flutter Demo', theme: materialThemeData, home: MainPage.page(), - ), ); } } diff --git a/lib/math_game/view/math_game_page.dart b/lib/math_game/view/math_game_page.dart index d53e4cd..e30ad3e 100644 --- a/lib/math_game/view/math_game_page.dart +++ b/lib/math_game/view/math_game_page.dart @@ -4,7 +4,7 @@ import 'package:math_training/math_game/bloc/game_bloc.dart'; import 'package:math_training/math_game/bloc/game_events.dart'; import 'package:math_training/math_game/bloc/game_state.dart'; import 'package:math_training/settings/cubit/app_settings_cubit.dart'; -import 'package:math_training/widgets/custom_theme.dart'; +import 'package:math_training/theme.dart'; import 'package:math_training/widgets/game_input_scaffold.dart'; @@ -64,7 +64,7 @@ class BeforeGameView extends StatelessWidget { @override Widget build(BuildContext context) { var game = context.watch(); - var theme = CustomTheme.of(context); + var theme = Theme.of(context).extension()!.data; return Column( children: [ @@ -109,7 +109,7 @@ class AfterGameView extends StatelessWidget { @override Widget build(BuildContext context) { var questions = context.select((MathGameBloc bloc) => bloc.state.answered); - var theme = CustomTheme.of(context); + var theme = Theme.of(context).extension()!.data; return ListView.builder( itemCount: questions.length, diff --git a/lib/settings/view/widgets.dart b/lib/settings/view/widgets.dart index 2b2663d..bfabac2 100644 --- a/lib/settings/view/widgets.dart +++ b/lib/settings/view/widgets.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:math_training/widgets/custom_theme.dart'; +import 'package:math_training/theme.dart'; class NameValueCard extends StatelessWidget { final Widget name; @@ -15,7 +15,7 @@ class NameValueCard extends StatelessWidget { @override Widget build(BuildContext context) { - var theme = CustomTheme.of(context); + var theme = Theme.of(context).extension()!.data; return Card( child: Padding( diff --git a/lib/theme.dart b/lib/theme.dart index ddee4cf..18eccbf 100644 --- a/lib/theme.dart +++ b/lib/theme.dart @@ -24,9 +24,12 @@ const MaterialColor primaryColorSwatch = MaterialColor(0xFFC56C35, { ThemeData materialThemeData = ThemeData( fontFamily: "JetBrainsMono", primarySwatch: primaryColorSwatch, + extensions: [ + AppTheme(customThemeData) + ], ); -CustomThemeData customThemeData = CustomThemeData( +AppThemeData customThemeData = AppThemeData( primaryColor: primaryColor, secondaryColor: secondaryColor, textOnWhiteColor: textOnWhiteColor, @@ -57,9 +60,26 @@ CustomThemeData customThemeData = CustomThemeData( ), ); +class AppTheme extends ThemeExtension { + final AppThemeData data; + + AppTheme(this.data); + + @override + ThemeExtension copyWith({AppThemeData? data}) { + return AppTheme(data ?? this.data); + } + + @override + ThemeExtension lerp(covariant ThemeExtension? other, double t) { + throw UnimplementedError(); + } + +} + @freezed -abstract class CustomThemeData with _$CustomThemeData { - const factory CustomThemeData({ +abstract class AppThemeData with _$AppThemeData { + const factory AppThemeData({ required Color primaryColor, required Color secondaryColor, required Color textOnWhiteColor, @@ -69,5 +89,5 @@ abstract class CustomThemeData with _$CustomThemeData { required TextStyle homePageStatText, required TextStyle homePageMainStatText, required TextStyle cardTitleText, - }) = _CustomThemeData; + }) = _AppThemeData; } diff --git a/lib/widgets/custom_theme.dart b/lib/widgets/custom_theme.dart deleted file mode 100644 index 35b15d1..0000000 --- a/lib/widgets/custom_theme.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:flutter/widgets.dart'; -import 'package:math_training/theme.dart'; - - - -class CustomTheme extends InheritedWidget { - final CustomThemeData data; - - const CustomTheme({ - Key? key, - required this.data, - required Widget child, - }) : super(key: key, child: child); - - static CustomThemeData of(BuildContext context) { - return context.dependOnInheritedWidgetOfExactType()!.data; - } - - @override - bool updateShouldNotify(CustomTheme old) { - return true; - } -} diff --git a/lib/widgets/game_input_scaffold.dart b/lib/widgets/game_input_scaffold.dart index 6c3f5e0..417e2e8 100644 --- a/lib/widgets/game_input_scaffold.dart +++ b/lib/widgets/game_input_scaffold.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:math_training/widgets/custom_theme.dart'; +import 'package:math_training/theme.dart'; class InputTextProcessor { final int maxLength; @@ -156,7 +156,7 @@ class NumericKeyboard extends StatelessWidget { @override Widget build(BuildContext context) { - var theme = CustomTheme.of(context); + var theme = Theme.of(context).extension()!.data; return Container( decoration: BoxDecoration( gradient: LinearGradient( From 523e287bed556b6f19c754a5e9af04c65c679bf5 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Fri, 1 Sep 2023 22:36:58 +0300 Subject: [PATCH 18/31] Json serializable fix --- lib/math_game/models/result.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/math_game/models/result.dart b/lib/math_game/models/result.dart index a23297f..86b1a9e 100644 --- a/lib/math_game/models/result.dart +++ b/lib/math_game/models/result.dart @@ -1,3 +1,6 @@ +import 'package:json_annotation/json_annotation.dart'; + +@JsonSerializable(createToJson: false, createFactory: false) class MathTestResult { final int correct; final int incorrect; @@ -17,7 +20,7 @@ class MathTestResult { required this.type, }); - static MathTestResult fromJson(Map map) { + factory MathTestResult.fromJson(Map map) { return MathTestResult( correct: map["correct"], incorrect: map["incorrect"], From 4a9104fa2bea7a536819b762fc977d46a227732e Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Sat, 2 Sep 2023 00:45:05 +0300 Subject: [PATCH 19/31] Refactor --- .../scores/bloc}/scored_bloc.dart | 2 +- .../scores/bloc}/scored_bloc.g.dart | 0 .../scores}/models/result.dart | 0 .../settings/cubit/app_settings_cubit.dart | 6 +- .../settings/cubit/app_settings_cubit.g.dart | 0 .../settings/models/math_session_type.dart | 39 ++++++++++++ .../settings/models/session_durations.dart | 0 lib/{ => features}/home/view/home_page.dart | 14 ++--- lib/{ => features}/home/view/widgets.dart | 4 +- .../math_game/bloc/game_bloc.dart | 15 ++--- .../math_game/bloc/game_events.dart | 0 .../math_game/bloc/game_state.dart | 4 +- .../math_game/util}/question.dart | 0 .../math_game/util}/ticker.dart | 0 .../math_game/util}/training.dart | 62 ++++++------------- .../math_game/view/math_game_page.dart | 10 +-- .../settings/view/settings_page.dart | 12 ++-- lib/{ => features}/settings/view/widgets.dart | 2 +- lib/main.dart | 4 +- lib/widgets/game_input_scaffold.dart | 2 +- lib/{ => widgets}/theme.dart | 0 21 files changed, 96 insertions(+), 80 deletions(-) rename lib/{scores/cubit => core/scores/bloc}/scored_bloc.dart (96%) rename lib/{scores/cubit => core/scores/bloc}/scored_bloc.g.dart (100%) rename lib/{math_game => core/scores}/models/result.dart (100%) rename lib/{ => core}/settings/cubit/app_settings_cubit.dart (88%) rename lib/{ => core}/settings/cubit/app_settings_cubit.g.dart (100%) create mode 100644 lib/core/settings/models/math_session_type.dart create mode 100644 lib/core/settings/models/session_durations.dart rename lib/{ => features}/home/view/home_page.dart (95%) rename lib/{ => features}/home/view/widgets.dart (98%) rename lib/{ => features}/math_game/bloc/game_bloc.dart (87%) rename lib/{ => features}/math_game/bloc/game_events.dart (100%) rename lib/{ => features}/math_game/bloc/game_state.dart (88%) rename lib/{math_game/models => features/math_game/util}/question.dart (100%) rename lib/{math_game => features/math_game/util}/ticker.dart (100%) rename lib/{math_game => features/math_game/util}/training.dart (52%) rename lib/{ => features}/math_game/view/math_game_page.dart (95%) rename lib/{ => features}/settings/view/settings_page.dart (90%) rename lib/{ => features}/settings/view/widgets.dart (98%) rename lib/{ => widgets}/theme.dart (100%) diff --git a/lib/scores/cubit/scored_bloc.dart b/lib/core/scores/bloc/scored_bloc.dart similarity index 96% rename from lib/scores/cubit/scored_bloc.dart rename to lib/core/scores/bloc/scored_bloc.dart index 908a401..1bdcded 100644 --- a/lib/scores/cubit/scored_bloc.dart +++ b/lib/core/scores/bloc/scored_bloc.dart @@ -1,7 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:json_annotation/json_annotation.dart'; -import 'package:math_training/math_game/models/result.dart'; +import 'package:math_training/core/scores/models/result.dart'; part 'scored_bloc.g.dart'; diff --git a/lib/scores/cubit/scored_bloc.g.dart b/lib/core/scores/bloc/scored_bloc.g.dart similarity index 100% rename from lib/scores/cubit/scored_bloc.g.dart rename to lib/core/scores/bloc/scored_bloc.g.dart diff --git a/lib/math_game/models/result.dart b/lib/core/scores/models/result.dart similarity index 100% rename from lib/math_game/models/result.dart rename to lib/core/scores/models/result.dart diff --git a/lib/settings/cubit/app_settings_cubit.dart b/lib/core/settings/cubit/app_settings_cubit.dart similarity index 88% rename from lib/settings/cubit/app_settings_cubit.dart rename to lib/core/settings/cubit/app_settings_cubit.dart index e160abc..be9852a 100644 --- a/lib/settings/cubit/app_settings_cubit.dart +++ b/lib/core/settings/cubit/app_settings_cubit.dart @@ -1,7 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:json_annotation/json_annotation.dart'; -import 'package:math_training/math_game/training.dart'; +import 'package:math_training/core/settings/models/math_session_type.dart'; part 'app_settings_cubit.g.dart'; @@ -33,8 +33,8 @@ class AppSettings { } factory AppSettings.defaultValue () => const AppSettings( - mathSessionDuration: MathConstants.defaultDuration, - mathSessionType: MathConstants.sessionDefaultDifficulty, + mathSessionDuration: defaultDuration, + mathSessionType: sessionDefaultDifficulty, ); factory AppSettings.fromJson(Map json) => _$AppSettingsFromJson(json); diff --git a/lib/settings/cubit/app_settings_cubit.g.dart b/lib/core/settings/cubit/app_settings_cubit.g.dart similarity index 100% rename from lib/settings/cubit/app_settings_cubit.g.dart rename to lib/core/settings/cubit/app_settings_cubit.g.dart diff --git a/lib/core/settings/models/math_session_type.dart b/lib/core/settings/models/math_session_type.dart new file mode 100644 index 0000000..47c35ec --- /dev/null +++ b/lib/core/settings/models/math_session_type.dart @@ -0,0 +1,39 @@ + + + const easyQuestionGeneratorName = "Easy"; + const normalQuestionGeneratorName = "Normal"; + const hardQuestionGeneratorName = "Hard"; + const hexReadQuestionGeneratorName = "Hex decode"; + + const String sessionDefaultDifficulty = easyQuestionGeneratorName; + + const sessionDifficultyNames = [ + easyQuestionGeneratorName, + normalQuestionGeneratorName, + hardQuestionGeneratorName, + hexReadQuestionGeneratorName, + ]; + + // QuestionGenerator getQuestionGenerator(String type) { + // switch (type) { + // case easyQuestionGeneratorName: + // return EasyQuestionGenerator(); + // case normalQuestionGeneratorName: + // return NormalQuestionGenerator(); + // case hardQuestionGeneratorName: + // return HardQuestionGenerator(); + // case hexReadQuestionGeneratorName: + // return HexQuestionGenerator(); + // } + // return NormalQuestionGenerator(); + // } + + const defaultDuration = Duration(minutes: 1); + + const List durationOptions = [ + Duration(minutes: 1), + Duration(minutes: 2), + Duration(minutes: 3), + Duration(minutes: 5), + Duration(minutes: 7), + ]; diff --git a/lib/core/settings/models/session_durations.dart b/lib/core/settings/models/session_durations.dart new file mode 100644 index 0000000..e69de29 diff --git a/lib/home/view/home_page.dart b/lib/features/home/view/home_page.dart similarity index 95% rename from lib/home/view/home_page.dart rename to lib/features/home/view/home_page.dart index 1376edf..9d56afd 100644 --- a/lib/home/view/home_page.dart +++ b/lib/features/home/view/home_page.dart @@ -2,13 +2,13 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:math_training/home/view/widgets.dart'; -import 'package:math_training/math_game/models/result.dart'; -import 'package:math_training/math_game/view/math_game_page.dart'; -import 'package:math_training/scores/cubit/scored_bloc.dart'; -import 'package:math_training/settings/cubit/app_settings_cubit.dart'; -import 'package:math_training/settings/view/settings_page.dart'; -import 'package:math_training/theme.dart'; +import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; +import 'package:math_training/features/home/view/widgets.dart'; +import 'package:math_training/features/math_game/view/math_game_page.dart'; +import 'package:math_training/features/settings/view/settings_page.dart'; +import 'package:math_training/core/scores/models/result.dart'; +import 'package:math_training/core/scores/bloc/scored_bloc.dart'; +import 'package:math_training/widgets/theme.dart'; class MainPage extends StatelessWidget { diff --git a/lib/home/view/widgets.dart b/lib/features/home/view/widgets.dart similarity index 98% rename from lib/home/view/widgets.dart rename to lib/features/home/view/widgets.dart index cfa87a1..0338d93 100644 --- a/lib/home/view/widgets.dart +++ b/lib/features/home/view/widgets.dart @@ -1,8 +1,8 @@ import 'dart:math'; import 'package:flutter/material.dart'; -import 'package:math_training/math_game/models/result.dart'; -import 'package:math_training/theme.dart'; +import 'package:math_training/core/scores/models/result.dart'; +import 'package:math_training/widgets/theme.dart'; class MathTestResultCard extends StatelessWidget { static const divider = Divider(color: Colors.white54); diff --git a/lib/math_game/bloc/game_bloc.dart b/lib/features/math_game/bloc/game_bloc.dart similarity index 87% rename from lib/math_game/bloc/game_bloc.dart rename to lib/features/math_game/bloc/game_bloc.dart index fce795c..4c29321 100644 --- a/lib/math_game/bloc/game_bloc.dart +++ b/lib/features/math_game/bloc/game_bloc.dart @@ -1,11 +1,12 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; -import 'package:math_training/math_game/bloc/game_events.dart'; -import 'package:math_training/math_game/bloc/game_state.dart'; -import 'package:math_training/math_game/models/result.dart'; -import 'package:math_training/math_game/ticker.dart'; -import 'package:math_training/math_game/training.dart'; -import 'package:math_training/settings/cubit/app_settings_cubit.dart'; + +import 'package:math_training/core/scores/models/result.dart'; +import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; +import 'package:math_training/features/math_game/bloc/game_events.dart'; +import 'package:math_training/features/math_game/bloc/game_state.dart'; +import 'package:math_training/features/math_game/util/ticker.dart'; +import 'package:math_training/features/math_game/util/training.dart'; class MathGameBloc extends Bloc { final Ticker _ticker; @@ -19,7 +20,7 @@ class MathGameBloc extends Bloc { StreamSubscription? _tickerSubscription; factory MathGameBloc.fromSettings(AppSettings settings) { - var questions = MathConstants.getQuestionGenerator(settings.mathSessionType); + var questions = getQuestionGenerator(settings.mathSessionType); var duration = settings.mathSessionDuration; return MathGameBloc( diff --git a/lib/math_game/bloc/game_events.dart b/lib/features/math_game/bloc/game_events.dart similarity index 100% rename from lib/math_game/bloc/game_events.dart rename to lib/features/math_game/bloc/game_events.dart diff --git a/lib/math_game/bloc/game_state.dart b/lib/features/math_game/bloc/game_state.dart similarity index 88% rename from lib/math_game/bloc/game_state.dart rename to lib/features/math_game/bloc/game_state.dart index fd4b785..d1e806d 100644 --- a/lib/math_game/bloc/game_state.dart +++ b/lib/features/math_game/bloc/game_state.dart @@ -1,5 +1,7 @@ -import 'package:math_training/math_game/models/question.dart'; + import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:math_training/features/math_game/util/question.dart'; + part 'game_state.freezed.dart'; diff --git a/lib/math_game/models/question.dart b/lib/features/math_game/util/question.dart similarity index 100% rename from lib/math_game/models/question.dart rename to lib/features/math_game/util/question.dart diff --git a/lib/math_game/ticker.dart b/lib/features/math_game/util/ticker.dart similarity index 100% rename from lib/math_game/ticker.dart rename to lib/features/math_game/util/ticker.dart diff --git a/lib/math_game/training.dart b/lib/features/math_game/util/training.dart similarity index 52% rename from lib/math_game/training.dart rename to lib/features/math_game/util/training.dart index 565f41d..0653f08 100644 --- a/lib/math_game/training.dart +++ b/lib/features/math_game/util/training.dart @@ -1,46 +1,20 @@ import 'dart:math'; -import 'package:math_training/math_game/models/question.dart'; - - -class MathConstants { - static const easyQuestionGeneratorName = "Easy"; - static const normalQuestionGeneratorName = "Normal"; - static const hardQuestionGeneratorName = "Hard"; - static const hexReadQuestionGeneratorName = "Hex decode"; - - static const String sessionDefaultDifficulty = easyQuestionGeneratorName; - - static const sessionDifficultyNames = [ - easyQuestionGeneratorName, - normalQuestionGeneratorName, - hardQuestionGeneratorName, - hexReadQuestionGeneratorName, - ]; - - static QuestionGenerator getQuestionGenerator(String type) { - switch (type) { - case easyQuestionGeneratorName: - return EasyQuestionGenerator(); - case normalQuestionGeneratorName: - return NormalQuestionGenerator(); - case hardQuestionGeneratorName: - return HardQuestionGenerator(); - case hexReadQuestionGeneratorName: - return HexQuestionGenerator(); - } - return NormalQuestionGenerator(); +import 'package:math_training/core/settings/models/math_session_type.dart'; +import 'package:math_training/features/math_game/util/question.dart'; + +QuestionGenerator getQuestionGenerator(String type) { + switch (type) { + case easyQuestionGeneratorName: + return EasyQuestionGenerator(); + case normalQuestionGeneratorName: + return NormalQuestionGenerator(); + case hardQuestionGeneratorName: + return HardQuestionGenerator(); + case hexReadQuestionGeneratorName: + return HexQuestionGenerator(); } - - static const defaultDuration = Duration(minutes: 1); - - static const List durationOptions = [ - Duration(minutes: 1), - Duration(minutes: 2), - Duration(minutes: 3), - Duration(minutes: 5), - Duration(minutes: 7), - ]; + return NormalQuestionGenerator(); } abstract class QuestionGenerator { @@ -57,7 +31,7 @@ abstract class QuestionGenerator { class HardQuestionGenerator extends QuestionGenerator { @override - String get name => MathConstants.hardQuestionGeneratorName; + String get name => hardQuestionGeneratorName; @override Question next() { @@ -76,7 +50,7 @@ class HardQuestionGenerator extends QuestionGenerator { class NormalQuestionGenerator extends QuestionGenerator { @override - String get name => MathConstants.normalQuestionGeneratorName; + String get name => normalQuestionGeneratorName; @override Question next() { @@ -93,7 +67,7 @@ class NormalQuestionGenerator extends QuestionGenerator { class EasyQuestionGenerator extends QuestionGenerator { @override - String get name => MathConstants.easyQuestionGeneratorName; + String get name => easyQuestionGeneratorName; @override Question next() { @@ -108,7 +82,7 @@ class EasyQuestionGenerator extends QuestionGenerator { class HexQuestionGenerator extends QuestionGenerator { @override - String get name => MathConstants.hexReadQuestionGeneratorName; + String get name => hexReadQuestionGeneratorName; @override Question next() { diff --git a/lib/math_game/view/math_game_page.dart b/lib/features/math_game/view/math_game_page.dart similarity index 95% rename from lib/math_game/view/math_game_page.dart rename to lib/features/math_game/view/math_game_page.dart index e30ad3e..bf680df 100644 --- a/lib/math_game/view/math_game_page.dart +++ b/lib/features/math_game/view/math_game_page.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:math_training/math_game/bloc/game_bloc.dart'; -import 'package:math_training/math_game/bloc/game_events.dart'; -import 'package:math_training/math_game/bloc/game_state.dart'; -import 'package:math_training/settings/cubit/app_settings_cubit.dart'; -import 'package:math_training/theme.dart'; +import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; +import 'package:math_training/features/math_game/bloc/game_bloc.dart'; +import 'package:math_training/features/math_game/bloc/game_events.dart'; +import 'package:math_training/features/math_game/bloc/game_state.dart'; +import 'package:math_training/widgets/theme.dart'; import 'package:math_training/widgets/game_input_scaffold.dart'; diff --git a/lib/settings/view/settings_page.dart b/lib/features/settings/view/settings_page.dart similarity index 90% rename from lib/settings/view/settings_page.dart rename to lib/features/settings/view/settings_page.dart index b8bafe9..151e4fc 100644 --- a/lib/settings/view/settings_page.dart +++ b/lib/features/settings/view/settings_page.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:math_training/math_game/training.dart'; -import 'package:math_training/scores/cubit/scored_bloc.dart'; -import 'package:math_training/settings/cubit/app_settings_cubit.dart'; -import 'package:math_training/settings/view/widgets.dart'; +import 'package:math_training/core/settings/models/math_session_type.dart'; +import 'package:math_training/features/settings/view/widgets.dart'; +import 'package:math_training/core/scores/bloc/scored_bloc.dart'; +import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; import 'package:url_launcher/url_launcher.dart'; final Uri githubPage = Uri.parse('https://github.com/Cifruktus/MathTraining'); @@ -103,7 +103,7 @@ class MathDurationEditor extends StatelessWidget { } void _showDurationSelectDialog(BuildContext context) { - List> elements = MathConstants.durationOptions + List> elements = durationOptions .map((option) => ListDialogElement( value: option, child: Text("${option.inMinutes} min"), @@ -135,7 +135,7 @@ class MathSessionEditor extends StatelessWidget { } void _showDurationSelectDialog(BuildContext context) { - List> elements = MathConstants.sessionDifficultyNames + List> elements = sessionDifficultyNames .map((option) => ListDialogElement(value: option, child: Text("${option}"))) .toList(); diff --git a/lib/settings/view/widgets.dart b/lib/features/settings/view/widgets.dart similarity index 98% rename from lib/settings/view/widgets.dart rename to lib/features/settings/view/widgets.dart index bfabac2..285220a 100644 --- a/lib/settings/view/widgets.dart +++ b/lib/features/settings/view/widgets.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:math_training/theme.dart'; +import 'package:math_training/widgets/theme.dart'; class NameValueCard extends StatelessWidget { final Widget name; diff --git a/lib/main.dart b/lib/main.dart index 43411c0..b698df0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,8 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; -import 'package:math_training/home/view/home_page.dart'; -import 'package:math_training/theme.dart'; +import 'package:math_training/features/home/view/home_page.dart'; +import 'package:math_training/widgets/theme.dart'; import 'package:path_provider/path_provider.dart'; diff --git a/lib/widgets/game_input_scaffold.dart b/lib/widgets/game_input_scaffold.dart index 417e2e8..61b4cc6 100644 --- a/lib/widgets/game_input_scaffold.dart +++ b/lib/widgets/game_input_scaffold.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:math_training/theme.dart'; +import 'package:math_training/widgets/theme.dart'; class InputTextProcessor { final int maxLength; diff --git a/lib/theme.dart b/lib/widgets/theme.dart similarity index 100% rename from lib/theme.dart rename to lib/widgets/theme.dart From 69aff62deb0f139793ad38ff0f76499b7ddc6006 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Sun, 3 Sep 2023 00:06:16 +0300 Subject: [PATCH 20/31] Refactor bloc's --- lib/features/home/view/home_page.dart | 20 +++------------ .../math_game/view/math_game_page.dart | 25 +++++++++---------- lib/features/settings/view/settings_page.dart | 10 ++------ lib/main.dart | 18 +++++++++---- 4 files changed, 31 insertions(+), 42 deletions(-) diff --git a/lib/features/home/view/home_page.dart b/lib/features/home/view/home_page.dart index 9d56afd..5a1d34a 100644 --- a/lib/features/home/view/home_page.dart +++ b/lib/features/home/view/home_page.dart @@ -6,7 +6,6 @@ import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; import 'package:math_training/features/home/view/widgets.dart'; import 'package:math_training/features/math_game/view/math_game_page.dart'; import 'package:math_training/features/settings/view/settings_page.dart'; -import 'package:math_training/core/scores/models/result.dart'; import 'package:math_training/core/scores/bloc/scored_bloc.dart'; import 'package:math_training/widgets/theme.dart'; @@ -15,17 +14,11 @@ class MainPage extends StatelessWidget { const MainPage({Key? key}) : super(key: key); static void openSettings(BuildContext context) { - Navigator.of(context).push( - SettingsPage.route(context.read(), context.read())); + Navigator.of(context).push(SettingsPage.route()); } - static void openGameView(BuildContext context) async { - var result = await Navigator.of(context).push( - MathGameView.route(context.read()), - ); - if (result is MathTestResult) { - context.read().addScore(result); - } + static void openGameView(BuildContext context) { + Navigator.of(context).push(MathGameView.route()); } static Route route() { @@ -33,12 +26,7 @@ class MainPage extends StatelessWidget { } static Widget page() { - return BlocProvider( - create: (context) => AppSettingsCubit(), - child: BlocProvider( - create: (context) => ScoresCubit(), - child: MainPage(), - )); + return MainPage(); } @override diff --git a/lib/features/math_game/view/math_game_page.dart b/lib/features/math_game/view/math_game_page.dart index bf680df..e845bcc 100644 --- a/lib/features/math_game/view/math_game_page.dart +++ b/lib/features/math_game/view/math_game_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:math_training/core/scores/bloc/scored_bloc.dart'; import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; import 'package:math_training/features/math_game/bloc/game_bloc.dart'; import 'package:math_training/features/math_game/bloc/game_events.dart'; @@ -9,23 +10,21 @@ import 'package:math_training/widgets/game_input_scaffold.dart'; class MathGameView extends StatelessWidget { - static Route route(AppSettingsCubit settings) { + static Route route() { return MaterialPageRoute( - builder: (_) => MultiBlocProvider( - providers: [ - BlocProvider.value( - value: settings, - ), - BlocProvider( - create: (context) => MathGameBloc.fromSettings(context.read().state), - ), - ], - child: const MathGameView(), - )); + builder: (_) => BlocProvider( + create: (context) => MathGameBloc.fromSettings(context.read().state), + child: const MathGameView(), + ), + ); } - static void finishGame(BuildContext context){ + static void finishGame(BuildContext context) { var game = context.read(); + var result = game.getResult(); + if (result != null) { + context.read().addScore(result); + } Navigator.of(context).pop(game.getResult()); } diff --git a/lib/features/settings/view/settings_page.dart b/lib/features/settings/view/settings_page.dart index 151e4fc..1284e2b 100644 --- a/lib/features/settings/view/settings_page.dart +++ b/lib/features/settings/view/settings_page.dart @@ -11,15 +11,9 @@ final Uri githubPage = Uri.parse('https://github.com/Cifruktus/MathTraining'); class SettingsPage extends StatelessWidget { const SettingsPage({Key? key}) : super(key: key); - static Route route(AppSettingsCubit settings, ScoresCubit scores) { + static Route route() { return MaterialPageRoute( - builder: (_) => BlocProvider.value( - value: scores, - child: BlocProvider.value( - value: settings, - child: SettingsPage(), - ), - ), + builder: (_) => SettingsPage(), ); } diff --git a/lib/main.dart b/lib/main.dart index b698df0..c36ce6c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,9 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; +import 'package:math_training/core/scores/bloc/scored_bloc.dart'; +import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; import 'package:math_training/features/home/view/home_page.dart'; import 'package:math_training/widgets/theme.dart'; @@ -21,11 +24,16 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - theme: materialThemeData, - home: MainPage.page(), - ); + return MultiBlocProvider( + providers: [ + BlocProvider(create: (context) => AppSettingsCubit()), + BlocProvider(create: (context) => ScoresCubit()), + ], + child: MaterialApp( + title: 'Flutter Demo', + theme: materialThemeData, + home: MainPage.page(), + )); } } From ec04e0a9601d16d1e3fee3ebb32d942219c6be7a Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Mon, 4 Sep 2023 13:50:54 +0300 Subject: [PATCH 21/31] Refactor: navigation and event handling --- lib/features/home/view/home_page.dart | 20 +-- .../math_game/view/math_game_page.dart | 117 +++++++++--------- lib/features/settings/view/settings_page.dart | 83 +++++++------ lib/features/settings/view/widgets.dart | 19 ++- lib/main.dart | 2 +- 5 files changed, 115 insertions(+), 126 deletions(-) diff --git a/lib/features/home/view/home_page.dart b/lib/features/home/view/home_page.dart index 5a1d34a..cfec23f 100644 --- a/lib/features/home/view/home_page.dart +++ b/lib/features/home/view/home_page.dart @@ -13,22 +13,6 @@ import 'package:math_training/widgets/theme.dart'; class MainPage extends StatelessWidget { const MainPage({Key? key}) : super(key: key); - static void openSettings(BuildContext context) { - Navigator.of(context).push(SettingsPage.route()); - } - - static void openGameView(BuildContext context) { - Navigator.of(context).push(MathGameView.route()); - } - - static Route route() { - return MaterialPageRoute(builder: (_) => page()); - } - - static Widget page() { - return MainPage(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -164,7 +148,7 @@ class _TransitionAppBarDelegate extends SliverPersistentHeaderDelegate { actions: [ new IconButton( icon: new Icon(Icons.settings), - onPressed: () => MainPage.openSettings(context), + onPressed: () => Navigator.push(context, SettingsPage.route()), ), ], title: Row(children: [ @@ -212,7 +196,7 @@ class _TransitionAppBarDelegate extends SliverPersistentHeaderDelegate { child: StartButton( size: kButtonRadius * 2, color: buttonColor, - onPressed: () => MainPage.openGameView(context), + onPressed: () => Navigator.push(context, MathGamePage.route()), ), ), ], diff --git a/lib/features/math_game/view/math_game_page.dart b/lib/features/math_game/view/math_game_page.dart index e845bcc..6638645 100644 --- a/lib/features/math_game/view/math_game_page.dart +++ b/lib/features/math_game/view/math_game_page.dart @@ -9,39 +9,78 @@ import 'package:math_training/widgets/theme.dart'; import 'package:math_training/widgets/game_input_scaffold.dart'; -class MathGameView extends StatelessWidget { +class MathGamePage extends StatelessWidget { + static Route route() { return MaterialPageRoute( - builder: (_) => BlocProvider( - create: (context) => MathGameBloc.fromSettings(context.read().state), - child: const MathGameView(), - ), + builder: (c) => const MathGamePage(), ); } - static void finishGame(BuildContext context) { - var game = context.read(); - var result = game.getResult(); - if (result != null) { - context.read().addScore(result); - } - Navigator.of(context).pop(game.getResult()); + const MathGamePage({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return BlocProvider( + create: (context) => MathGameBloc.fromSettings(context.read().state), + child: BlocListener( + child: const MathGameView(), + listenWhen: (a, b) => a.stateType != b.stateType, + listener: (context, state) { + if (state.stateType == GameStateType.finished) { + var result = context.read().getResult(); + if (result != null) { + context.read().addScore(result); + } + } + }, + ), + ); } +} +class MathGameView extends StatelessWidget { const MathGameView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async { - finishGame(context); - return false; - }, - child: PageContent(), + var state = context.select((MathGameBloc bloc) => bloc.state.stateType); + + return GameInputScaffold( + onApply: (s) => applyPressed(context, s), + onChange: (s) => onChange(context, s), + numericInputEnabled: state == GameStateType.going, + appBar: AppBar( + title: GameAppTitle(), + ), + body: MainGameWindow(), ); } + + void onChange(BuildContext context, String text){ + context.read().add(MathGameNewInputData(text)); + } + + void applyPressed(BuildContext context, String text) { + var gameBloc = context.read(); + + switch (gameBloc.state.stateType) { + case GameStateType.ready: + gameBloc.add(MathGameStart()); + return; + case GameStateType.going: + gameBloc.add(MathGameOnOkInput(text)); + return; + case GameStateType.finished: + Navigator.of(context).pop(); + return; + default: + return; + } + } } + class MainGameWindow extends StatelessWidget { const MainGameWindow({Key? key}) : super(key: key); @@ -235,45 +274,3 @@ class QuestionTextField extends StatelessWidget { ); } } - -class PageContent extends StatelessWidget { - const PageContent({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - var state = context.select((MathGameBloc bloc) => bloc.state.stateType); - - return GameInputScaffold( - onApply: (s) => applyPressed(context, s), - onChange: (s) => onChange(context, s), - numericInputEnabled: state == GameStateType.going, - appBar: AppBar( - title: GameAppTitle(), - ), - body: MainGameWindow(), - ); - } - - void onChange(BuildContext context, String text){ - context.read().add(MathGameNewInputData(text)); - } - - void applyPressed(BuildContext context, String text) { - var gameBloc = context.read(); - - switch (gameBloc.state.stateType) { - case GameStateType.ready: - gameBloc.add(MathGameStart()); - return; - case GameStateType.going: - gameBloc.add(MathGameOnOkInput(text)); - return; - case GameStateType.finished: - MathGameView.finishGame(context); - return; - default: - return; - } - } -} - diff --git a/lib/features/settings/view/settings_page.dart b/lib/features/settings/view/settings_page.dart index 1284e2b..a5e67d2 100644 --- a/lib/features/settings/view/settings_page.dart +++ b/lib/features/settings/view/settings_page.dart @@ -40,32 +40,34 @@ class ClearScoresButton extends StatelessWidget { @override Widget build(BuildContext context) { return NameValueCard( - onTap: () => _showClearScoresDialog(context), + onTap: () => showDialog(context: context, builder: (c) => ClearScoresButton()), name: Text("Clear scores"), value: Container(), ); } +} + +class ClearScoresDialog extends StatelessWidget { + const ClearScoresDialog({Key? key}): super(key: key); - void _showClearScoresDialog(BuildContext context) async { - bool? answer = await showDialog( - context: context, - builder: (_) => AlertDialog( - content: Text("All scores will be deleted"), - actions: [ - TextButton( - child: Text("Cancel"), - onPressed: () => Navigator.pop(context, false), - ), - TextButton( - child: Text("Ok"), - onPressed: () => Navigator.pop(context, true), - ), - ], - )); - - if (answer == true) { - context.read().clearScores(); - } + @override + Widget build(BuildContext context) { + return AlertDialog( + content: Text("All scores will be deleted"), + actions: [ + TextButton( + child: Text("Cancel"), + onPressed: () => Navigator.pop(context), + ), + TextButton( + child: Text("Ok"), + onPressed: () { + Navigator.pop(context); + context.read().clearScores(); + }, + ), + ], + ); } } @@ -90,29 +92,33 @@ class MathDurationEditor extends StatelessWidget { var duration = context.select((AppSettingsCubit c) => c.state.mathSessionDuration); return NameValueCard( - onTap: () => _showDurationSelectDialog(context), + onTap: () => showDialog(context: context, builder: (c) => MathSessionDurationDialog()), name: Text("Game duration:"), value: Text("${duration.inMinutes} min"), ); } +} + +class MathSessionDurationDialog extends StatelessWidget { + const MathSessionDurationDialog({Key? key}) : super(key: key); - void _showDurationSelectDialog(BuildContext context) { + @override + Widget build(BuildContext context) { List> elements = durationOptions .map((option) => ListDialogElement( - value: option, - child: Text("${option.inMinutes} min"), - )) + value: option, + child: Text("${option.inMinutes} min"), + )) .toList(); var settings = context.read(); - ListDialog( + return ListDialog( elements: elements, title: "Duration", selected: settings.state.mathSessionDuration, - ).show(context).then((data) { - if (data != null) settings.mathSessionDuration = data; - }); + onChoiceMade: (data) => settings.mathSessionDuration = data, + ); } } @@ -122,25 +128,30 @@ class MathSessionEditor extends StatelessWidget { var sessionType = context.select((AppSettingsCubit c) => c.state.mathSessionType); return NameValueCard( - onTap: () => _showDurationSelectDialog(context), + onTap: () => showDialog(context: context, builder: (c) => MathSessionTypeDialog()), name: Text("Session type:"), value: Text(sessionType), ); } +} + +class MathSessionTypeDialog extends StatelessWidget { + const MathSessionTypeDialog({Key? key}) : super(key: key); - void _showDurationSelectDialog(BuildContext context) { + @override + Widget build(BuildContext context) { List> elements = sessionDifficultyNames .map((option) => ListDialogElement(value: option, child: Text("${option}"))) .toList(); var settings = context.read(); - ListDialog( + return ListDialog( elements: elements, title: "Session type", selected: settings.state.mathSessionType, - ).show(context).then((data) { - if (data != null) settings.mathSessionType = data; - }); + onChoiceMade: (data) => settings.mathSessionType = data, + ); } } + diff --git a/lib/features/settings/view/widgets.dart b/lib/features/settings/view/widgets.dart index 285220a..28a4557 100644 --- a/lib/features/settings/view/widgets.dart +++ b/lib/features/settings/view/widgets.dart @@ -42,12 +42,14 @@ class NameValueCard extends StatelessWidget { } } -class ListDialog { +class ListDialog extends StatelessWidget { final List> elements; final String title; final T? selected; + final Function(T)? onChoiceMade; const ListDialog({ + this.onChoiceMade, Key? key, required this.title, required this.elements, @@ -58,8 +60,10 @@ class ListDialog { String title, List list, { String? selected, + Function(String)? onChoiceMade, }) { return ListDialog( + onChoiceMade: onChoiceMade, title: title, selected: selected, elements: list @@ -70,7 +74,8 @@ class ListDialog { .toList()); } - Widget _build(BuildContext context) { + @override + Widget build(BuildContext context) { return SimpleDialog( title: Text(title), children: elements.map((element) => _buildOption(element, context)).toList(), @@ -81,19 +86,11 @@ class ListDialog { return Container( color: element.value == selected ? Theme.of(context).colorScheme.primary.withAlpha(30) : Colors.transparent, child: SimpleDialogOption( - onPressed: () => _onChoiceMade(element.value, context), + onPressed: () => Navigator.pop(context, element.value), child: element.child, ), ); } - - void _onChoiceMade(T choice, BuildContext context) { - Navigator.pop(context, choice); - } - - Future show(BuildContext context) { - return showDialog(context: context, builder: _build); - } } class ListDialogElement extends StatelessWidget { diff --git a/lib/main.dart b/lib/main.dart index c36ce6c..6b67348 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -32,7 +32,7 @@ class MyApp extends StatelessWidget { child: MaterialApp( title: 'Flutter Demo', theme: materialThemeData, - home: MainPage.page(), + home: MainPage(), )); } } From 7ef48bbedb2ca994aee5c0b5b13880db7cfd75c8 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Mon, 4 Sep 2023 13:52:30 +0300 Subject: [PATCH 22/31] Fix: App name --- lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 6b67348..662a281 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -30,7 +30,7 @@ class MyApp extends StatelessWidget { BlocProvider(create: (context) => ScoresCubit()), ], child: MaterialApp( - title: 'Flutter Demo', + title: 'Math Training', theme: materialThemeData, home: MainPage(), )); From 83d38f4d8010ef59722980f34b5d9e1cd3fbe979 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Tue, 12 Sep 2023 13:34:53 +0300 Subject: [PATCH 23/31] Updated min sdk constraint --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 8c3b1f2..562e43b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: 'none' version: 1.0.0+1 environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=2.17.0 <3.0.0" dependencies: flutter: From ffb3abb7f9a55b3bda9d7e359039edee7be07f26 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Tue, 12 Sep 2023 22:32:45 +0300 Subject: [PATCH 24/31] Refactor: String list to enum --- lib/core/scores/bloc/scored_bloc.dart | 17 +++---- lib/core/scores/bloc/scored_bloc.g.dart | 19 -------- lib/core/scores/models/result.dart | 26 +++-------- .../settings/cubit/app_settings_cubit.dart | 12 +++-- .../settings/cubit/app_settings_cubit.g.dart | 21 --------- .../settings/models/math_session_type.dart | 46 ++++--------------- .../settings/models/session_durations.dart | 9 ++++ lib/features/home/view/home_page.dart | 10 ++-- lib/features/math_game/bloc/game_bloc.dart | 16 +++++-- lib/features/math_game/util/training.dart | 25 ++-------- lib/features/settings/view/settings_page.dart | 9 ++-- lib/features/settings/view/widgets.dart | 5 +- 12 files changed, 71 insertions(+), 144 deletions(-) delete mode 100644 lib/core/scores/bloc/scored_bloc.g.dart delete mode 100644 lib/core/settings/cubit/app_settings_cubit.g.dart diff --git a/lib/core/scores/bloc/scored_bloc.dart b/lib/core/scores/bloc/scored_bloc.dart index 1bdcded..dc3b5de 100644 --- a/lib/core/scores/bloc/scored_bloc.dart +++ b/lib/core/scores/bloc/scored_bloc.dart @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:math_training/core/scores/models/result.dart'; +import 'package:math_training/core/settings/models/math_session_type.dart'; part 'scored_bloc.g.dart'; @@ -12,18 +13,18 @@ class Scores { const Scores({this.mathTestScores = const []}); - Iterable getResultsBySessionName(String name){ - return mathTestScores.where((r) => r.type == name); + Iterable getResultsBySessionType(MathSessionType type){ + return mathTestScores.where((r) => r.type == type); } - int getProblemsSolvedBySessionName(String name){ + int getProblemsSolvedBySessionType(MathSessionType type){ return mathTestScores - .where((r) => r.type == name) + .where((r) => r.type == type) .fold(0, (int sum, r) => sum + r.correct); } - double getAverageAccuracyBySessionName(String name) { - var selectedScores = mathTestScores.where((r) => r.type == name); + double getAverageAccuracyBySessionType(MathSessionType type) { + var selectedScores = mathTestScores.where((r) => r.type == type); var problemCount = selectedScores.fold(0, (int sum, r) => sum + r.questions); var correct = selectedScores.fold(0, (int sum, r) => sum + r.correct); @@ -31,8 +32,8 @@ class Scores { return correct / problemCount; } - double getAverageSpeedBySessionName(String name) { - var selectedScores = mathTestScores.where((r) => r.type == name); + double getAverageSpeedBySessionType(MathSessionType type) { + var selectedScores = mathTestScores.where((r) => r.type == type); var totalProblems = selectedScores.fold(0, (int sum, r) => sum + r.correct); var totalTime = selectedScores.fold(0, (int sum, r) => sum + r.duration) / 60; // converting to minutes diff --git a/lib/core/scores/bloc/scored_bloc.g.dart b/lib/core/scores/bloc/scored_bloc.g.dart deleted file mode 100644 index b6a6f73..0000000 --- a/lib/core/scores/bloc/scored_bloc.g.dart +++ /dev/null @@ -1,19 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'scored_bloc.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Scores _$ScoresFromJson(Map json) { - return Scores( - mathTestScores: (json['mathTestScores'] as List) - .map((e) => MathTestResult.fromJson(e as Map)) - .toList(), - ); -} - -Map _$ScoresToJson(Scores instance) => { - 'mathTestScores': instance.mathTestScores, - }; diff --git a/lib/core/scores/models/result.dart b/lib/core/scores/models/result.dart index 86b1a9e..a540d50 100644 --- a/lib/core/scores/models/result.dart +++ b/lib/core/scores/models/result.dart @@ -1,11 +1,14 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:math_training/core/settings/models/math_session_type.dart'; -@JsonSerializable(createToJson: false, createFactory: false) +part 'result.g.dart'; + +@JsonSerializable() class MathTestResult { final int correct; final int incorrect; final int duration; - final String type; + final MathSessionType type; final DateTime time; int get questions => correct + incorrect; @@ -20,22 +23,7 @@ class MathTestResult { required this.type, }); - factory MathTestResult.fromJson(Map map) { - return MathTestResult( - correct: map["correct"], - incorrect: map["incorrect"], - duration: map["duration"], - type: map["type"], - time: DateTime.fromMillisecondsSinceEpoch(map["time"])); - } + factory MathTestResult.fromJson(Map json) => _$MathTestResultFromJson(json); - Map toJson() { - return { - "correct": correct, - "incorrect": incorrect, - "duration": duration, - "type": type, - "time": time.millisecondsSinceEpoch, - }; - } + Map toJson() => _$MathTestResultToJson(this); } diff --git a/lib/core/settings/cubit/app_settings_cubit.dart b/lib/core/settings/cubit/app_settings_cubit.dart index be9852a..c08631c 100644 --- a/lib/core/settings/cubit/app_settings_cubit.dart +++ b/lib/core/settings/cubit/app_settings_cubit.dart @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:math_training/core/settings/models/math_session_type.dart'; +import 'package:math_training/core/settings/models/session_durations.dart'; part 'app_settings_cubit.g.dart'; @@ -9,7 +10,7 @@ class AppSettingsCubit extends HydratedCubit { AppSettingsCubit() : super(AppSettings.defaultValue()); set mathSessionDuration (Duration val) => emit(state.copyWith(mathSessionDuration: val)); - set mathSessionType (String val) => emit(state.copyWith(mathSessionType: val)); + set mathSessionType (MathSessionType val) => emit(state.copyWith(mathSessionType: val)); @override AppSettings fromJson(Map json) => AppSettings.fromJson(json); @@ -20,21 +21,22 @@ class AppSettingsCubit extends HydratedCubit { @immutable @JsonSerializable() class AppSettings { - final String mathSessionType; + final MathSessionType mathSessionType; final Duration mathSessionDuration; AppSettings copyWith({ - String? mathSessionType, + MathSessionType? mathSessionType, Duration? mathSessionDuration, }) { + print(mathSessionType); return AppSettings( mathSessionType: mathSessionType ?? this.mathSessionType, mathSessionDuration: mathSessionDuration ?? this.mathSessionDuration); } - factory AppSettings.defaultValue () => const AppSettings( + factory AppSettings.defaultValue () => AppSettings( mathSessionDuration: defaultDuration, - mathSessionType: sessionDefaultDifficulty, + mathSessionType: MathSessionType.defaultType, ); factory AppSettings.fromJson(Map json) => _$AppSettingsFromJson(json); diff --git a/lib/core/settings/cubit/app_settings_cubit.g.dart b/lib/core/settings/cubit/app_settings_cubit.g.dart deleted file mode 100644 index 1164a91..0000000 --- a/lib/core/settings/cubit/app_settings_cubit.g.dart +++ /dev/null @@ -1,21 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'app_settings_cubit.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -AppSettings _$AppSettingsFromJson(Map json) { - return AppSettings( - mathSessionType: json['mathSessionType'] as String, - mathSessionDuration: - Duration(microseconds: json['mathSessionDuration'] as int), - ); -} - -Map _$AppSettingsToJson(AppSettings instance) => - { - 'mathSessionType': instance.mathSessionType, - 'mathSessionDuration': instance.mathSessionDuration.inMicroseconds, - }; diff --git a/lib/core/settings/models/math_session_type.dart b/lib/core/settings/models/math_session_type.dart index 47c35ec..0bd4c9f 100644 --- a/lib/core/settings/models/math_session_type.dart +++ b/lib/core/settings/models/math_session_type.dart @@ -1,39 +1,11 @@ +enum MathSessionType { + easy("Easy"), + normal("Normal"), + hard("Hard"), + hexDecode("Hex decode"); + static const MathSessionType defaultType = easy; - const easyQuestionGeneratorName = "Easy"; - const normalQuestionGeneratorName = "Normal"; - const hardQuestionGeneratorName = "Hard"; - const hexReadQuestionGeneratorName = "Hex decode"; - - const String sessionDefaultDifficulty = easyQuestionGeneratorName; - - const sessionDifficultyNames = [ - easyQuestionGeneratorName, - normalQuestionGeneratorName, - hardQuestionGeneratorName, - hexReadQuestionGeneratorName, - ]; - - // QuestionGenerator getQuestionGenerator(String type) { - // switch (type) { - // case easyQuestionGeneratorName: - // return EasyQuestionGenerator(); - // case normalQuestionGeneratorName: - // return NormalQuestionGenerator(); - // case hardQuestionGeneratorName: - // return HardQuestionGenerator(); - // case hexReadQuestionGeneratorName: - // return HexQuestionGenerator(); - // } - // return NormalQuestionGenerator(); - // } - - const defaultDuration = Duration(minutes: 1); - - const List durationOptions = [ - Duration(minutes: 1), - Duration(minutes: 2), - Duration(minutes: 3), - Duration(minutes: 5), - Duration(minutes: 7), - ]; + const MathSessionType(this.name); + final String name; +} diff --git a/lib/core/settings/models/session_durations.dart b/lib/core/settings/models/session_durations.dart index e69de29..11db8c1 100644 --- a/lib/core/settings/models/session_durations.dart +++ b/lib/core/settings/models/session_durations.dart @@ -0,0 +1,9 @@ +final defaultDuration = durationOptions[0]; + +const List durationOptions = [ + Duration(minutes: 1), + Duration(minutes: 2), + Duration(minutes: 3), + Duration(minutes: 5), + Duration(minutes: 7), +]; \ No newline at end of file diff --git a/lib/features/home/view/home_page.dart b/lib/features/home/view/home_page.dart index cfec23f..4256a65 100644 --- a/lib/features/home/view/home_page.dart +++ b/lib/features/home/view/home_page.dart @@ -34,9 +34,9 @@ class TransitionAppBar extends StatelessWidget { EdgeInsets padding = data.padding; var sessionType = context.select((AppSettingsCubit s) => s.state.mathSessionType); - var problemsSolved = context.select((ScoresCubit s) => s.state.getProblemsSolvedBySessionName(sessionType)); - var averageSpeed = context.select((ScoresCubit s) => s.state.getAverageSpeedBySessionName(sessionType)); - var averageAccuracy = context.select((ScoresCubit s) => s.state.getAverageAccuracyBySessionName(sessionType)); + var problemsSolved = context.select((ScoresCubit s) => s.state.getProblemsSolvedBySessionType(sessionType)); + var averageSpeed = context.select((ScoresCubit s) => s.state.getAverageSpeedBySessionType(sessionType)); + var averageAccuracy = context.select((ScoresCubit s) => s.state.getAverageAccuracyBySessionType(sessionType)); return SliverPersistentHeader( pinned: true, @@ -45,7 +45,7 @@ class TransitionAppBar extends StatelessWidget { problemsSolved: problemsSolved, averageAccuracy: averageAccuracy, averageSpeed: averageSpeed, - sessionType: sessionType, + sessionType: sessionType.name, ), ); } @@ -225,7 +225,7 @@ class ScoresList extends StatelessWidget { @override Widget build(BuildContext context) { var sessionType = context.select((AppSettingsCubit s) => s.state.mathSessionType); - var scores = context.select((ScoresCubit scores) => scores.state.getResultsBySessionName(sessionType)).toList(); + var scores = context.select((ScoresCubit scores) => scores.state.getResultsBySessionType(sessionType)).toList(); var theme = Theme.of(context).extension()!.data; diff --git a/lib/features/math_game/bloc/game_bloc.dart b/lib/features/math_game/bloc/game_bloc.dart index 4c29321..75a8208 100644 --- a/lib/features/math_game/bloc/game_bloc.dart +++ b/lib/features/math_game/bloc/game_bloc.dart @@ -3,6 +3,7 @@ import 'package:bloc/bloc.dart'; import 'package:math_training/core/scores/models/result.dart'; import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; +import 'package:math_training/core/settings/models/math_session_type.dart'; import 'package:math_training/features/math_game/bloc/game_events.dart'; import 'package:math_training/features/math_game/bloc/game_state.dart'; import 'package:math_training/features/math_game/util/ticker.dart'; @@ -10,29 +11,34 @@ import 'package:math_training/features/math_game/util/training.dart'; class MathGameBloc extends Bloc { final Ticker _ticker; + final MathSessionType sessionType; final QuestionGenerator _questions; final Duration _duration; Duration get duration => _duration; - String get sessionType => _questions.name; - StreamSubscription? _tickerSubscription; factory MathGameBloc.fromSettings(AppSettings settings) { + var sessionType = settings.mathSessionType; var questions = getQuestionGenerator(settings.mathSessionType); var duration = settings.mathSessionDuration; return MathGameBloc( + sessionType: sessionType, questions: questions, duration: duration, ); } - MathGameBloc({required QuestionGenerator questions, required Duration duration}) - : _ticker = const Ticker(), + MathGameBloc({ + required QuestionGenerator questions, + required MathSessionType sessionType, + required Duration duration, + }) : _ticker = const Ticker(), _questions = questions, _duration = duration, + sessionType = sessionType, super(MathGameState( answered: [], inputValue: '', @@ -73,7 +79,7 @@ class MathGameBloc extends Bloc { correct: correct, incorrect: incorrect, time: time, - type: _questions.name, + type: sessionType, ); } diff --git a/lib/features/math_game/util/training.dart b/lib/features/math_game/util/training.dart index 0653f08..0c1fcde 100644 --- a/lib/features/math_game/util/training.dart +++ b/lib/features/math_game/util/training.dart @@ -3,23 +3,20 @@ import 'dart:math'; import 'package:math_training/core/settings/models/math_session_type.dart'; import 'package:math_training/features/math_game/util/question.dart'; -QuestionGenerator getQuestionGenerator(String type) { +QuestionGenerator getQuestionGenerator(MathSessionType type) { switch (type) { - case easyQuestionGeneratorName: + case MathSessionType.easy: return EasyQuestionGenerator(); - case normalQuestionGeneratorName: + case MathSessionType.normal: return NormalQuestionGenerator(); - case hardQuestionGeneratorName: + case MathSessionType.hard: return HardQuestionGenerator(); - case hexReadQuestionGeneratorName: + case MathSessionType.hexDecode: return HexQuestionGenerator(); } - return NormalQuestionGenerator(); } abstract class QuestionGenerator { - String get name; - Random r = Random(); Question next(); @@ -30,9 +27,6 @@ abstract class QuestionGenerator { } class HardQuestionGenerator extends QuestionGenerator { - @override - String get name => hardQuestionGeneratorName; - @override Question next() { switch (r.nextInt(4)) { @@ -49,9 +43,6 @@ class HardQuestionGenerator extends QuestionGenerator { } class NormalQuestionGenerator extends QuestionGenerator { - @override - String get name => normalQuestionGeneratorName; - @override Question next() { switch (r.nextInt(3)) { @@ -66,9 +57,6 @@ class NormalQuestionGenerator extends QuestionGenerator { } class EasyQuestionGenerator extends QuestionGenerator { - @override - String get name => easyQuestionGeneratorName; - @override Question next() { switch (r.nextInt(2)) { @@ -81,9 +69,6 @@ class EasyQuestionGenerator extends QuestionGenerator { } class HexQuestionGenerator extends QuestionGenerator { - @override - String get name => hexReadQuestionGeneratorName; - @override Question next() { int val = r.nextInt(255); diff --git a/lib/features/settings/view/settings_page.dart b/lib/features/settings/view/settings_page.dart index a5e67d2..e6987d9 100644 --- a/lib/features/settings/view/settings_page.dart +++ b/lib/features/settings/view/settings_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:math_training/core/settings/models/math_session_type.dart'; +import 'package:math_training/core/settings/models/session_durations.dart'; import 'package:math_training/features/settings/view/widgets.dart'; import 'package:math_training/core/scores/bloc/scored_bloc.dart'; import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; @@ -130,7 +131,7 @@ class MathSessionEditor extends StatelessWidget { return NameValueCard( onTap: () => showDialog(context: context, builder: (c) => MathSessionTypeDialog()), name: Text("Session type:"), - value: Text(sessionType), + value: Text(sessionType.name), ); } } @@ -140,13 +141,13 @@ class MathSessionTypeDialog extends StatelessWidget { @override Widget build(BuildContext context) { - List> elements = sessionDifficultyNames - .map((option) => ListDialogElement(value: option, child: Text("${option}"))) + List> elements = MathSessionType.values + .map((option) => ListDialogElement(value: option, child: Text("${option.name}"))) .toList(); var settings = context.read(); - return ListDialog( + return ListDialog( elements: elements, title: "Session type", selected: settings.state.mathSessionType, diff --git a/lib/features/settings/view/widgets.dart b/lib/features/settings/view/widgets.dart index 28a4557..c654ace 100644 --- a/lib/features/settings/view/widgets.dart +++ b/lib/features/settings/view/widgets.dart @@ -86,7 +86,10 @@ class ListDialog extends StatelessWidget { return Container( color: element.value == selected ? Theme.of(context).colorScheme.primary.withAlpha(30) : Colors.transparent, child: SimpleDialogOption( - onPressed: () => Navigator.pop(context, element.value), + onPressed: () { + onChoiceMade?.call(element.value); + Navigator.pop(context, element.value); + }, child: element.child, ), ); From 220b2b187ce6dacd89b20fc52176733df24e79f0 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Thu, 14 Sep 2023 23:44:48 +0300 Subject: [PATCH 25/31] Fix: incorrect ui in settings --- lib/features/settings/view/settings_page.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/features/settings/view/settings_page.dart b/lib/features/settings/view/settings_page.dart index e6987d9..e8ea657 100644 --- a/lib/features/settings/view/settings_page.dart +++ b/lib/features/settings/view/settings_page.dart @@ -41,7 +41,7 @@ class ClearScoresButton extends StatelessWidget { @override Widget build(BuildContext context) { return NameValueCard( - onTap: () => showDialog(context: context, builder: (c) => ClearScoresButton()), + onTap: () => showDialog(context: context, builder: (c) => ClearScoresDialog()), name: Text("Clear scores"), value: Container(), ); @@ -107,9 +107,9 @@ class MathSessionDurationDialog extends StatelessWidget { Widget build(BuildContext context) { List> elements = durationOptions .map((option) => ListDialogElement( - value: option, - child: Text("${option.inMinutes} min"), - )) + value: option, + child: Text("${option.inMinutes} min"), + )) .toList(); var settings = context.read(); From 54168bbace50c6dec73108c6b9ca832755dcd29d Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Thu, 14 Sep 2023 23:49:14 +0300 Subject: [PATCH 26/31] Now url launches in external browser --- lib/features/settings/view/settings_page.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/features/settings/view/settings_page.dart b/lib/features/settings/view/settings_page.dart index e8ea657..2c1ff94 100644 --- a/lib/features/settings/view/settings_page.dart +++ b/lib/features/settings/view/settings_page.dart @@ -76,7 +76,7 @@ class GithubPageButton extends StatelessWidget { @override Widget build(BuildContext context) { return NameValueCard( - onTap: () => launchUrl(githubPage), + onTap: () => launchUrl(githubPage, mode: LaunchMode.externalApplication), name: Text("View project on Github", style: TextStyle( color: Colors.blueAccent[700] From 7afe200b86a68fb6b2630101e50f07aa929b1d3b Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Sat, 16 Sep 2023 13:21:39 +0300 Subject: [PATCH 27/31] Added privacy policy link --- lib/features/settings/view/settings_page.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/features/settings/view/settings_page.dart b/lib/features/settings/view/settings_page.dart index 2c1ff94..e691129 100644 --- a/lib/features/settings/view/settings_page.dart +++ b/lib/features/settings/view/settings_page.dart @@ -8,6 +8,7 @@ import 'package:math_training/core/settings/cubit/app_settings_cubit.dart'; import 'package:url_launcher/url_launcher.dart'; final Uri githubPage = Uri.parse('https://github.com/Cifruktus/MathTraining'); +final Uri privacyPolicyPage = Uri.parse('https://cifruktus.github.io/MathTrainingWebapp/privacy-policy'); class SettingsPage extends StatelessWidget { const SettingsPage({Key? key}) : super(key: key); @@ -31,6 +32,7 @@ class SettingsPage extends StatelessWidget { MathSessionEditor(), ClearScoresButton(), GithubPageButton(), + PrivacyPageButton(), ], ), ); @@ -87,6 +89,21 @@ class GithubPageButton extends StatelessWidget { } } +class PrivacyPageButton extends StatelessWidget { + @override + Widget build(BuildContext context) { + return NameValueCard( + onTap: () => launchUrl(privacyPolicyPage, mode: LaunchMode.externalApplication), + name: Text("Privacy Policy", + style: TextStyle( + color: Colors.blueAccent[700] + ), + ), + value: Container(), + ); + } +} + class MathDurationEditor extends StatelessWidget { @override Widget build(BuildContext context) { From e029e2bb2e8815a624f4ff30b5a760479a84188b Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Sat, 16 Sep 2023 15:11:22 +0300 Subject: [PATCH 28/31] Target version update --- android/app/build.gradle | 3 ++- android/build.gradle | 2 +- android/gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 694b63a..40296f3 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -32,6 +32,7 @@ if (keystorePropertiesFile.exists()) { } android { + namespace "org.cifruktus.math_training" compileSdkVersion 33 compileOptions { @@ -50,7 +51,7 @@ android { defaultConfig { applicationId "org.cifruktus.mathtraining" minSdkVersion 16 - targetSdkVersion 31 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/android/build.gradle b/android/build.gradle index 8d1b929..c75e884 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' + classpath 'com.android.tools.build:gradle:8.1.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index ffed3a2..15de902 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From b8838d3e3edac07e342043ecae8e3fcd7761c7a3 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Sat, 16 Sep 2023 15:14:49 +0300 Subject: [PATCH 29/31] Fix: difficulty name was shown incorrectly --- lib/features/math_game/view/math_game_page.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/features/math_game/view/math_game_page.dart b/lib/features/math_game/view/math_game_page.dart index 6638645..10146c0 100644 --- a/lib/features/math_game/view/math_game_page.dart +++ b/lib/features/math_game/view/math_game_page.dart @@ -116,7 +116,7 @@ class BeforeGameView extends StatelessWidget { child: Column( mainAxisSize: MainAxisSize.min, children: [ - Text("Session type: ${game.sessionType}", style: theme.cardText,), + Text("Session type: ${game.sessionType.name}", style: theme.cardText,), Text("Duration: ${game.duration.inMinutes} min", style: theme.cardText), ], ), From fd379a86d9d59b517cfbf808560717042d48c654 Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Sat, 16 Sep 2023 16:41:59 +0300 Subject: [PATCH 30/31] Gradle script update: now prints info when signing the app --- android/app/build.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 40296f3..c0eede7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -59,7 +59,11 @@ android { def keystoreAvailable = keystoreProperties['storeFile'] - if (!keystoreAvailable) println('\u001b[31mKeystore wasn\'t found, using debug singning config\u001b[0m') + if (keystoreAvailable) { + println('\u001b[32mSigning with provided key\u001b[0m') + } else { + println('\u001B[31mKeystore wasn\'t found, using debug singning config\u001b[0m') + } signingConfigs { release { From b4262756f0b3ed3e77b13fdf2b6700d52ecb189b Mon Sep 17 00:00:00 2001 From: Cifruktus <9028029+Cifruktus@users.noreply.github.com> Date: Tue, 19 Sep 2023 23:14:01 +0300 Subject: [PATCH 31/31] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 00313b3..9c5547f 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ The app has several different modes, including simple addition/subtraction train The app will save results of each training so you can track your progress. +Get it on Google Play + You can try the online version out [here.](https://cifruktus.github.io/MathTrainingWebapp/#/)