From ca1722e3409d8032a3aa34bf5fbd0a0e0430633b Mon Sep 17 00:00:00 2001 From: dan63047 Date: Sun, 4 Jun 2023 18:10:20 +0300 Subject: [PATCH] 40 lines + blitz + other info tabs done --- lib/data_objects/tetrio.dart | 299 +++---- lib/views/main_view.dart | 1265 +++++++++++++++++++----------- pubspec.yaml | 1 + res/tetrio_badges/taws_u50_1.png | Bin 0 -> 106290 bytes 4 files changed, 953 insertions(+), 612 deletions(-) create mode 100644 res/tetrio_badges/taws_u50_1.png diff --git a/lib/data_objects/tetrio.dart b/lib/data_objects/tetrio.dart index 4591e8f..4c60534 100644 --- a/lib/data_objects/tetrio.dart +++ b/lib/data_objects/tetrio.dart @@ -68,10 +68,7 @@ class TetrioPlayer { this.distinguishment, }); - double get level => - pow((xp / 500), 0.6) + - (xp / (5000 + (max(0, xp - 4 * pow(10, 6)) / 5000))) + - 1; + double get level => pow((xp / 500), 0.6) + (xp / (5000 + (max(0, xp - 4 * pow(10, 6)) / 5000))) + 1; TetrioPlayer.fromJson(Map json, DateTime stateTime) { userId = json['_id']; @@ -96,33 +93,25 @@ class TetrioPlayer { bannerRevision = json['banner_revision']; bio = json['bio']; connections = Connections.fromJson(json['connections']); - distinguishment = json['distinguishment'] != null - ? Distinguishment.fromJson(json['distinguishment']) - : null; - friendCount = json['friend_count'] != null ? json['friend_count'] : 0; - badstanding = json['badstanding'] != null ? json['badstanding'] : null; - } - - Future getRecords() async { + distinguishment = json['distinguishment'] != null ? Distinguishment.fromJson(json['distinguishment']) : null; + friendCount = json['friend_count'] ?? 0; var url = Uri.https('ch.tetr.io', 'api/users/$userId/records'); - final response = await http.get(url); - if (response.statusCode == 200) { - if (jsonDecode(response.body)['data']['records']['40l']['record'] != - null) { - sprint.add(RecordSingle.fromJson( - jsonDecode(response.body)['data']['records']['40l']['record'])); + Future response = http.get(url); + response.then((value) { + if (value.statusCode == 200) { + Map jsonRecords = jsonDecode(value.body); + sprint = jsonRecords['data']['records']['40l']['record'] != null + ? [RecordSingle.fromJson(jsonRecords['data']['records']['40l']['record'], jsonRecords['data']['records']['40l']['rank'])] + : []; + blitz = jsonRecords['data']['records']['blitz']['record'] != null + ? [RecordSingle.fromJson(jsonRecords['data']['records']['blitz']['record'], jsonRecords['data']['records']['blitz']['rank'])] + : []; + zen = TetrioZen.fromJson(jsonRecords['data']['zen']); + } else { + throw Exception('Failed to fetch player'); } - if (jsonDecode(response.body)['data']['records']['blitz']['record'] != - null) { - blitz.add(RecordSingle.fromJson( - jsonDecode(response.body)['data']['records']['blitz']['record'])); - } - zen = TetrioZen.fromJson(jsonDecode(response.body)['data']['zen']); - } else { - // If the server did not return a 200 OK response, - // then throw an exception. - throw Exception('Failed to fetch player'); - } + }); + badstanding = json['badstanding']; } Map toJson() { @@ -195,7 +184,7 @@ class Badge { Badge.fromJson(Map json) { badgeId = json['id']; label = json['label']; - ts = json['ts'] != null ? DateTime.parse(json['ts']) : null; + ts = (json['ts'] != null && json['ts'] is String) ? DateTime.parse(json['ts']) : null; } Map toJson() { @@ -224,8 +213,7 @@ class Connections { Connections({this.discord}); Connections.fromJson(Map json) { - discord = - json['discord'] != null ? Discord.fromJson(json['discord']) : null; + discord = json['discord'] != null ? Discord.fromJson(json['discord']) : null; } Map toJson() { @@ -326,8 +314,7 @@ class Finesse { late int faults; late int perfectPieces; - Finesse( - {required this.combo, required this.faults, required this.perfectPieces}); + Finesse({required this.combo, required this.faults, required this.perfectPieces}); Finesse.fromJson(Map json) { combo = json['combo']; @@ -345,42 +332,48 @@ class Finesse { } class EndContextSingle { - String? gameType; - int? topBtB; - int? topCombo; - int? holds; - int? inputs; - int? level; - int? piecesPlaced; - int? lines; - int? score; - int? seed; - Duration? finalTime; - int? tSpins; - Clears? clears; - Finesse? finesse; + late String gameType; + late int topBtB; + late int topCombo; + late int holds; + late int inputs; + late int level; + late int piecesPlaced; + late int lines; + late int score; + late int seed; + late Duration finalTime; + late int tSpins; + late Clears clears; + late Finesse finesse; + + double get pps => piecesPlaced / (finalTime.inMicroseconds / 1000000); + double get kpp => inputs / piecesPlaced; + double get spp => score / piecesPlaced; + double get kps => inputs / (finalTime.inMicroseconds / 1000000); + double get finessePercentage => finesse.perfectPieces / piecesPlaced; EndContextSingle( - {this.gameType, - this.topBtB, - this.topCombo, - this.holds, - this.inputs, - this.level, - this.piecesPlaced, - this.lines, - this.score, - this.seed, - this.finalTime, - this.tSpins, - this.clears, - this.finesse}); + {required this.gameType, + required this.topBtB, + required this.topCombo, + required this.holds, + required this.inputs, + required this.level, + required this.piecesPlaced, + required this.lines, + required this.score, + required this.seed, + required this.finalTime, + required this.tSpins, + required this.clears, + required this.finesse}); EndContextSingle.fromJson(Map json) { seed = json['seed']; lines = json['lines']; inputs = json['inputs']; - holds = json['holds']; + holds = json['holds'] ?? 0; finalTime = doubleMillisecondsToDuration(json['finalTime'].toDouble()); score = json['score']; level = json['level']; @@ -388,9 +381,8 @@ class EndContextSingle { topBtB = json['topbtb']; tSpins = json['tspins']; piecesPlaced = json['piecesplaced']; - clears = json['clears'] != null ? Clears.fromJson(json['clears']) : null; - finesse = - json['finesse'] != null ? Finesse.fromJson(json['finesse']) : null; + clears = Clears.fromJson(json['clears']); + finesse = Finesse.fromJson(json['finesse']); gameType = json['gametype']; } @@ -406,12 +398,8 @@ class EndContextSingle { data['topbtb'] = topBtB; data['tspins'] = tSpins; data['piecesplaced'] = piecesPlaced; - if (clears != null) { - data['clears'] = clears!.toJson(); - } - if (finesse != null) { - data['finesse'] = finesse!.toJson(); - } + data['clears'] = clears.toJson(); + data['finesse'] = finesse.toJson(); data['finalTime'] = finalTime; data['gametype'] = gameType; return data; @@ -426,13 +414,7 @@ class Handling { late bool cancel; late bool safeLock; - Handling( - {required this.arr, - required this.das, - required this.sdf, - required this.dcd, - required this.cancel, - required this.safeLock}); + Handling({required this.arr, required this.das, required this.sdf, required this.dcd, required this.cancel, required this.safeLock}); Handling.fromJson(Map json) { arr = json['arr']; @@ -455,6 +437,92 @@ class Handling { } } +class NerdStats { + final double _apm; + final double _pps; + final double _vs; + late double app; + late double vsapm; + late double dss; + late double dsp; + late double appdsp; + late double cheese; + late double gbe; + late double nyaapp; + late double area; + + NerdStats(this._apm, this._pps, this._vs) { + app = _apm / (_pps * 60); + vsapm = _vs / _apm; + dss = (_vs / 100) - (_apm / 60); + dsp = ((_vs / 100) - (_apm / 60)) / _pps; + appdsp = app + dsp; + cheese = (dsp * 150) + (((_vs / _apm) - 2) * 50) + (0.6 - app) * 125; + gbe = ((app * dss) / _pps) * 2; + nyaapp = app - 5 * tan(radians((cheese / -30) + 1)); + area = _apm * 1 + _pps * 45 + _vs * 0.444 + app * 185 + dss * 175 + dsp * 450 + gbe * 315; + } +} + +class EstTr { + final double _apm; + final double _pps; + final double _vs; + final double _rating; + final double _rd; + final double _app; + final double _dss; + final double _dsp; + final double _gbe; + late double esttr; + late double srarea; + late double statrank; + + EstTr(this._apm, this._pps, this._vs, this._rating, this._rd, this._app, this._dss, this._dsp, this._gbe) { + srarea = (_apm * 0) + (_pps * 135) + (_vs * 0) + (_app * 290) + (_dss * 0) + (_dsp * 700) + (_gbe * 0); + statrank = 11.2 * atan((srarea - 93) / 130) + 1; + if (statrank <= 0) statrank = 0.001; + double estglicko = (4.0867 * srarea + 186.68); + double temp = (1500 - estglicko) * pi; + double temp2 = pow((15.9056943314 * (pow(_rd, 2)) + 3527584.25978), 0.5) as double; + double temp3 = 1 + pow(10, (temp / temp2)) as double; + esttr = 25000 / temp3; + } +} + +class Playstyle { + final double _apm; + final double _pps; + final double _vs; + final double _rd; + final double _app; + final double _vsapm; + final double _dss; + final double _dsp; + final double _gbe; + final double _srarea; + final double _statrank; + late double opener; + late double plonk; + late double stride; + late double infds; + + Playstyle(this._apm, this._pps, this._vs, this._rd, this._app, this._vsapm, this._dss, this._dsp, this._gbe, this._srarea, this._statrank) { + double nmapm = ((_apm / _srarea) / ((0.069 * pow(1.0017, (pow(_statrank, 5) / 4700))) + _statrank / 360)) - 1; + double nmpps = ((_pps / _srarea) / (0.0084264 * pow(2.14, (-2 * (_statrank / 2.7 + 1.03))) - _statrank / 5750 + 0.0067)) - 1; + double nmvs = ((_vs / _srarea) / (0.1333 * pow(1.0021, ((pow(_statrank, 7) * (_statrank / 16.5)) / 1400000)) + _statrank / 133)) - 1; + double nmapp = (_app / (0.1368803292 * pow(1.0024, (pow(_statrank, 5) / 2800)) + _statrank / 54)) - 1; + double nmdss = (_dss / (0.01436466667 * pow(4.1, ((_statrank - 9.6) / 2.9)) + _statrank / 140 + 0.01)) - 1; + double nmdsp = (_dsp / (0.02136327583 * pow(14, ((_statrank - 14.75) / 3.9)) + _statrank / 152 + 0.022)) - 1; + double nmgbe = (_gbe / (_statrank / 350 + 0.005948424455 * pow(3.8, ((_statrank - 6.1) / 4)) + 0.006)) - 1; + double nmvsapm = (_vsapm / (-pow(((_statrank - 16) / 36), 2) + 2.133)) - 1; + opener = ((nmapm + nmpps * 0.75 + nmvsapm * -10 + nmapp * 0.75 + nmdsp * -0.25) / 3.5) + 0.5; + plonk = ((nmgbe + nmapp + nmdsp * 0.75 + nmpps * -1) / 2.73) + 0.5; + stride = ((nmapm * -0.25 + nmpps + nmapp * -2 + nmdsp * -0.5) * 0.79) + 0.5; + infds = ((nmdsp + nmapp * -0.75 + nmapm * 0.5 + nmvsapm * 1.5 + nmpps * 0.5) * 0.9) + 0.5; + } +} + class EndContextMulti { String? userId; int? naturalOrder; @@ -489,8 +557,7 @@ class EndContextMulti { EndContextMulti.fromJson(Map json) { userId = json['user']['_id']; - handling = - json['handling'] != null ? Handling.fromJson(json['handling']) : null; + handling = json['handling'] != null ? Handling.fromJson(json['handling']) : null; success = json['success']; inputs = json['inputs']; piecesPlaced = json['piecesplaced']; @@ -502,9 +569,7 @@ class EndContextMulti { secondaryTracking = json['points']['secondaryAvgTracking'].cast(); tertiaryTracking = json['points']['tertiaryAvgTracking'].cast(); extra = json['points']['extra']['vs']; - extraTracking = json['points']['extraAvgTracking'] - ['aggregatestats___vsscore'] - .cast(); + extraTracking = json['points']['extraAvgTracking']['aggregatestats___vsscore'].cast(); } Map toJson() { @@ -522,8 +587,7 @@ class EndContextMulti { data['points']['secondary'] = secondary; data['points']['tertiary'] = tertiary; data['points']['extra']['vs'] = extra; - data['points']['extraAvgTracking']['aggregatestats___vsscore'] = - extraTracking; + data['points']['extraAvgTracking']['aggregatestats___vsscore'] = extraTracking; return data; } } @@ -548,6 +612,9 @@ class TetraLeagueAlpha { double? apm; double? pps; double? vs; + NerdStats? nerdStats; + EstTr? estTr; + Playstyle? playstyle; List? records; TetraLeagueAlpha( @@ -594,45 +661,16 @@ class TetraLeagueAlpha { nextRank = json['next_rank']; nextAt = json['next_at']; percentileRank = json['percentile_rank']; + nerdStats = (apm != null && pps != null && apm != null) ? NerdStats(apm!, pps!, vs!) : null; + estTr = + (nerdStats != null) ? EstTr(apm!, pps!, vs!, rating, (rd != null) ? rd! : 69, nerdStats!.app, nerdStats!.dss, nerdStats!.dsp, nerdStats!.gbe) : null; + playstyle = (nerdStats != null) + ? Playstyle(apm!, pps!, vs!, (rd != null) ? rd! : 69, nerdStats!.app, nerdStats!.vsapm, nerdStats!.dss, nerdStats!.dsp, nerdStats!.gbe, estTr!.srarea, + estTr!.statrank) + : null; } - double? get app => apm! / (pps! * 60); - double? get vsapm => vs! / apm!; - double? get dss => (vs! / 100) - (apm! / 60); - double? get dsp => ((vs! / 100) - (apm! / 60)) / pps!; - double? get appdsp => app! + dsp!; - double? get cheese => - (dsp! * 150) + (((vs! / apm!) - 2) * 50) + (0.6 - app!) * 125; - double? get gbe => ((app! * dss!) / pps!) * 2; - double? get nyaapp => app! - 5 * tan(radians((cheese! / -30) + 1)); - double? get area => - apm! * 1 + - pps! * 45 + - vs! * 0.444 + - app! * 185 + - dss! * 175 + - dsp! * 450 + - gbe! * 315; - - double? get esttr { - double srarea = (apm! * 0) + - (pps! * 135) + - (vs! * 0) + - (app! * 290) + - (dss! * 0) + - (dsp! * 700) + - (gbe! * 0); - double statrank = 11.2 * atan((srarea - 93) / 130) + 1; - if (statrank <= 0) statrank = 0.001; - double estglicko = (4.0867 * srarea + 186.68); - double temp = (1500 - estglicko) * pi; - double temp2 = - pow((15.9056943314 * (pow(rd!, 2)) + 3527584.25978), 0.5) as double; - double temp3 = 1 + pow(10, (temp / temp2)) as double; - return 25000 / temp3; - } - - double? get esttracc => esttr! - rating; + double? get esttracc => (estTr != null) ? estTr!.esttr - rating : null; Map toJson() { final Map data = {}; @@ -667,22 +705,15 @@ class RecordSingle { EndContextSingle? endContext; int? rank; - RecordSingle( - {required this.userId, - required this.replayId, - required this.ownId, - this.timestamp, - this.endContext, - this.rank}); + RecordSingle({required this.userId, required this.replayId, required this.ownId, this.timestamp, this.endContext, this.rank}); - RecordSingle.fromJson(Map json) { + RecordSingle.fromJson(Map json, int? ran) { ownId = json['_id']; - endContext = json['endcontext'] != null - ? EndContextSingle.fromJson(json['endcontext']) - : null; + endContext = json['endcontext'] != null ? EndContextSingle.fromJson(json['endcontext']) : null; replayId = json['replayid']; timestamp = DateTime.parse(json['ts']); userId = json['user']['_id']; + rank = ran; } Map toJson() { diff --git a/lib/views/main_view.dart b/lib/views/main_view.dart index 024fffa..a9c1db4 100644 --- a/lib/views/main_view.dart +++ b/lib/views/main_view.dart @@ -14,7 +14,7 @@ extension StringExtension on String { } String _searchFor = "dan63047"; -late Future me; +Future? me; DB db = DB(); TetrioService teto = TetrioService(); const allowedHeightForPlayerIdInPixels = 40.0; @@ -37,20 +37,18 @@ Future fetchTetrioPlayer(String user) async { final response = await http.get(url); if (response.statusCode == 200) { - return jsonDecode(response.body)['success'] - ? TetrioPlayer.fromJson( - jsonDecode(response.body)['data']['user'], - DateTime.fromMillisecondsSinceEpoch( - jsonDecode(response.body)['cache']['cached_at'], - isUtc: true)) - : throw Exception("User doesn't exist"); + if (jsonDecode(response.body)['success']) { + return TetrioPlayer.fromJson( + jsonDecode(response.body)['data']['user'], DateTime.fromMillisecondsSinceEpoch(jsonDecode(response.body)['cache']['cached_at'], isUtc: true)); + } else { + throw Exception("User doesn't exist"); + } } else { throw Exception('Failed to fetch player'); } } -class _MyHomePageState extends State - with SingleTickerProviderStateMixin { +class _MyHomePageState extends State with SingleTickerProviderStateMixin { final bodyGlobalKey = GlobalKey(); final List myTabs = [ const Tab(text: "Tetra League"), @@ -81,19 +79,21 @@ class _MyHomePageState extends State ), ], ), - onSubmitted: (String value) => setState(() { - me = fetchTetrioPlayer(value); + onSubmitted: (String value) { _searchFor = value; - }), + me = null; + _tabController.animateTo(0, duration: Duration(milliseconds: 300)); + setState(() { + me = fetchTetrioPlayer(value); + }); + }, ); } @override void initState() { _scrollController = ScrollController(); - //_scrollController.addListener(_scrollListener); _tabController = TabController(length: 4, vsync: this); - //_tabController.addListener(_smoothScrollToTop); me = fetchTetrioPlayer("dan63047"); super.initState(); } @@ -117,10 +117,6 @@ class _MyHomePageState extends State duration: const Duration(microseconds: 300), curve: Curves.ease, ); - - setState(() { - fixedScroll = _tabController.index == 2; - }); } @override @@ -171,8 +167,7 @@ class _MyHomePageState extends State tooltip: "Close search", ), PopupMenuButton( - itemBuilder: (BuildContext context) => - >[ + itemBuilder: (BuildContext context) => >[ const PopupMenuItem( value: ThreeDotsItems.compare, child: Text('Compare'), @@ -193,19 +188,27 @@ class _MyHomePageState extends State child: FutureBuilder( future: me, builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center( + child: CircularProgressIndicator( + color: Colors.white, + )); + } if (snapshot.hasData) { bool bigScreen = MediaQuery.of(context).size.width > 768; return NestedScrollView( controller: _scrollController, headerSliverBuilder: (context, value) { return [ - SliverToBoxAdapter( - child: _UserThingy(player: snapshot.data!)), + SliverToBoxAdapter(child: _UserThingy(player: snapshot.data!)), SliverToBoxAdapter( child: TabBar( controller: _tabController, isScrollable: true, tabs: myTabs, + onTap: (int sus) { + setState(() {}); + }, ), ), ]; @@ -220,22 +223,15 @@ class _MyHomePageState extends State return Column( children: (snapshot.data!.tlSeason1.gamesPlayed > 0) ? [ - Text("Tetra League", - style: TextStyle( - fontFamily: - "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), - if (snapshot.data!.tlSeason1.gamesPlayed >= - 10) + Text("Tetra League", style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + if (snapshot.data!.tlSeason1.gamesPlayed >= 10) Wrap( direction: Axis.horizontal, alignment: WrapAlignment.spaceAround, - crossAxisAlignment: - WrapCrossAlignment.center, + crossAxisAlignment: WrapCrossAlignment.center, clipBehavior: Clip.hardEdge, children: [ - snapshot.data!.userId == - "5e32fc85ab319c2ab1beb07c" + snapshot.data!.userId == "5e32fc85ab319c2ab1beb07c" ? Image.asset( "res/icons/kagari.png", height: 128, @@ -246,13 +242,8 @@ class _MyHomePageState extends State ), Column( children: [ - Text( - "${snapshot.data!.tlSeason1.rating.toStringAsFixed(2)} TR", - style: TextStyle( - fontFamily: - "Eurostile Round Extended", - fontSize: - bigScreen ? 42 : 28)), + Text("${snapshot.data!.tlSeason1.rating.toStringAsFixed(2)} TR", + style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), Text( "Top ${(snapshot.data!.tlSeason1.percentile * 100).toStringAsFixed(2)}% (${snapshot.data!.tlSeason1.percentileRank.toUpperCase()}) • Top Rank: ${snapshot.data!.tlSeason1.bestRank.toUpperCase()} • Glicko: ${snapshot.data!.tlSeason1.glicko?.toStringAsFixed(2)}±${snapshot.data!.tlSeason1.rd?.toStringAsFixed(2)}${snapshot.data!.tlSeason1.decaying ? ' • Decaying' : ''}", textAlign: TextAlign.center, @@ -263,179 +254,122 @@ class _MyHomePageState extends State ) else Row( - mainAxisAlignment: - MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, children: [ Column( children: [ - Text( - "${10 - snapshot.data!.tlSeason1.gamesPlayed} games until being ranked", + Text("${10 - snapshot.data!.tlSeason1.gamesPlayed} games until being ranked", softWrap: true, style: TextStyle( - fontFamily: - "Eurostile Round Extended", + fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28, - overflow: - TextOverflow.visible, + overflow: TextOverflow.visible, )), ], ) ], ), Padding( - padding: - const EdgeInsets.fromLTRB(0, 16, 0, 48), + padding: const EdgeInsets.fromLTRB(0, 16, 0, 48), child: Wrap( direction: Axis.horizontal, alignment: WrapAlignment.center, spacing: 25, - crossAxisAlignment: - WrapCrossAlignment.start, + crossAxisAlignment: WrapCrossAlignment.start, clipBehavior: Clip.hardEdge, children: [ - if (snapshot.data!.tlSeason1.apm != - null) + if (snapshot.data!.tlSeason1.apm != null) _StatCellNum( - playerStat: - snapshot.data!.tlSeason1.apm!, + playerStat: snapshot.data!.tlSeason1.apm!, isScreenBig: bigScreen, fractionDigits: 2, - playerStatLabel: - "Attack\nPer Minute"), - if (snapshot.data!.tlSeason1.pps != - null) + playerStatLabel: "Attack\nPer Minute"), + if (snapshot.data!.tlSeason1.pps != null) _StatCellNum( - playerStat: - snapshot.data!.tlSeason1.pps!, + playerStat: snapshot.data!.tlSeason1.pps!, isScreenBig: bigScreen, fractionDigits: 2, - playerStatLabel: - "Pieces\nPer Second"), - if (snapshot.data!.tlSeason1.apm != - null) + playerStatLabel: "Pieces\nPer Second"), + if (snapshot.data!.tlSeason1.apm != null) _StatCellNum( - playerStat: - snapshot.data!.tlSeason1.vs!, + playerStat: snapshot.data!.tlSeason1.vs!, isScreenBig: bigScreen, fractionDigits: 2, playerStatLabel: "Versus\nScore"), - if (snapshot.data!.tlSeason1.standing > - 0) + if (snapshot.data!.tlSeason1.standing > 0) _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.standing, - isScreenBig: bigScreen, - playerStatLabel: - "Leaderboard\nplacement"), - if (snapshot - .data!.tlSeason1.standingLocal > - 0) + playerStat: snapshot.data!.tlSeason1.standing, isScreenBig: bigScreen, playerStatLabel: "Leaderboard\nplacement"), + if (snapshot.data!.tlSeason1.standingLocal > 0) _StatCellNum( - playerStat: snapshot.data! - .tlSeason1.standingLocal, + playerStat: snapshot.data!.tlSeason1.standingLocal, isScreenBig: bigScreen, - playerStatLabel: - "Country LB\nplacement"), + playerStatLabel: "Country LB\nplacement"), _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.gamesPlayed, - isScreenBig: bigScreen, - playerStatLabel: "Games\nplayed"), + playerStat: snapshot.data!.tlSeason1.gamesPlayed, isScreenBig: bigScreen, playerStatLabel: "Games\nplayed"), + _StatCellNum(playerStat: snapshot.data!.tlSeason1.gamesWon, isScreenBig: bigScreen, playerStatLabel: "Games\nwon"), _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.gamesWon, - isScreenBig: bigScreen, - playerStatLabel: "Games\nwon"), - _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.winrate * - 100, + playerStat: snapshot.data!.tlSeason1.winrate * 100, isScreenBig: bigScreen, fractionDigits: 2, - playerStatLabel: - "Winrate\nprecentage"), + playerStatLabel: "Winrate\nprecentage"), ], ), ), - if (snapshot.data!.tlSeason1.apm != null && - snapshot.data!.tlSeason1.pps != null && - snapshot.data!.tlSeason1.apm != null) + if (snapshot.data!.tlSeason1.nerdStats != null) Column( children: [ - Text("Nerd Stats", - style: TextStyle( - fontFamily: - "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), + Text("Nerd Stats", style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), Padding( - padding: const EdgeInsets.fromLTRB( - 0, 16, 0, 48), + padding: const EdgeInsets.fromLTRB(0, 16, 0, 48), child: Wrap( direction: Axis.horizontal, alignment: WrapAlignment.center, spacing: 25, - crossAxisAlignment: - WrapCrossAlignment.start, + crossAxisAlignment: WrapCrossAlignment.start, clipBehavior: Clip.hardEdge, children: [ _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.app!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.app, isScreenBig: bigScreen, fractionDigits: 3, - playerStatLabel: - "Attack\nPer Piece"), + playerStatLabel: "Attack\nPer Piece"), _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.vsapm!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.vsapm, isScreenBig: bigScreen, fractionDigits: 3, playerStatLabel: "VS/APM"), _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.dss!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.dss, isScreenBig: bigScreen, fractionDigits: 3, - playerStatLabel: - "Downstack\nPer Second"), + playerStatLabel: "Downstack\nPer Second"), _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.dsp!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.dsp, isScreenBig: bigScreen, fractionDigits: 3, - playerStatLabel: - "Downstack\nPer Piece"), + playerStatLabel: "Downstack\nPer Piece"), _StatCellNum( - playerStat: snapshot.data! - .tlSeason1.appdsp!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.appdsp, isScreenBig: bigScreen, fractionDigits: 3, - playerStatLabel: - "APP + DS/P"), + playerStatLabel: "APP + DS/P"), _StatCellNum( - playerStat: snapshot.data! - .tlSeason1.cheese!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.cheese, isScreenBig: bigScreen, fractionDigits: 2, - playerStatLabel: - "Cheese\nIndex"), + playerStatLabel: "Cheese\nIndex"), _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.gbe!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.gbe, isScreenBig: bigScreen, fractionDigits: 3, - playerStatLabel: - "Garbage\nEfficiency"), + playerStatLabel: "Garbage\nEfficiency"), _StatCellNum( - playerStat: snapshot.data! - .tlSeason1.nyaapp!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.nyaapp, isScreenBig: bigScreen, fractionDigits: 3, - playerStatLabel: - "Weighted\nAPP"), + playerStatLabel: "Weighted\nAPP"), _StatCellNum( - playerStat: snapshot - .data!.tlSeason1.area!, + playerStat: snapshot.data!.tlSeason1.nerdStats!.area, isScreenBig: bigScreen, fractionDigits: 1, playerStatLabel: "Area") @@ -443,233 +377,713 @@ class _MyHomePageState extends State ) ], ), - Padding( - padding: - const EdgeInsets.fromLTRB(0, 16, 0, 48), - child: SizedBox( - width: bigScreen - ? MediaQuery.of(context).size.width * - 0.4 - : MediaQuery.of(context).size.width * - 0.85, - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Est. of TR:", - style: TextStyle(fontSize: 24), - ), - Text( - snapshot.data!.tlSeason1.esttr! - .toStringAsFixed(2), - style: const TextStyle( - fontSize: 24), - ), - ], - ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Accuracy of TR Est.:", - style: TextStyle(fontSize: 24), - ), - Text( - (snapshot.data!.tlSeason1 - .esttracc!) - .toStringAsFixed(2), - style: const TextStyle( - fontSize: 24), - ), - ], - ), - ], - ), - ), - ), - Padding( - padding: - const EdgeInsets.fromLTRB(0, 0, 0, 48), - child: SizedBox( - height: 300, - child: RadarChart( - RadarChartData( - radarShape: RadarShape.polygon, - tickCount: 4, - ticksTextStyle: const TextStyle( - color: Colors.transparent, - fontSize: 10), - radarBorderData: BorderSide( - color: Colors.transparent, - width: 1), - gridBorderData: BorderSide( - color: Colors.white24, width: 1), - tickBorderData: BorderSide( - color: Colors.transparent, - width: 1), - getTitle: (index, angle) { - switch (index) { - case 0: - return RadarChartTitle( - text: 'APM', - angle: angle, - ); - case 1: - return RadarChartTitle( - text: 'PPS', - angle: angle, - ); - case 2: - return RadarChartTitle( - text: 'VS', angle: angle); - case 3: - return RadarChartTitle( - text: 'APP', angle: angle); - case 4: - return RadarChartTitle( - text: 'DS/S', angle: angle); - case 5: - return RadarChartTitle( - text: 'DS/P', angle: angle); - case 6: - return RadarChartTitle( - text: 'APP+DS/P', - angle: angle); - case 7: - return RadarChartTitle( - text: 'VS/APM', - angle: angle); - case 8: - return RadarChartTitle( - text: 'Cheese', - angle: angle); - case 9: - return RadarChartTitle( - text: 'Gb Eff.', - angle: angle); - default: - return const RadarChartTitle( - text: ''); - } - }, - dataSets: [ - RadarDataSet( - dataEntries: [ - RadarEntry( - value: snapshot.data! - .tlSeason1.apm! * - 1), - RadarEntry( - value: snapshot.data! - .tlSeason1.pps! * - 45), - RadarEntry( - value: snapshot.data! - .tlSeason1.vs! * - 0.444), - RadarEntry( - value: snapshot.data! - .tlSeason1.app! * - 185), - RadarEntry( - value: snapshot.data! - .tlSeason1.dss! * - 175), - RadarEntry( - value: snapshot.data! - .tlSeason1.dsp! * - 450), - RadarEntry( - value: snapshot.data! - .tlSeason1.appdsp! * - 140), - RadarEntry( - value: snapshot.data! - .tlSeason1.vsapm! * - 60), - RadarEntry( - value: snapshot.data! - .tlSeason1.cheese! * - 1.25), - RadarEntry( - value: snapshot.data! - .tlSeason1.gbe! * - 315), + if (snapshot.data!.tlSeason1.estTr != null) + Padding( + padding: const EdgeInsets.fromLTRB(0, 16, 0, 48), + child: SizedBox( + width: bigScreen ? MediaQuery.of(context).size.width * 0.4 : MediaQuery.of(context).size.width * 0.85, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + "Est. of TR:", + style: TextStyle(fontSize: 24), + ), + Text( + snapshot.data!.tlSeason1.estTr!.esttr.toStringAsFixed(2), + style: const TextStyle(fontSize: 24), + ), ], ), - RadarDataSet( - fillColor: Colors.transparent, - borderColor: Colors.transparent, - dataEntries: [ - RadarEntry(value: 0), - RadarEntry(value: 0), - RadarEntry(value: 0), - RadarEntry(value: 0), - RadarEntry(value: 0), - RadarEntry(value: 0), - RadarEntry(value: 0), - RadarEntry(value: 0), - RadarEntry(value: 0), - RadarEntry(value: 0), - ], - ) + if (snapshot.data!.tlSeason1.rating >= 0) + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + "Accuracy:", + style: TextStyle(fontSize: 24), + ), + Text( + snapshot.data!.tlSeason1.esttracc!.toStringAsFixed(2), + style: const TextStyle(fontSize: 24), + ), + ], + ), ], ), - swapAnimationDuration: const Duration( - milliseconds: 150), // Optional - swapAnimationCurve: - Curves.linear, // Optional ), ), - ) + if (snapshot.data!.tlSeason1.nerdStats != null) + Wrap( + direction: Axis.horizontal, + alignment: WrapAlignment.spaceAround, + spacing: 25, + crossAxisAlignment: WrapCrossAlignment.start, + clipBehavior: Clip.hardEdge, + children: [ + Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 48), + child: SizedBox( + height: 300, + width: 300, + child: RadarChart( + RadarChartData( + radarShape: RadarShape.polygon, + tickCount: 4, + ticksTextStyle: const TextStyle(color: Colors.transparent, fontSize: 10), + radarBorderData: BorderSide(color: Colors.transparent, width: 1), + gridBorderData: BorderSide(color: Colors.white24, width: 1), + tickBorderData: BorderSide(color: Colors.transparent, width: 1), + getTitle: (index, angle) { + switch (index) { + case 0: + return RadarChartTitle( + text: 'APM', + angle: angle, + ); + case 1: + return RadarChartTitle( + text: 'PPS', + angle: angle, + ); + case 2: + return RadarChartTitle(text: 'VS', angle: angle); + case 3: + return RadarChartTitle(text: 'APP', angle: angle + 180); + case 4: + return RadarChartTitle(text: 'DS/S', angle: angle + 180); + case 5: + return RadarChartTitle(text: 'DS/P', angle: angle + 180); + case 6: + return RadarChartTitle(text: 'APP+DS/P', angle: angle + 180); + case 7: + return RadarChartTitle(text: 'VS/APM', angle: angle + 180); + case 8: + return RadarChartTitle(text: 'Cheese', angle: angle); + case 9: + return RadarChartTitle(text: 'Gb Eff.', angle: angle); + default: + return const RadarChartTitle(text: ''); + } + }, + dataSets: [ + RadarDataSet( + dataEntries: [ + RadarEntry(value: snapshot.data!.tlSeason1.apm! * 1), + RadarEntry(value: snapshot.data!.tlSeason1.pps! * 45), + RadarEntry(value: snapshot.data!.tlSeason1.vs! * 0.444), + RadarEntry(value: snapshot.data!.tlSeason1.nerdStats!.app * 185), + RadarEntry(value: snapshot.data!.tlSeason1.nerdStats!.dss * 175), + RadarEntry(value: snapshot.data!.tlSeason1.nerdStats!.dsp * 450), + RadarEntry(value: snapshot.data!.tlSeason1.nerdStats!.appdsp * 140), + RadarEntry(value: snapshot.data!.tlSeason1.nerdStats!.vsapm * 60), + RadarEntry(value: snapshot.data!.tlSeason1.nerdStats!.cheese * 1.25), + RadarEntry(value: snapshot.data!.tlSeason1.nerdStats!.gbe * 315), + ], + ), + RadarDataSet( + fillColor: Colors.transparent, + borderColor: Colors.transparent, + dataEntries: [ + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + ], + ) + ], + ), + swapAnimationDuration: const Duration(milliseconds: 150), // Optional + swapAnimationCurve: Curves.linear, // Optional + ), + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 48), + child: SizedBox( + height: 300, + width: 300, + child: RadarChart( + RadarChartData( + radarShape: RadarShape.polygon, + tickCount: 4, + ticksTextStyle: const TextStyle(color: Colors.transparent, fontSize: 10), + radarBorderData: BorderSide(color: Colors.transparent, width: 1), + gridBorderData: BorderSide(color: Colors.white24, width: 1), + tickBorderData: BorderSide(color: Colors.transparent, width: 1), + getTitle: (index, angle) { + switch (index) { + case 0: + return RadarChartTitle( + text: 'Opener', + angle: angle, + ); + case 1: + return RadarChartTitle( + text: 'Stride', + angle: angle, + ); + case 2: + return RadarChartTitle(text: 'Inf Ds', angle: angle + 180); + case 3: + return RadarChartTitle(text: 'Plonk', angle: angle); + default: + return const RadarChartTitle(text: ''); + } + }, + dataSets: [ + RadarDataSet( + dataEntries: [ + RadarEntry(value: snapshot.data!.tlSeason1.playstyle!.opener), + RadarEntry(value: snapshot.data!.tlSeason1.playstyle!.stride), + RadarEntry(value: snapshot.data!.tlSeason1.playstyle!.infds), + RadarEntry(value: snapshot.data!.tlSeason1.playstyle!.plonk), + ], + ), + RadarDataSet( + fillColor: Colors.transparent, + borderColor: Colors.transparent, + dataEntries: [ + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + RadarEntry(value: 0), + ], + ), + RadarDataSet( + fillColor: Colors.transparent, + borderColor: Colors.transparent, + dataEntries: [ + RadarEntry(value: 1), + RadarEntry(value: 1), + RadarEntry(value: 1), + RadarEntry(value: 1), + ], + ) + ], + ), + swapAnimationDuration: const Duration(milliseconds: 150), // Optional + swapAnimationCurve: Curves.linear, // Optional + ), + ), + ), + ], + ) ] : [ Text("That user never played Tetra League", - style: TextStyle( - fontFamily: - "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), + style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), ], ); }, ), - Column( - children: (snapshot.data!.sprint.isNotEmpty) - ? [] - : [ - Text("That user never played 40 Lines", - style: TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)) + ListView.builder( + physics: const ClampingScrollPhysics(), + itemCount: 1, + itemBuilder: (BuildContext context, int index) { + return Column( + children: (snapshot.data!.sprint.isNotEmpty) + ? [ + Text("40 Lines", style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + Text(snapshot.data!.sprint[0]!.endContext!.finalTime.toString(), + style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + if (snapshot.data!.sprint[0]!.rank != null) + _StatCellNum( + playerStat: snapshot.data!.sprint[0]!.rank!, playerStatLabel: "Leaderboard Placement", isScreenBig: bigScreen), + Padding( + padding: const EdgeInsets.fromLTRB(0, 48, 0, 48), + child: Wrap( + direction: Axis.horizontal, + alignment: WrapAlignment.spaceAround, + crossAxisAlignment: WrapCrossAlignment.center, + clipBehavior: Clip.hardEdge, + spacing: 25, + children: [ + _StatCellNum( + playerStat: snapshot.data!.sprint[0]!.endContext!.piecesPlaced, + playerStatLabel: "Pieces\nPlaced", + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.sprint[0]!.endContext!.pps, + playerStatLabel: "Pieces\nPer Second", + fractionDigits: 2, + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.sprint[0]!.endContext!.finesse.faults, + playerStatLabel: "Finesse\nFaults", + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.sprint[0]!.endContext!.finessePercentage * 100, + playerStatLabel: "Finesse\nPercentage", + fractionDigits: 2, + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.sprint[0]!.endContext!.inputs, + playerStatLabel: "Key\nPresses", + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.sprint[0]!.endContext!.kpp, + playerStatLabel: "KP Per\nPiece", + fractionDigits: 2, + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.sprint[0]!.endContext!.kps, + playerStatLabel: "KP Per\nSecond", + fractionDigits: 2, + isScreenBig: bigScreen), + ], + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 16, 0, 48), + child: SizedBox( + width: bigScreen ? MediaQuery.of(context).size.width * 0.4 : MediaQuery.of(context).size.width * 0.85, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("All Clears:", style: TextStyle(fontSize: 24)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.allClears.toString(), + style: const TextStyle(fontSize: 24), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("Holds:", style: TextStyle(fontSize: 24)), + Text( + snapshot.data!.sprint[0]!.endContext!.holds.toString(), + style: const TextStyle(fontSize: 24), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("T-spins total:", style: TextStyle(fontSize: 24)), + Text( + snapshot.data!.sprint[0]!.endContext!.tSpins.toString(), + style: const TextStyle(fontSize: 24), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin zero:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.tSpinZeros.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin singles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.tSpinSingles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin doubles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.tSpinDoubles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin triples:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.tSpinTriples.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin mini zero:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.tSpinMiniZeros.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin mini singles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.tSpinMiniSingles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin mini doubles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.tSpinMiniDoubles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("Line clears:", style: TextStyle(fontSize: 24)), + Text( + snapshot.data!.sprint[0]!.endContext!.lines.toString(), + style: const TextStyle(fontSize: 24), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - Singles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.singles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - Doubles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.doubles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - Triples:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.triples.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - Quads:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.sprint[0]!.endContext!.clears.quads.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + ], + ), + ), + ), + ] + : [ + Text("That user never played 40 Lines", + style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)) + ], + ); + }), + ListView.builder( + physics: const ClampingScrollPhysics(), + itemCount: 1, + itemBuilder: (BuildContext context, int index) { + return Column( + children: (snapshot.data!.blitz.isNotEmpty) + ? [ + Text("Blitz", style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + Text(snapshot.data!.blitz[0]!.endContext!.score.toString(), + style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + if (snapshot.data!.blitz[0]!.rank != null) + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.rank!, playerStatLabel: "Leaderboard Placement", isScreenBig: bigScreen), + Padding( + padding: const EdgeInsets.fromLTRB(0, 48, 0, 48), + child: Wrap( + direction: Axis.horizontal, + alignment: WrapAlignment.spaceAround, + crossAxisAlignment: WrapCrossAlignment.start, + clipBehavior: Clip.hardEdge, + spacing: 25, + children: [ + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.level, playerStatLabel: "Level", isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.spp, + playerStatLabel: "Score\nPer Piece", + fractionDigits: 2, + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.piecesPlaced, + playerStatLabel: "Pieces\nPlaced", + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.pps, + playerStatLabel: "Pieces\nPer Second", + fractionDigits: 2, + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.finesse.faults, + playerStatLabel: "Finesse\nFaults", + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.finessePercentage * 100, + playerStatLabel: "Finesse\nPercentage", + fractionDigits: 2, + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.inputs, playerStatLabel: "Key\nPresses", isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.kpp, + playerStatLabel: "KP Per\nPiece", + fractionDigits: 2, + isScreenBig: bigScreen), + _StatCellNum( + playerStat: snapshot.data!.blitz[0]!.endContext!.kps, + playerStatLabel: "KP Per\nSecond", + fractionDigits: 2, + isScreenBig: bigScreen), + ], + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 16, 0, 48), + child: SizedBox( + width: bigScreen ? MediaQuery.of(context).size.width * 0.4 : MediaQuery.of(context).size.width * 0.85, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("All Clears:", style: TextStyle(fontSize: 24)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.allClears.toString(), + style: const TextStyle(fontSize: 24), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("Holds:", style: TextStyle(fontSize: 24)), + Text( + snapshot.data!.blitz[0]!.endContext!.holds.toString(), + style: const TextStyle(fontSize: 24), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("T-spins total:", style: TextStyle(fontSize: 24)), + Text( + snapshot.data!.blitz[0]!.endContext!.tSpins.toString(), + style: const TextStyle(fontSize: 24), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin zero:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.tSpinZeros.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin singles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.tSpinSingles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin doubles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.tSpinDoubles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin triples:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.tSpinTriples.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin mini zero:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.tSpinMiniZeros.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin mini singles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.tSpinMiniSingles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - T-spin mini doubles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.tSpinMiniDoubles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text("Line clears:", style: TextStyle(fontSize: 24)), + Text( + snapshot.data!.blitz[0]!.endContext!.lines.toString(), + style: const TextStyle(fontSize: 24), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - Singles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.singles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - Doubles:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.doubles.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - Triples:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.triples.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text(" - Quads:", style: TextStyle(fontSize: 18)), + Text( + snapshot.data!.blitz[0]!.endContext!.clears.quads.toString(), + style: const TextStyle(fontSize: 18), + ), + ], + ), + ], + ), + ), + ), + ] + : [ + Text("That user never played Blitz", + style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)) + ], + ); + }), + ListView.builder( + physics: const ClampingScrollPhysics(), + itemCount: 1, + itemBuilder: (BuildContext context, int index) { + return Column( + children: [ + Text("Other info", style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + if (snapshot.data!.zen != null) + Padding( + padding: const EdgeInsets.fromLTRB(0, 48, 0, 48), + child: Column( + children: [ + Text("Zen", style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + Text("Level ${snapshot.data!.zen!.level}", + style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + Text( + "Score ${snapshot.data!.zen!.score}", + style: const TextStyle(fontSize: 18), + ), + ], + ), + ), + if (snapshot.data!.bio != null) + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 48), + child: Column( + children: [ + Text("Bio", style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + Text( + snapshot.data!.bio!, + style: const TextStyle(fontSize: 18), + ), + ], + ), + ), ], - ), - Container( - child: Text("Blitz", - style: TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), - ), - Container( - child: Text("Other info", - style: TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), - ), + ); + }) ], ), ); } else if (snapshot.hasError) { - return Center( - child: Text('${snapshot.error}', - style: const TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: 42))); + return Center(child: Text('${snapshot.error}', style: const TextStyle(fontFamily: "Eurostile Round Extended", fontSize: 42))); } return const Center( child: CircularProgressIndicator( @@ -691,83 +1105,17 @@ class NavDrawer extends StatelessWidget { children: [ const DrawerHeader( child: Text( - 'Side menu', + 'Players you track', style: TextStyle(color: Colors.white, fontSize: 25), )), - ListTile( - leading: const Icon(Icons.input), - title: const Text('Welcome'), - onTap: () => {}, - ), ListTile( leading: const Icon(Icons.verified_user), - title: const Text('Profile'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.settings), - title: const Text('Settings'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.border_color), - title: const Text('Feedback'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.exit_to_app), - title: const Text('Logout'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.input), - title: const Text('Welcome'), - onTap: () => {}, - ), - ListTile( - leading: const Icon(Icons.verified_user), - title: const Text('Profile'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.settings), - title: const Text('Settings'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.border_color), - title: const Text('Feedback'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.exit_to_app), - title: const Text('Logout'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.input), - title: const Text('Welcome'), - onTap: () => {}, - ), - ListTile( - leading: const Icon(Icons.verified_user), - title: const Text('Profile'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.settings), - title: const Text('Settings'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.border_color), - title: const Text('Feedback'), - onTap: () => {Navigator.of(context).pop()}, - ), - ListTile( - leading: const Icon(Icons.exit_to_app), - title: const Text('Logout'), - onTap: () => {Navigator.of(context).pop()}, + title: const Text('dan63047'), + onTap: () { + me = fetchTetrioPlayer("dan63047"); + Navigator.of(context).pop(); + Navigator.of(context).initState(); + }, ), ], ), @@ -776,12 +1124,7 @@ class NavDrawer extends StatelessWidget { } class _StatCellNum extends StatelessWidget { - const _StatCellNum( - {required this.playerStat, - required this.playerStatLabel, - required this.isScreenBig, - this.snackBar, - this.fractionDigits}); + const _StatCellNum({required this.playerStat, required this.playerStatLabel, required this.isScreenBig, this.snackBar, this.fractionDigits}); final num playerStat; final String playerStatLabel; @@ -794,9 +1137,7 @@ class _StatCellNum extends StatelessWidget { return Column( children: [ Text( - fractionDigits != null - ? playerStat.toStringAsFixed(fractionDigits!) - : playerStat.floor().toString(), + fractionDigits != null ? playerStat.toStringAsFixed(fractionDigits!) : playerStat.floor().toString(), style: TextStyle( fontFamily: "Eurostile Round Extended", fontSize: isScreenBig ? 32 : 24, @@ -813,11 +1154,9 @@ class _StatCellNum extends StatelessWidget { ) : TextButton( onPressed: () { - ScaffoldMessenger.of(context) - .showSnackBar(SnackBar(content: Text(snackBar!))); + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(snackBar!))); }, - style: ButtonStyle( - padding: MaterialStateProperty.all(EdgeInsets.zero)), + style: ButtonStyle(padding: MaterialStateProperty.all(EdgeInsets.zero)), child: Text( playerStatLabel, textAlign: TextAlign.center, @@ -858,13 +1197,7 @@ class _UserThingy extends StatelessWidget { height: bannerHeight, ), Container( - padding: EdgeInsets.fromLTRB( - 0, - player.bannerRevision != null - ? bannerHeight / 1.4 - : pfpHeight, - 0, - 0), + padding: EdgeInsets.fromLTRB(0, player.bannerRevision != null ? bannerHeight / 1.4 : pfpHeight, 0, 0), child: ClipRRect( borderRadius: BorderRadius.circular(1000), child: player.role == "banned" @@ -877,8 +1210,7 @@ class _UserThingy extends StatelessWidget { "https://tetr.io/user-content/avatars/${player.userId}.jpg?rv=${player.avatarRevision}", fit: BoxFit.fitHeight, height: 128, - errorBuilder: (context, error, stackTrace) => - Image.asset( + errorBuilder: (context, error, stackTrace) => Image.asset( "res/avatars/tetrio_anon.png", fit: BoxFit.fitHeight, height: 128, @@ -891,15 +1223,10 @@ class _UserThingy extends StatelessWidget { Flexible( child: Column( children: [ - Text(player.username, - style: TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), + Text(player.username, style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), Text( player.userId, - style: const TextStyle( - fontFamily: "Eurostile Round Condensed", - fontSize: 14), + style: const TextStyle(fontFamily: "Eurostile Round Condensed", fontSize: 14), ), ], ), @@ -918,8 +1245,7 @@ class _UserThingy extends StatelessWidget { playerStat: player.level, playerStatLabel: "XP Level", isScreenBig: bigScreen, - snackBar: - "${player.xp.floor().toString()} XP, ${((player.level - player.level.floor()) * 100).toStringAsFixed(2)} % until next level", + snackBar: "${player.xp.floor().toString()} XP, ${((player.level - player.level.floor()) * 100).toStringAsFixed(2)} % until next level", ), if (player.gameTime >= Duration.zero) _StatCellNum( @@ -928,21 +1254,9 @@ class _UserThingy extends StatelessWidget { isScreenBig: bigScreen, snackBar: player.gameTime.toString(), ), - if (player.gamesPlayed >= 0) - _StatCellNum( - playerStat: player.gamesPlayed, - isScreenBig: bigScreen, - playerStatLabel: "Online\nGames"), - if (player.gamesWon >= 0) - _StatCellNum( - playerStat: player.gamesWon, - isScreenBig: bigScreen, - playerStatLabel: "Games\nWon"), - if (player.friendCount > 0) - _StatCellNum( - playerStat: player.friendCount, - isScreenBig: bigScreen, - playerStatLabel: "Friends"), + if (player.gamesPlayed >= 0) _StatCellNum(playerStat: player.gamesPlayed, isScreenBig: bigScreen, playerStatLabel: "Online\nGames"), + if (player.gamesWon >= 0) _StatCellNum(playerStat: player.gamesWon, isScreenBig: bigScreen, playerStatLabel: "Games\nWon"), + if (player.friendCount > 0) _StatCellNum(playerStat: player.friendCount, isScreenBig: bigScreen, playerStatLabel: "Friends"), ], ) : Text( @@ -996,8 +1310,7 @@ class _UserThingy extends StatelessWidget { return AlertDialog( title: Text( badge.label, - style: const TextStyle( - fontFamily: "Eurostile Round Extended"), + style: const TextStyle(fontFamily: "Eurostile Round Extended"), ), content: SingleChildScrollView( child: ListBody( @@ -1005,15 +1318,11 @@ class _UserThingy extends StatelessWidget { Wrap( direction: Axis.horizontal, alignment: WrapAlignment.center, - crossAxisAlignment: - WrapCrossAlignment.center, + crossAxisAlignment: WrapCrossAlignment.center, spacing: 25, children: [ - Image.asset( - "res/tetrio_badges/${badge.badgeId}.png"), - Text(badge.ts != null - ? "Obtained ${badge.ts}" - : "That badge was assigned manualy by TETR.IO admins"), + Image.asset("res/tetrio_badges/${badge.badgeId}.png"), + Text(badge.ts != null ? "Obtained ${badge.ts}" : "That badge was assigned manualy by TETR.IO admins"), ], ) ], diff --git a/pubspec.yaml b/pubspec.yaml index 9cdc6d0..51ec94d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -109,6 +109,7 @@ flutter: - res/tetrio_badges/sfu_raccoon_1.png - res/tetrio_badges/superlobby.png - res/tetrio_badges/superlobby2.png + - res/tetrio_badges/taws_u50_1.png - res/tetrio_badges/tawshdsl_uncapped.png - res/tetrio_badges/tawsignite_expert.png - res/tetrio_badges/tawslg.png diff --git a/res/tetrio_badges/taws_u50_1.png b/res/tetrio_badges/taws_u50_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ae1137f4405720e34ed6bb1f6812edcf6a1aa102 GIT binary patch literal 106290 zcmd>FV{;`;w+$zDa*|AJ+qO=UiEZ1qZQGdGHYc`i+n&7h)cqN^tNKfKbye5iy|vcv z2>D+U2(Uk4K|nwdq$EWZK|nxj{+rN0{;iBY?Pr33=DtaZ3Msp`jbk6O`=mJ7CJVOMI~pGa(QiQ)ehEN8GT%?>wZ*!eY(DICNx=3D6|~1 znMmD?C0dI`N*SVpgODGxf+qcb=vKLjtJu)-`EZ>9fd~Lq*>QTGoXol2*m_Z2YW3aG z1B3eiIl|OnK)XOCJEZq^cX#cNCEKL!g>DUY!veT=(>rky{~MKft)Md?GvI!ZRZeL` z1}SBre0^U28v)Usr2lq_cz6B4(E4Z@VR#{|9n${nfyFNYiom?VUcqi{cHJg9UF_9e z?0r+=z+rG9QvIusSL5sZ5JB~z00CYB2iJ~V*(BPgRa69JAUOUs0SXUZu#_MNeH>H& zolEJY3xf;7>-&qrYd03Zw$Mi{`owoN z^fty4(=cnN+g}-^4KM5MKF3l=1pZ z_0#Gr=+XIqd^UITA;z}h?$>-FlDsX6+1YH@WekoW=H1LVtrNFOkzix^_i_}o+d)qo z9AU97&%JX~q{-_1S?T?7dHU`5 z{rh|`jNlpH>yjzib1J1r=%J0@@pGkW2VBJRcQmaB?5GyAG5#xs(Uc1O9>(NMqQ}<- znP5e&%8yAQuyuD|Rel2RAn-F==1Zkl$}^%eELU!KpG zYlH7k7iXuZyL>kuNLlPQiZ~p$%Kk4Cy`K}G{RE#vo6-zSXFm}Ur}rJr1&1X=R@R_S zGEUaUZW=D0trSPTVQQ-T3vcH@HM`aB^aqoxq`kfeInB zDuDquQ(Wwaj%HzzBqHE;mF|_aS)34X{7_5({shPg8-NjkBw(QkyoK%%Cxkj9H6aWf z?mPVbw7Wi9jWC*Im{g(#oL!&q?-m4gJp$gCo>D{(y5Pt|Fbkrk6j_c$2u-w z-j>YOrcSGWZjYYxV896T*7|W5nk3s8mv>MWED#^-+hO!7K;}m^&bpSxM{I?f%Sg&? z69Ghb`hH2jG*K4>dJryL2$$n9WLGd0B`^i``!hriRq~2M0jNL=NY_d?u{B5yDe(XR zFh?;RX^$|+Fj8;7q8ewzD0r6W>^RmHUO2i4I8_UyLcHRUT&Z#{$pg+9Cm7gl1 zlRKc3;UJZHDN70GKylm{Aa!(f97x|e`XsiRoYkl77573$q8&mxg8lK1D0$9~Sa0q6 zHqaj#1YgXAjttI3;-&m=Gvk$5?iJUe$WeEDBhzEf1G|}-(dXh4e>KnTu!#E2$Zy?Q z(RVA<3xm%$n4a6np?E~Z7BAevtVhb^(4|yH*$+~Lkkjv+#x*uJPW23SWhEk3>OR@0 z>8tFvw*?{Hf`E-?vXA+h!J+_C^S>%*Us^qx5*vouwT5uv+~}@mms_c?u4fI=#(B-} zCRRqyGePU#pd-E_V(&a z{{(X`SS3Os*Q41&w8;h4XP~d$=as6z)mqRA64eV)0XC)_bwpX%ItGhQPQ(Ij^OZRX zT(CX!rW`yipKm%oq#lxaTR$;5FgAoI2$7%7afuTO@I_)o{U)3;`5QNmp)-iQvEBeA2J+N3DjrXc` zZO(m7K2CUTmENc7y4|URN_=$2cUMZef!82p^eQo60EPaqej`-+tiV0LKxKS#TmQX) zbkQTgVF}nMUP$cI`uRE55@2=SfR2J&8+SPs{T-!yB*S&FT|5l|ylf1l&j&pY zt&1L;Pc5^T_RVy4Hco6ZdVk1v!32C>&@;r-UIb6K{=1p}c_L_USxqc#CW^hzzUc+V zSB+cKy<56EizL@^4zgP42&!_r+Gn=edX$Eoc)Z}@!FYiq+vSRumM+b0Rc*mvT0Anc z!xal+G{lp81Nz-W<@_X1TYx_%-2lno3)bsR5jGnw^&StV+&nx|zZaroV&-;sIk5AERBjvX^HB^R{{NtPiZuZ@T{L^Mrl}a&N zd_+I;5dFj_!l=tkVu3Ip0WlA=9~kCYK_oZ+F~Sky1}iF#jmsmYYuH?lC`*u4w3VovCBuv5 z>dUppuoxVU#3@s392}#q4wq-icmQ@z(k?vZHC;=M)c`@pFq$0i_=hZ z1?jHFQO>435-&Cw{xav z{_>1#*Fr+OmSAW(JPT!^iAo2Xe`&2P3NhrQg}?1^knxFBhQIKkj#p1hF90bFy^0Hw z#Sf78$7Znw$Xb_krPW$kwr8J{p zm_|bze90dAWgGN^LcZbR@LkkqWeTtoV@dESO| z3upN|gNXu>y3X^_*QpZ=y7T<^aPr-taKBM$@gRDOt7{4UlTc9?7+ zs!&nW{o$!JlK`;562nR*u54_LY8KU{Wi_vXf&wDj?k83Hc4M3jnbf@3JEo3K3ChEK z<-kqeF5ajcTs87ZDIuA@P404tf|^>925~v%xL&ByEaHc^4K~$ zI@-RTc~)Dlm=(ud`JG>|wsc5FL5`$FZBZQIp0r>w5|y2u3a7m{MMnY@xvxxQjp^ho zo+)Vu?tv=% zQzlF@$E+~Tw&}0&&?`K+g$Uu~Z=_cFkicICDj^MgP9W1-pqA109~xy&QnwBq<7tws z$97#F%!l3C3B8b!8}q9y%q!`Hn(vdxWIz`j>n@#@5Vb|tqfR^-lly#SQ-h|$gZ?a3 z+A-QHPM!s)U|-`jWqLr(FXkqx{Px1lLeS7LS{_pi;koIGy4t8ETv#6Ddx@S~=`3Xr zla*}WQqYFs+ZHp{mAJXVUKxz_a8zTc+R|n~q1GU&ezU+5s3;K<@Gs|b-_^Q}F)L7p z;g|)cn)PhbD&Eb^EXhh`1`ob~ynqNCk6r{C@&dI%9%PbEamwN-qdC=6s+L$D>m-Si zkv{YfIt^S2WCTFllR~=yE`kyzAStlc-C*-)ELfkR!2sPkmE(`vP-i=v5%Ml_4DLcw zEO91s=eHTrKgf9%J2t4lNJ)5ph+QZwkEB$gq~FK5s4dT^3B|DLA*E{RzgtULcDD>M z-A~Y>GlZvE8dwE@b$l4OqoV?jBw1FBLC_@F98^e^!8n~!`9F|(eW344GE4L{ zK3yv(?nc{5Ya+`R-i!Ls`sBdnxFoJ1`yG^U8+{!Lg(dugn`nDe1;d1Cs`O*hQK(V5 ziR*mmCi#&TbrjRuo3fW6>wP+CRHfC*wYiBM1VMCpR&*Yg zT(_9iR>rET5TiGXaj3!hMn|xceDGV^Zu%^LoehVugcqqD|DQR#q%^^sY16zFgF7D{ zA|6G8e1~Q8dry>}R<#ewi0HF5LaQMavWnTCa4@uGZ#%*oq%tyfbX~W&MA)h`M=PT< z3|N)ZwHj_J13V+fzh$;nhnwguN=L=*augZa*w!wacC702H>Nt=l033=R9u#9U3GlW z__{?lAA*eF;iFG2h(tPs36aZQ&y-D=Eth^RGT+-z$Swk7Gn^g~toC7XW~o`iN*4PG zDUd7%V3SpipSwZy+|hNjLqodOc&X5qXcL6?N=%ve{;mYJl~!%3!fqAas`<}=gyH68 za|~&=_mst-RqJ({uzm|K0UW$kSr>ZHY-ZisQx8mg;NTc6@>VvZ$X_ZU(zao9a$*iK zX!u088yg^!;;g#6ygH{p?&q6f371wp61o!G-bypI{OTF%z*UpQPAg1xs4$EYJTzO% zS>{Er*bs`(0whFvE|0rSojMXl&8Rmk_yGwL0W5XRgtm zITer0$OzB()sgtC%o?Hx(Iqb@c#TR#6BTIUZY$t@hr-zgy}*TMYPYf_PdLu~$>B|E};@(;D5VC%X7KCVWInN1UGnA1~tm#}YLm zAE63Tpbm_Ad>yDfzG(mGEX=yxE;|2-{zOU`^zNieFb@%OcriwijF{H=_q-jYvoyB|GJVBPOthl-%tIcIq@u$phJ6ke)mv{ z^5|*v$%hiK_vUkJC)YPehNZ^}=rMcSfOw7C0hE=FT_JU;4m~m6MyfFDf!siDLw;tT zw@f4M-pH0$+t*W+UmnueJRDjEjeBocHk^;7FPDk2|x`yjOGMJKoooGU)b7s zL`b$zng3PC^B7jn%JWl5N=aKTxF3j;d36d|;oj7uV>oE`UI%ua()~gfM;@1FM@8vX z9eR(!sOBee5==)~6OOz8A;j_wyyidR)NF)AS) zKx5lce*He>Q(hKtT>GK)Cnc@PTggEP+a+t6+ya^10v6OKXm;T@9o@`izac&>S2}kA z3=Ooiq7yxo*UJD$Za@+jXT3Rll&KSzq|Ff}%u%_Yg)5cx3AGBL2)6t-d^!Ji2v}ze-$FAcl7e#zI*6~8;##rCohEIcPD_$hSfu@-0 zy66{;N*1OAS9~P&+|X64;W|QuX^;>t1A%HaC#a9e?AC7|%>kC4DoFLru(gF|5A0X@ z(Lp$`y@KC+tEjk|vpqGUVC#u>zUpcd(2qa!jn70IGahH#d*PQtI)93qvB6*IHDIAb<7`-085q|04;tFdrnU;z}`hiz5dra@5-j6 z$Vzu&%TBATCXoBLkca&s&Kc;a)gH)I7j|Qpi5xpK^C`*~Z{z5{1qq(gOP1~xViW8$N-CwgyMGHE-a?;0ejf?_C)zx*`+Q_FrgBh;E z?D(pW`bos`WnfM({k2^C?#`$!h#(3ZZp|B81zt7LR&Z}scB^G`dqH2>b`i+C?sWAB z?xwgz=zVE;Ri>&dHoC$zJIGL|ia1sqf*29Kg{19GQx$Ww1|0o#A^jY2}`}V?$yo-Y%a_nWVVS)%^#Cd6vt%= zX$-UxD=-c=b)Tv?oC}yQ2=ERc8`~4N>k9m@2~0mi#m~JJsT;VeoHQyj323OHU{!kS zqc4`$Wu8fZwzBK+!?u953}l_|_k`(FhW!ujS3_G>>A(VNV(?Lhfq<{uo4A1jT-=$9 zY$_xy>|h+XzIP&bb3GfU3RnqcdCu8Ov}`9#C1!E@S5LToScguJDyYAw+81d%gOopo z>Kbi13XUZ;hRCW;*%;2Oy}*c_WLW{;m#TBV{A|$@b>n|929jKMG~eMe65wDr$4tym{;|oe;aZQ-P{iS*2!j zhCpf5WhiYs^!#lW4~GuA!K|Gx&}F+G(WIqYNgvi4mF>|U+uVvJaP;ah@j_vN^%YUi+#YNQJvSl4_ZR~t8({vr!2tG%#1~0_3V#DIGiYp+s z+*2)R%nkWb(2gqiVQ4*rDi_qm{wIM9TR_U!>; z>#jlReE^~{_mokLQRk^vSs_~W5U>Yf-wMh3$}v&|A>pb$z4_iW(J)IXW_0!4-1WEB zHXF&0{5-o*Up_(6Tsl1%z3f6~#SBqeWB+f`)n zZ@Y0BhdC!YI-ur$^CsT}PN|77+Q{o1>4ayeFeq^C<@EIwNLm=I0k7n%bbuxzIs zQWLU1N$OH{oYYmn^bD>Td#T!}8_Is1*!f({@Gf4`*Rg@TZsC}x>7TBwIeOQ+ISeAe zGjcviUDuX>^6h6_9Z3D5a!R7wESrmY7Aw!ONGxhpi9}2<84atsUg#B0<&C~JE0JB=2O$<;~$ZQ z_EJo>#wB#4>MJdp$zuz#>#Ii#J0zP#O_oTNRhQtGM1RyI!IQkSDQY~qIE!4Iv+t&| zco^7y6WV#6ys&U~r6Tz*N(QvRo4u7NJ723O7GS=|BEW=PG|S(i>f%0ayhR(f@BPmF zo*~yLF!UaCFk1V^_Vb@!&m9=s{`?g;f<)g7#vlNv_x&@QcJLK-G&vRUVjY%)gTo_% z%d29AMMGA|{9SFT_fWE87(axfHitYjvo;qp63Lu^p8VHRjs5jC!tvQkNmhy9w)x!0 zX9Hywn`C+A_C>ENZ=?3D`zHtM+1L?`^zXO?(O?V_Aqt(& zRhyVJY_+KcbqPsgsf@VqY9D>dtkh71Xw0lIFRvU5(F-6td@N>vFX@t5bmcPv323>DXPpRF`TA ziizbTBtNNGbD1=+P$(IdUbR-GolCW^ow9-ny`f}X&(d=3^925lTq@2Zm`649BF;?xNSe;{n^SnboY zTXfRM5F(%SR|KL;-hziH21eEzTb$=|)CL)4^MyM4Cnym;^ z*TP(O>IGHWhCJ6SAErzVyt~*xrpMY_?k0u1q}*B_9(k}ez(vr1>a8XUK`Z?j_mpEe zmqr7;Mg7^brafaL>QZlSSR+%nKukYcxu28$D7N@XRc(J&mW`fRjmZUwMcMg>HqMwW zMKj)Li0$b0n8dM@cH{VkOXEB!j2Z^i6^}ml!nR zB<3b$8XEVj4-`rr>NR>6%ncc15L^~$E>&0)(~!sLNf%Vp@<0#%h4;lqyiwzQm;L(E z%MDTd!R-Zk(Fk#4*+qdj^5YSBqyA?+j{yI*D zKhU6ZeI|e1uZNY(MbzwGnL54$FLl4^?vol(iowO`tVnl66CQfCHzY0mG2~Lb#FN{5c*{Q*haOCec%R75u40p<)_Tu6fUX0 z1c91czOKs-&=!Z=6~=<2SI}BbQpNa)M;0L+7~cv=<>-cR`I_UcZ4nf6+T^XxO%oNJ zj|QslJrw`OI}8BP!=9Lk*AN+o_&99fmsVqupFh6{=&Vt42MZJ= z3KrBjvJo!79ZD`Xx2ZKLw_tpe+C6sK;4SCVRD?grLt`|jtnj+|a8xT8GE+!@|Jwr*%L;C%7N+1S-xb;zLc z*a<`LBc}no+6og+lbws_O8%oea-r@9yR8YNTT3%ZO@hZdI({Y6N1)>F#ne>PLuy5w zv~E39-3ACk4X4QsBl0-7-{q@75%DVaux?o05-oY|pH%l+iyRNMsvOmWKsklNCv6~) zBe%l+7LzTE_@#5mxm4mO=X@UHpY}t~KW{$Pac98~iXZwR*PZP`>-}Akf+gN^!7(kZ ztalrB=y8(sB%@8dDl>q9I|)L{6A|cEWnkz=BTighOG9UTgs~p@_=mH^zMpHxdnDd^TYKl^I_uC92yw@Qn?(1E^)<0isP6%QVwqqqrj7Q8Lq$S6$z(VWpN_)U%u8Iag-qV2u4e0?wRYlmaARS!wRT9a zN1gnpbuphE?YdM)O*kVjiOr7~vgG$UbQ)Tc~ygzUfy~P~N zVX3b&Z*4b>U?G*Iq}eZ_OR&otoeD&B_D=MK-x{kq54+GXLuGuKJa0u6meG;QJ73F+ zw?lN-ukLznr|;*a7e2?fQT?9g8)Q|y{PWo2~L~Fltu#;`U3q6p_mIW*ZR~$Fcui7h#tR{A!F(Kayt#frTZ^G7qM;9bs-J9 z&twMHR&2NXb2)ncr4Ha9OK1darG9rJiswv>KJEk?82V9-?u45 zi^x<`UX6>I(J7wR@K7|RUR~(q(GjK$E{H|5mMDsQEP-xusYNGd&WQp{iC(*dlTu?O zdMSs}kt7t4p=D;G_E+>F6c7Q5lGv%;air2eh2f&*>QMdV3vsjmDpw5KL)HGX zIF%IYBP%`)hG*K8)dP>Ov?P0pa22)yN6hn#{1DKNRKP|?li3vL=p%7B-qo`CS=e%E zyoRj3hHRYgHqlUqnVDGY!${V7-@Euiy@?b?l|rTjq9Rpx*xXd6>@xyFq;F7ucKy2a zyaD%6yX`~{imA5!=}OS<-kjpDx2~RqiAEVi8r}o6NQ4#bpqNpKEj4Z+q#F&qs4`8<@5ozJMLz9&JZN zRo(h5$D1iE8M1hE*)=aU)sCZ7sZh10lt^KP7=zd(l~f+Si8po1{NB=TB~g`r2aB|x z*e^No4yL-j7O(uJb1^|pIBYyDb)|x^mZf=r_AdnkWK-?#`l^jibY7M6a@?CndfvYn zmd;@5QK!vxcq~!^ebhz2SLA(_4|EYUP`K%FTF4ha$Nca%C|6P5TXPjag!j#DGhH%_u_CpZ#Hs|QA{wL${&xL+wrC}31D(u~nsT(`C?!Ift*sj=! z$}`E)6w_NQ8)%!C!b9WMLN(P7IGTNV_a_*JJ;Wsr1=SGZWFWUcvBBZs>^IrWz&9I9 zCFWtwg=|U;7AflNvgzoBy6CezUSZ8<%5M&zvtK?8?-B(%eg6KA>KNObMV19Rz2po) zH1YS%6N6{u>~%OEw?#X2$0@DMYy=A%rr;+LaeVFV@3rk=gqv5Q>-PXASG~rl=6}$< zNKTM*< zZhN|42(WOa1sXdDQK9GsDb}%4cwFE4XDmb}DMfmNDe?tY)-w7!${|aZgEI*yHbim2 zM)yklrLRHqF@%8VQ4_&=WqJIR>q=EPpdqU9l0_E#!`~)=*+@noaJmY8!A{L~rx>`F zh6gNAE; z{>ex+7%sEIu1F_`LzO-e%GB%*?;?2#7(0|m4B*5-`Q+GJgsX;%Lt?NBwu0kW(okA2r@ z7`fh=KMI_VpHFrkDkgb#nmz3*zW>URYT;1Sm?*MT>rIY|+MP2CJo_Z6WqOBtZF9Em z)Im=Xbpa4-y)iXSuQ3eme}4?x4*ro0~k_amkAE5)2Vd1W|Ol(#m}$`SU_V6(i&P@Tf_}W2?@I^IAIl`2x_ohNP;L<#^o+vdZe>tTJ z7&1iRt9NDOEgEKK8_2Un#Dtpt_Z)L?H=mMULXcqn4K~sCr|l3~Yv1(6T`ax`-*X%z zi|&Fnf_OvVPM2z)(T;Ur_s2M|y}1}OabFz~gFgXi&m%WXr2vM6HWJ?#$W5D#o6j}S z7*(oswT3OfyNpbH63o1CDS7@d1w?V#Ba)1cpvCR9FXp-GIphfL{S~gU(kgVr6_s1$m)htrc6OkZeFr{nfXP9 zK6E9jXw}am3eRKDaP!8=eDcoF6|*w5AKV3enXrRUL?bCYk`@DY!;e zQYbOF)~WKgU^IZ^NAddZ&h6itYIGyP-xu0+!{sEPa{THBzPfrN#^MfBPl1lY6#eDF zzvxp9e8W5jGizs>d{i6Guetf4+5?4w$inXZpO{(*LG4R|+Vuu^BT;wTo=hx3@6&21 zX*&_C-f)IZ;p^^f=eI>=wO`fG)FZq1JrI75(y2SETmL-w1TX*5gWZT)*VeXS$Pxk5 zQOPfzVjERM%tUXC@_KSD)&;4*<5)sAw_m-tae;4M)DxG>V5ti4?u1kgJ8*@Eh_KYOCfj_SWeV%&g2IxZ zXtJJT$8>l6<6nKJ9qU$F5T--JqhS$)ZkfQV3B$pZ6~|$lo820uxblMjW>O(^8cljM zLA&L6)uA2DiatXW)3l}%vY>FeQTi=ovemEy)gc|_5*Vv8w1%DMh zr~@#@3e{9=QueuGOI{`?CG{y<6Oewv}O)H*9uDtHZSnh8-4D#!)6K;W=?XaM@S-PzBtWlO>u@IPtFDu5Y@_KJpLvc3&Jucxbh^GW%*6ol_i)IRPzPh!JOdZ#mRW*M=ZwIvd{z?Ax zq8>I3poY8LG6sA88rO#@)0r9-GGzGWDjeRiOm1+k+AJDV*4h=m$b^RC(Vv=|yp+wT zjT|ZNIr*oJFbL!rv#EGxuI5XhkB@wus+HM8j+)aQi`{PV5K}@IOlQMBiKy1_>`6>} zzT+jYdx9Lc7{hB*wh1sMU^&hRav- zQogdsvOCkz_6q1AUTBkHChL07Z%PZX3GN8VS~`pvZEI9+y_e2NH-&O@DC37)8hd>P z8M%SyO4<0BNT$0>G)c-MvK`;DfiW~x3_&#pZBMRbrN~H%$u|t@rW;vbRd-P&jcQ*brKTz11B&V5U`AK5DG zg*xW}Q`HUsgPoARQw41mZfCB(TlW6~Z1#~_t?j|zFB4teSuvlW6sRB08YQN_;O>jT zuQN4m^?{&jYcaJz>YBPvOH%4PDENo#ME; zStCpu-_1&@V5+*Jhkm2u@)uqJT-`?0aFD^)nd{~ttg~$lA1#|&1}tw1HZjvh_koh? zxy|0;={46ViXwtuao5^>Og1TaVBTxa911PUQF$Dx%MDh8nK_+p`*b&Zu}E=a0sRWK z91&Q*MBHFaW!{66H4(2Z7sjrz1~RAnU$yD3gjQ4ISciJ~VIQ?kr4a<9!7 zVE$bFBj}0uR}$|M{Mfl7Ouv6KWvCCm4xc+xl03oU{Gze~Bqe%Y^WMdi*Wm2H4;C$d z#(4Ny=&I4vJuvT{L}wxm;PtjF@HPQ#JSZ!8 zqF3M4=MfC2>pWAq-B7#=xSIAvXh3boJkENG@#Y3Rrt|ZeXb0q zD5XxV0U0*MC*vmAf|jaWENOKywQUD}!%QcxX{dj}UgLR#bQ?;5rv(0mBWmW~+JfMj z)Zv|ooS6>BVwz}5qMTrF{?pVcG`lPz_4oOaAOrCpl}hER?$i|Qk&T5f2c8#{%&J#2 zacEU5(C|y0Rf;=SUBksgcTqaV70QukW&V0mf2Mji3MW$eP#Iu` z7xe0Wko)sEdsn^T>)#%SX@7-R=q<=(o!vjLT{4GsbJI3kdxu2OXb>w~6WBt6MNl`) zJQH#{`j*wJ(0rH#v^G2@-htRIDsx5LZAZO+I7)U)d}TPUTL zRy8!!E${G3&rH*2l&iz@f}ME|gCr-S0ZOp1NE3YJPVVVeeuqYzpL0xXoDB-3u;HNk zvVaanPbL(>o+=+zVM~}bCC2*v>Kn^d59RSxwzprRf9yr_gPt-iYYKnwn3XAMX;LwW z|FBkEZK3`c^CTnm?ooc~Cvs@e7fJj1!4v8Z#Co1t zprlY99im5=ij1;n*0QYYQFA7bg{UT}kHeqmGAM2a3YSWf-K5(cv^RgZ53SBX&E|s5 zLs3mn7ATpVZwFxvHur!=`uxdwKC1LD>XV)C7Rf(f9Bxv!ytsePWHqw+t@beQ;J$eH z9#=tsJ638>`GMxLVZ_RT`u){RIgN|b3FqN#X?e0`66k`+@#Yro8G8t2K zH5#}r=U+bu&SF)eTrg%Vz)XVsgto0WX)oq3p@cucO@Y&qmo{BAs-(miD?;J9A24$G zp(Lg@e5x-q>8Z~XC2aCYZ6P3)luWayGpH~7XN2PM)v>M=-~ zBgvvii(n>J2xgPQk`-Ey9CFWB?kscZyaaC(L?*^-p;LNI-k zS3!QWw{}QI>Tb7f#)-wurdihnzrgRZseUvzJ?la92|Y^34&cPHvvh-k zNp1HAUTh{?VP05?Np(+^4~7om9Qg{MLeMl*(9-+*;=U!$nYZB`(2p(2rnf-H4B=#{ zq<9E@Ds2#!nH6USy;wdU9n4sZifT$$gY!{KeZpXmv2JU1;34GU|cRFsa|P|m3&FHsNO z8-y66Wg_l5%)s^`Go>und#f7Ahdw^0pG%6^Nzi%p{2Zqzc~hV32%^)B7W6?FJatN` zNRWKZI6u@mIDzvn(nTlafXlG$ek(&S(DtwOLoEFVj-lChVf>IVsxS)wLwew-a5ofW zQc3~FY%zQrUf8NPqec)fOc<>~FB{?}b`@AA=_b3e58FvVQ$Bj~{w3R8$`Ye1CW5(IZ-4EvvdVT#|~kbj2Un$AGK0Skv{e9`st>8bwvg z79YGKRV~7NV^4qyc%_#;O{2m<@|w?!b5^jCr3*3-Ptztx@9b)vl>-bSejr_zOhj3m zb}d8|_S~V1=R2_hy^#gvz`YZ8Vd9@i^YD`jmxQtRPdD}0?f&c1 zVMmfxA6pbJMHo-F?XPQse#6FlDxXzVqe9YqgP)u_Gr2kDF)&yDpe({`F6ze%s9pWm z4jE)f7NQbgrg?{Qu|hqwh>$OQs1XKJ1l}Mj>u0qUW_GGjpb?{(f?xpuVE%SyglaI6 zJq}aDap*S8iZ>2z2B@@pJ7j zGs7h0e+m7t+Kn(S*tRJ?NUx(nlU4tl@ z^&>3TY@Da0pi$|g7XUcl$V8XEjif?J`NdY=kl>#{$--(^>My{_5M6j0GC zFo3Mh#@T13tsf*9md=oTURm7qBJ4Y^E$8HI;PCdw+++l$*7Xg(`Pyhy;dR9wARG=G z&P+-jPdOOM+T_*jANfX{&A8kMPyF;rymydmaArBA&k7){lbj)DkYfWn!s>__)j@H~ z$Z^e_<7-QVHfKN;e+Tu-6Nr)Zh&Ox`w%vr-con2FW)zzwkoA}0efYn@ z`+p9#?{U;;e-AbO@{0Dl64UU~SYs0f#eMrrER+@d=K}uy#5t`k)D2u|9&z|DXL`b1 zehxpVkVvMKGI@g{;wQlld$-!1s2C@5K$BJ{;pR7z`z4iLNb?CzoT&(T`GIa|*p}9} zS4k}y7798qMM>z8I#?rNqR&DC%cP;J%MjRN%>t`b;N=6FyfT@1E6?*_Xh8oyIkmcp zOIkrN)obb*Stk)&p(}1(t;&guW#~^qM^e}Ft0p3+bW_T5(MW}=WlIxM*(^8w%+GS; z&yJ~qOD@rb70P$MwzjB1w}Nhy-&YFY(5#jQ1K&(A*%*yi{XMXV%P!$$1!j1%CLLBw zIjLGyUc&BsCA75G-Uc1nm>jGapBgMfTB;VF9$H(W1R7KzzW}PN17O-ZsP@QHzOKx# z0@G?F(9-?WnT`r7m(srSEYl>y%r@ zU+i0r#1-2g>rg&s3vPv=s^`C{L!nZD=!N!Sy-L+RU!um3q8|8defI}O@NRlP;tf9x zJzK$B)O{y~2bpzzY}tcsK@>Z_0Zp;rVcf<02Rb^69tCDa#QB`L_w+h_Lszb zS@H6`BS0$mX!nKa~;(8;OElp(NAOKF8ux zd=;LnKJ+1V>o5M28r^dp2-DHQEZ~WX_Gx()Nc%9F(f53|q^+#7Z^+H^RoSk9fKDi)tk1f-UitYeSGmWeECy4`ZC)E zyKjI@J9PAFi>t2wXt?pLBT&WOCo9ZP2b%1Lv_%yd8Bd~X5b8c#!gSbDRVh$ZNlO^A zs$D#rylS+iJEfO>^Sqz}<)%4Y-+iq^;m?-1?lpl5b@=A2&qP@($Ozrc&%g82#S^2fO0tbdGTh4{@q^;YA{3sU~|OJy;hm*R=j0efdJER*F+3uH5W zIuIkYh`dOLR~0W&g=<9+Z7XgQowS_%Dv~p1S#3p6hsbv{xg6z+ezc`E*>ra5N2LN& z)6iXp?oJ~engEQ1(Cz7yNgajQ-KG6si%WXK9y$!`*FkSjOt`!uuYrEE37K4-q!m`j zP^v~)O4LiX#P}S;+ay(egq{*m4sEe}>}35G;tx9d>#q-FcG>ikPa8uX;)^NPraUidsLCBf5C ztJ$pH@Q7xuNN7@nFd_>osU^N@SiXteTbhOGV^Cax&Ou#?BAwA2hTrA= z-ws*RJ>mEZaOf%h+4j60GQIlTGZXOD|E(K@_V&S5H|i9R_8u5m-()jsNv}bmIDW|I z;NAl1HW(NTNy%(1fj}xfu8jGqq6zFK5!q^pgp~CXA(4t6^Ygml;wAZwJfb(`S1Gw=-@-;es!ABLod*tQ#S z+s`1j-wa)z*%tO{e^~cM#Fgtw?7UuQXHFeL9eM=yIb#5M zUvWIA{J(gy#yzn$$w;EBtJUgto#$0_*A4k%PIs?xryo3EU*-)(l(@RC7!@_WQVFkxXRbMpM_Q^==J9^QYuu2DJboA&7=qDFy z_rG%l68)CcoLgun6V{PdDBo2BG6F~jur{l$gr%~sFQ{x1m9=W^VRWFdNz1mfEdN$D z5W~obcH!H)`hT*vxl%$~=Gm-%RL8Sy3lPGCbz5~bxk>DNfCQh~v>IPjDvveAvOcDvq_7xVDSQ*d&xe$CZyfn9T9ccY zhQ77>+;OB8=JN#sEY3-ueXIzcVC@D~ON~HRwFr#l9Ddh8gq1D=9VJ**PrPalS9Q~> z6tzCc)CFne3fekLdVm~nHQbk0D{%ol6D2NyIlnIBq#=q&o!W;O7zHGv|B^G3bE<}f zFHtW%iF)BDp)I2=v1{HAm)wdNxkUG#_qugpM|U@L^dd$tMeP0n%$-6_>_xot1oEZF z5%c4y%9$0vYflO;?GefU`-W`Y@$rJH+`q4s$OlSPBx0(lIIs{fo>xql6nTH;-*zA) z=t~P;S!k4BA9?KW_`vu5Zml8$^$j8Ii5tE;uvfi^=C2}=ODaGN;Z<0XUNMFFh02o z$ji#xlByOtXg7yckzkuJ0H?0jtX1mBjw%fowNz3Uu?^*I&#T|T=L(BW{abcot5C+$ z^0iEuEJMZ+$xK1F$WT@Ydo`S0RLkG#W0gpdge?UI7IDeO|A*F?CmRXK6EHBW$CBsO z=YXjuxne5L3Ja~6iY6^21SL3i0FLg3-T~E?Bo&%X>rX^;n%g z1qYvkxpAGEy8EqKt_>=1a4$Uhpbo%Uw;8rySsSmNgU~Zv@4Lees4{Y8xg>e!krKs% zWZj0EH6@M3C5;PUdDF5PB!tSS;QS0@!J5JFk)P3&@23W1)Io2>975$l6$Fj=E*3`#}Rfu~Uio<^jzsKHUV z^ajNG>tJ{tqJI=JS*<^1+aR+YF}Mk}@%sOty*CZE?7GgwzO~Q2_s#u!?gof~7zlu( zAdmzt(VFF=t*D%&B3C74%NhP8f8vUgDm(FyB#tUoj$=ozR3_T8Y`HAaDyyQh6j3y7 z4WuN35+{fxK+I?~(DU4Hywf>*ul!hhpS|`z``m7TAjk%NQLkR(zB`_?&t7YN>s#N4 z>LWh|-kSnvz5!f(34HE3VE6KEPi*G5lPfg*xhI!<|30%o?buB$Ftbb_e_>9IV+;*p zXn_Cx(UDsj5U*C?l>y@_MwqJ-||msAH_Py#6U1vvxE zom5^MP8#P6_it}ZIi5)H+F197k|e#X*<1pesiG1HaT>r@R;2%R@JK8qu>_p{M0y;0ygN_MgGH zSj8p1J|p%XqZQGwq|EoK0|oX`=|eoNrGw#WV73Fi@C9Ie6F7dKkUoq7c5VQ#zW|K) z51oAxIRBiq*YA1|cE+$4QS% z<}JhKyRfMG?00hDdb#A%``H@}F3*|DeJ%o@Jq>a*A%SlmR~14~=2ZueyO}1J6qdtA zJD&jOUj;6_3dX;XG-=}q=7Y8;adksX5x{&}l7^Fd# zyp+*$<(-(u03zwYJ*5=#3HiDMP@;%io^hrHL>h00qypP;qI0HLZV_n+&oF z7*5gA0SPE4HpHZHY2Q~}UeFc*rn7!=$HDSS3enZEw>5GivOKNDCkt6GDzW|WL<`fX z;bKmy@9mGOxWa&N&@9yEWX35;Gav9b4rdS{%I1&Ya=>cOO)ZzWodMS`0Dt`3l1#n# zeZmc^YvA=4fs1cQ@^t_E1d=r###lcp*TgG-0$e^Nvsdr`Gr*zyB++W-z}G(mym4CA z^AkTRa3eI8|9)X7wu99f${|YejH~Axy!!kUYwL{F4e3x>-@~#Dupw9jPtNdxt0h@@ z75Hr9)LMm33F@+Q$tK*?!YG83_ko+;s+IH|8@Nz%MYfEEeJ;HIGGHfwA<)V!V~53V zGlLWTtemb*S>sS&-4ssNd;+?D4t)I__}L&QK)}iY(9xsdgZBZ)9t9n}57;;+RoT%8 zKu7KY=06OYY=f_y26nCriR8vPNuS>^WZcieR^scml z0l2C_OUn|NwzdQ++gMk9uV6Z8#BPOr@Urg^wHF>{cXhEDBtvsxTZa#Q@`jimAN=ww3-&<6*x*QD+-9EnB$I z#-3Obw6f|d1g+pC#= zEUg3I_ha(9P$LoRhoY=gNDgy|Uiw-VFMe%?!B9|y#$R{bLWJJaEht_jd=yS)vJ$#` z@>kU>r=%Yy%tYSao~tuqr?+7C3CF2XZCMc7fHyF*tBunWC#&(1HIr zt+bfBOrpePH&e(CkGE`LOobcsJ^bG1f036P#@_fU8LGNm&a8UXeikY?NM5e zP-0*!-WZGH@y3$Kf(BcWMS*L$wibg-sFr+x3yl}4X)?iBUm+PyRS!Ke4GH?kw(z4> z${4OYd`!+mjKQj&W0l1fz(b*-8nju^Bk_5Y6zToKpsz2U=w=k`()SQZbiA+uOk%t=5*a3mCX>-$|cTo)9{ zGVBimtA)?4zn>m7c1dFEl$j(G!BhmU0MuvucDL&QE`6s5t|CS0l+1H=s|5yVvIo@b zz|tHr%K%kiZaSC<1rzBUD&hXBqR8eb{hPa*Uo_j7f9&1>zw{LF(o=p@Cty?oYsWx` z?*^7Ofwe=R2Mz&tDnl&eE%3E7x9452n%S5u7bH@F%YUY-r(UU>F(x~}^5G(*J(2j) zJ+7Q^L0JGJqyx)|YPRaDXoj3D{()RXgAtzk>L+M-`vP|MzO7tz!tEiJo!f6b_4nyp z@L6zh{Y164dI*30Klu$DJ^Cn^DhW~)`#)So#%3@>Z2NT~z;T2hwI@|LPcth^a&;tC z7m?89!N9zSgtWB2-Uh9fN$5!#jb{WJ#Tqm=LVAvUUo-T?TpENzHAOxdYky}jci$!2S-feF=E#Q^3v@;K?5Z4jqxdH#Knj zWnuh<-YJo23f{OZmDbJ6z_nKd^?2+f5=_^QO3=LYI`Hb3m$ z3djd6GxrJ=Syfc2zLxVO3JMjPOI0v5>=>%8wl9{6>b5~mNi`WYOwU8V)|?O`j1N|* z1k#)C1M3?~%$HMmIb6zaE{geQUICu|efgdr{Rw$Z>E(!`#e?tj;?5>kf7dTba&hGi zVE?KN3_tp$Ja6rY^jA-P9k}o^FkAv2{D2TIEV?5O!&M1fB`rcIEyPP_8k~Ez#>y(A z8cJ0aEx3Dc2YVh_I(7_Y3^1R3wFUnUr^O>ST1=bUnig)HT^0#uE zPrw)7h>~0ez}ivJ#sSdsDtLKSgvl0tuN9GwL9HsU6c;V_xW=<9aC2b3FCwbWn@29< zkWe9*b)eU*Uy!)#W)&+Vg}20pz2>)C>3lcbw)d`p$h2FD;glf=7s(|73d|ELBH=YT zq&+Zw?zSetT^kax5X|u$V0+w;mo_%qAktFct?yxFqzbLFURfXHnlAhon1JM8%UE?^ zK4`21oT};>5-8wdLO@`=ksmg0YM|Z|Nvq96zPE{fr(!n;wyyy%d>MG|3&7pSfCt_m zt#jO5Akl+|6q?|lzjI9_oAz(Y=R0|yz={B{>QyqH`6J-QS>WIa;DHZhqX??1G6p#D zpg@JaTNDFZ*B#EBYJkdNWnI)T7z9U7*r>kJ5a!c`zxQD7rhcEfz55i&BA;VvSwqk$AvPh z4s?5jhBvhZJJE6B3$KCCy|6fF>DS-ru?F{5dFg4hW(y9$^k$~wPKyyr?qGx|t-19| zqO6fi-Ri8=b2L>&MCRW{sGi$!Af-a9l955TVIE1((iuugDS6Mbvu-@p82q_b261`X z9#+cInm~m{QQ*TMa1v;2s)9jtplY%?EEnnSApnM-L|j+>HrDshRL}z}=yVt>`{7W6 z`)neCWa}ER=0_?tEJ(Q!@f^7LI`FyQ2EO)3zz046Jp8yHv+zNSNn}x(QnJT*8@PNH znC${p#d!3CjJxg^y7=lLU_N7f{SPE)owy%(@O#rBnqNBy?-DLpj`MQ{XI?+oU^cec zI3PpB7ETC0q2KA}w8W-Fw$v70t|<1pnA`rAXcESXODZiFp+YD9TW*~Q42TH(V?T$; zfSWJu?Z0Ezu7hv#`9(?7YxM%&@r74_?|Bk%24qa?Bh;6(Q&+PsY?wrSyL8rD=dz4W zZ-9CyhE^+o2Ii$dl|R^cdIe;F`A(M|$W)%$Y7eXFI<|HmnEhQ394C+#rQ+MxSz_*< z_rL!55?ADb8vob?rxrJeP+pe^0~Yh0fICl3gVZRj_gFFgG_Jw2`s z2{c~)9WEUXhO!_rE(W*&0k(peVF;bDVBGhZ zhbf)I>Ly__23~%ev3CP_?*~L6m(+&jvP5}#132+;oKq~e> zi`@F^$ifLhCsbHQs`SVpWH{^MqG}#Of0kkJW4U?^e^^2`Jr@beYy1GI^+cxOqGm$nf|&F!00OeX1Et>l+|HXiPrXkkTtms;?$` zamg4#4OomIng+KioxWtc?@{Zyb{5LdH ztu28b_z3vM`E(yG1g#E-BGYo~Y{-j(7nd1_Ed|*r(b{bD){-o5my8gt0K9YiL329W z1`it8dVt9`u)dr^8=Y%`G8R#GV5yL$k`~=X_aftLqnCl^@;T=j2>Sq5i=pXuu|<9> z!Oa8~JN0({=uL1`IZX+GznjT^h1;*cwo^E7d+8U*loD8JN|LY0NU3Nvl&YPy6|{?( zZ^)FvV(NHgO+k!33wCLB9o1YZU8ssHz<6OOIaFFL+?R>s2I!A6B1ZV#s=r&QvK+_R zFb=(}u;wz0m#ShA6Lzx)7fT#Ze`05{uDD&e_h$L2v>{#iUbr2fI zXspG#Q;d2B-2EQl;9(zJ4KP|GO!gUPUt|m`!b492WKuef>=~5whmSrWY9C>5;Zicr zz@;}D>~1x%a3b5}8d&oEEWa5!NKhjaDC->6?GaTmC>a^?(4c=a^1rnMGIPu&g(@%O zO7oc*Pf`UiPZwP$=kAmqm-X(y$!(`$oSl|!PWa{(@N^HrdX)0c*;PHe7T=P6kljbO zYWk!bcCf7{q--tL0=1OBKKE?)w|nEtGYzxbfkFQZ&6|C|0h6sRgrr$j`UlAF(-e5> zR%)dH2-VZlns5w(PkL4e(XOBH*c01`w@}&AH&Kz%f}dOco!)dsXi?OqoX++V@nijO z?fz@v2?H)2RWRB@hLp-h=`{)1nTp0Vd4_7=As-Hx+Sx6#>I=IF^Hoi($S9lD3ZK&` zVn<*JYH26UFeInExzu-RhmKk4n@40*CHSy|qdg*?5<6?OfAx|16wm5_;M@J2Y&4P?P^}2^r3L^$Sk2 z`Y>x4XSjUzX04h*WF#=ZvNmxHOsCvdjSCX?`c4X5K##`zKR#C`XwdGq)Wgi6%?FD+ zJ-rp+hzgDC+kGAGq2BkT-A8#831YP4A@gsej^NvVo1y68HuF#_ zQ7TOp{K$+>3|tyDIb+ch7tjJAfrA_iT<8>JT3mjPq?%H~wop}5H5VcVnn=)S#c!>$ zK2d}WV^bmqE9DGrYtkl-YB-n46Egy&%c8kAn=tALaQrTruhR2bLC;Uvc))M`W8l?i z#DLlQaJIcyweoOrKy za_!s6sTEzqiT6prk$RHDaDAP9-ikmjWYE}!Aj4LIAaP5oaNax1`S0L@SOYsDSvVVI zoE)dY3k+i@bv$lOzq%i6UdIsy^s8pP^iE!8gSX)|iUf_V9-9xIO+**4nJXRt0%DT| z5>pU=<56wgUpNMqjK1iGD##(o9J4-0wrPt7Ql>!v#>s(-g7gVjIp*P+2ed4 zSl*0%4o3^HH7-=Ps!yUnFXe;)?&Wd#Dy)3I_eGy3J;wU|D}8W`PrC^iECI_0K&zW# zR>xGQ`*vr7!i3>pZMB{Dn_E|3mI0k6V?-(^eOOg~?b@D=^#d#6FYDM06P>DrO z)rg16)^$bMx>?pN*<>K0A0yza*gvn#2^FZ(sh{kfi--cK-vsk+Xs%WiIN7p zo(WNb|d8gnzGJ%l6QM<%1(h9(l z6NI$`S+%Ov-!Gm6KKaiWvmL_2k23DNpD-|SG$~2IoQs=0OZ9T|lJt%aACvx0fYt($ zfgP}UlrivnqwW3b4V;%#67EDo?B?J-%cP~xQAr~2hO$BZgCctjkp5O z3x~0`vzDDUy)F&s!Aha}EJ-3#mob=sKhEamT#v3|YK2lhAUidu3d%t>Wb+{CJr4pK z1Cik#4S*vLfi~BHrQ>4SH5vj-hh+z?R)Dn=p!Flb!0()P05p3*wJHPPGy!-$mNm^B zJUI>6O>tW=YoK8xa|kS1DduCK-T|!lRIjJ!Il z`88nzKJqBz?t3Hw=;##&+P4!Lco@vyx+OP# zTNO&2F*09}(*u2)uLt4sz{I7pA`_48t9FukWHsQ4MMKS{Kvpnhyd^rAS6zehlh!IK zX78_@`Ik6xu)cB|1pzJi9BMNq<-6rH^_tVUF4nBJ*r85tdzL%WUvL2S z_rP11K+DU(^q}-Sw=aX|V_>ZTZLCS9h2_}Q<~iV|LOtUp09(ox?~6Q8F+db7}vo57BIOe|DIk4Pj+t^v_cB!9GvAc z1V7!MV)f8^boMpr%eGb}EXoaf{>~_M6Qf{Ur(oVNi0)KB_Ub-xXl+4TQR@bVpf#7k z6_|ujQcqA-7n&}65Uw!)rPVA78kueNW#R*59!vhceu!}3kQhGbo|a?LF?jYXz~?^2 zXr{nJ?_=C|A21{m7!ZI7!N&K2TD?i%P1?E6U?yxH=5`K@y+>7BS%ujtrL4-Gc?GXp z;rFa#4;T!VyQ=T`UUA`7#&j+L%Q>L&y)E`9+xm)-TZ(!L&2u&`6hus&PA*-lz`*QU z1|h4SmhK?6ftdm0nLn<%xQOp?M+L6SUPa?Bedp^Fhn4p~I{f3!^Zx_E0Cmeq zk#e$%9*;C=>HFKYKW|4b3aFW`- zRxoY$oo4LWPLBp*;GM8n@6hq^sbK|eMq#QgS`IMM(Ir+Tz+(mfg z5nwoAkQKpMf*&MgRcU$lEBk6}xXd`X6kx@!E?n5yNjDG+l~)_QyfE;IM=Oza%C7&! zUBQW)a#J?~3wi$uUzPne!6%DsP{di$fU4a7IE6)(RSv*o1ghq zMw*f2%kykQ?xF9r?z(gv?8F=bz6Cj&`WTA^)?(6|D-0qZ>Y>Cl{1BqgWZm5J3^W=S zHUu@ms$o8tX%TX65SdBeIK@V!OyHFXFoW_W^~5cJONZ|gCLwvl@>}pX=Ht3uA4dH) z>R5-qjHYY18^22#pzUjMD&J+0CM~-&V0XONPtK@;feKoh_8v$TC4rAoX6XE~YjuO_6P$y~Rj0kq~5-{CkH0)%U zm?@Ckz5bw5eut`jNMOvC6$lv))|;kl8G^C#$ex|pm%_4=h6=~Sfx*_v`!(B(miPWU zdC9$96<5*XWUJ)O#Q?6H7q%7=Ff_nCwbKSN>L{nIKG$YDNW8qdj)|qd7%lueGAW&W z;CWFqYY~a0@9*scmbz*xM@H1!G7AzpZXnj0FET?&26~)GJvdkJWq6S_M93oCwG-W}We#Zd<>LBnuNE%Blq z8fI#d7H(BCqBTjRx@lqw5;mc}Pj5^vys%?1PZnJn*YCu@RkQ{^)hGS5yDjXk;j(yK z?T^!oZ^7ozSzoFxe-pZ?_U>2^$k0RXKqjkGlA$Uw_^JCri5HR-qg>CROFQ2jEC%@+ zCwP8S1G`tmUV#^ue_c7Kqyp+t1+!yb*tC@=6c2{Ws59xOspazLS-LZVld917;F9}@^1UhTmF7*ETa4q4yRa?wOG4_1j^ z7t0X2$wYXyP9dp*>NYQO+J%56gD2UHTSG&??uH}6!Q+I{GI_}&35?rU7=Qd}hx4a} zEbs$A1T3$JqDD~TfRjqA9lQ-N8LN$6&n{(l2XVY0&P5SXX$LCaHt(*mwBE(%CzE|# zymAf~FP*`I?|lq=XYPfq<$#Ip46A;=oKWj49zy~fS}Wx>IiJ|TdvL+2eUQAw6Z^!) zQ{G#36{mV}+BlLFAqDN3Z>P0t-@9Vh};AWJFD`#_ogu02xjP1^%OX$*_7`QI`4}LNU!E?stIrE88 zcJ>_uvmIbRhxETQc4~NR zm25d(@m(lSz^3VO=yuA2Bp1XD1I0?Fsd8~xnYk;r+s;cNMp@>ZF~Y!5ScFDj<4ibk zn6SD*7>?qiobEB6`YnqKuLH}gjF0{xC4tZ|iIJl9vw0NZLE@-xL7uTFpOqt98TkgH zH+XIXf)>%0^J#H?`vP7%`$e3(@HF<^MQ}C4{&WZ1J2$Ymw~g(c8>s6!7>t$WHC(xJ z5$9hU;|91Iv`@J?6s2RH(2h?YkI%+$&aX8|~?(<)H|$wk{tZR%-7qQ@*fK%^kUL zu7U@l>GCdvD>=ud8Fm10#VtlkKARdY8*CmT3`bs;$%%daSAN&x{2L;!`=Jk$AS%w! zAX#sG=zCfWVdPN=G`=S;0GtECc=%7V2+IVh`~qQi*co5P3upcq-#Gn;xP0?9Oy~O; zPj@h$ZK2^A7!GwkhxOwJ0jjL30S;^&#QF0VvH!>}n0&S6oIrwxqniPd3?3_9zGeAN z)_L+pl?i97jfRs2t{jgQ#_bp&b}D#xg@OeoFe;htJzi(tX@unM3|yxGd@R3n&z1=q zyn6#=9|4Ak{Jd7Y`YG7KFM_uy+lWj7uH(X<n%xh5_MXP>&UQMPT}z=NC27Mh)xrby!-FMgRDUOz9qN4On01wga>W&bS7K}u zY|$6MsJ9!0%9!Q?h_~1jDbf+rad~(WjH&532w*1LE2DSA!`)DP_%z< z0|6C=<+C|Ns97*#!1as(g#Hj^T7pS%Qr=mCVQADmm9Z)Nk-cgLs~)r`Z3_fuJi21J z#X~9r4*R}VRmt_|8sNo0b$IP1U~Qf8`1eWB5(1taJaP_f{SP}h-~Dl3>rcD;hJ#`P znIc4bC?rN@2MosEWDBpJ{|ZiB_)}cndIP(Yo7f#+$A#;!pl)VxEX>8wQ$vq#XVcWU zaOn(IM#nInk5T(k0IN+dMum!2pHcCW;yPT6b^e%96Jje zh!95NozXomP9g4)IFsonNm^$zm%$4IstJMC+1}$;DJ6If{po-fgmPQA0Uh8JtDUp! zNzV^40j}~CbQ=>?B4A~Wu(Ix}Ex(qpopE^MS%-}k;IYT4Rf}f^DmH+1Xsi{v5@%&& zb}@hi-N2kxDEAVK*Tp0?e9Hi~b}!-eOV8kq%iqA4U;6E~s@k30K;2B=(lQYyVFPf5 zLA545KEH7}a2Nwb<094?*wfC-I|Xbu?=_Q2%PwMNchVML&L?P9OTuVHj2STGRX@Of z%^A-s6!MFl-`*bAjXODT6(>bs8#`ncj&d@#uENwpi_-(hV9FMKRMQ}$WaCWa2~E#n zZw?cgl$mH0@gSE#O5q_+_d^|2!-ct^qA8kV=8qeu_YF*6;JT6QR^bR+D_JTR2n0Fo z$G1`FbOeo6Z%ogJhtE;<1g?o?92`)DAFCch3;J~ylfStxDW}w%LP@osQk4^w7?p44 z=DO#0#q_)oOHabhMKGp9sx3$v5vl#mo?xL_j_ApKpp-L6&+qj_{k4^Yad=pnNQNpa zcP&QdWDL%fHOdjYjc(yNhJ}OxzwvGyB@BjM+|~lyHyAH{*I8Lp4oo>yiCNRcy0hKvU|bq2(gRy54z;855= z^T72}$A<3bPtQ!3oi;;bXBbsWaDHIa6AV#LWWpd3X3f5zLnivksb*uop=*K+6(pa+ zt*S=7P@(<+Jm`8Kv+D{aCm+X^dzeKFnni=Pa|=S>zVy zz+g44mXTFnnh4XbL7RHQkxI_;K%Dni`y%r9eBj5UDI}|5Vw);om`r=Ht+X;iMn`DI zv)7Clfo++JD(P4~0F0JMdbJLiPZ+O!xj|DiPMna6NQ>pNm7wM78jdZTxA3smdVq`* zi+WaqyLG6Kg7lDZ(wVB0atck zCtSpp)z$*o5Ok25-n&=$#Aq(MNE>zqgYlillj&A2jW93N%Gi`^Nh*#{e=YyhAd zg-}cu3cQ-6!igy-r7%-Q4`#(JHYF!xR#apa)J%Z_PMHNfv{Y3~4hGdR3Enn3=eFcA?oRC^gISC4sb)=P^mu&?9A^X?0M(!zxN4U@-(*Vk z`m?$WnncRhq_nz4$Y3y% zYShjdr@v~kx5YSm44_IYJNq}X7Ii%n2+#(V_XZ3vj}(S)l|G+qTS*pYufKrb|I>el zue|gr>`%Af^m-Z%*6`@@pTy&L|1^%QK8VUJ;o{D-c;n_j!L_|t+J4!fT1IWt`8h)d z%cJ#n9DrC7aH+O9T4IISHU~98%u%hrwS7_5l*;IWsII8tM=e;k&L=-c(dbQdQEq$u zURi_;j1h`G+nevozy$!$1NdNm=arem@lln2&FLJlvsgjtjZ#-FhLa78eJK&<8QNfh zLJ-rC}Z+2Mbxj`SB;O>!olt5&PoguH^LE7FZZr#cELF2=RW+V z<7A%eO%n`q@`^eql*5A=b0jw4L4%%(tC1#yX^&lIq*(kQ1$7Gg7F+-e$%K7&(0bui z0EX$StoBq~&t3i`-GB7YqS@;%3rDGjU0{q-f;e=K4dp&*Cet)*gCh5`3gI#jtz2hN zS(LQ)B$?ATcNjdWHXk__f(J$RE*oHJjW8GzDkE$6(rXr1&pK>wiqlPaJ@V)aTMJvy zy<@Sjwmdlk39VaIENn5E?Bbc7GKP4=k6lqVcFo;Z|@=PF@is5W; zkiUMX2d)=Nf$Ntq%<1nvy3)<`Y@w9t%pZ_~J~*jl;!{Y?+NdGAJT%8}muBQ5nSePMiON;#674X?+D3)J z2yiuH>k8w-ix#UZ!19tBk6}sjY*WKFwFD|F+I!B4Ky9GHGdmbEEemdcx`WSt?U(Ue zfBb*E$#p?EzVUuMa_nPx=;%-2uFc1>R2}dtCIgsih5--|Vr{{8-g@qE ziA9zN6Gtt~6o%q797l?h#){_0oHv%#rj-pjQ!e&P>CkSz(QEc!Tb;O`rbsCIIp4$; z0cA<-F#uqt>fgOgL&a9*lJl#ZftEYiT2`;iiciTDP!|Ramvhv6bfnprdlHV?%_J_?{-;XU6q$6*Q|7;=*ODob zI5=~x*3ft##;RbzM5-wpC~m3ph?St0apJ&`3^GaHf<6ohGsWTGkmZk7NfgupjJFtP zpSP$6!1{Wu@|+KRjk9Q)8n&*5gyCv1J5NPN0;5^iV1IfOpZ)45@To6;d=ZViczgee ze-}Ue;D3dKEB9b|cmN}_24e>8)gH9{zIN_k;HlI97o2Bo)^=C=&rb0A}I z>oT_HZ+nXl+3ZdaTt#N#WwG&1VK2+#tyJ2$RIuPoNh4{1BoLC|E9oRTsaWNGYO>5Q z?`ti@)pUWF^~sXvsVTsb*+xwnpwT`|p>3-RDz3Vj$tLSE5=!19%0)i8hq;%tEvTzz zt^54kHKy#Xxc=YEbNa~UO1W||1(rvl;?)79WEazlnqq+qc5eHDLJ;cd0hWg9*v~;R zr_;h~3la{7kZHIE%qWFijZ2`{WW5=s`i~xR43H^sAgaii9@P1zmp+Fl9{E@#TyU1y z1#*V&GwR21tioE%xE+d4hhJNPZ2#RvAp@w#jEkon?3A&2L|3SR-p+7M4Op*1=(@90 zf*PHjJpSYOb07TM*qh(P{`5-1YP4{uyg)XGnJptC0t6DJ zc&HXhkgsAE>WL35r5V$Z2#0YULq@DzT6>e&SSDkV8LrR^Wi``gg4txVQ2c%WP7hqg zmGbNi(KS{-ImW=ad%KR zpF7f3yH0c|n?WniD*<4&zpO0~zO$}w;lYY;4GrEF1V;-<2|1;{@H)f6aycE#5?-k+ zxD$x9(!VCqIL<2GK%_B+u?Mr)~B;2z&-(qY%CY{FJr*4Fpm6uRs8;f2KeS@p#1CeC{yO`TpVR* zAd%8D!qf~lDS-skiWhJcE*J2+Nza^cw2Ghi@^ z4ad;)(9$)^<+a!z%4Bo$3aH~Q%xVU!m0{xOAZ%0t&1tqyJ+y7T@wGj!tdh%h5OoI6 z8FUkF>kBgXOIJUSd++)S@UxmUpvWqFD}5f$Vbd&7^O|C zJFFc*0wYRLZNSb-)zt{)y|!~NI%`2>;Mk&WrudWRe-r=w_x{!`*ZKoTei$b( z!ZZwflm(bDB!(dZFkO`L?%nBu>#}#1+Q|R#`o!TujeR))^BGVL+Ds=iT|QqdSjlz}q&{2h1loA&co{tcRd zT>2*)1B`~{YPhMV(i`?dd6W(NQLg;%Zq-Qa5BA|0j+O}35-{Iq%yt+-)PwyHt@Dn> zQfXO`V_0Y5IIstOVDmFvpZ?M>;8S1te|kUF>gWg_JMmNa@I60+V;hh7wLyt(eI$Od zg3d@`01|kv?7o0g*FFp9YE))~#!cIxMIih~PyP~?MkmoQV|nQawkPQjv#Ew?f}fU= zKow@qm>Ulhx^@8)kwAR}1-o(^h?qG|Zb+N%YQf#e8Vqw?fkDWevI=7>gvAfdFqrM4 zifiXi4_tv+`28hj;m_q_yY(Jud9AQnbiw_=s!6kMYKM}MF%8q|s^{_w6;^0ka!TJ~ z?bN50GqglEbvH!HtBpJWQ_2EM0!)=s;x~tc$&3pOwRw9moPsHpFm&p$oK-(LDSLWz-)t!gvskl-$RJ66%8*N1}AWZfhX1gvq$Dx{H@2N#j$QF(p@3X~i ztx-2KyngAK-k^1O?EyS;>|^-QJ%1IO%kOEeO-#_qv?%JYap8-SpSt_pYyT(4^Bca} zYhYdM)Bothe*=d$KZphdm=S6MZfw7p1};;f;YMctyy$}SHj?Z-OzJn3_WP2;06bwO zcyYB}W?D#B&$_k@EC-_uBblh37mNE_NZ>;dGZ>Bt#sKy7=|x=ZcSYcOsT8<&n?m%c z8!(!v8c_1#aw-F7F334ik}sEJiU?hpPUl%<6wc@k)m+<8h+>sVlJ2EM8HY1W_HhIt=tJ;K??>D_dD9#iVy0o@Ah%|MY!2+>3eq6Kgs6^yXB zUm8PQsKj~$V#UGg7U6wFmAjzHlK2Yz8NkR~-fbj#wVFoa!Wwa-|?^Ey$3O@)`|y?6~iaUDQO8a@{AC2i%)z@lHg3V zwlMrm2AGc>CO73dMx86yG6kioVE=D!s|;={gvoptzxw+>*ZC|b4}34~Km2F$;d_1t zo6GlfN@#YZNJh@n!>PEgh)nx)`ugYa@|EB96_QPY)~H&;4?Os@sHzn-6qD?myDumG zF(!lM)kCnM*TvSeBROgPq#u$Km+gR^-(E3&duA<-y}d{S1cUb!<}NM&JAnQ>yNMWJE>IPWU{|D(qG{B?kioVv@?vI#>(e>!6OgVhAi;NFno}Wr$!Z!gSB6^W=k;vtDi8`HfhDmGjp2 zy3TiS*q?0U!u40$`yM&|=W%TPQGEEGpTYX*Xh!xn(ieltv?sJKp9RcNDfAdG#w)7O z&s_L*OzN95{LHC5-(Pw16Iffj3)aYxu_It-av9d8S?6H50+2yvfVy@q+(}C2iCwI) zqAE{!K9$2PS0c%ldkvzc##0Dzh_X-QF=;|dsf~yhP#J)@*KTX;-4eKpW9gS>uCulA zWFN#;W+$(!D(cGoBo4zA;XRevMKeCip2yujIb{iZ&OD@4K|BU8N}P_Ngm@`aD@ZbQ z^<@(Jx?VRba2*>hjs~22m06_bd>KowuOs19LXdM8m~IKoE&M~%SK3e>iK3xsa;`f; zE5%=#ZYOY3cfwg!?s>nF7SdR_`?`Z$9tN;*pWE0SDrKtTI;d2IZb?B}qy(b<`UpUQ zBQKDvhQ-+ly*f-Q53BX^22hP!=!twl5LTOoVS-}=!>QkI?@Chi_r3&#DndPTXl5Fo z^p+>yB7_nakEgt|Yh{Yq-*@rGspPdcm*0aQdFa1RhHW+cL5k5sieV+f6-FIk^7C2- z#tcDZaQ5bx@Z6cp+6UC?zN>3x|}BPbLl2?PD^c1{KiU zL{WqL`#nVcfy28Xt56=!OE+_;QlBb=__Sqwa{ly(?fXFrA5$`9y;z+$PPkC~%>}uX zo?GK4Ekn;Zu@ec7-8nE&IX~tQdRp+x7Pd>2FxHO-m~{BuP*i*$nsNp-GE3qH>>Sv# zcNy^VOqRj5^&ax6MM(lRW-x4opt*w**v4T#&Zyj;h!JI*{QraDyhtyUoRjf^PR zFunmwWFlhJfunq_>41tD10xn-@Aiu8YU$2b_OptM0G>7=XUp1urt9L`ZfwE&1gth2 zN*#_B;~|B?7^${0B^O#wY#{B|M4EA>Aj=Ldni3TbHgR%PTeG+9$;1+c5|#Lss@$n^ zsH1l~l)?cetmDWS%oRb1|lWC*9?rHe^Vqq2mmx&@9) z-mi+I`b7mJJzl?$TIW1tkqU$-wc+Nyv+SDdOTL&RWLA2OAd;)^x30n2t1o24hat-T z1=MqDsoT$L|BJn?o8#B<`t_%B0=htiAO00AFCWI744jcF+WL}uR&RGI)3voD09!QN z_&iJI(LygPXbFaW%{c=i*HMOxQcc{B63HAhwXaJdLHCkTE!!4K5HrdAd{E3hcB&y` z0q^QvQ*m7`O;R&}GZU94)U#QFooYfsGQNdA@$Ha4ZiDTX!nTRQVd*i+8Kn+!gOh$& z=UDc(>BjZVSW$%+wW^|WZE@4NLW3R1z_SF6i}O`UMJX0{?cc~(YDbpeTl`GUHXzGh z1Xox|Y@IaK9JjP+=T#~gTvnPVY84wen+EUGNeu8{m{)2mEa##TV(8CgEXDC`rz7R` zq4)fiB;g=R2QFEiU*eKYxIDfxL&YQne*5|V4l}!tiiSzGb$Imwyzls*7p=iy3~B&Z z$$8w~Kh^opt1E|KIU1Web{?Lm);^?#dszq@Au-S{8t_BLEy}~xG7XudH&`JkBLP{;0vNI>Diz!ck-CKC7{3=Ksse4J-*h3Q1b&;} zj50$e8ezU^+mD=t(bq>SnQ~_D74_V*O2cx8Cy2~ahWlD5TsDo&6Xu@1G?V!1H;g38 z-<}oe68bfvs!c2uxIs zKn4|8alVZzzzl>q(9+|bS4+2WuxJ>#y8QwMW`z5Wd_V5me1b1-e?9qp`;+bVAhoLP zUf9)fTYIRr8;12=nN?V%5cQBk!n{^1$eZF_r2rY&Z)dN((5aTzmrlg_q>kPfN0Jqb zF`@y1m^^@DK!z|t<@-FwCmUCAapxI;8I4ON>OS_!e~)UoiY9nj5is}bqN#xGy>8&D zhRYr%Y@!Be@Zk!*J~iJ+-jNtB8;}!iLP}hwnWq@UR7V|CEEj%FU`;<(%mIvr9+Ul<`u;TG-n)wzgAt z5Q#7$V4e~=$R5yhPPO0f-VFTp`r>P!p`&@zIf)J7-q(~t*>Bjc7+Ir8yD3h?mhTt z@W{!Z1ga&mlJVniwG*h&Rlx4v>xFB|hwYZB)NlDT#Aq$tJ>;}M}~`yJXSE_i17 z&yQBIL>~zy_v81qa6E~EVu#ijGwtk{_1Dqz3ILwJHCW^h3tU%jwSl#ZbviEX5$K|? z%0!RS>WT6}TayN*T$mz=k8(j7p_QQs)Ox4(IiHcZR<0tQndabttR0;lCj+73Qg&*t zFjp3UiIT*9SZ-bKq#k3){4R7m&J==lNtGle7Zs}+9XRsf_1NS8K0foW|K~n(MmKr5 z6$ZE{pq5nZTbqY`qOY%lN=AW!ng!dX1)c0m`!C{GpZjY>smurss}*dF zj$x_Vz~=JZSQ#EbMI#s*!k7UnGs1AN3`3QdKAN~$vq!UL7n5ci(|Q||W~Z7r`!#SBUBiv> z>$ovKP19zlPfb2~wfCR=_w4fMXw^^!8#Kd1^#;5)yBnG85u!G@wlEa9V#en=pCX))x7343hiT*BQ?4eOCmoqRjnH6A0UW zTTYa>xzi+QHxtfaXpW=_<{n*H>dGo5kEJe5)oQRAQp0`O;H^V6Tk|yLRu?YQ^OISx zsNKVy&j(VXVW{=$g4ph;&myDQlLKkeVC5(!WB{p}25u2II`%F-RaPFf7(f*~DsGXm z+^!*7LX9ts5bI6Rb$Vt!3_(h(GVPGfrEE!E@VUsa=xTCQVDU3CKX92np`|}s$zeDP)W1AW~`zZ%(G+0Z~1PKAYDkL|lui@#l|J+QQ9dl*( zd7Rz)$~U#az31SEK!as8Mvx9$#o*Nt@Z2k1D!g+R_uTgpUuoJ_92_ieSdL>=)~<2k z#e+-`#U-CSXYw-!X-4THVT0L#^ddLuehZc)!FVcsU^|Dix3*4T-p6;+?OPSNieuKV zPh8UNW>(bzlY)^ny^}I`;7z74m@Y!}wn z7PUxUm zC7U}WZmleB;MnH9u}?0T+a3wJk!gP_bT2qq40@;>Tss+tcK%2d5>W zNX{r4gi(}YgmNg{msApYo18aw1$AszV-*O zu1Pld>3kpi(=ANvG3NCIjh&&fbqk#li4{d-=a@GW%<6Gx4rU17b7=q7<+JvqXGy`loeYsLs2+j+=(5S)~=c`bQ8&yu55iZAHq zwRRqUST^zk30u2YI(?|6!8$JQJcp;xeFD#1`1NmQ@461)RRE^|T=Oz@e?vcDd2|r- zftOn)p}||fS6CIb;s8cvWZ=vx-!b+uSR3Fx#s9md;=18yxz_SOT$nN*TBCM`CA4G>5tIUdMi!t{ zQG-)_i!!%gbVj*2ohIQ-t;|DtPWPHP&$Q9@y__a77&Z7y(ZifMn*{FmO|v0ZPW;6} zWwKKBJJmB!L9`Y%0VU&La1Q}Ev z(mo;Q`jmwtuC2P2saw*&(E~1&HboQ81*asPR+>x!JMhWIBE8+p3~=|6_ay=Mfs;>s z^H&@Z8audW>w|cdA(kIUdJ-;EsfEWWNu(iI@icHR6)+jw3aq6Y4cZpUAmSocfV{7kX zp^{n0KmF2w@Me$N8vwor;I!YbJ`UhQ_L!gVK!vOK!5N?q!OC07)LuW*Ibe71bT@Eq zoRD?pjUp*qs6k1lrAv5;Cga_a4H0NyL^7W#P%-LRzS z?y1}cf~IAjOms#8jOul&k}FpJ+(L_^1tr(4p1h4*tkigHV3ts=Ecr2up!^VY=cJk% zEg6s*U|_1`J342jH%EXoB)esvSvcn@@uDwg$bh`KVr#$QFDmOV4o5)k90vYk))X6V zp)cco@xmOEK$JogCvWP=p2}@-`r_9+R-`Xq`JLN2VCMjQ#{d2}fb+NUocr@T)>iLE z;{@FZ)t0T~P|b}%hU5J=y1lUjceR~ABB77OMJ+u;W*5zBgL1yJGPmdT3}evqFm5YM zsrtYOY9l1X43gv_q*=j-kbVEe`rmDbi_*RV^LJ0+dbJd|<}TIi3^NJsx~Dk6)hRWo zwU%jv6=nK&q^?Hpm?E;;lsH;BsDZ_>*=a@KsXosW*k^V z{`0m1xg&X5`94_2}Y_k%_;9C(R836Is|~xsO*no*Tw*C4LV{&d zI)SVZc^1130F`Il>6r+}7LEjRB4=89c55a{A<%1uc9AQhicpbJ#HZLRwvdXzf&Uw-z@DE_<-;FCU3z4#Um@`t)*^Uyc(Bxu!@ueOZ* zzpH@BxEm8U4xE%gVgTp-SWLUNTpX7%ke(Ka*f9m4^EkXA`;p^lNzxG#O7bMT|KbtED>+6?-qx-cwFNHo9llV!RZq zCS}$Zvusx9lp=(owFUF6-h?4dN_r%beMV6YK)o`Q+K1yf^cfBEdmGrYXwNF7eNNH8{4#bHr ztjh)AWiR>-Z5`EjyvlYfRBWrY$7d*iTUxNK)^_%`UubP!;Ikg5ply*261sDU!=V=@ zD(61a5696l3^_mcQF%C=#mXHd;~gdpugYax5qWok7OZMF%}|NfPTgHCA@B7Fd?>S zn=JLXp;R1*vyDwA)H#LS0{ch9O&V%Z=9q?nWh0Kdbs<66pOO4=&)m)TpP>y25K9DP-Er|E0G6r)O&$by&{#z;TL`u8M?suHyWmO{_WArXL$>{?EGoD~gVox}G2)xHC93BWJ= z>gtWR;lLg*-TC+<{~4@@1qBuri6?HP>T2A0VU}T-q`C!1=4EhHM|5~LWW-$3Cm(^{ zE;C)h+}5;26-gFsT<DQ zP*F-Nr)XHznn+NbsY+o*HoK{nm8egZGD}_lK6X7ovZ5;!tm6|_?6=8M3 zRTZetZ>QXV^ZgR;)?i*Z+4oLDRuhJR39zmH9Y=c+sn1~9!E*rRJ=prbl(%+I&XrVr zj-;>U7-)#mv^G18CXg9GXez>#guuZ@A9qSrI6@E$TA>U#ZEUgM^7p;-`rmw;f))V$ z7sczrEWr|tWl72$OG3&6p)j0&=^vGeIfIe!^QL66R#;cbZsp8M)eMnV155qsRNpma zmHz+az5A18*;OX?t-a5=_vWLjvR?gGx4I=HA&K{(0SwrTi6O!>;~yBpVGp(^Jipk3 zf92ocCr6AU?C{%;fG`dm4tvHi6MzAO!GMK?011$g)Kb5@>zS3A_ujLYf7q|J*WUYN zR#jHDy822Poptj*&)H|MwZ8SO?+d-gNTW~vuW+uNBpOlDR84ztlH-c~lsH+Rv9|c;w1A9m$1f8gs zF5!10j2^YWRcwY9@DnLxLQw^}Kow@^1O*$J{)#-y)eBr^n*0fzf?~L7sEg~v_aH*N zB7k)QRxaT?%)%2F+z4$0hUA7?ifk!SZS*Lktxim!RNo18Qq*#M*2Bx0*dVKJztIxO zmY490qIr1tTW^24*>ijtn9#9m_EDY<^25Ga570OFoexSuh24owDsG03eBeqVxC%=0 zqeL7u`g{d3vCCrhf$))rnT@X=91*r~*aFxX;Mf31hA_7x#Z3tu(UWW=YnS`_=yx7Z|o;0YiIkEOlAGjuXk1{1< zDxfziEvQK-9cvh&7$W8p#$hTD4g^&mCEA_9^k@zS=;$n!T+;V7H+zPc6|6 z>JUx179lQ`IFxgC=uI23Wl$7bmi+{|ehIuk0~H>x4{=^47ekC@6wNkDK|xnKVJnnt>C$kdy`noHfCvIM{(OW6O-u z5f+?jBNX5=7*YMNL4u2wLo86YNVi!K^bL4A)i42kf{E?!pne zqfGZ_3Vkigiao>?dx&@n2$0J@$N@^s@VQHa&B;WUT@dz-fhr~}jSHOBCQ1O`x9|A} zH*mezy7TVDxV2?m8mQi=SnZCYxx|$xl+d%|ntdh-6^`nGT(K|ZiG31G$1v>Zw4Y71 zIX7HrA5w5jc0|D;CFqNBX3!VC75N<;7eOp7ra+0mV0#sp!^!|BjAUYWmQ{2=3K_bu zb=qz0K!xjxNlHpcmbxbEY0pOu`BfDZx5+8oPVf%G(RgNc9*7)vHtCfIN-PC=fCi1GQq{#U(~_$b%| z&*?k%_FnM8ma?wx#s&k)_(5Fz91nIBYgT029L*xVPne#PHOKfh* z2E|ZjQKyPY4A;AvI5ejW^dSgbZ}$H1)(O+4;go|yq6da-ab8oNNezw`^rTc_0jKEn zX>ty8P!FI&4MWoA*@%qY`9Kvj$@u;xSZq!}Y$@oeA>_E58W4E!kGnYZjra!VgVx%K z{_Z?K<4p2SbAq}L6u4Y4xy*@X2?x4zEJ^n%kr9)&f0u%WsZq5>;ZQE5ny66EASLAN zMB*7~*~Vz8t5A{Hgc#e4LpyMtThJ07lKOIRkW_w7!8i&HWv#m`8RXKGwFv{LCiSiy zJ8*!eh#5R>Va$*M`sB7j9KfW7?c~IkWE)2N4x)q_=f@Df{3o7xm&f46% z!!%rWNDHTCC*h_8aD$B|`og72B{;EqTBAZm<{znzCTt2e8^Xn-Y$z)>L-fm769+(W zhTule!n@c>FTV2XuYet39WaKs879>SIzzv!_47b5;tW(can|xn)=Mtq__EK$4W=$P zNH;0IIZ-|K`yH7)UWD5ma%taL`4`I;f^vpHL0)ULG%&mCmT(8^Z~1_*6TTy z_(_^M#4(PtKO7~RB9SBZyMh?5Cuq2&XrDxKLqK!jMBrd%OyMUIJY0mNLho!MAE+F2 zQd6Hmn20c0gUJ}I4dKKP?it|761HTpF@y~PYqz199@lx_UaXp4yD#{m<2cO&z>UB( z#&^$ig$6=XzvQJ}Gh3gRHEKB5 zJfM16N)s;xi^*97(r-QYRp*ujwjTa$?!1L4s60Cr+A-Cf`5eeLrW(^~?# zQX>j`KqO{FW%yWahrZXzy*KI?TU|^<6AlZRtO<;w3HB&(RSnWIS%j>obYF3CO>c&2bk zW&(CQJub&nNz{lu_Qa9TiG z$WvJ)RatK_3fo2S$%TGx7~BucKS$ZEm=Nc%D5%MMVo0iQ<7|=fI)lc9q|&+U0vv-E z;1%YB+*IuKOhX)ZF?4(VX0I)A-qH@2o6Fr&nnjD({bYi$Mc`bmk7}rJXXn6wcbDCb ziDIvh#PRaIJUUrADJLF6a3RXd<%x7b3Q4=6DJS<)ZW=!4UY{igI4^BU7whUvvb|WkAEN;cM$I!OB~;i#X1F+QnT^k4U^NT}3K)`wlvC^r zH0?CRdu0WK#-J;elICQD_-`CI9Q<1iGwBYTKZ^{&PGQ4!c|PiqR#=U;Zm-9+4FaT4 z*M?Ts2RBqNY9zSi@d&%|=m^U}J5s(9lV{dR5=$ZOE4|>7eMFX|=j3c1A4=6M6GH#} z%Gd@oHq-IB9QsyotK~D7f{1MF86*KEePJ>&9GlQv_On~jw+UgW*+k3u0C_leAY;RG zLsmbzWJ>4*lP48S0e0Zv7v+e9^_)Mx#+syC>cV^xGht_!u-YNqxcjZvA^FlHSm8Tu zh}LG!Qn6$bBI6u3CpYRB+q)ddDJCSzIe}qgV1nXFuD%THF#0N&r=(`VLY&u7oZZSY zUlB?)@R_o6S@w)u7(DfK+)BYtGNwm=c_J&WJG0-EJ!zgUm4n4#Wdzw!Q6OqC2~ssC znT8b?L(r%>H|V)G){6RHq=j?kV6mj|n{qRj!@yJwJmfnHm26}<3s3{Ly&j2hK;{4$ z4nb*yBy`k@1`pY1Y2B<{pp&dbUU@MChe}UUt&vFc7kX@D#Du?qxmd`!Q<&|O^mUF( zC?e=->KH)eFrT%J7&XLn<@;PPLy>q zDfa)w{Ez%}j42HPM@TCLw$PJt(KnAM5CgnpZz43s*)Iqk&nWZ8>|rxDo|PLC5EtO| zy?ukdJ%dXJmJaW|)2q17`}R*-cYf@<|4Ff462mkIgs-;K?H{ zF~K78N*YekWR0=jpp`dpES2P^Yz8S3ULpev@-S>jV12R11w1H|k-~99ts-gnbpD;% z@7%!E#6?b&DU@(SD6>YAuvkeds64nhE0q+3T~Z;TA={KrxP%fDR7hnI;+iEIi2-G| zumD~J4L=~tPC<*I+B1r27^Mv7BSj_xr&r5SYb`4z)=B|()-8yXgZvH}{Qg+I{?(*|en z9^ZJlE521(bqqEgsmhQ_3cYg-V>tJO6LVHL=K>&Oi`h2ss}<(5+yq#F*a#S%@*pgG znuY;`*@kPyB-*@J+n_XyLZiv4m_nb6MbX1Bv9}mo3}I}+Ckc~u!VT8~Cq*5p z1TXL%1tU>j@LbwNBthRkweWojT;~0F)Au%lRp^v~B$Wflvci%|8d`C^fRLC=wRhxZ zyKKZ4O5h}S{;U^PR9eK99~G;8RtAFr-50SZYAceWUsKWK7P@>hXNaU_eE5tMdNRhr zLol75U&VSj2k2@JGx(L)*B(YQ(PWj=ObMkyaY{s%Y%In;qLX*oWeMjdDtl>);^dmq zs0d0zPqdieRuQUHdMjHP=AzY2A{Fc%*1JbH9{ONY!*$y=N-su95{fKHJub4;!y2akE!QMXM z&YkA*du%R;Y=)$0lM+_3pSW$?{$sUs$E)9AgGM@>i#Gav4cKTfvc@oxGojqWwn|IMcWXFKE|ZjFM3**M3%wD z6Ure|((`tdt0BL!F{-tq#8xX9NA$JiteFEPI|B~35gecv?^2pI_h9GtFpf4+=|not z(pNSx4O`YK54GI*Y{9D7Sz<3P9V83Eu%m)yMgq#!P<@0sjqs2yoZRm4Tj zP5Hp3?;3}fxgM{8?41#JkMH5}t#e5d=Blj@;FA<*c$UJ;!bBttGfVam=ldc;QC)$cfPZB8g{Q>HK;13nN31RFKS39#ySVNl$S!r0Eq&`CH$V7q@bw1PGoq(;G%k!5lA-Ig8 zp(69N=>9=IUf=CX0-g0Zp4Qu9YW3hlvQ%6iK?s9Nw+YMZ;uD^Xm_Pm#x$o%pk zi3k_7iQzcC`ltWR%&ChrrpCjsHdI;0)8J!JgRwclkqv#W(N|r@B%MQ6j8DX5LO_EB ztjwpx8SacHF@wy9D{yURp~42tM~%#Yi!7OBLV)7z=v`UAXxNFkP|M(g7(i;?iIT&@A;NX9@hXM`xnl9|Zm_ZxtP>CJH+7Z9omWTk{|2B>n7^HE$6r}mJ; zbEXTW?b=0GRj|?_WHE}6S)ESynMyP__c_xXA7^ZzB+Q#tH;M{fS&6V=T08^RAo zr$qeQh7PGQ1HO}Pk2-KQ>*ibA1`eoH-76%6GQGEyu^<8Ps6k7XDLI!LP$82MCeEp$ zg@@3f{M^r5BYA)=I^w z2F;XN_p@u>XQhzIEu2RjsMHX2oUJfqmB?xiEGdu3u?8;ra0Lu))aJrDOJN}yB7L~H z`sxHGlLwg*WOj^@U>awOE*x*}J#endXL$hCz0CSFmm=0u0X$mwxIz`&tGaVB^_|zM z44CY^qCBM}G0%l1GEIaL!_0_5^b2#iaM9rDXDoJh4HnCMoVJ^j``Tw7@^-a?`xci9 z4$&mmAepes_fAW6<2Kd@D{BHw=qoE4j5k@OvLC@gfQzhwu|ufBD3Li>v?CZw*}KQQ zYFPMG(m<3uIRIdXv3H#Q&XX9pniQM015RA$ifj~3waiac#vq|L7b_Q52Vc;onQH7` zG*hU87%4T6BMw*vPEzEY7OW@~$6GU9kW>;Qrr8ZZ1Mu_Dw<+dZcQ1Rb1bEyTFF(WO z-hv@>9160E9J;NnLU=w7wOnUrGERo!G_W0Gh7-L(r>g~Jd*Yl>;nr>dh3p1JA)O-7 z$+o5>$CTfN1QbKTWYh%7WrB7PVbNPaqLH>&Gxu}_dTqThOdKsV*o#E@Iio1^Bt>=uc_Ws&B<$m*t+Iu*kJ)OLrR{&E(mL7wfNj_;f`haeE@v^6pf(%m`hL?dF;30{RmtDa5yoR zhDtb&Y688EXL;^KvTy`*uX5?-%$%1ys~WnK^DJ`5q@)h60#B?Os3Sce*A8WBaZ=eJ z>6%=AoC@W%{YAE(4pTjEf|$WHiH%Fp!-;`0it!rNTM~9H+LH?0*)TPE;*{zwGO`_) zmNPBJqbZ<2Wfmz^MI?JrR$;7E?e%wJYT2jIZ1ED|FQT%tr`Gw~nXkA`Hb)QK9MIpX zsg>Hela+-IficBF`sj$P52iTBE>*QGf*=W4Jq9da1x&;+lOHrroN*&&h)B*8Wknfl zft_6gYm#Vj`Yy*O$Bz>#ywa+;;_;XunxUc}IJtIk{lOpo_Y2{069SiaEGD7g;x9yF zl@uB**f~u01RJ-7*}5WL0;p$LY^P1d%ml9Y1w(w)71z;R;L0!t=Zx6Q z)3l3O<5K$~-%|{IQyQ3L>Cje`Jtk+{X;@WWrfutXCKY~)MmCjp^hAPakTpC~&rY)u z^LoY5IZNB^5u6Pw1J*Z+jm^P0z&qu1EKy==ka}bf(%aII=n+sE=%u%s)Rjz-8fAEf8XjK@;76|vr&e4K z3b}HX-PFOYNxTus6_b8y0kGy^lBnz@sRL22C@5k?jXW2el#TE#^MlEOiI`~lp{jsj zn3DITib0DMnP#(@?yHynkhcp}#kIPUef?s8b@JEG5VnZTaeLf>j7{r1u?a&ZCG{FX zUc#01*NKxGMJSn#%7jf-wzhGO zo;V~*CQX_Vg0k?Hfh>xz5@E))CO~UkLNiePvgI z*8-;2O4LDnkX&XV2AD89D3=6!7i>~EiTA<))8xV>P2zRJd{{Vn$@$nSdAGP{9CxqB z^Y-Fev?__k@^WfnyGV$#{v&R~*O&`j#af9YE5<{Ib{Jueg&BsRD3UXHPw23)#$p_H zFb*piGlWE(>WaEGS8^W}JvX4mVOV`fkux53nKy;T>9X!~Wx0%GA;MBV14+ZLJs($Z z9y#j}JGGP!7dvD%qFk6jg>X)tnNDsv_1Y0Ouq71fQaj_8- z{5C*~L!>+jAG34;`S~tqYA5IdjypvjiaVo9J>`shQ=@l9r5cHZ!AOlJu!#LiqO#~M zmW*DiQ8Ug`N7+f4(kxjq$H(04w^Bnt(QEQ$Ynz=#f5+Im2Sc`a?v5E5C~kG+SsAsW zEWtRyQYbeQ75Gp3LZ%&N6cdNvS8U8(k&rY#K<`4Id(R|tvmLnag+y@qeoEo zjS2zH)Y9g{=)pHkVu5oZ~ll;mg8`B{MtrD(`6`G-}=;1_$+WOe*6MkG3S96!P z;~sblNC9WK+PU20+OBW6H(G0&D1h|qqbQ- z!{&0~UJKy;y1j3KYZ6jQqyiXARpRI*OgShd8w@4WLenE{YC9>rt45iW@Z^uE{+v!mWmY=+u+)4JW*rF z+NZ?^ZcswytW7&fWyO>)I@1YUhmP}N6WWcvi(*~bKE<*{lK}ZK`ri0JfHhY;z_KEh_VYpguSNd z(`7>c)>2S;acP)%q6t$pX>~5ZfPVLN(Oi|&oV69#OdvHJ@Qfz_xMC!z~vyf7WR=34z<9!ecQ4f#QRv2|nUN zd^YP3av`qV%qpY`M+jmrCP7p>TypfP(k)A&Sr^NNi+j`!OO79IpCzT>qs3-O^>}6d zNJ1OX1wsH5un9_nE>sdsjE#$Xv{$)+p~y$TmK`>6=-4ne>@Wp;`B;%Laf&D|4f^L! z*h?Q-;PQd>b4jsh#8Gj-zVf!4?c)kuZMi48DY^1m<_Xw3U|P3{)MglSKbO?nL8%~Q zsIxN%h}PH#@dINC{yx_cF}#b7-kA<_2LvdgRFF908Y3K~~kO;5<_AKG%mg~$tWcm~PVPzV;a)Xl+Pa=3Fh$Cc;CNz~3Wb3lqup~%G6&V)1 z6}_H~Z7->#$-B9-5dSP#m>SrU1RbS~l2zYBJ*FJ3N#XT!0GSFlB4vXx7U!fvGbhRa zXVelNEI&VCSb;ALM0d9Jb^W_v`c?eymwvUnf3?`h-s%!A>|Vve-c#7yIly2tJ<*r} z%W(&v{K$`hjmKsUS&;Q}5QAM}92T&{62>kt4y){d9Q6vND{^G?3U;5RplN830$lXy z0C_-$zsh}C3WLQar5ZjSx#Z22*tzV$LZFqwu!eBu>H_0vfE|XhVQDt#qK7wE@LQEqauW>)ttez_3_hJDr4#)H_MD zbF+fWot*si5Y)#X&4(*+#ZzWP&q~tVjM5{llgaX=OAR!cLKwkH<8ok$i=aa_`%294 zaF6c9rRs*?%(=k8nf3YSWXLCKj8bvDwB+E?)N5{yY>Xjv-6}Y;X`uZ-8*LU&m?QhRM?*IJ5|KjXBupO~l zUcmnDRb1G=j-Ay34v%gCU|74vFf6g&+{519RlM@bkKu^G8=^Q!e9Y^#jhAPfnZ@SY2qNlg@N$)y560ggi1x`7hQr`1Q)Vp0LnJ*zQMeW z0tX_Kj2EaT02tMmq*Ji){a#`!dh(TBr8E7pHNF{i-*q+MuNn}E0Jp$VkZ-Jtvht8mu zaSliB;*(0w*v_pq5+;aVOfLqk++ZO+p(@PVm`cwp(xillpNm-(81_|>n3YOGnTa{Z z8HA+FO4H_qX~#3l<118aECgLi4ftWQj?_#^E&Zfej3m@W(sSh>B$h1+8V2^6U4swO?bhwrQZFNsGKwsMgTY}i zf=s0L5Srp3e`F`BQIy@?0U!P7J{F_Tmf}p*Vl*Kb`nf3Q+I_tla)x;v`yv^?w%wGs z4I7uj1n{((t$bU<{Vmf{7I2}Xw*I8Q?gxy+ZqPoYZY-yV^^BcwzFv7!1J~5`EfWeI+SDiJJ5YDBjJH(Z{AWJ45RPx^JeMoL{rdZe7^%8p#Rfj9N z-@%yPvmys%lC9w`KECUjA9knSx8R?r);dpY)OV+Ae*d z0#}Coki>5z5r&Z+jgwNw(DVUI?*s-k%UwO96 zVqEON+GW;33BtUm9w<7kb#><3o~si4mO8x zZumBHa5<7DlR({fqTp}6BXfBWVey^sDE=X@ys-Ln)PDX~kJX}cn9d0BDAFm6~L zL7A;K;+`Ew*kQzGV_?W6PqdkqR;7S*ra;k`e7f?a2Cine@;7d5@srOCpdn=bf{nmV zB0Z)wl`O`|QRvLY2XGLoWa1n&sI-P>)CQKmw<%OOOx;CoD7@uGXGHNvGc$z*9s`63}vb!`kbM!7BLz?;i-60cXpIIf`_Q-mol*HMC& z+R4Vz?YHq0|MWix46wHYzINcBvRxnJ_B*fR-klrx(|`FZv|S&=8h|#(IKJ^FZomB+ z-Mf7Q>*FIB0>)v$Fb)`OG$@Q&w?9M17%($!HXE$hYg(_@Sg+UEZntc$rFY+bS3%Fm zX|S3@v&B)yaiy*x3_>sq)u^D>Cp}2#e4ttmc=@9jU_x7vg;3_#V94n`^p>sJ+9%~rc3(1>ThBxBt<*8hk zx3*Rv#V80c4KT|fr>`ukvZ568jKZy`O#nc{s5yOJBCrEp=u}+R8m|Z+C;OeyPNX`U ziviilfn9BtL4uA?UfWPtZS2Zf6B4g63@eGlD^qe$yY&CtJ7zBFfL$e3gnY!zwgewAeTrr39%d&D_nm5Wn8A0 z@!Y3=uxUq4z!bBm!2r+f0^ffX{P9bml}+=+gIZ$8A`ROB*#6=#{^IU0{n9TLQou(? zx5RhhW3K)Oh;MGNpxaRzUnmQGiEtB1bk`47-cY6-wlMkgkmv_VI~=B(#L%iZsuVJOH?rWdbEY=5 zPQ52<{qc0%mzIGb8aOCL_3Z6eNfk+WmgL%-vqjgg&9>bi>lWK#PvO;?fV zOL0~oC#5~8dW|h@Ll~{hqzE_qTyW(mQEE4`vW#ItIst*$fSLLnZDyR@y-}V2f{x!$ zmaWI`V73nCTX$go_pihLXJ3T*@Bb3^_ujzp`aR&@*0V%IFL@Od&ldpp09^XHpZmFL zmpwkd72s! zqO!eEu}{ArbE(G6tn2p(f0P?EQ)lKukU=PXn1t~&gpjNHoF%caY|wH^6DI@kL|AtH zoie7m5j1hQS!YMhyS$&2mjM ztAZPSKxmkb8c<89s*EWW+T!vN84#f;QAj(GOjXRF74?Q6dikPY8obuOyA$Nq4b@G>&nprkBA zM7VNg50|g(;M%p_JmEswiiil<4O)(e_xxvDt@3rX-G-_wuA2$iZa~~OcHMgK@R;P02OZqew0W5CZ(Qe#`nIY5ei^%|%Xwaea9jV!*l-RXsE2NzU zl`VfVIglBx@2gCcY4SEC?W5~_;1S1W>q=&(?D53G>=<-Xe@_IA_?R^76(JtZHs!{M zst)CG=w)Zq#JM^#Sy6uuEh9xNkyVl7d~rINxfDvJ>fcayINY;T;j*t9H-TvK$MvAI zgbNA4X!~uh?eSrnxv%=@e1@&`K473*Q|Nm#a8Cq;kAC!{_2-(_>3Ult`OZA9c_+@t|I0lEA-AfmP%RxBL@qUD%1VkLJmcYl762^f{kT?7V&HP8 z<~1ZP2<>iIcy1{_C|x~K8Q2m5A^cZN z!KBz*P3bqr+c0(a`U4 zZ5>x)6Y?A~*L{R)ribfg!NLNjYUXLfs!jkPDvN)HZcve;D6{bXqH^tp2kwr2Ymm&~2MAgKaCh?7@(#ewd-H+o`1lr_6SCFpsqRdg`5MKNOEb#r*LQL4+Ael> z2EpT??AaE3r`9Jy+kpPiFXqp}rK4;Rb(B^A3U!A)6JaI6F= zD_6@t6bXVu%8EpzmJ?OJqZ-<@1qr{Q!mSu+Kw@) zU?t6DBzZ&y#n|$&7Fcuwm)kak)A;_jk|^a`CIBQVxHv#7Ld+=+!BwDOLGB0j5%O`hMaMH=e;2HRg#4G5lq840LOuKy58nKmuXO(kM7;TW_=h`WmpU-w1QXu z?$#PyytKmeFI>bpO&ZYrB|YteSmYit#&TGpK;_nByb7Hjb|W46wEv- zGjD@RyN){nP!2E`m55PUcW6JuG%7Y-iK)##4YigSmM8%Paex{w$y%pO1Q#=N45e-$ zg}JwMc9phZS*?oCAM^{Iyf~t`?jV93p@NO{=~^t?c=#{>^}2CU*OixsLSagI`mD!R zN5Cu}#-*lVqjI6DpCH|=sqDp)AWj&?Xq0fQSStrh>h82|@@!Bi91m#j3ZjSen!Od^ zLI!XcPQz-|5kx+^6$lun>>n4H7H4lYW<2%uKCWNe!|v`Pk(o#gj*~(nI1CBw0lN>kQh?ePc42{WQ=&BI1_#%RI8NU zjb_wI)}1Yz$I_Z63Gfmyj_nQcq#^0!Dv2L1U_BPbjXrZVX(%?G3+AjGA9_!6UJVVn zxfpXG{Xi-+VL6(>eNkQ?2=kQkl@(31*rbzRLe2cuy3Y@_;ojPY`91(QLpAgBKmYU1 zW%Z>m{#tM?D0_pc_X-xlmaxCS!rtxz*Pq&lHB|HrS@jPks=5r&;3o914h}p`9)STF z{jUD_&w(2^W-YhQJ8(_2tcOq4qa#5Kgl4I48y$svaFxL(JtF@q>)cIY2nzT6h}-fWK2JX%4R z;Tp#x!?<#F2QR&J8OGElc+XNJA|GRvdUC*W*VatNOp7&_~o^(-eh_Jldq2@Pf;sj-)YP#9lz4a;0_(fLdwFPB}``_&Im#igx7 zT5Kw+{ghhpiG~sVz%o~rj~xEXCRXtpt# z8@F6mCCQ94YL=HhC4y2rvfWN^NkWxu&p2BbsKem_$=O$uMNz{w*{`kO8w#OYpSeG^ zYBLMjc^ks2Vx~Uo@G$IxEdwW^&$XF+MRWc7b>7{rVcluF7FBNEXp{4?h`86T?c=%U zE@8PEYw`$}kZen2Hda_CC;pO*ABP#Zc?Ck!+I5_F#{a+0R$T3T4AhCA z%q}Iz$@tZrF6GqRrKvyTl{CSIrDqo!38~|u;X-4(`N4}%V&Liz^9@Sc2QxA^qb<+&=$% z{|vkeL1zd~tR_MiiabI2s}>he_^%1U%b9FGNjBWCh%GF8VkCl=>0ciiUNkklOAQ=f zgoX8@jWE-@sEGJ?uXs_c65XDFsxQ5566A6u()<@AD6G}wi%Dq`KLH; z7cThMx^vgxf8j#zbN$s=EDr{V9%pBmtC5#z_PuD~0;PUK~U-<9@F8Ga>rIwE7&CWuMs?XJd<4UZIbK%}1 z1QfJ!8OXSc-Ebh7Pzqv{=dpBe%5X^%0eR8{D;X3PvdF#KG&HiSv*-VmT zA4}2VSsij2grrk4Q^`C`fm&2qNm9vlq?6(yp6Z>Lo5Y%S1+FRb)DVD6gc@C*K^P^f z=jdvn8UiiwGA@cl5{t0_9~oDk=~P@tcizdO&V(vxp8v%L+?+f$o&mfU2oX;|{dD!X z8}EHxe3#raENV+;JoEGgJpcTqGlf>yf~xREv= z%#}=Zh>etNswxJ_=3^y_=m-4#YmlsnxIdN8K{*2km~3`9Hj7+&$>38cK|l>YQ<*`6 z)bpZyvMrsfiveVFiZ1NbxcIn1NI{zo$SSZD|29-WI=aOOsv#_Hte@WJU`dgaLYs|b zDt@m^i%#IW`38YO>>j#XeCB4?;RI~h_aYC20(+~^b?fH0g37%(j!AWz;T*8Pzryn` z9AL2=PE9naQ5j1H<}il75qrVioiI&dEpV_0jA2WhnIn2kv`0>n$VcZQP4-XF)GGNAWHa~dwNef(N4l0yDO6n0QrbfDas1cxA zn+!FeMV+Oaa=1xaT@baEHDF}_f(s=8i7!wJhMYuRC8XFSYH%KSjf4!r>9W0~$?+DJ zaxigJ&U~c4l@$=5t(8aE)D88db`XP-80;lsZ<2x;wFQpzXDzn`6$e14T*s0`!@))# z2~Oqe3fH2#B&o}2sH153G10!bsFLHVW}$^ykw!y5)NuRE9p8ES$W>xs@ zHW*5#ep_G|0@&HP{J457+jijc0al7mM?Q)%VGzFoXHL_mo}=tlQl}*=tr*l|7*aHt z91HcAhq*oX;t$RJ`Kc!@a5b}`pZnODHdDEIQ_=I0hJl)W$W5z&uBdh^!=Hl`<)+x! zNm(}%~~EF9bko0X|9r~STl+2(vX#ERR>Jvm;t3G zVJWSp+XfVp4_|dVu=7=TGjQE`*S9~kn*l$Z%E4(x*}W-v;RX4py}hLQ+g`XY=qC1gKSabYGNU)c8n;MQ&6y&FDoZKg6{0Ko3v)$^`Jd$&z5(i&4P z9;YB{W9w0nX>(F0tfn(E(+grVy)iPqz(ufj;o-}|dVwDdXGUKUC)}<)X@P6#zVoP9 z@M6%DwNkg}qew#>R#8iv{xy{vs4cIW{kQ@%_%sxL7{8tRQEI5W=NyV zgXMhMS}*}w1Syn*(`W>+$Vg<)$R@HzDF>@)tplav&stlK;lOaIhZ(AP2P`_Z zvYR&89vw2b0u{IAuI?vz$?HJoOgFb7sR{B=i)CBpZ?icH!_kp9>HljC@ceTJ*xeo5 zo^0y6lZx>Aa!MP-==(-TN5D6}4gA5M1FybOKX7mV`s3}TQ&S?{Kf-n~P>_kr`-1GiQran0 zG|4`MOQjSlO$e*R1d4em9j}>luS`g3NgYK=i+9CRq`WzZ|UND2R!l~S2cnmyd6{PW9V4=NE6H!TeQJ6K2z1zSR=XbYcPyq z7&$o_&;!egt#%LQ{(SJE30yIAY0Ywx+Hi}&Rt?DJEIf^*gUg}hsw;ekk{q=iNRo9@ zy%SA!^_e}V>P_01!1ViaDc}_YWgKmyn~*^A)Uv8djRDP+n;i>bHkS`b2A&I^niQXHaU1)1H6i8bVE#9j{e&rx>B7YbzAYG0& zJ4C{7O`S{jiNsGn)0ffP-n-+!?^F)5N-s2~^Su~PoDW*-(C0e1`Ye9xr+%t>+*@yb zxwOV0#_rw%FTH#P%Z06aR~i0Q748{=*Vg-O;V-@ceCu`K@;>m?rTV(GLsta;v*)~L zb*+{iWnBXK`KBOjZ94>p?fO_zP8<7PubqJgyod%97rIyLwF{$Sd>Y3&t+eWVrsd)S z5B+m6K52n#*$!L;vQ#&BO~;$2;m4%2XT1|MVGsN;r^B4J$&j34?T0>~qO;(3@wu zyA7XaQmz1|Qo|}e#KdM!9hH4TLmn*4!wTYRsX-{m7MOGPERR7PbKnS>iTOZktt+8M zzcX_=Z;tK~!ccH`521&zxb*KwK}7=qZruZ3dF7SrdADwU3nwRci;U*epLsTE5w@x< z7IbW&F?ignL?&-x^6G0oaP2IBAO1u;*v-(o&pUA4X&+3N6ljXO1=+_g+C9U~`lt^L zn$GVnUBXVn*+iMhlQhP0C(+{B-AB3AINTR5b;*OPCoOO-+7~1z-5U}v!xd!Svi+E0 zD`_SnS6pW<2m#!vP_%3mW2Q_m^bb3Iu>>`7IlP>DHMMd*oz=a4Fqp}qsK;4 z)*wbNbW>Z0qzVfqExxG4Y?hJw-XH&mor)`bCFeJGQbXR7^_PQ7ww1|>^!~X_Sq6%A zLIDboVKorWl`1z^L5#8%CFRe-lr<8IwWF#0p==}uF3(t-Y>y9#h4Pfvh@=Ok9%wp+ z-t*quWWn7#N1%%r+cfjrx8Lv=@WSHYU>AFPOMjgjnoZO@phYv-ZMMK`uLHmPXTZrZ z@I#+0r&Z2)8_#(Nb_3w3hWqa2gbrfn(dO?nEcV+0n%7MdR#ShlsjkxqYSe)ZWv|pw zU>6zz#h;Q*a5stKiwE7q{M?5ka9QhjlVoup;ThRH>@+5+x?%j#a(Eoo9SbqX2f;+zT+y1b957%(QKCQwzsjow1^oMPfs ztTNO{#wqF#C6krQS0UiavTr82-5e7ENBT29Xo1D21dvotgh6D-o)Z7lKmB)`ulJXK z@h<=(T)wi0kGyyp!(jZz*U9dyeh|$E)$Ih_x(WRDp8(%}4fx1Yz=fUu6K0e%0N|NN zU3G2OxAMjr{pYMt#0&sC0K>AK1h{Ei!-GAGAMHTUA!kr4L9W)TfgP8yL#~vWABP68nQW8pp(&4vORLB_0rh6T}pGJ~X&V$Rgqcc_7(i{}#87a$i|DD?wZ z=;<)pGG3$yq2;7PqlZ;UOsTw~+E}UWKuuATPbmF&6BRjl%CfHz5-;LHRe!GH!nBbh z9O)PL0F~DLjCsW#*Cq(Y?p$b-9*&Q1fdTCAFR*uES<~8kWt}>966%cu*DgSWU-~QH z%YWnDkH7nrX{^tF-_Onc`Md{UZ&%0dhomCVi;FxbcBc+b0()Kcbwj5eCcuaxgJO0YLfq>j$YL8(vHVz14EXZAvH=@6c03` zU1!?O%lg|>rdy-a^Xi;j*4eW5E}+H-O=f#FT^&$XC!nsus#7m3H3T`xKgq#k7wNmE z0WAm`bK0D>R-e95AZWq_knL4mVtCETzKDW{sF7EQ*w32mCbc4!0cNyGaa0brQ*sKR zS`B3eHffPjNX>Q04SjbY-suGLH^2P*WGs>>6r%wf@@xj&T&6tpd;GaGd7=gYJpa+p zw0G`X-}VqG1A`6HLCnRt3G2_u_2-V~Im$Y@$^ZW9w}C(UvR@0|^RidXn1ybZ`*VN( z;d9=%Zq|LOo3JK)!#M13^EK-%U^`IZ7k=k|Do=*(2#mKBF)HO2HHKp{ajdmJ88cuU zc0+BNu8?xuc!7nXqP&(zzn_xwvVmzU+uIaZ3 znyfy8+BnpvT|nIixW3cA*iY`>@WkuW;K5GtnoEuuwZWyl-Pn4o6970oG5opDeXe?) zx8C@35WFPBI9l(uCDv(VT{>{6Aj;-g+CjegM31{q&9G;-%;A zlS=SVw;L5ycya?1gHq5LbCTzR<&PN`{fesv0iI&l1k*?mg#du=xy8gu_xi0JVeKNR zp)m8=kC;frX7nN-YoF_J1g_>cU0AA4NIX|gQqHMG#>kRNWCYtQ%m+!+I>{KLp4xV` zcybdz5A2mvLe*x+4cH8wJ_}`8C@&qw*>_jl@Qs|^A*?7X;6C#b_~d}!i}sw6oSAp;Ka{ON&J|@yjc3T5sham z2czfu&OP;vW{_6iWh4wOA*k_OCN;yeJMGJiH!f4|DZ`u(+TY?ca2n#rI(Ght0UU3E zPk*|ux{mJMz~Q}jU>LC0_)1#zk<;8;W4u8B(}l?p$H3ts@Mm8I{`wm}f&Jl6ow4Vz zx`@3CPu*89{UL7e)KK9K&;a5Pq*Bnb!KBml^C53IMq}D7lWl-;ai*n0i_A9(k`1iQ_eJN z9l=#Uq{!e;tF$}LyMzW@Ner@L=-5&*4+H?CX?;QmH^Toc!#oLP7=x9VtmB$BD4~Z$ z0k>+Nt04oWJ*(nZ8pbXTj&)4Wx3$q_f=o>tmZh`!vdQF=8|anp4fNDP3TT&0Y)qJp zQloFF_nhZ;d#Wc4>pXNOGv;Q&dWO-P`&f!_>}l~61JeY$bkJ7pIXZkdkzafcL8YQT zcf=sLZVfPi&DvAn|M<&Z!Q*>hnIEp#x2K=^Oz%(UJplV&kDL)5(v8?b&Cu6IJ#`13 zGm{kaqs5+KN-w<1{8bsJdRqJn1d|}cN+a(Kw^P(JERp|qxE>qgKdcv^h&5!?+P8%iO}w)+}>v0 z!o{jRfAp0<`{$K2wS1AebElDZ$H2E=2ma_UfZKO~rw@SVuif8pBdVe}^R$)bl zXSao$?&b9o7=?0{vAa3-L^Amd0tqdDI@>tew%zQE@Vy-tu;Z9rz8?Tx-QB-_-$lv? zF>vj5zu{PlnU>HLi;alVjF%ym?Kg(-npP)5iYd+MfU0aF6(AT{k$>4CXB^*o z+e5Ri0r7~>$&E9wyvb0YC8Z2WXi0Wrx1!acr2|&7I8tB#(4(VaD1f);Tww?G2~{3+n2O(WKYY zfKt3%ZuY6qWyKo4kKjeX-u^Y%p^M61dZGi@V1V6$k`e}+df+$vB*mE+pY=v)#!!1$ zSra`9@BVd9!P1-WeKU}KxGHz4)PXKPhawuR*TC1l0sQ(O0qZUBxleY-{bp}7vs^Eq zv$aOslM8GAxra=Hm$zrX|37FaDfezQCEltXxY6Tc9lUI#{}rz5#R_OhPbRhaVO$l# ziqAqTRBQY4)t7sZ{P+_cxGs)9Xc<#qmq0m)%3_0eu^BFgS1a}{1yefpI)z&@H7LUs zoj$N{6tq}T*BkIi@qP{XDXWlEN%JOF7-fV9XSO4261id;e2>f7@Lvs0s(y|WaNs1N zh6aNvsi~tD?bX!|Ek`yTg2tx8ej5^8G{5PxK1?)kxW{ulylFUK&kS_7F65RaJ#*Vy zy$D?IehYA*$%&R~t8{8K@aOvYXKl2Dfy1po4a?O&zx2{atB1Yu+MhN>SxHp6IjL)l zTs!B3)^Gm_aOV#2vFCuj2NVeUfzSQpxj+BxIqqHmZS$~A$4O8ZLph5N?h}*l-g^31~A^QoO=K(}mWcYf~vo0RHDf&Pl7`l>UZbbRMsfH&#brH}4vbIM|_%iU*% zh5qc}&22K41058GmVvJsPLE+zy?TCE$<{M`x@pX_69%lyj!g|}VSMX@* zTr)ci<0`;~rW7YX%eo1_uXehK-~zx$pM=2GOh2xzOvnIonL;gMgQ?kt$xn&nHSA}1 zC|Q9BinVar&@+-Pbp{P{lqQNkAYkq=sh3JZ6t!3U|Z8kG5C2ORng#Xj}y zN7``V%{TL!>>VQJ=DFN#fZzY3XAuqy;Kv_Q4%e6gPd)SLZd`lRfeSbR4SDBuT$28V z4(smj%{R+d1D~=h>%Nu^VS!X8+0r^Rz-rZMZIGYm8baVoh!USI*$MB_LsP=-r6(b9 zHPu$1*`+O+nXx!88gt8^7n zX6W3j#A2Y>WTEr6u!Bo50~sNy!>T`Hav)=)0+J~qK~_S%98>|ERYQ-|hFKZFVt4=a z`embVtAfVKO7macSCC(*BRWbIi!dEq>24?!ChGJd^zW=}$EXAGF)*0^Hg$CGz0`}1 zqYBI-*;2$K#)J9&awjKX0&ax!u-a|2ng8_j|02M%oP5jlNJ39B{!hLPeBsN!$Mv~S z0K3bF-&CG?{`-1=`q6XTyP68|&R56;E8G>tPC6_uf=s=!AKrdDTh*W~4$xb7kty61 zPiQa@9e{D!lBFXMSq#Gp##k7k_eot*&N@IYc4ie!{>>*AD!jg;zD2p3mtw)6ibM_F zPblzV5iDF}o{^xhM`|;uhQQ>&q^>G-e}NPevaq_SUzA(DBenTAU1Bqa)Na-2;gJUU z0HQ*b!?{VES17y}b6YLtjaDGjeJ}!+yBAJR;x;i6(Sp0m(}t8NuTbiMq1v*hCHUH# z5$hR_&Qv#~Mgh9QsR6Fp8>kCmo!q@aa^SlVmF+MJ=V8lM)l zL?7;jS3Wn3<~|95tGTR`YKD`ZM^HBG(jGmZWxXNmnIs8;k=SgrV=afwk+TtC9Do*4 zLsw-om~o>WRnV@XdUq=6C)DLWDYxH>2F;xfh+TcagF-=*U?7EIxm1JaP?05RC|k1# zt87pS`o;@vwRiE<5bSaz@#}xU z_{!ITgI(Zned7EynTByS*JC+PvEA479h+kxe2mH7ZISpI`(29*?UAyh!y9=!Gv$n7 zH6j;Llp*{Wl`!>Sb>ppK$b{h4I)1}4_qomj4=Q5Uh0C*tc=t&NT>UqVv~<;1qLvFX z^{W)As8RK(8gLyKb4c03B3EUhY&QAHBo=6)(bgD>E*N(TekAqTxoMvw;IXOBr0%z$ z0kkT^Q;2)Y_1Q&n-a$<0ql6e`@O1`QT{xJ}WMX3C+T@Rdm_Uu0y~;JZ!T6jR3hoYf zwp;)TyA@LEDOB|mNFe|R%l^@Jn-fsf`%@JkyM_$ZoZb6O`$U2QRiDjy6^$2O{w`iD zYmnsCum1_w>us6noFcmLrN7$XOMk^620r^TuslcI@E`0m3kkqaoa0vYjVk!u{6@-R zjhg9SX*2w;70;VvKTQ!;o}6d5!dnWn^9lo&fO%a@||9<-UL|) z>L!@blzp$rXoLZl`|T#RA;B?8-dqi$hzda5N?5dghOUTuOakgez?i6*^87&0*9ip` zX>!>+4_9Xb*PCDYeK3P3E)j<~Se{t*ragYqB3_&c_E3Mn;d`m}`+lGe1HJa`zYIgj zLAMY!*(kpM;o%m)^+ywK-(|e?4Dj^j^W9XgKmDmWH{|nVwSBz`T(`cN*M`uTbYURb z0$5#WS0rEft^cuTrONXip~ga~#)_cTnSIdA+QSX-&K>{xc6U7?hE$SA#$a6RU>FuK z#+2>`t)SH~w7mArCwj;1vrj_cY7PYM4}mdvzg^}A{G+oJmIAdY2$j`My66PlMXEYu zwOQsKQ4VG#XalnEB~`Jjs!YBvH^giO$&F9SU12?)4i(P9imk(_#}1h4Ss^;5qH{{L z*BM~7fAMtem;qixi>e8VE}a@^m^;H))c6uckvxKtCrnnVkFMPP12$uALs`pFKKIg+ zx|I0!(QWY1hZ!ZRaKD1VXK`wYN8_EXKaU^%*mpNS=kNX2|D3D!FaQp2Bsh-ouYTt) zzWVhIF6}Ws{fLY%UVQn-dVl(d16y%J=lGY@t zK@A%Bh#RIB!ah0yZXNsg*xdp4_S$-%#x7xpRgk)exSkq{KDIKjxr1`ukn=2#OlQia8(;jzffSyW}L zY53HJG>eaUQhwj5F$qf4muGkY@>#j5>7L;k7}@dSvy0`~-fS%zZd9sMvQhVi07FIu zoG1fj>gN-2rbw)-RJ zNYGf<uaih)y{y_v5V2ma z=13YVm|+k$M4a}^^mzvH-X_7sX0e)O7JmGL9=Mt{^WK;NRcdUM6`??zKq}KcYMC%r zay?vRCpzn-#yppV7Rl7v52<<3lIEH%P_oqu7yqj^>VjaxpzZxdp@Nk5fcpi_#2BXe zU{+R))O(#0xZAcR5_?dm)(6xs4HD+#)}XRhi0=$2bFbRc`fi0Hi`rpDh5X`v=TdWl zH>*@+VlSj%xpGIfj}C zAiXmME2uRcq4xd#>%A3j0sQ1S?O*?0a}BQ#(;{FsKZOCHjwjc>+wb&QuL|+0WSvND zRvpQx#o+s;w~oE~{?5u<$LPlq5r%OmNI;oFHjTNS3)9a(#h2?Je9!||vr%_-MY9lA zV!UYtNHNXml(e(;cS4I6P1!(EqBLBV*W7>@i+_tvM*g1R#|(uMy%&LZEotT$9CQ>7ZOf5}C%JfpY99J+W_XBoIc$bhp!GM-H zvryEhG6`xarD!6NL~)qQCC!=a@SuQIlfc-2i|8AO7R!tA6tv ze;(FawxNzaFJ{Je>+tzMy@{`X;{=!XftQ|pu*gc(@D@|eJIBE1e&Ro!d-3x!G`!uq z^BceaU;9DvxHesxY(4XX|ET$5@4fl8y1ij)_>YFHtJ*?A(uo`D3v{*ck9qe_5UwA9 z-M!4jm3=j9M-1bRm#HEOerp7>R9pV2_4Cqq{n*@byZAv4T>Ahj-s;i<2MZ#m`Nb2+&l+Squ9)$fx^VGXTz|Uj zK=~6rV%UA&-fiE#Eq6|nFFHfOxN7g)@4fN0qOT>X?JUKhMNg?>Z+4{7(!OK8?&$5~ zyl%!(+4`j9-C!J780-i#Ho1^v4h|2uOIJTKcib+0kONn9-0-kXW!k;zM)SuQ1)lHT7*8GW~%UCIoLHj|alzv?=V z+r~9^qD{D9j2KfOd7sp#6xJq%T})|%Lc+#|z^4){m=$Tq)S8nVjhjvUFH76f`kX?+o=s-7Sps&=DG{qvWwn^phm(g4Klzy-XujOnzxL-@ zLBla7$JlNhZrnP?ul@Q>+&g4Eb&W8N6#8NJxxF;lu&kiMDB)%Ry!digDB~Xi_{=#h z*AoEWtYFpY9wzJiN$I@BUKfDXr8cYZ-ko=`@i1eF<^a zcrar-`M@=f$^ktb(_vg;vD!=S;bh5wk5;86&dc7Vr+8P1)?D zGxBvYpNb`p;(c_dsqq=ASqk-Erfd(NgHq^G%{cZ}GhC9;A!+h4=x$4WpUu>cLhM{O zb9L`$;G%9zr+(#@Gf-uA z(3X_*U9+%4thnC!7N%%vV(NJ|X}MCgIgCG+yB4@?=Ngk$F{l5Oj>m?9W9~Bxf8$^N zGT3?6<#y|bS?(UL@x?#8g|B{Pje&sAewWDPPE#~#tQYOIS2Rae^uO4dmkOca+BvP{ zzpRq4!}p|Yqkp&26EkQ4>~ewCLHo1ax$%aGFoKP%MaG5DPcj#6Tvw!2JBa*n^zp_I zBEtZC`!%~TZNbBUak&ROE&^1DVg#r=k_6zX=ewGb-~T}lT>nlpa9uD3I}bBW@NP%H ziBoZNT&F#Q(|H}4k*Hus4H%I{gyJ9+Txcd1w0YHkQ@Azh#k(nYnJu3Ru6#$`dP1Bn zi+A4CNu6$&$w1~BKcp%Z>6_)_P!2+|QZunqV@{A{f*Mtr6!$)hq>7cRISH z+w~FFhqp5EK!0~t{S|Pt@govD7C0F0KaXhL_wEMRyU>QZZoc=fSIr1Qn48Unci%n2 z|Mdq)a1MC+`K%x5+|=y9o;q3};Y==7z;sam+duIOb6@!r=d_f+S|=M{P3FfY$lf@bAF_celXnH$5?97=iu$#swG|z(erq zvc~tfVvkE_3hH$3U+T^pUpvP><99~IwLbugKy|-1`VFV?dV9=(nQWkmjqA-un>!)9 z?KT6TX^8WRmn<9UnTju~IuaHur0y%Up|<7sT6YXo**P#Z8=QUG=BhQh zLsJd?vH0D@|3UUXvFzVP40;Ggp9J3eTQqYq%Km14oBcEf<>?giL!0IXE= zRul2+HZEtGg&+H%1}@XPGgVtMMLi8pppG{YI;lFfC;Ka`u))1$<}|39)Dej5%B+>; zw`>Mb5BO4}kKxxzsM5COcVBm+P`3fjkDi<{cl)7#`#(B+Lq5n3Xm7RHJ!&yArGHuc zom4fXp+l$kPgxy7Jceq$+j>+2?YUYb+>YA&*?oPl@{7l=A@!Q}00;a8J6CU1O;~U>T#Gik84PxMXzN^ujVdwjN z)W9ekKZV%>w_!w5u=)!x{&4T>{yhNaG5%cHo2(Dtf!o}Hv2ad!*~Qj_F~GRfu39%I z_wpAJ+LYAjk84NwR%@l$SHiiECY?8r{9BEKXBS>RP$xUF1_{f(J=oqjSR)lIzXrsy6W~h8)BF=p#!X+BZy0)~2hbw#ggnW5LNrZ;`bC$wpD4iL4x&Xog9R z-IcjQ6Ec;eb(Fl=%J`i%8hgYEX9Vj+t|!`N`)et%+A~qt#3ayY8h7Nfl$l8n3bZ=o zHd8`Dhl%oX-&;R4>b%XoR)H%>t@%60t=gub(ZyPSwBkAr@5beLMomL`=lsXRFWP)rS z4cvV)?0I$m+_P9(8sd*WwTugw0i^`qbb>rbC-bk?8k*In=8ToJNST!4)x2CZGNR5U zY@O?7$GA(OVd2Hk{wlc?pAh+rtv%jtZ~u|t#;%=vwn{wNh%Q%1e7r0eZTCk?lNwCf z^m7rJM&x!I*fmqN-XRGHDG;~DOs&f*f3U{L!L&0zi;0=qQr5oLDsUYQt(?U4P*T zDCOOcqI54}9lHtp^A$^hZVO<~7S!0?-p?n%@q6wMzUQ&O`6OOE*Tv}<6;uk`bvw|E zxp0EWqslV$hQAj9E)|vRYs&APnmUL>hu>Vc>F?a8o}w>TBGdj#E)wl!i=<`vwWe+h z1J~KF7L98IAYCZSmYX!a6Cgs*g0)uZG!1ZFTQ*U&l)&_iC23GmXVLla$wrK3dmKVU zo`uxtL1gd2lXZW3<7*YTf?WPXV}fbaH*Yp-Do17;X%t;&`&{Skgmu<=UqoeQT2SIC zCma-PF_P*mYoJFy_rbMFzjDAuIt*NkgPI3nwOR*WR~Ipq_S=AoVnwx|>K{)k*q7w} zgXC*v5()|^9GFk+8&Q1fFWo5mo%tzbuGYK?2j*dhvg#K^z~0ypHa2z5?5n4Nnc1K| zHWufvIDsf9We`!$$zWYW39k8mF4b+yk6{4F0O0l`UthP$w``N( z>ywp~-@-W~_#*O_3RsUWEr7T)hR&Yq++C#!7OtKN_mOf@#twnnYQ^0G)$}n*V7y~K zH`g`7yF`YxF*yZHOn53C(ofS1G+N_`8ZEEoXY|Dzo2YdMJyO@p`)UTR27uY}%G<}i zW*V`HCuuXOK)v;-tTr+mm7^bJE?D}_2Qsb2mbMugO+YjZ5dspJ zJRA->zVPwi$ra+gtdB1Da-lfyEkvH7n!3#InLQIgO2GAHV0Dm>x#MHNp50ZCEjRg- zQ3I{^B!uPXua~uHv`6Y0pM0$WS8%#^=cEYcY_~WtZahL8RWG9rL}u%eLAa|0XCh+$j^P z^|cQ3j234DY;NGm!IWf0{bVbd0x~^}b#+RW6zTBnz4QcnJwU_)Q)41`SS{3GM8UTwQxM@184fS{r820Mo}n^lVDEu@aqzYW z>kj2T0NOWsJ68xA{l!ZdtX(yvAZbii%S4jauCRc_ptq7a=@in|6rLkzHFB=@m% z{4};OmL`gUg#mDVA@2i?BB0$dP05+xSK)m7QI{x~r3RurKK_Pp9(CTn^R)(CL5b<3 zzC!kPeDiuljm@SRc>|z2;yWl18t?`_UvaoiE9oF!t?57}88K?udM`tb%RkyI)8AiR z(vSb)zX<|Ys_U->rNu~xNPN5OTRmGeF1~ zm9}+?6Ct~k^(H4I!fCqT;RIN6b)UWv#=LJu@&ZJ<_$@^xwkQgpBDlk?3J0C?92Rm@y zx(x&98i31{lsTR>;rFbzZ3fP_S=HIBH^%)G^j0v7CS#`68Q*EWIQ{aORAcw{b{Unbz% zWW=-{n9(|dd0PRtN`N;gDlTMSUq>p8W8O$9ZkP{`Y^y80OX0Pe!FL2i})^5?F=W29kfBRcSuwkq$Kp(Uc=WeZ$rgyP{&jJwGXgNP>j)lv=m$cZ z-nC8rT%RwmSUCNd!45BLEj%ln&h8_KTGblRmD5jUg1iNr5)Zs}pvRCsk?`yu5hd4c ztHePBG-E(Tz?CJVU6^wI_b3AP>TmJl7ybfQo_i95?#iZ4_iU4D&kGN7vDtE60|*0s;ct4q zX8)RdF2vy4kZ~s$R2=+mh1%@vcCEjB1H+^T&25sD_XhdtBwwGfkX92l_lf`(wdwEL z69bbGa90O-u3K~brQ=N)n4Ya8g)N%>6T(vn$wOE(GtYC?CS6$X!$K5}jA_KR78bOG zm$jIjs_iLyKY&l&(!k8|x8eFze^#6&rbEnMIfI$~ zM~at@^J~gnWXu*)gIsb}=VEEV-N#c+;2Z%e1=9sS-tpjS#pWIFQknC zqg}>FQ2hD}SE2VEfn=}2mW%e>mB>$5XX^g{M8L(N(J&k%;7|-)ii`kj@P78bOEC~P zYAmhv1)xb@+Lt^JJ;Odp9 z%X|DNfS)!^7h7KbJ%E2yL9XAiIWs2HH&^ZWwEmYklB=1|n@(k5L537}zxpT$wB0-%i&x zZnP1{O{jF3nT8hH8|-jSLXNuaKloY#uAso;{x)TKYJRl>*LHv#Z!${rTLgN+v6P=% ztbVvXwFkqsMReycWB0)WXti7DrUDXVNOCEV3^Z6JMy*>Zle*CwDj8yR{u&l8oyOJY zpTgNEK8p)aKZgFwVmNg)9Bk=SotTywD8?fvoA}2MG;3%0nS#cE*RcSs((D{46RmT7 zJm9IOuc!{f3Nw8Q?FLl=F0>!#+VaU!=);cbR2kt%SeMT7YnwkI>mVrT14yFiE zqXpS$LkxOZPabCl)qFZ}-&;R~$Nu~`>dxElmtqKhsetQ9dBxr~p&e1>BD^k_jUF2Z z>S$@0oAJbrYNXR!yoP`Kk=+n7LZdT*D2|Z~`bdX;q=Vkee%Ob{1n!-YI5sIT6%!u0 zw}C@rB7DrUCNk~Q2DA>S^b?f>hVW(Z(=LJh6bC$?iuIZRIBg=m{I2~`ZBRDsEnp~s zCgpXKEOPP*LLrdyc8<78mA{w*yJKTIIVOO+TEKJtz&WBE+yw!59K9Q@b_e}lF~7*k z0@CyfQh5j>X7imYFGgii7mBP;LG_U^d(jm8#HK(UFF1vaV=WpAPa!By9V~&KJv|v;<-Qknaaj)Tz(N+rJx!Y1rmAcJJb?UAh38!D~{31 z+N1*G7LcaE*);>K+M75u8bFd5@Vd4TxQ7^sn`0RCR-iaBLf96*+~f}ccgAPw;E}Jx zr8AF*4&|=b3UGBoD0}CG%pbnjJ8*3k;I!2TD-DD_#d;;FGm=zLTA{Zzc-eNlDS-!f zM>shxFxxZ}l1J`sVqcSLGjEl3x@dWxosT43Z{qc8c3h+lZ;GW-r%GM}dK=kX2;gR# z^;;MY*Pz&1TJ#AESyJU_AvQr%&eBQ>i{P2co55HpD1kT z`q^i2;nd?ee9v17(qlfWl03oXLbGzYp39yYrB&Y$k%_PyEr5qcQDwlkH_+}|Bu%Yr zavWG(wUl`--fyzeK-_FYsUeh3@}?9nrYdIk9<2kex4#r)&`ZJX3x}%+&=AX6W)6$!jGM7;wK+y;%gtC#M*y8jn97PIDYe;9sJx|+W6@QTiDmC z;iK~i`&}oh5PNr`@<50Kpi=iL)eQ^x+7@3N^0(i>i)!edds_83{%1}gP4)kGo_llyS&p7-jSvF;~s@^J_%#lQH;kL8Z$Rvlh@ z{d_ZbK2)t5Xob)G!7l`rG0Nj)elDx7*lwNhc{^5nFlqpumf?8!37GF0W})A>+=zjh zDPVe{q+jT^DU$XX=A6d1s(FdMSbF zwlRUD69W6%0!;}tCEL_nSxf+329}ipt%!gr2^?$# zr+Y@zl1i!%F0D5{5zgCkvW%1sM_&j7T0#hLDhxnbheYz4voth>Wo7v!1ok54vTaGF z{$9x6j%GG3Bwr*n1z>SXZdh!#NBv3%Ta^5QUvKfJR%LJcU}8 zO5(3|z$FQEs3UN(s{@ywp)E61N>6are9kcV++d;u5tvuFFH9OleqBxv48u^`Z61h$ zzBc_{RAZgdYKPSyhO4KMFbrsE21UZCX9xzTMr}4rol#ziEHDD8m?}h|2TmZ+u0Ta= zd-fx30>0s0kK*&6{SB-vS0n}>0`R{9_&)&rUjQy_;STt#GH_ja?El8frKd4|@ZM~v z$tuMY0Y|^}QJf0Yxt8ZH;km~?fj7M4d$Nd%O9YGpqczk6%0Iq+JD zxPr~c9iN!716<)HLGc_}V47?YF8#n1x{A?>OdX*u35jJe`D0aN>lmfMHXk`8fEFaC z0B%tZT5bkKrk|2)h<~+!TLPp^_9y``w6B3>O%4&ZBPI)4{eTTAt@HaZf!N?i zYPSPg(M&qCND*~aIr&pSLYICf(c4Z;wSuXX-G+G@DdNFjG*c;6Bda*ZS+keL! z@xoKVcDZf0IC&``Bq*@^_fIr-BChoY!6Y!U+8ebM0lON6mH^ronPLGnBlEXbWPX;y zCcGo7(AEYpX*=s~HyQ$T(D;*5n}G%cl0BIruFUM#RR<9s*oxBijcxLH#_q!r0C(D- zC(Yled?-8cYi$TOQ%9@vS!puBl^4H)>*t=WDyI0+sry}2 z4L8a2;9{#%@2k0tM?fn!b>w~mEDX*4q)X~AGBSN%dv=vnYV7~QMqMN&gb+pVHETaN zK3(fZ{l@J!mV7B9u6xQWBmoEg{Jz}5sgbEdglEjPkq718I_#?5O$%Br`?IL3N^dDs zwuQl(xil+oSRkA6a`-C%ZrF%xu#M@wSF)}e0MN+>1*>GMm(GBtHT^@eUInjprXcMD zPYr>KeLT=r_AbM)30E1IvY(F$*w-+Ov-5-SX}bI5oAB7@{=BmO^3%T$Jp4~Hsykco z5|Ye52?C`IBrhybFm@Wzn}b+p-Z`qPanibe&l!X^jH1_&wcfi z>f+hQrBa6Fq*WRkVc+U827k)x6FvptX&YrRfM2(HgU;FboUF9Nmu+r9Ufq-OCS@Ohi1KKU$z0!# z0OkP`ldr%00W_tq3U=4|*Kj-(S0DwkwY}C`> zn!sPRz*T8Jwv0l~l2*|UMpdU@0pOyV2+RSMon;|1;KVI}IsnJ7E&>c~1V|>#ix=#W z(X)*eua}9)I?0Bm3#Y-9M_O41CIW==EKcC{z`4Q8t0%HeRiVs6^ZLLp3{35Vw9!v& z3gA!!7#F~~0npWU*X?HxA2}WbuHj(W*uhvvg|IY8&g@}K%2`MTB_d0GL)-WJbF(r7 zB`}90FO|q1Gm)tjiP=GX&%u*8L5%&k-7i;`E@ST6DRutLV|3~4lOj#}>s`IE5|{zN zKOXggGavs|ocZ{#Zt50UTe^YE&wt5~9$Z=#VckpS5_tJFKar>CowbRR#o9X#TpAb| zuQNU19Uj3&c=v~tK(hfH*bAIGU#eY$5Vcy6jV97G0a2Q{HMpLx``-2;Joe|mS*HlT z>(v}_P3QCId^tHSi$hg&2d9F-^`Gz&#mn*th^L?JDKp=qz;Hbhgeie<*LcG0i# zv~qxq(yn>phAT@*dMij;6WkCW*7-m!{C*x!&(8gxY1X;HTNU3^W_HeNU{wQ?0+4KO zpGj%zUhN1t+xOCV3`|ak$DCyKsu{Rk&z9$kXd*v0Q2;YU1kjKSsA?+ItTG_tsw=f9 z`E>cUnR3+T=NSn=t2Kc;?tCk5KlWB6!!=yH{EWQkP4C0}wNv`arKjn})#vHb*)L;l zdG3|FMOb6*;`8XP%wcS5PhPX48tE_pI9*;@RF7SF5os&V)9|O4f#nov$ow2<=hf2V zCpy6H8DMTHCr`N(-|S2v8TP=CP-$AY!8?<)IDGuAIDhJILWjDorjpwYT){g$Q%|5B zaz^dqs_;$6vam(o$fo>a3ta8jxLnpomWiA>_j-%C-mx#jzx+zLS-d-c6>4UJT>Z*v z&MCj~)^AAFr5VE%ijk)b!6=$|y7ifspZ9wq9bJlA;>H+m zJNghHfz{Qk;=t8sv2f!YpIp0vxvS4%W#JO$ub;!!v(HdE?7w`s`piCbmu}z-fAX*K zuJ8XRkVK~bX42C#n? zSnLDoFei!;6QWidakCAr6Od(;<~vK6*?Xi8xZZ8+TvuO>!1be{m2tU%yi?-}M_j4B zB9V8VCM;mxN?;$q4kAYsDeYPQsiwvS0NsT-C>$?D5aa-ea$374Kv-ZGUcncVLD3uQLqG5cek-6^xVCTx-PJ{O#->1m4B>-vW~u`| z4Gk#;2nrktkQBfW5GjI2g#{TWSBs%imq^*(hKhs@h!We=Gu<4Y+=t2C`_S#q)0tDB z!-1psq1&6&^K+-MaQy=M-4*IB&*RGJuVV4qIqNC5eM@J`*n_plr?LOo12}U3H{j68 zhad!HqzRPU2FlLI=6OeEG~1JPhb^|V&b8gZ6|};fh)d1KJ2kFqN{PM5N&*o{aAnDqfhZ6~S!WQ(Z_pNObV+NMJk<+kuUErh^d)bEG^uq?DLJe7ton_(54nO6kDIzD1r;A$Vz6I@l8QD01-)JW0Tna zz;ddaih7LYI;l?qr&3>+pI-HiNd459)9gc-7bga-HEaAfQPoTfL#5XRz zh~>G9w0QMAmgg?v@(W+au(!7H`B$rh$=L(gb=xt_9y*4&*}}1h-iyiI2hf?C#l*~B z$hd96y+nccqik8jiY++@kZ*0`fq2_$RQ4i6!nm#sr4q_8k;{Hyf~}&)1aN&7=nm|@ z*~v}Z>L41fL8%mi1vIp2q0zv7Z~qV;`%krkyHnfsY;8A$1f`IF>|`Tw)_0cdbPNG* z)SbPZ<@J;*Jk$}YF6W?<0W?6`rqBvX=#;a+%$rQgnAi-$WK)NJ%}7X7@5-2GF6Cnf zv@1hkRswBrpd>PbLYXje?|pB^=RQ-l=XmCee}vnPy$P%}$Q5Wv0IZC+jvYxgD+nP> zv?vH#5Tp=>d@{7z1{YkG{HXjW%oma^P{?)heW4myAtKR5)+QJbkQkfXg}dJTUVzNu z*uB?jze}lBP%4FHMQS)SkyvDvLZS#Fia8Pyi?|`8xB($#wco595S4qeIKU)CH3~zi z7D(PXaob!=fr~xhLO<`c(F|N%1r~?EuBJT=USytef`qA!9o`Lm?Xst#sR1b(Xed+b zQc!uykO`fMSsXh4FfKkH6v{a9Y6Y$np=fJ=yHw-a0j}cAoNTnUv%LNy>C&>hMUA#3 z^i=ham;UyzaM!neS0OU+8%x2Z+J-JN5Ph(5X+x)sP*C@12N@+8oSqo>^+-~UC+5nEF%yUejKA;nu0_7q@u<)FCxlqc!HQ0_+ zS5l*OGhbmpAlafZYeCC$tBjEOCdTEM5eUHmXTR%{`b$hT@h=7B!(b@fcZai z`%{p!viq*N=uoUt?a^efshIr<3+4M7w1&3ZSXIDRmw?aC0Z%Lf7uHNOJ%0bR_cwdqMJq;QYz(p)gBl`}W1$FWjZcjVlpfuV$7?%> z%Y7kM;mK)Hd{B+Te9;QUw2^wKju4L$KGMe*g|aZR+s=F5_kF=*xqSKwqqAti2&BO>1q-&qVH(T|tQE9M?enjpV8IIt zniM!@=oW*=Jk3nxDiFd0E)f;gLtNu6Nv}5N_pf<_y|2bm@$)K0tsD}D4m5RV=}O<= zv3#vc-w%JHLB)uWO9H|LB6eBPUl^m%uPy<9c@6mM1>n?*ag<1H8re-+S`l#P81VMJ zz-?o|t`^XVs{rVq*Elk)!~?s$c+y5)&B+PKb`yvRqG^kzl5qbwet6VVu`R}u+nFj1 zBI$Ia6z}d34tADXVHrV0+t&_10LkhSv>{xO(dC5)o2bLIuhLHVSf$tS6{%c{YTA)1wm_DtXBY$FpbFsFcVZd zgoq+TXV=!di`mqJ8WM;t0QCV*axf?isy2dT?E!_b?gIWXSY#4j9f*Bkqtdl15gbsG z;p9^DZ`m6y>ZK=b2Lgx;LF3^) zz;_=8W}7*iFnA~Wz-gnd*>T`T7Z{|ukhY)*jdllVGB6F)LV*RLGqW4F-}?4y_QlkUwBy1=qlv>sy^7NI{Y}5hTxKFt7C6k=4BY9~@zuDP+MtcMf z_nwU0;@Q9WQdDJ;;B1{P5h+3l<+DD^K6YNDH&npfz*v)99~iLevx%xw-wD9myd+>c z0^YnEc=tiz&T-qjg#g*3CRspaY)_goaA+6s!h*eb1c5aWkBuQ3c9HZ_5VVQ11!3mE zkviadCxF8M&c9lKD=1X;<36L1>$Kx{mYwBw2wXKwv!>3weD(#SSBT-jJJIc~q_t)_pA2-?U5n?YZ& z1xTw;2)49I31$sJ5j3X&Nf2wpa3cwB*uim_+v$)GT9$bU?ODEfj@o{Yldm4aUem4i zQl@@whp8kjMa786rSi1jH&(7Kaw+;lRmRN;4O5wXVcQ^v8o1g6POlofk!358?4oOe z5#g80w9Z79Skj0LNWF0u__|%dp^lBb0xEI{q#*sBcE{b0fpHB?w+*qwFk1-`wGg*E zNQXUut+NCJjj{3dvUC64s|C0!w4=Rk%FXlKS=#}wo#j?o(#=O)-RoD8_WDrm7Wo6N z-&C5Vyp%T(JH1mcQpnPSKJclcfndfo6u{*KIMMPLa9nlf-GA`*;C`>I+%TS8%$88X zUPH1al#{7>NzG8iMnOXgXq|!}42VgiLnH{GSQ=Fg0dQ&wB_&tqtX)9m(Sh~}4yBqF zd|f{miF%|C*Tdw96NRQfx1RNX(9+&}6P5}qnKuelvshs|F$D`S%hbfpXEGXAV0>)xs-#Dt>^B=-b#C({`3y z1h{IPmcQk;h=1eII;mz)X#?6Qf_Ix{ za6*lpe5)1i*|>iGS-o|hyx^U~LRziVXO%01cs4A4Gq5MgrOOdCo8GF$6u7Vo zoL&Kz6QHL}`p?z2v@8b9tgYG!0W(eDzFFW+Gr-=C>C0-_TBR&Ckr!?u%H^FlQnqn# zX-Hrq2KID-D{J|=lkFzrVH-*fkoFlM=Fapi-FEL=aO(4)2yODcH!J_NUBERSa=8rB zes?0So#j?Z71l&tyPNf+Mfd7e=p)C9Y&ca+-?;Uzd6bnMgd96ic@`HgYGaS+5Qrj{ zR)BL7IC&t@{Axe@&F}vZe&^SJzOv6(FFb=ZO(CSPX*U8x8!L#+{8DEEi<*Z}IyS@% z&88Vj$P5USW?Ne#h=v3u21VEs7q!TB8Z}!MqVm$4UbAe40qD|SvPl2-$qog%cJ~<} z!(pHBSeUk{TkB%l&z)=6uQgDn&EQfOxZE|3zfP-~esw03#yh*Mc0hnq4cT57$EtvWu5kW>V;&ulr z8JY%jFz)}>kKpk?`JK8=?R_<*3WHSmN6J!9atF9}mRl&|s+(>$31bmqEv<%R7eDux zIQC87&deb4wm}~7gmnEfL3ZSWcOLB&EkXpBI0R(UKsUNTl2~?OV8DyxCQiQL>+sB1 zAFu59vtRlI-f`$|%j{!lwh@;D8#^Ks3|-z>(VOCxf;6=yj;yFKgCQVDgPBcfPDWtJ zBJk>5{bDr%(j=F^l2-0YIJJB>3`NH|YREt1%WJ{f!#I%XDxjB|RNg?D=qa&3 zr?7wH+`zFg{UTNy%mBt5wN>$dc`iRx^)7L&Nz}m4_YgLnJ4!gpnb>h$JOV*657nWZYEv0 zUBFebWj@#ux$E(coypF!6LA%mW0L}3p0A=?vbtOxY)ZX6zSyZRLJN2)Ez7DCr8H6Y zcj4(8+HE$*ft6LD+XI@doV3BZXcK?ei3ftfHR!DvAzjV6ua~Jzl3PE~J^SOB=yP0LI$D zWDM-@0JpWx|C2E=Zh@&KjiW|v>s5kE^|NwRwUMxC#Cv!P0452zeF9h-8UQ095XDVI zjh2bJv}O&a19!i%4!G{UnRMZH0oR+#D<0kx;QY3B#UJwr~*m|Hq11V!qk7jU}+%30GKq^D4aJP zPmkM%9JT|0WI(4kFfvlCjj48T04(&3%X1`wBsNhL8iq#Rj)0*6lr&)1B2&vzR(T>b zDz~D>!bx3OUo$BT=(HuUr)>xmdt0XIcOo{e5biyZ?U8EO-=!$|k_EyeDu+w!piX8y z`V#ccHY9L-8u-eb0dEol&CWPu~D1YvMcg-0M~v1_m@{585hMaV4NPj2W z#0)YGt`ZDwb)kf$oOEJ8(@%lk(4-67Rwbet1D&?RQPV_S3HSN_Z~F*6^{M}W?qbko`Yl^c7j6e|JsLhBDuNaP+};t* z*ja87;L@W;o07Szw=AD~p*W%T`+>OV^6NlL`*Ki@OyGc1P%CBOi{>JXUknPVDj0h8m#qJFw* zM?uTNbYivxTfagnk|o%*VPfiMj>RX*fKueupx{x?BVmCIMXQy%@sLVC@Fsw#LfF|r z#I;piBLD}-fQ7zcObQ_pw>n7reTX#W@tM7J`vY&ovw!u+b-=Zybm4XYS0|MJeB@-a z8s_d8NbW4R5_pYJh%ZQ?dCSt-=S_2HC@tiE0*0Q!kB5`<^3;aG}$_8!2#{kP%jl?#=9U%Y+}dk!7Xc2>Jl)P+M%@q^gX(Et_% zRwnX-lYs(5NQNc}RvMBTfD%R;N;4P=3=OR`A`yd0n$P_06~Ki#QV!^{J>kmL@yP ztpZx>EZ=%43Rc0A?i%_FbB1nBVRdpps>p!KNe79dY?0uiP^~XfL|m+=OiTcM0M~oo zqg(R#0s$xA@aEt#J^T2_E&GuHONlo1F0+G94#=f24MJU_3TvixK51!d7JZs$!XcE|Nt;1(gx3L*Ce^-U<Y%fW)TvOKY1l)KDscP7^>Yq-ly& zrBFJBVg;=gw9rsUpml;I?LnmjXq}qKlk(OZ_KrDIy5OQ)vQohED)7uz;ENXxK}D5X z1{|0@Hn&T@+^YW=qy>WEqmnf}5Yl%;%= zD$?2uDaeqBD~hcr+H0I;&lbd=`3pPXMiJ2O1Lv0VS`X{$K-lht1yq+8uH+(k6>&Vr z3N%`VZhu|h7TM^_d{)`In2EYrr(mU^RAM49okBxFi4+9BA7zkHPt zDgu@88hcyNLoaPUJ^pHZ|tR0_-=xiZGS!#%fMX5b%f}_Vxbn z`u^a4Upeotn z`^Hc&@Jk6?hbnnPzrN*PoaWAWwzJ$~5!X7S$lX(6C*-8pEu^!!#4gMRGgJpY3iS4H zX%*Fs1a9D4?E}}BZKJMl`C+$z?D)OG<5^w4j+KS$U|Vo87A7ubNCwcn(UJt&Xp%CS zAXXZz%}Z+qXaioFHB_2FrwUpb08^rz5NkpfeSG#w&Id+7I;F&Okr?aL=@xKv_P zJbzRszgWD!-UD7(1kSJ6elE)^ae*Z$uW{)O9>VjO@_!dafQ(zfUoe#EFyNSRM7CDHltqB{1U}YjNvNbSf1y-p6H!u{860K$h zV^3+LuXKoHu!=!<1<9~)nxAcol4L2>N>yV;?Rk=|CcuSd;PfJJtqb&35xiV)ovd?Y ztRqYC7SnZ94_2G1YjGGDZ+3}V6=%-C6Op+#?O6q%_}iC?>7$r)blinz+jARpYwixzzF@|cEB8_z{o>|B9u!!NmRZe(B;g|Bm)g*OTEtp{#ffg zinDA)W^Dn?kTobatV9iMK}sQ23DTs8;b0Ym{;FXovNGvNcnnRS%o2!-+;y1mn?~F7 z%fOAkNvHY|SZ#xFs1O#Qw4*NFSOU5VU~%~4>*61+69sNH>LOsaW$aIg01-uq;wC@% z9Y2K5^zOQkeYX{}c*%jQ6536~guACiwOe~~XDr)UZk>fTI1qGd`WkOM`=o8c%^QTN zG%&CqC1?-CJoXxUisfW=^a=x;(=+tMuiI^7J#=FLq-j-S)O~(tSI`gwy|qQaFxG(- zpp*e+fl;%K#>j%8Rn#ElqP$)-z?OxmmGS9ft)Y}QdWRO-SsM^jY$7ivZNW)_U?VX# zL^AAR*jvSLxCW&yfZ6Y6{}}zqh^x4wG;pO0oL&MhteB?efihsPIFRmR)Q43(8lY;W zG}du1&T66?1+SMNsAxr|F?n~>xCO{47L)rA^IdQIwz`k(-AuahW`L^__kH7ms5+b2 zk$T!$ZncFsM(t|LIw#~SSiN!0C^h&h7lDGjZ)Xx>x%rkHByx&;W(`7lBt`;gx2)Pk z0`!O8GhA}fefPI~PjKJoZ=5v}Q;H!JgG?F90GKv4Ex`oA1Y%_WgA9n7Y@(&iTW}+C z5gM{EP%8~i6~ML@1_ezTER6mk6C>r+f|?<8C~XKFgWf8JgEgeX9?~>15t`LgM46$f ztLZdiBj$T$&4AaHHB$>)8Rk+^JnG)qQhsn`<}lnR#;@EXKxA|u4~-k~U;v03Ej;*v z9~||u4b$RpM$6)zY)(561JmFq% z9}XT0)0;0{dDXLfU~!3Xn6n;#@MTZdpr#wN>LBJ<+fN zyAd$eGFBvFz4}qPYk)Q$Ese@NZbqYUy8|wtA2b#bZl99)+K`~Npab_j$oublfUcbS za_FNU1aK6<>6Z$)?hG*sA1T+jU}^9>^{t)d<%)F5uhavd9*l5Z>NynaD*2#(G(c^a zCkcRK`$XwnhG|sM;qZ8U!ei~)C1)6%yYG4k!(KXzN9`h&_Q3(G%(899I8x^T8Ig&$ zR(jQbB$txhyZ2B~`YBBYSiEr#GqZ<{T80oHWdsRb9Zg$(MIvqLY_J+vGCwe~+FI^ox}ps zGJrV%R{&fDa2~)}0A~O?4bXYJ{(^nqGJviHuz}r<12$dynZ2JwfA^v?PVN4zneB5L zh}25U8)oWL5!au7(pY-X=o*M0K`|AH6s~bLbM^J<)m|gAYcke$aAjd^JQmixnvEzj z6A8c@9(Xvo?@vAXr2~;vfnhY=;_K*&HNQOP6$-u}@X*0`V zFIVcP6WObat);-#RinPqOM$sQaJ6gXr246`|0uLKV0|zvzhPvykpm6TFEeQQ8jk=F z3BsxZYS^@vi-mtn9tm@!;B7ZsP8Dkpj zwB+hPWhR!c4lcDd1_X-Xyp^Xkkb>MmO6ASFC4X_Q>dV!;F=xOpE-JzMgbdd}TOPc0 zfNAJH&%*QQa(;|HYfxJMDrJ~+qfXU<{bA{+;b0BIhMU5^Td*;L6j}hO>D?k|2y5b~ zHA4t8@>7&sGi%LR6Sg}Tg0N1*3al6;$og{`L?(C8k}PfBml!cb4zJPoR~CX$LbkoCXscw zRT-$b2E5j7(tDY~i#-EUdtWuBz^-VAaJ2;KB@Fd4DS(R%tLRcz1dIOU~*<_&-aN_FPKxaEDb#UU$(D zGOVRZlu31%s7hv{fdD6fju^y-oRK;G!V>`opsn5^Y~>1IkQNzpg%ul>5N(JV&MKOO z@M@Sjh%x-Us}%xff>s&?0hK5ymJpEysRSe>bZQtZBqNA8g2=*83g3ckBCP8@bABgc zlS*8ZxrbLLvKogY+yD@g^(tu?78Fx963T7ykzLnlnRD&S^3sYWc8@iXC|*wjYF(1X zR)Fi#vJS@HHt{1T8&o-2&7JzzYhf|ZK4lLBmkO+w&*k3Xt#QBQ{}%qPE#)}{C}Hpr zpu`MTNF7}|x8vZltwZSU*XztGHxgOll>@5svb#+>L|+=NEasAjI#2Jp;ysr}$*k?k z$73EbBlalZWYwA6;HjG?Rk)(ObfTX!v^U0geBcN08^7{1mCawf_JV0XW@}qdp0Onn zn8`>hIoTzZ!;uyqpptV?Heb%#)Vzoc(sCx^i%d3(jdyfLU}0i=9&)vgoUmclJS@O! zW$R-~*~aJ;tOS^ZiRwr~NC5}|kxB?@NF781Ldxvn2^m0Y29}4wa$*c8ry4+40n21S zY$7%e%+BA7N)s}!0V6Jh*f!qZ<#B*E@P6OLhD#Gd0ie?m*gMg{`+wjOoO%2+IRDh& zgf{g-04D%EyPd#ww7lZo2O@o-BV^^o?&uS4Kgf8~EzT&=MMEC8|K{Tw+1aLmDBRD+ zu@=OI##M3(1C|X&Zs4%#9?sZz_Opr=Cm>Eh7%-49kdlcAG=q%jcQJDEBPI%HxzVc| zaJFlC|824Sg)a{(>z6N_L86QWJWyo_7S5gaR57@8D)T_6aP8gpTqAPET6AF2wwCsG z`;Juzk$ZF9dHe*TC`Otlg?+zr^;zh_5RJHjNZM|#)OxH4b5F37gK|Q@)(kQe1GWV& z5@Z>J+1(0ehOk{=nw<1r+nyj(Het576dix>@Cc~e4ixSKy8R0ng~J& z=+vB0B7%q_kdTnE0WcxVD;Eu<%yn9OzTny`v7eT!8cw+XY+)0KBKX^7y2b zl{gt8i^*Fg{e^1HB`+*nrkL_<3E1-s%IsDFMAq`bJ_s40XqQ9g+)xNsu5YOV3xS zfDjhMq6i|2K|A^zr%eiy6r*Fu~9AppN%XjV55T#uGDrS`N4 zkDP22kJP#ybMv(iJe*jdv8gR2Rf0f9fA*#+F8x9UpecvY#k5;!v}ektwHb!n%Wf)X zCv_xp^@Ej^v63=+wh=M~{rF%uIHZrG>+{)0SQ1U&O~iV!V)U%W`x%q?fZ@?^MfEmlh=y#l$9__@+3ueyha+z z9GKajA%B2GrbM5SHV9dy=8}}|IdfzmCRAkEIaM~YHM0R1i7^OTrUt}Rgh-_zDUF-6 zj39)xyorEoq{#rYv3x^3uB%e*6~8TU*jS{`7Z$DYVroi#PvdJAkX=!TjDsQF@>wD%;`atAv>0gOT#U zN0nY~s-M~iSb33Bov#kUVR=?8wNU{3<)3gcPv!4eOPS~UjFp5jV9dUy0PhW?38O+t z=$M4QCe+ZPT#(U7J&R7oN_#^*Qq0I^(wOmM;>UcrHm^*#?pZC$LA7SO-;H? zF|aUXoL|+r*wwhwW%Ly9&{|%_i)P?TSK~?-^u>~Mrb@&0nClnezBjN=&rV;2>W>znRKCw zy>Yxu8nElX<$WK-Z~xlQRnE`K+Ks$EMyBCc*fhD&gj8xs2q^Mx-5Z+i|0vaPK*Xg4G`Emn05`&IpadJw+(kf zl?5~aS`)wtSVo{I1(Af72}s6Jsi~7e2#|;jkVOu}DBEV%cuv4j84zO+#GKo*1FyC; zsYNNOj8a;sP{o@WXKM%`yk42Wn{>IIa`(~EyH4=8fAmM`Ms%MqU5?%>dV< z016z&qZ6WJ%{bY_OB7#G(VOGC#0d3uPx z72dqw*LYz?7F`i}=}ir=-6rdNcEBQ6_#hCJPJp3FAL>+s zWC9`+bs0*%gc1T`C@jgt)X7)~8(oua5y(&eKpAR105pWDiM1rKDh;WlAU!NLOoC2 zY#q&}@7VTtG0Zl#>sVG)p`WwT8SRg~_poL_Y6#ZmE0tlHkgaIQ&H>wQFct%24X?r3_KHcWvJp2j_E9L^=da^ZZL6l&40UZ8-uCW1 zc|U*C2R=-H@h8ECxe2;j~-^(_ZdLz~uHv;U_hsh#c0 zzhVT%hKe9~xvTLT&knIT)Uz@|Qw*;-zmoH+w ze4Z40baYXj!TP;jA&DPf%^_2e_o6aCeW=MW+BBOqq2N3nnVsX*V>jBbI`M`#p$uFA zu();&`(}>XRtlYgmjQ2+BafJ@W}*WF0X+mnWZuJq0BN)gNs8R$QRKZ`qTuslM@rWK zoe?ucj@AX=dwb*ga!%~^EjqRewCyePA}iv&ELI+&*+gOHJyxwl*oe~7D+LJ)lzAT* zSptW!_m%19yEGj&=Q~;;=wFW?~<}6yx-DtJ;qSM}wR&y3owzC^u$`dMZeV5pEV_#qd2Rk8 zrNiz`U(a)Y{bzW~2Y=9{)7&wNqJ|%rNE5<0pDZiX3y*ckxk5a76Mz*3BoQDLpc*BA zDK}!I9=lM0X7`4r<-YLjpWyvp|6f@qo+BZ+_6tjswGojV+T&{wbgV&45K$iPX<=(l zE}F7U%LFpl&I25W@Q%DeWB`M>=$`0!id4v-+Gb=gJzKDJ;bOaemIh@MnGtq7M%dSW zzdcsAePG(oBv@toW~1Jawk6o?ZPNHdlrE?r^}qF(8q*P|$C;Qb$c6sMkg5}*6jABNucR*OOZ z!)Af&!OE8QNZ!|`B2Uit6BYcoG=O;kOBT4)1{zGaDeZT)XTWJKHMOS~mNmY%r1^4J zzb1$eGfk?n-R?j6UjqQg@i-kj@=*gm@f2Fk+3hJMdXdj&0q13*6nbk{@YVnH zF`?BE{gpW^U3w0S7oNpnWqw14df{(BWd?Rz>nSt)%F&hZX2A}$vS7qp$DV;;S;Td& zZ&+=RxfUXOitVhd$5*C!0etB1{uuuCul{^x|NDbgn;y)?6SHW>5+ky78W~j;$+;Ml zVt|y1y2ws8vQ~O&6gZeH_(^-|1yv_BR+ionR5%m4B`OZCY~@FY1O#!`9Eg&lj3F1~ zwkzaPj8vUSxY3=e0U4M$BWAz^iS~EfFD3}26cmwB>|hgh3I}45gdoFGl#x;JFu+a) zW@$eKF0PtaB#cVOOv|JfT`#17`9JakQ>xQH)FZeUezYF~t&&4GGm!Lw>6v}_=#TwW z9dH4_yKO7h<&6T@-2lF+kT)C?c=X<8HH9NB`+jIuxR-2X#p|<9whUT!IlrdyYtIa^ zG-N!#tnkdD#-%k~R}*|im&0QMMm8F>aX^x(ny<)j$3i*5)t% z|LwhLm?T$uCi;HoM6Oj?dv#UyzN%Z@K!XqxNP@Aj41?fdY+ob57kPQc*r>hC_}ZRp zk3H9Su9@o#=GvG=k{OU$Y^0GqhRb4PkO50VAhe*RyQN;#dsSCech{PGMx1khoD&fz zA|tc1s=K9b>AcTVPgUg-nHdoo@AqCr|#hF9mH&L}A$MhFoQi1eL87z?WqKVAX4=)mw_=BL}ZL}kfUv=bfgLG5aQRyTmj71)DI&i<|t&sKCvuU5t>7W z4JO6vT8KJi$e61^)3qUL>=S&yJr8gjVLoyD?rZSYcYgri{o3Cpole)AQCBC#wI}ZJ z{v~8H@E7QL-fs`Kx|&^CIDVYmuy%nrwoOO&<0@1!QH`$Nc|2gZzxw zVTNsz@B)&GMs$7_Lxcn(380+5fCl9pj{NW@yzw{wf`p%@lmc#b0h7-@ET^9S0jBo; zkQOJ7qBwn;1`3tp+3p2u%k5BFJ}zS3Q=x>6l21KK!>sI`Wc=D9zRa-;kFm@KGcg zja;Q^Jri_~8=@jVg-B*@TZRUWo(x`}baOKp0Um{BRixbZB|J#R;OX=t_ZY}?)#v6s z@KGe9Nd3%Tfp`)qOG4QNrnJZ->j2$pCA-f%VN_<8@k|1PTtbAAbWI@TzT?(p({<%N zzxD@s=>GfAs3#f++@#$!W|tzavA8Is%b{qr6>spR3qn*90QsrD`MPAM%L32M37jmw zG$d6>5jJ!)xuu6;EXQQlQ7QQMZ%Lz&CXD6?T@D!wVTw-OY0`;O+mC<8{%Ya_viS@+ z3%~GE7$&u5D#J|im=|dgt8Fl&C&*YqQOwMi5cS1tO7+J2dm__<4T6$JUfe7clc8EO zzX+U12OyH++TgGLgML!;{qh7`Bj0ht{7zBKKT-Pi6MwaCd=7!2_7S87O)D>oMtK6p z+%Dw-$bxIX&;;lYa^wuWyAK<#e-~}I{#|G^YN*VeM5FG8Uv5n_EEbg-u0@d4X0RYd zPd{Nwm<4dWs4gg^EtYsHI@_tqPSQV5Byh!*uW2H#nT2tD_zO2<-Kw1!=v{;1z74qk z)wiIxdsu%arWze}x{w$J3j>EKizCA#5walw&cK9JKAHL)@Lf`+kRZvzI-n+aspagP zg{EgRLN4J>l$y{eAQPkMIFQTxslkwl$ZTY$=z>uqLFOrZhXSMiC#CXi6w-K2ovvnK zic$yxFx9Ung{PIc0xlSs@YH@49;D}Lw+@rMVkBnVCP63)Lb0y2=S*9o4P*(!If-sZ zWrva^?!q7R8F6Kfi9z)45ia1?5j1t1C)K9yufe;1aSy)o`M*lK{JjytuLJmNr-Nu~ zr+LF$#vJ+DK~Ak!+bbZg2uYP(iK&XD=jJ>dUlcf3dvQprCrxr=H>2&n46AYs8LmkB z)~#s_WC?v~LXtb2U-x(UIK4Jr=MV{b*sB7;Xo1p(RlPT`L6H&+)b;_A!Hm~O$* z(HvM*IOco02t=)lg0bu@Fl`L#DxT|mCmMXl!Wt6kR3Vu5-Xr64#tGbOk&-k77H|#0 zh&~QHl|f--3pmx#@FX%Rir5jE^{PlT#f;j5G*fcn=OkmKNg!Afz^oS%y8w`;geaRC zgiqmub$E1j%k%l<^nRS2R;2d8W1qzp>#oJRkzIJxtKWmc!fK^3^lL@>A}w7lCQRvG zE?smKu22TJ+8u*4f}pUs%~z;M?V7!=>{-9=K{h*)*%dJ83uA3Sw}^^o|I^K zYCmwjO-4%XN!lI6VYchy52)9*VX&)5(F5V&N5o!NDBB}F|4{809d$8dREY3R zW)V6w2+2`ysJcT?@RmjzS4N2`6c5BwhNfsPAw_(&2-LK}EdU@LI@3qU-dqG3QD-KX z>-ZEuc=AykJoza8QZL*n zTmUc!a5ZU>LqT0jx?$>28SY9gbWoPO&|(IXGAfbP`C%zUQ`jKQ`!uQJER@_oath0!*hczbs?36_gF!Oo7UBtjI0REJ)U6d$uyWeJ-K3>&){M)OSOI4HvjAG$Jwk-TBgEa=jl z6{b(9P4_I|WGPDIS8TZzZ+*)bgI+gJDkYGNrq3f6b22XEOgD#f9kuWj;AB)0K9vKw zqth;wkhj+9Fd<^rEfm(S;?dUy19fnJE7FRSR1%Syl6SrY!I|VnVUbze<-rrm;kzLf z!Ff`f)$(uw5J>M+nymcSbwc9vBRgo~ALs(|sqlUH5n%j1Qqq2jHId5LvGW9Q|7oD6 z(>Ua)_jW@LxOFf#Uc;E3Mk2ISJ9BCRH@$Yvc^~R+Yp=oT;q6GLbGZJs??tXKsM1SJ z?Hj>JSyFL5Pm4=c)6wHtg#JD-he7C7no>s+1gVsR@Kd~gw4$da3#l5Jg)yapm_G+B zx(|uM(L#VfCk!zq0-DzNWDc?<#CozQ95dwic!33`$??akg{B`>K{sdnBNCWCZmLG6 z`s8@v2ogkJM#I0EI`nO`RAav;b)Dw%Bfe;1+932;L?fj{t+aqzaS=|i_>k~~Xi~NM znS=7&S$zA`e~eT6A4@z>oF&qP5eLn;uXQ>mEiIzJWLe9?cBJL%E*4zAbR)i!wnp5O>5?6ANko`$h$hkkfNXX!k_ICqJxM%V zc@kG7l*%hY%5)o~wCwj|oK);3@=cZR~v%W;KRKSL4j&#CaX+L#KX>L#KWW0Qk!FoODHsk2B4c$R<4-b3E7A+5g&1+$e$wH35Fr^x2`Xxo+FV$_ z1QW`IL>I<MMx>pa^i$OSIhI~u=hLn;mq*^7=P}Gmgh+;;u?ud;QKR#+pf&CQ^DcR=V~as z5_@L_9y{Y+u!w3)55taLj&)i-o@7+oyv8((^K=;vACx##Nq)18lrJQ6)OqJP08azC z9z{-0Hmv=;Vv#g{770W}Z6y5(JyLD^Dq^ieK?+N!LZRn@<&2b`r)RJUZKPUtwHSe` zh}f^UIpN|N6;~beavex%wHHHZ8sU4z!Z07){eajgM;gl z$#&zKYu=0Q{$Y5UWIa!j5$B}kQT2ro>Z1{O~u6mv*n^cEUTl)m%6j$R8Z{LfF zgFnI4;k`?q7fzdKYqxpBjbjeB^|C~=I#ZQ+;;f6u&Yb@Mr%eThSM@8BDx?T$riKBI z)-GQN1n~=(O;p*$(i(F4XQrWIx0U=1}Da*!qGrxW% zq~VsO>PBk8s|mnQlj@!-xShjAF9A z*a0MlP%L8lcWHJJeoc)02ud|lGv;XW5K;Ghe?Kr5s4U@Ia%qwao5m?rK$2W;!oqI8J>M$mre-duJ*6C^R-By>r%}p20{xHvUctPOK=W2Ll z%Egb*gRBNKgv~t+ukPn^FiXgAqT9}gq%OsJ6~bb6)Tvp|7=q#4tygYUFZn=^UXjD# zu;r>1r4!{6(HL4pV6CPO8!~dRSU?hU;HIQ86EG}u$hdatG@zqXkiJb5n0AsNAfEx; zDsXxM80rBExoAs(aeXvqP#Gl5f?=Zg$$}A(>E1L-sUDu5besKWL|*>T%6y@axa*%i z`9E;o*55&YZXIse`Ue1jVr?4FoVpu})zcWCeGJ9g)QS&%wN}K@a2?{ZfeD$9%U8-@sQrf$P*T zCmEU{brb+7Z%J8)6tsHNK-_XozSL%we+3u4RMJ|FET@}7Mqb{d~t*ns1@f?E0-cC%i_67?ETKYD9xV1^wIs8 z9Y4B~!~J&v{>W*OCcMGC;i@5yU*D0I|K;&2emL#Y_fN0PXtdiQ>>lLU)z2}MA>4Ll zT8?!w;F7I4bx2IQNG%I113L3JY9 zkZn?ftwNJlX~b5&Yeo%FiZJSu6f58x+optcq+f%g77pI#;@ccd*_&6>a!vA8C@!AG(Stt6b zGwiw4wM*USX(A2#)%?dWU7rx1i)wKmGvi0F_dEBYUM*o^dK}Y7_Mx&cd%lPCuK|1n z!09C7`b_{E%^Ti4>fpB@so?)R-k{}PS9bSuyuOEHIK%M%H7OKQB*(H0DGm=+3E7Z@ z3~@@S-V2H?=_HzG4!vYF=TA^}0a??^4*`%co2c|Du6@y_DniViGtq`g3s* zQVcRp5_!htU{2!DoM@_2ah^t3_pl|Xm5Mgn)w9g|Swd7nE$Uv>LiE96X-3&TH5sYl zC$&{1IKN8(8wY^B=YZpj%GG^iZ_N1IR0Fc;eUmj{ysm0mfEpYr8tONt)#5*g76X=K zjJz~ykFH&Zu0jt=iwn{8UVU0k4B!aNAxQw9(ZJK2U5htw{r%vAx==rZy{Ep6V(kp3 z7xv>^@!*A9Z%Tog>EoE0J|4OKk#GKuS|E1yqGw`^H<4a24>hU*2jBq2ReFbO$a{{`<`U)Rg^ zvv~T{-Dr3fELKlrYW^7%tCKI;DVfO^(A7JP?!IAk_pd^>t5-|Y0Vkcs?zi3o&QnNb zb8s?Q^?5lDqm;l29)WD1e3c&yMH7JyZ_E>oU>H$q^$hdVg`5RV`Cu%F>Y35ALb|2} z?Lse&J~q*)p z;=wZsmR7?fJ8WvOMg4F|l51Df>Lh}TyO1QL7Mn(4QNpxY**vv4Vzd!=Voyq2Qk1uQ zGr;;j;P5%%90ApHz|KLPR-|TYC<);30x&C7Ulc)+7P#(j^3OM4jvtfgBcA!7uns5z zY`S7c6LHOyj-uK)hg@n9kQ`h`DUu10_Fr_Qx_Aoan~W%8bxEx)6Ctki3j z+%tIQ*xhhN6~*c#rswxzp?va1IsIzoMbyfRm^pnU@%~4@{+Ted$~iK*0y14a$m9#i zbQO@v_o&~wuAm7r*vF*E?^Qqj9x$#aAqTx!#t1|mMoay}w1QBOfB>-XyZ;EUUJI*I zER=_OjXLU;5~`&I)QStJF3zF6a1OQN0vff-i~3dW-mnYB<1H1Ze+%HlCTS%R*Kagg zhQ35NUJ*E65rO;Le|w>d>-rq*?%^0r5pG+b!AORp4YK}|U0tkXQZ;ls$_YTG0dm8k zl`7Ro5jSudS@MNn(i2sI&z!8|L`C3<1s4ZOFYaK;p5E0q+FEJ4u+!(5Y+@Mmwp1UQ z!VPLu2Q$3=q|x6KC$z-+T8sB+E}}-efKnYeUIG>yKt%wr8&1!_~g;g3e`_ zaueE4L895aiDP_CYN$xdP6 zd8icUP$|wW>v@mF?PA^ zfVU1h*wxL^=MX-$K7)~Ti>n67h|H8s!HjN3B!Bjf{^E?+1nxXp$CP^v*mqQ=8;g}m%oUGdzIZ&W>sVZzwCdm*bZ^{+O#c{0-~1k= z2Ulb9$WxfO|8sJ7{|{Py)BhU4M*$>uw3`vv@9A^)d{G84ttWCZ?Y=RjVx9|&@1Aq< z-E&Ie_{rln+%)81OOE41>(f}5Wzqbe*?CS{DMO*ub*c{cjuTa9wjuHKqKAiO-An7> zX9};pR3KfX?a3u1@U5b%q*SGh5>LcwLKt%Pq~{qPl1q&^ZyLEyQ3IHK3fR~O%$xyA z1S~XwhbDn52Y~f?peTT+D?pV4LJKf_b7N&Z8(t8)0Sq~9b{{o6N%)^@blo}(jf~># zRJ8t7bBk!z3(a&tfdhZUeHd*8-Mvyt%flHZDo5!_(i3K+9+npFNTDs1xBzlaFVapA zuHEr_AV`%?BY-i9Qtce}9lZyxSA~!sYV|oRlun{p8b`Tu1{R%1QrW?^$c}74sxScN zq%rcATafOJipmy`JdN@DKPTr}lh%g;-0ll8+7Z__9clSZSu^_Yuj}0689ixhN_!aI zug|?MV{n6~M@Vi4P}7wo|26Ue`T%SP@NVtOaY40#bFRccOsay_-<+)B=SNdmondm% zx{S9fP0|>`4oGFGIa!6g<79E{4o^s$BWNhi~B+j<$!g0 z;DsvSk|MBY=hc^aQ37)Wh^(q<8OH8G(CAx&^#LgGW;LcXEU(Pk9uPGY-ne~76LBq6 zCIV?AA!=aFw41Sj0QW}~XjK#E!XH4QW!<3!8w7BnZI=AJrl%LAOb=_+a&iHwYaq(? z+|fN(LI`wahVX{%zo~4V45xX)RPCth&ZB`U4j#S_p4WgN5B1t2%9SZpDrZow%%E1C zyZqb^mYdYz4pM~yWCvCwGq@T~z5q&R!I+asP)OJ##pC-hasOxAk=FmENvmyRpRWGk zwK^(#5WxQn;2B*BV)_DWb{YR@iO<(=iSjJ~AJ^N>1Nb)pRs$$#LcAWpuJa|eIalJY zQ)=ML-bK%ORX4|n)}`fWMt!@c8j|ifQKh{_fv-+AF66O2tM}mv9dUjcz&L>7GPZF~ z(v7buDLl0~^H&;aU5HwlY+=|-k?qV3#Xu0ip7X3Aq7eRwhjRE zXMi($c9`n`FL(fT>FK&!HOMt%kueO@^VBvrI6x}4STGHGCB>ZS4G%pcVExu@c>KYr zK;um5fR3!BGP8w*CrJvj~~RuKYtc&(u05232FJn zHLQu_{hD;d1-xvug3uT9Zzk#NLGmu6BxOvi zkC@<^1ZDp3Z-*H}BZJ4mF!E*1sY3t%lml!U1S%Dvm{P=r9N=mXMCs`fE5-z8kp`$9 zZflzp{Y?dJZ%PNNme|(2z zKFJ^;Ge5WL>EVj1e~Q3_8kxX-F$WQtZhTJp*;@$+VtOoxgs1x{r4(?81@rV&6R(VB zcU>*|Qcr?Mq*IPSj(0&I56KC;ci*P#kqm+fNZkh^f^&w#g$WN2x`(>*N|XW~^B{zP z)M-sAU3faZ=}7^}q3VME3^EWHCkRFmoPjwUf;h+_$aET%PJyM;klX>|PON4bn|Gwe zGrnkEa)R(Yc=ak|qq=OL^3tgT82_ig!OS!Nit{BcpSUIfd`Sz!aS6n`LZ{U3GP586 zep{2*S{<3KUCu@imjym?qIN#^v(IRvngno%j-)OIHpFijTfP026>Z5Cr1maGT?}oS zms^QDWOEcGO|L>Ud;LkooZ(~BV}p5T)J&SewhdBS)dkGv)r!hZDS~2}v>X;X)(0QU zQx{L}0lfgmSOWGxeT?Klm}&vrI*M9t8^!27>U^fJ;vb)!QXh^a)5fEDga3_n515r2q{4x!K;)Y z8evo@JN&K{k35Zu2fl!rXTHA_X-zKYYsp$@g)Vh$0PsNoYXDrWBeM&MM*%#og(hta zg%=PxEpCb6`s;7S&F}rGuw12H0v zkMOvREYvYGHHG(G^E#ZJZ2y(HV)!NucW=kl>wg*DnGqd1sIFsan7GQoh*1WUBbCpf zRuyVHroi`8sEfMvT|HuHTEC7J4&anwBe2Rx!t;klY7%3R@JNQu!a5R@Iu$6Hgw*D_ zDut**JIPe-ju@$$8TFL`P9Dk{-bRd};1PKr%r||vg#yY{(-zs_|2(FZq&<40} zTG##bc`ArO>H(#K32hB#j4F?qTOthm1IsfB;nv{kMr6bmTkXaO&Fy~(QxD$TPV)X? z0H0nCY55V?<*Efe4&YCW|2Jz_`_}^a=@o461b_#01o~nTRUD&9H)e8!mb6y-xbsaP zA|#rYbGnkuXDQmW8z)jq5LZYURVI=-4cT;yVF}WCpS1L_$uy~yM4bb3Iwjcfd;`|d zNh64Cbn0*e)VP#*_Eg5a9jQfBN&p5&MliO1{gT9W@XP}^c;*58==f)_ebw7Bkl&1} z)_nkl?1*L|wPi*eLXXpsLKUrik|Cj2-b_j4)!(YMh3QfE(fzBUA0}mBTFj-2Onm1F zWninw(1Qfi?(v){1)~c3v^lSkfqGG;beTc448qgHC_&)5Fz9(YV$?fNN}Wpd303NG z+dN!cFrrXNBNWMT7WTH0)HOq<1S?ol={5Sb!ict+oxzFYVTO$m7Q zN*HO;65lVq3AcC-lMmj9#lufx{?OyCPJxduH_|eR>*azY0DfQpeIsm|)S-Vn93u+!S3v~KYr$Pv0u8Pn;(Er^<+>(A4{$iJo?>2!via|%K4gjsHP&w4 zf@gpHXh(;~6AkR2{00EvhsW;3)}go3aQ8M`weD6F(yM|&i&9E(hbiI^2*z;u`;I;WCfcN0^+ z7@nud%atMDasXahkr#0#gCFEEhcxP}92v2?l8{3qqbsU5dZLa4)A!@R^!<4F$S1LJ z;5v*JcH#Bwe+j+Wb<*=B$PZWyVF(l9+;gTQE=@VgY*zPuF-8zVrSKpnm@moKImE!z zks);XfB+{3q5TxKPEfhTYm;0xTT!bRb;P4;WL%M-t5SRpL8TNm2{HhZGms>>{`sNv zn4Ydp5@R3_!GveYwHrK>;GC)G2!If(u0^h{gL%3s+f(7I=jv3f7m~fyZvB4bEp$}J ziQrZ%fUG5!o&5veSU88Nhwek8G>6K>VJsYe(tkuN(mD*_?v+MbFL&bdQPT4Me*p07 z0It(f)~9qYTH_LXzfHo7zP=IUyGLK<9U|wMCOn_WE2$RNN_c@5VhqzXx5ayx6ppZI zx(|jyFU5oxezd0}D&jG51_#KAjTkXhj2Ug;^a2Aio>CW*(ZuEHG$HeVRcWA`lC3@C z%WZRZpltrU)JmYCSK4ptG@XBJ<`Ep5c?3T?{@>A+9-<8cZ$eLYHLhNJD|+*5q^@E4 zLx)uw6rr;Q15=))zDiSdcL9)a4N0b_qb;AvJV}AehyURiNV%>vfOK(C=$)aWHm&R= zHIpiE@*oMx{XR04=2SBsRo#mO1*1*?G9q$mt$C8-5n=zV$1w>aP!uU5MI-u*}u~Mb9=Nh_&vHE zXW8gV4`FTJ)#%Hu!Ry!ED!bBSpma(S1CxGD2QuuX6RQ5@Uz~;Mi3mj;ofstY*lRDz@cY})R2tuhG8H12sU=qwo)!#g(AFbU&Bov8|FW?{*MG1rp8IMsA zU3y$9^h6yoPPK|xV18B zbJL=D^eI-Kn_lU+`Cd(0|9T-V4X>o(?=@Y|@-9)*D#S?(0Qv_u*qYW#Trie;F12V1 zjx`gvd~Cbg8?}hi5<(fXe@n`!A#Oy$=&K2Rp@tJ3a@e%Z*voHWKuG|Lu18o=9^l}@Rj z#ewPj0RWF4{~Q6ps_yMH(zgrQ%m5so!)rHxK;$!nOn@LA3GQpSIfCiIq$3{?17{LK z82xoxpdgH4ks_FpMWLIVWLlc9YGShO zh&3L48MjL`M`%GhFdl7@G4G2TZ%0O_E=!p}UJ}?uz&uwoykN+QiGUst7)YxcOefrI z24V3ch%cYtymMy~aa|Mpf5K1)Z!t*hEh{-?ri%wKT|5x{|HFfyWZk(@4EOIsZ`WFI zp2KT4yni5=9%}_7Q>_4`qaw~2T$1|q(9O@pf(B`(Qo zT0VzUKfV`ky(HaQnM!AlVsZRAxRr&Ak%c=3;O{Pm@Xdk6rGnd%ZnVOT^CUZJBg|N; zw+pc}V!PBOwIMB9f^bcth7n!)ge8rBui$q7no3QE2LXB20L%iImB4~lSbGRngq}fg zBOK^z)0abujMd_Qebc%vTk*s1d^>*Em?o$smzfu|**A3dVUJb_zfJczt_a1-B#M<# z2k^x6cMYy z=ax~g&cgMoIQGm}&~Ph|q9N$@PvREX_GEWNON>Alo_dDEA zv|cM(bYk@yy%R+Ax@xotqDBi=52CZe>Vm8;h#I{lL}y8~=ymnpd++Ss@4bJm9nkTA z5!P#$-1krYY!hkj9avToTfPju;ixHgj$a(w!!Y%#(W-+u6HU(2eb^+b3m8}%4)QC! z$k7VFG*?G%Gh+IvH{%5wWXiR$R{!r8oq7ap+#g#zORC8sT4Au+s7C3= zT8uN-T6GQW)u*y#PT^)f6MOjR1sqbFOnsXIVeM$)M`(bi*I^)48U;>60v2T_1^j(% zjPl&+w@E1pf_0YSCcKh(dDzRrL;06=-}x%sGiK=wM7`OWt02Zx-|zYn?tmq z-so-0766|hEfMmq^PRTZG#1WnZBpx#_oMh*4s5o9>0gR|0`!2z>Z0|%D+n*3j|F$> zX*_YH6W&bcsrnjyCenI$z3+Ok=W7v@>HAoF;k~hv?ghZ7S&i4^M2?szaKEI3WD(e1cC9V(u5)j*=ed3_1T=}(C;XZO z_GF_PVVb13Z~#!?B~j^6MyHhmAlbSFsSs>kLFmkt=)@EDu#caw-h>22#rn#HV`Azx zO1~m&V6J#LFjiYMp>Mku>Mr=5%G2jM zPp-kIT4SpO)&NBIC;ct#g~Quj9}hm>%cV5%6N)%2R<*3sh?o!M#cJ7E)h< zeqh?UF(FWzUV#ea+MeUaM>j<}+y0Ur9uG9C+JpSr%6DnO<=ml;CYMl`$X6@DSdQsl zznJYmIJHD84Px_}Fmvii>0v|Dbi$JMTCbo^|G9fJXF2?!R^z3x^@N&~Xxg!l8o~;T z(_cif($xlx48w_%>y@!BkWpDw+h+(-X?Gg$SBk9}6=+)3q{!>A?ymNyi!U732;Usodc3*`&uL0z zxO=?H`1Qe3H;|(LVUN4;?M)*gAbNyX@wQv{IeM>9)p<1 zZd!xY+2g|Gp_TT!Zmx=AQlB=?{`z|3h;`;3M86NS-#*#g)q7XQSBknQe|lJ;3S@<8 zWZNUoc8m2l9o$`jl_s#gsbyb6+)*eAf0)~fFQF z1TWmiXNnRVOj#e%chi?OsL)p>0wwfp86P{SPtCAAFF+#;bD?N@!N&zNx1U^nV{~TH zSmHY(RL@5zm)3+L-bf^e!_`aX>IxgOWdv9h!CcH7^#jVlx)Q^_PbKOzn)XR@m7ANc zHzN!IkJgOJt+NGe*K*~F)194UNZZe}t1s_6n^VN5HZ&P?1PQCcb&I}IZZsa z5v8O@qR6&H*~hA-_@(3;i{Sq-$2hf3V+eg*v@EBe`y8%Q@E5nYa6;RVhO=Pus8-CP z)o6-?G-QUXE2ub9PMZpdx6*MTm82eX92Q}mum0<7OQ+(k4zED3l>=$l7~Rm2=1987 z8fVI;uIt2z{X_wW)W-#EnmC%>IPQNNzNPvg-3opMTw(>Eg6>80#k8DP5jW``d}{HL z2zs1Yk8?sID>s{Giq`qtj0|8yZQ`eaft=?T`6I}P#}!NT*SxYH5qdkd>sn7?Z8G8| zNt$-Tf5j~%@Es@0isMLFxpq%~RVF3qp5xrO%(}CYMLJfrJ~1*{ZMsj;S!x2A4sZMZ zF{a=XGJgDM!Jq%ObU_TyO&;PG?#_X?l55P9uUiG@p()qn$~7`a+~2<&7*%}vq6m{UYDg7~=$y;a$;I4ESC!{Aux5~+v94~{=uXgsCBmP zM3^B!purytm$I}*a>QH3eBfd;9rpT{jFrT#tPf%16GlP;P6)84#1|6NN1X@~j-S|CM zqbF~0+&`|8bfcyD%nl1n zs?>S|A&o#n-S$Xa=*{!7(T`?I?l#0>&x0|O_3-dtyzo5cknK>sTA+Nzr?(>#4(@S# zkX&STZMeyzGHGX6Xl)e{7iJlsak@_;OK?lc4$V8BeYr5QTZ!dQU2Wt5?p-bHI5Q?I zHz3t|x^&+uL_k=nWjf8SY);RB=pBbWD>mqNYsCgddx!_@zoU~pX$e@JIa)*DYmW}h z*XA_&_a$mwF{hfq0+3XvH$pZ)G0|1w0W?D|rmJt3xK7>as`a0K`_b{{owydd+67D7 zuEVEvMv|n4fk$|L<^kIpg^GR5>PdY?>rT;Mk6aO% zFJphjchAnmeNpvHG=vkBAi=BqvozmJYM)8`qYmyc#D4mV22^&lJ4)J{+?%d^p@rJD zc_Yy0N&xlrh@MK$(6HX-8@@A(06>H_fx#qIT=w+!rQUnX=av09jM&FLn}kQcNayQ6 zOHHlgnCyWV$`!iGt>#^54Lk|$X@iZA_tc<9*2LY>J*^x?`a4wkHFqn*l3`B z8IK#JT?$pOe6FYEy+>y^7V$2+c6HcJ2x!UITLQo11UaN9>T99IYmn;HqecdBiui{? z>rmzyG91yV5e+^mY&g6fyM~IGJ6kGb^<<3-m5MWBWU6HCPI`uu-E(d&8(wVj?JUpx zJ)r$;i!sslx`ftNTbmJ&%hoVg=k<>lB7wX5yWUG@9z%~DjPbJ05ndzJ)#xlt$l<1H zA(V~(LQhpq!Ke5oM4xwXZ8`DB$w>YZBILRD%ES((;0sAF%OxA61OcIW99pabJuIii zWBl#IS*X(o!F12nn*oDeQeILuHf3d1Cc*Ds+=+EeQYj?K=|@PRydOU5qe6!-e^C60 z>*bEBO_|ALG9jHJv%}3#XlX)Ls9ZH&P_?cMzP=h}l!#o7BBw$P)vu(eb85$0-=6g7 zWT%N&o!JI`zz)8oWn=}^u6Y^uSv<6&SXEv+sm4{li@0fg=V~)({2SHRv!+tCWKP8E z^cPKyU|ef_a1A&~qcf?K|NGjzaAH@CSqClK^|k!`U7hyYNR6Gl-!7H<2LAH_W6^Uk z!Fl`BbWd6FVN2u}>0Vov+4VXJshHv}kGa>}E)-mrQGOK0^Vrr^88%&U#!1>DzWFY; zi>{A3FY+oqc?)~3$kQZdUaEoA)pS9#l3n=JY*n9*8SUD-&>CkXehSnI*vrw$$^3Jl z8=7|C@#h%AW2i+`Zp?OdzZ20ankhEb?lruyzh`k9AU4Hv5)8bqy8QYceH)DRya1RV zpy2(VR#vJ&5B)lds)?VISPR3p8pS{D0uE7&sqRNeSwh2?XW7Ky@G8aNC4QT+hw0xp z255;OzO+VM4s3&6t9-bGe5yQsNh$Rt*2iI-{AvmE;N4-$cWI$4gSgywByg@?!O6&- zX_>ECg?LzGG()zT4>Rnx4bMVqY?VTO4IlL2UoD2-?$d#^>3Y_Q8NkjTKKMQn6ON8E zbfVOjJ{2T4SE{?c0=P)W2l=9HC6EA_)?UprRBY;DcFO{~Cx#GDP54?`_mrsRm^|Qw z@exQYdpk&h&*S&hq#Ckq?74xo>hHd?st$e`dHrt)IJGh}j%Ue+CusbtuxDdWm5Fun zgNeJI2brE97rnDBS$ARqp~64v;lA!Mm=xGJ3v7bjS8WTn&kD+4WBpCH8XYf)0fptO zxGh&U>tyEibfWj&=lD)zYA8}jb<~rA@yRjv+_>$3JKX)9y;6?p0jE9?T^MzP4xbUA zt*&AEAYjh*JnGAjE7W@|u69Qu@oL(c0l~`oOLx!SQP%Il1k%Xc_;S%!m0S)?(~&?7l*)br?~81(kcvr}c@xNI2VeQI21V5y$tGhYGeI$>6g07@Ne5yEbPY0CSw>v{n%#Paw~bkAqvjnz7_> z^U3Mfy<7c4gYL$gU)K|6!I3HqcOQCaY0WM^ppTqpW`N|AGt#TXV23?jklLrPq{Bc) zuY9npmO`!0k8mn)2u1`kQ%$J)W#pF-YtKXLPuIm#>#3<*tQO;W&UPcLT85STgteM% zOyTZ>?2FZCDf@H)_T?MDxX?Hv=RQ0op4*6}8U~K5zgo8Xp z@hdMVB>key0P@!dB4mzad7h_^DI6+6XNxWWs63&Gk+IW}_E{%GDNTvR9VqX(W&_qB z8N&kPuTNMut7`sRw=bi(OJ?ucSkw;6qjwMm&`tKkB%p)REmo*ns*ZVn!Bqft*=VA$GD4YEow>@pXQgF94+gEueUQL`e`PBG|ixs!VFsNM&YDEY7|^7% zDF+n%FjJXgBukSFz`c`sP}^@^gI9=|Oj>IaVfs8nAThp;)bjz1YEyCl^R5^wfyX*y zs&FkqDIZa=%HroN!~H~Q7~d{achBqUFfT_A$4@m+9J=0k)hdOB+b2o=;9zTsE4s;+A~T;s`W9P~{=9**@zC-kykO?0S@R?dfPoS(OcfFr)~V z@d0fGYP>NmN1g{14J{azu36cZ1>l(#b@^&$#cMyz_5G4JC7e zVgox{#b+n;i*tQmJjF>ILbBdeG59JvWka*SR#;TLU~#mg%?D4Pi8+UlPr}UnFVW78 ze9k6Q&ByDm)&~{A7?BwysH32JwrLD=UuG9(N2g$rf{TFfYG!L1nsfWegdx zk%EX0zqS?Xac;$rBB>vqmbnmr(-?Z(k|DjDYCkdMy`e?Wvinw8QkZ+(%(upI*!5Lo zVi*DX`7C+fa>ry2ZR@41`n5h;lv`P92G+4SbZP9tnCBG_A1^xo^!M&|5>Vu+J1c-f z#tH0!0siMlw18N?E#;pxmQKbfkLgBhV(eRQ4($qOFUvf(zhr=alWN{eZFBVXx=M|H zG+RS5u*SwMfh+4ble$pU+H!$qg(2Rxc2xyu~8N>y{nX}&eOM=yhCTt&xf)Y?XC&aKj6di!I)!PcaA9cnrB|6*$! zHN%D(PpL;K8=L`)MFLJ5R!-}DRMd?O&6V?^m6dgUi6BhwLau%P$4~l>cJ7z^|K1T4~e;1%||XUffs$~ zvmg88f3uAE1MVFnO62j;7_VZwX8nzakd$mRs$lSUlzV?O&&h48tbftXJCx;5^Mga+ zcGZUzLCOcq9(kgVeN6o@S1QU+pa(FZ)-|m%-#5*TI4 z1VRk+UM$l~%5dVEGDtpBl2aa&YHu9Zul-Wn zhPAvjw_tB+=`Pa%MD$!JE1N@eC;{^o6jqrQPxNYic51K@!I*A1P!5xClxT97Tg@H> z1QJ{Iv$YI0S3}im;dy;#fkt4^jXc=aJL0u>@z4gDUDP!hh?OUQ%fWQ}5m$=_JAe1? z&9GIOts$xsaGlds+}3f(9Yd5b`Z*p|obTU^`@6cjfwLFbpo}bP11=k;&MiAxT0&z- zGePJH^Q2+w<}>HAv_1qURUeSMKio|2kInI#9%Q XG^bm^yYhzs^iWgQQmRyV|M`CaiG_qY literal 0 HcmV?d00001