aboutsummaryrefslogtreecommitdiff
path: root/src/rollback.cpp
blob: 3cd9c7ce7c63c2e4ca748480dc7a2191924a1d99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
/*
Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

#include "rollback.h"
#include <fstream>
#include <list>
#include <sstream>
#include "log.h"
#include "mapnode.h"
#include "gamedef.h"
#include "nodedef.h"
#include "util/serialize.h"
#include "util/string.h"
#include "util/numeric.h"
#include "inventorymanager.h" // deserializing InventoryLocations
#include "sqlite3.h"
#include "filesys.h"

#define POINTS_PER_NODE (16.0)

#define SQLRES(f, good) \
	if ((f) != (good)) {\
		throw FileNotGoodException(std::string("RollbackManager: " \
			"SQLite3 error (" __FILE__ ":" TOSTRING(__LINE__) \
			"): ") + sqlite3_errmsg(db)); \
	}
#define SQLOK(f) SQLRES(f, SQLITE_OK)

#define SQLOK_ERRSTREAM(s, m)                             \
	if ((s) != SQLITE_OK) {                               \
		errorstream << "RollbackManager: " << (m) << ": " \
			<< sqlite3_errmsg(db) << std::endl;           \
	}

#define FINALIZE_STATEMENT(statement) \
	SQLOK_ERRSTREAM(sqlite3_finalize(statement), "Failed to finalize " #statement)

class ItemStackRow : public ItemStack {
public:
	ItemStackRow & operator = (const ItemStack & other)
	{
		*static_cast<ItemStack *>(this) = other;
		return *this;
	}

	int id;
};

struct ActionRow {
	int          id;
	int          actor;
	time_t       timestamp;
	int          type;
	std::string  location, list;
	int          index, add;
	ItemStackRow stack;
	int          nodeMeta;
	int          x, y, z;
	int          oldNode;
	int          oldParam1, oldParam2;
	std::string  oldMeta;
	int          newNode;
	int          newParam1, newParam2;
	std::string  newMeta;
	int          guessed;
};


struct Entity {
	int         id;
	std::string name;
};



RollbackManager::RollbackManager(const std::string & world_path,
		IGameDef * gamedef_) :
	gamedef(gamedef_)
{
	verbosestream << "RollbackManager::RollbackManager(" << world_path
		<< ")" << std::endl;

	std::string txt_filename = world_path + DIR_DELIM "rollback.txt";
	std::string migrating_flag = txt_filename + ".migrating";
	database_path = world_path + DIR_DELIM "rollback.sqlite";

	bool created = initDatabase();

	if (fs::PathExists(txt_filename) && (created ||
			fs::PathExists(migrating_flag))) {
		std::ofstream of(migrating_flag.c_str());
		of.close();
		migrate(txt_filename);
		fs::DeleteSingleFileOrEmptyDirectory(migrating_flag);
	}
}


RollbackManager::~RollbackManager()
{
	flush();

	FINALIZE_STATEMENT(stmt_insert);
	FINALIZE_STATEMENT(stmt_replace);
	FINALIZE_STATEMENT(stmt_select);
	FINALIZE_STATEMENT(stmt_select_range);
	FINALIZE_STATEMENT(stmt_select_withActor);
	FINALIZE_STATEMENT(stmt_knownActor_select);
	FINALIZE_STATEMENT(stmt_knownActor_insert);
	FINALIZE_STATEMENT(stmt_knownNode_select);
	FINALIZE_STATEMENT(stmt_knownNode_insert);

	SQLOK_ERRSTREAM(sqlite3_close(db), "Could not close db");
}


void RollbackManager::registerNewActor(const int id, const std::string &name)
{
	Entity actor = {id, name};
	knownActors.push_back(actor);
}


void RollbackManager::registerNewNode(const int id, const std::string &name)
{
	Entity node = {id, name};
	knownNodes.push_back(node);
}


int RollbackManager::getActorId(const std::string &name)
{
	for (std::vector<Entity>::const_iterator iter = knownActors.begin();
			iter != knownActors.end(); ++iter) {
		if (iter->name == name) {
			return iter->id;
		}
	}

	SQLOK(sqlite3_bind_text(stmt_knownActor_insert, 1, name.c_str(), name.size(), NULL));
	SQLRES(sqlite3_step(stmt_knownActor_insert), SQLITE_DONE);
	SQLOK(sqlite3_reset(stmt_knownActor_insert));

	int id = sqlite3_last_insert_rowid(db);
	registerNewActor(id, name);

	return id;
}


int RollbackManager::getNodeId(const std::string &name)
{
	for (std::vector<Entity>::const_iterator iter = knownNodes.begin();
			iter != knownNodes.end(); ++iter) {
		if (iter->name == name) {
			return iter->id;
		}
	}

	SQLOK(sqlite3_bind_text(stmt_knownNode_insert, 1, name.c_str(), name.size(), NULL));
	SQLRES(sqlite3_step(stmt_knownNode_insert), SQLITE_DONE);
	SQLOK(sqlite3_reset(stmt_knownNode_insert));

	int id = sqlite3_last_insert_rowid(db);
	registerNewNode(id, name);

	return id;
}


const char * RollbackManager::getActorName(const int id)
{
	for (std::vector<Entity>::const_iterator iter = knownActors.begin();
			iter != knownActors.end(); ++iter) {
		if (iter->id == id) {
			return iter->name.c_str();
		}
	}

	return "";
}


const char * RollbackManager::getNodeName(const int id)
{
	for (std::vector<Entity>::const_iterator iter = knownNodes.begin();
			iter != knownNodes.end(); ++iter) {
		if (iter->id == id) {
			return iter->name.c_str();
		}
	}

	return "";
}


bool RollbackManager::createTables()
{
	SQLOK(sqlite3_exec(db,
		"CREATE TABLE IF NOT EXISTS `actor` (\n"
		"	`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
		"	`name` TEXT NOT NULL\n"
		");\n"
		"CREATE TABLE IF NOT EXISTS `node` (\n"
		"	`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"
		"	`name` TEXT NOT NULL\n"
		");\n"
		"CREATE TABLE IF NOT EXISTS `action` (\n"
		"	`id` INTEGER PRIMARY KEY AUTOINCREMENT,\n"
		"	`actor` INTEGER NOT NULL,\n"
		"	`timestamp` TIMESTAMP NOT NULL,\n"
		"	`type` INTEGER NOT NULL,\n"
		"	`list` TEXT,\n"
		"	`index` INTEGER,\n"
		"	`add` INTEGER,\n"
		"	`stackNode` INTEGER,\n"
		"	`stackQuantity` INTEGER,\n"
		"	`nodeMeta` INTEGER,\n"
		"	`x` INT,\n"
		"	`y` INT,\n"
		"	`z` INT,\n"
		"	`oldNode` INTEGER,\n"
		"	`oldParam1` INTEGER,\n"
		"	`oldParam2` INTEGER,\n"
		"	`oldMeta` TEXT,\n"
		"	`newNode` INTEGER,\n"
		"	`newParam1` INTEGER,\n"
		"	`newParam2` INTEGER,\n"
		"	`newMeta` TEXT,\n"
		"	`guessedActor` INTEGER,\n"
		"	FOREIGN KEY (`actor`) REFERENCES `actor`(`id`),\n"
		"	FOREIGN KEY (`stackNode`) REFERENCES `node`(`id`),\n"
		"	FOREIGN KEY (`oldNode`)   REFERENCES `node`(`id`),\n"
		"	FOREIGN KEY (`newNode`)   REFERENCES `node`(`id`)\n"
		");\n"
		"CREATE INDEX IF NOT EXISTS `actionIndex` ON `action`(`x`,`y`,`z`,`timestamp`,`actor`);\n",
		NULL, NULL, NULL));
	verbosestream << "SQL Rollback: SQLite3 database structure was created" << std::endl;

	return true;
}


bool RollbackManager::initDatabase()
{
	verbosestream << "RollbackManager: Database connection setup" << std::endl;

	bool needs_create = !fs::PathExists(database_path);
	SQLOK(sqlite3_open_v2(database_path.c_str(), &db,
			SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL));

	if (needs_create) {
		createTables();
	}

	SQLOK(sqlite3_prepare_v2(db,
		"INSERT INTO `action` (\n"
		"	`actor`, `timestamp`, `type`,\n"
		"	`list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodeMeta`,\n"
		"	`x`, `y`, `z`,\n"
		"	`oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
		"	`newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
		"	`guessedActor`\n"
		") VALUES (\n"
		"	?, ?, ?,\n"
		"	?, ?, ?, ?, ?, ?,\n"
		"	?, ?, ?,\n"
		"	?, ?, ?, ?,\n"
		"	?, ?, ?, ?,\n"
		"	?"
		");",
		-1, &stmt_insert, NULL));

	SQLOK(sqlite3_prepare_v2(db,
		"REPLACE INTO `action` (\n"
		"	`actor`, `timestamp`, `type`,\n"
		"	`list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodeMeta`,\n"
		"	`x`, `y`, `z`,\n"
		"	`oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
		"	`newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
		"	`guessedActor`, `id`\n"
		") VALUES (\n"
		"	?, ?, ?,\n"
		"	?, ?, ?, ?, ?, ?,\n"
		"	?, ?, ?,\n"
		"	?, ?, ?, ?,\n"
		"	?, ?, ?, ?,\n"
		"	?, ?\n"
		");",
		-1, &stmt_replace, NULL));

	SQLOK(sqlite3_prepare_v2(db,
		"SELECT\n"
		"	`actor`, `timestamp`, `type`,\n"
		"	`list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n"
		"	`x`, `y`, `z`,\n"
		"	`oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
		"	`newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
		"	`guessedActor`\n"
		" FROM `action`\n"
		" WHERE `timestamp` >= ?\n"
		" ORDER BY `timestamp` DESC, `id` DESC",
		-1, &stmt_select, NULL));

	SQLOK(sqlite3_prepare_v2(db,
		"SELECT\n"
		"	`actor`, `timestamp`, `type`,\n"
		"	`list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n"
		"	`x`, `y`, `z`,\n"
		"	`oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
		"	`newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
		"	`guessedActor`\n"
		"FROM `action`\n"
		"WHERE `timestamp` >= ?\n"
		"	AND `x` IS NOT NULL\n"
		"	AND `y` IS NOT NULL\n"
		"	AND `z` IS NOT NULL\n"
		"	AND `x` BETWEEN ? AND ?\n"
		"	AND `y` BETWEEN ? AND ?\n"
		"	AND `z` BETWEEN ? AND ?\n"
		"ORDER BY `timestamp` DESC, `id` DESC\n"
		"LIMIT 0,?",
		-1, &stmt_select_range, NULL));

	SQLOK(sqlite3_prepare_v2(db,
		"SELECT\n"
		"	`actor`, `timestamp`, `type`,\n"
		"	`list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n"
		"	`x`, `y`, `z`,\n"
		"	`oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
		"	`newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
		"	`guessedActor`\n"
		"FROM `action`\n"
		"WHERE `timestamp` >= ?\n"
		"	AND `actor` = ?\n"
		"ORDER BY `timestamp` DESC, `id` DESC\n",
		-1, &stmt_select_withActor, NULL));

	SQLOK(sqlite3_prepare_v2(db, "SELECT `id`, `name` FROM `actor`",
			-1, &stmt_knownActor_select, NULL));

	SQLOK(sqlite3_prepare_v2(db, "INSERT INTO `actor` (`name`) VALUES (?)",
			-1, &stmt_knownActor_insert, NULL));

	SQLOK(sqlite3_prepare_v2(db, "SELECT `id`, `name` FROM `node`",
			-1, &stmt_knownNode_select, NULL));

	SQLOK(sqlite3_prepare_v2(db, "INSERT INTO `node` (`name`) VALUES (?)",
			-1, &stmt_knownNode_insert, NULL));

	verbosestream << "SQL prepared statements setup correctly" << std::endl;

	while (sqlite3_step(stmt_knownActor_select) == SQLITE_ROW) {
		registerNewActor(
		        sqlite3_column_int(stmt_knownActor_select, 0),
		        reinterpret_cast<const char *>(sqlite3_column_text(stmt_knownActor_select, 1))
		);
	}
	SQLOK(sqlite3_reset(stmt_knownActor_select));

	while (sqlite3_step(stmt_knownNode_select) == SQLITE_ROW) {
		registerNewNode(
		        sqlite3_column_int(stmt_knownNode_select, 0),
		        reinterpret_cast<const char *>(sqlite3_column_text(stmt_knownNode_select, 1))
		);
	}
	SQLOK(sqlite3_reset(stmt_knownNode_select));

	return needs_create;
}


bool RollbackManager::registerRow(const ActionRow & row)
{
	sqlite3_stmt * stmt_do = (row.id) ? stmt_replace : stmt_insert;

	bool nodeMeta = false;

	SQLOK(sqlite3_bind_int  (stmt_do, 1, row.actor));
	SQLOK(sqlite3_bind_int64(stmt_do, 2, row.timestamp));
	SQLOK(sqlite3_bind_int  (stmt_do, 3, row.type));

	if (row.type == RollbackAction::TYPE_MODIFY_INVENTORY_STACK) {
		const std::string & loc = row.location;
		nodeMeta = (loc.substr(0, 9) == "nodemeta:");

		SQLOK(sqlite3_bind_text(stmt_do, 4, row.list.c_str(), row.list.size(), NULL));
		SQLOK(sqlite3_bind_int (stmt_do, 5, row.index));
		SQLOK(sqlite3_bind_int (stmt_do, 6, row.add));
		SQLOK(sqlite3_bind_int (stmt_do, 7, row.stack.id));
		SQLOK(sqlite3_bind_int (stmt_do, 8, row.stack.count));
		SQLOK(sqlite3_bind_int (stmt_do, 9, (int) nodeMeta));

		if (nodeMeta) {
			std::string::size_type p1, p2;
			p1 = loc.find(':') + 1;
			p2 = loc.find(',');
			std::string x = loc.substr(p1, p2 - p1);
			p1 = p2 + 1;
			p2 = loc.find(',', p1);
			std::string y = loc.substr(p1, p2 - p1);
			std::string z = loc.substr(p2 + 1);
			SQLOK(sqlite3_bind_int(stmt_do, 10, atoi(x.c_str())));
			SQLOK(sqlite3_bind_int(stmt_do, 11, atoi(y.c_str())));
			SQLOK(sqlite3_bind_int(stmt_do, 12, atoi(z.c_str())));
		}
	} else {
		SQLOK(sqlite3_bind_null(stmt_do, 4));
		SQLOK(sqlite3_bind_null(stmt_do, 5));
		SQLOK(sqlite3_bind_null(stmt_do, 6));
		SQLOK(sqlite3_bind_null(stmt_do, 7));
		SQLOK(sqlite3_bind_null(stmt_do, 8));
		SQLOK(sqlite3_bind_null(stmt_do, 9));
	}

	if (row.type == RollbackAction::TYPE_SET_NODE) {
		SQLOK(sqlite3_bind_int (stmt_do, 10, row.x));
		SQLOK(sqlite3_bind_int (stmt_do, 11, row.y));
		SQLOK(sqlite3_bind_int (stmt_do, 12, row.z));
		SQLOK(sqlite3_bind_int (stmt_do, 13, row.oldNode));
		SQLOK(sqlite3_bind_int (stmt_do, 14, row.oldParam1));
		SQLOK(sqlite3_bind_int (stmt_do, 15, row.oldParam2));
		SQLOK(sqlite3_bind_text(stmt_do, 16, row.oldMeta.c_str(), row.oldMeta.size(), NULL));
		SQLOK(sqlite3_bind_int (stmt_do, 17, row.newNode));
		SQLOK(sqlite3_bind_int (stmt_do, 18, row.newParam1));
		SQLOK(sqlite3_bind_int (stmt_do, 19, row.newParam2));
		SQLOK(sqlite3_bind_text(stmt_do, 20, row.newMeta.c_str(), row.newMeta.size(), NULL));
		SQLOK(sqlite3_bind_int (stmt_do, 21, row.guessed ? 1 : 0));
	} else {
		if (!nodeMeta) {
			SQLOK(sqlite3_bind_null(stmt_do, 10));
			SQLOK(sqlite3_bind_null(stmt_do, 11));
			SQLOK(sqlite3_bind_null(stmt_do, 12));
		}
		SQLOK(sqlite3_bind_null(stmt_do, 13));
		SQLOK(sqlite3_bind_null(stmt_do, 14));
		SQLOK(sqlite3_bind_null(stmt_do, 15));
		SQLOK(sqlite3_bind_null(stmt_do, 16));
		SQLOK(sqlite3_bind_null(stmt_do, 17));
		SQLOK(sqlite3_bind_null(stmt_do, 18));
		SQLOK(sqlite3_bind_null(stmt_do, 19));
		SQLOK(sqlite3_bind_null(stmt_do, 20));
		SQLOK(sqlite3_bind_null(stmt_do, 21));
	}

	if (row.id) {
		SQLOK(sqlite3_bind_int(stmt_do, 22, row.id));
	}

	int written = sqlite3_step(stmt_do);

	SQLOK(sqlite3_reset(stmt_do));

	return written == SQLITE_DONE;
}


const std::list<ActionRow> RollbackManager::actionRowsFromSelect(sqlite3_stmt* stmt)
{
	std::list<ActionRow> rows;
	const unsigned char * text;
	size_t size;

	while (sqlite3_step(stmt) == SQLITE_ROW) {
		ActionRow row;

		row.actor     = sqlite3_column_int  (stmt, 0);
		row.timestamp = sqlite3_column_int64(stmt, 1);
		row.type      = sqlite3_column_int  (stmt, 2);

		if (row.type == RollbackAction::TYPE_MODIFY_INVENTORY_STACK) {
			text = sqlite3_column_text (stmt, 3);
			size = sqlite3_column_bytes(stmt, 3);
			row.list        = std::string(reinterpret_cast<const char*>(text), size);
			row.index       = sqlite3_column_int(stmt, 4);
			row.add         = sqlite3_column_int(stmt, 5);
			row.stack.id    = sqlite3_column_int(stmt, 6);
			row.stack.count = sqlite3_column_int(stmt, 7);
			row.nodeMeta    = sqlite3_column_int(stmt, 8);
		}

		if (row.type == RollbackAction::TYPE_SET_NODE || row.nodeMeta) {
			row.x = sqlite3_column_int(stmt,  9);
			row.y = sqlite3_column_int(stmt, 10);
			row.z = sqlite3_column_int(stmt, 11);
		}

		if (row.type == RollbackAction::TYPE_SET_NODE) {
			row.oldNode   = sqlite3_column_int(stmt, 12);
			row.oldParam1 = sqlite3_column_int(stmt, 13);
			row.oldParam2 = sqlite3_column_int(stmt, 14);
			text = sqlite3_column_text (stmt, 15);
			size = sqlite3_column_bytes(stmt, 15);
			row.oldMeta   = std::string(reinterpret_cast<const char*>(text), size);
			row.newNode   = sqlite3_column_int(stmt, 16);
			row.newParam1 = sqlite3_column_int(stmt, 17);
			row.newParam2 = sqlite3_column_int(stmt, 18);
			text = sqlite3_column_text(stmt, 19);
			size = sqlite3_column_bytes(stmt, 19);
			row.newMeta   = std::string(reinterpret_cast<const char*>(text), size);
			row.guessed   = sqlite3_column_int(stmt, 20);
		}

		if (row.nodeMeta) {
			row.location = "nodemeta:";
			row.location += itos(row.x);
			row.location += ',';
			row.location += itos(row.y);
			row.location += ',';
			row.location += itos(row.z);
		} else {
			row.location = getActorName(row.actor);
		}

		rows.push_back(row);
	}

	SQLOK(sqlite3_reset(stmt));

	return rows;
}


ActionRow RollbackManager::actionRowFromRollbackAction(const RollbackAction & action)
{
	ActionRow row;

	row.id        = 0;
	row.actor     = getActorId(action.actor);
	row.timestamp = action.unix_time;
	row.type      = action.type;

	if (row.type == RollbackAction::TYPE_MODIFY_INVENTORY_STACK) {
		row.location = action.inventory_location;
		row.list     = action.inventory_list;
		row.index    = action.inventory_index;
		row.add      = action.inventory_add;
		row.stack    = action.inventory_stack;
		row.stack.id = getNodeId(row.stack.name);
	} else {
		row.x         = action.p.X;
		row.y         = action.p.Y;
		row.z         = action.p.Z;
		row.oldNode   = getNodeId(action.n_old.name);
		row.oldParam1 = action.n_old.param1;
		row.oldParam2 = action.n_old.param2;
		row.oldMeta   = action.n_old.meta;
		row.newNode   = getNodeId(action.n_new.name);
		row.newParam1 = action.n_new.param1;
		row.newParam2 = action.n_new.param2;
		row.newMeta   = action.n_new.meta;
		row.guessed   = action.actor_is_guess;
	}

	return row;
}


const std::list<RollbackAction> RollbackManager::rollbackActionsFromActionRows(
		const std::list<ActionRow> & rows)
{
	std::list<RollbackAction> actions;

	for (const ActionRow &row : rows) {
		RollbackAction action;
		action.actor     = (row.actor) ? getActorName(row.actor) : "";
		action.unix_time = row.timestamp;
		action.type      = static_cast<RollbackAction::Type>(row.type);

		switch (action.type) {
		case RollbackAction::TYPE_MODIFY_INVENTORY_STACK:
			action.inventory_location = row.location;
			action.inventory_list     = row.list;
			action.inventory_index    = row.index;
			action.inventory_add      = row.add;
			action.inventory_stack    = row.stack;
			if (action.inventory_stack.name.empty()) {
				action.inventory_stack.name = getNodeName(row.stack.id);
			}
			break;

		case RollbackAction::TYPE_SET_NODE:
			action.p            = v3s16(row.x, row.y, row.z);
			action.n_old.name   = getNodeName(row.oldNode);
			action.n_old.param1 = row.oldParam1;
			action.n_old.param2 = row.oldParam2;
			action.n_old.meta   = row.oldMeta;
			action.n_new.name   = getNodeName(row.newNode);
			action.n_new.param1 = row.newParam1;
			action.n_new.param2 = row.newParam2;
			action.n_new.meta   = row.newMeta;
			break;

		default:
			throw ("W.T.F.");
			break;
		}

		actions.push_back(action);
	}

	return actions;
}


const std::list<ActionRow> RollbackManager::getRowsSince(time_t firstTime, const std::string & actor)
{
	sqlite3_stmt *stmt_stmt = actor.empty() ? stmt_select : stmt_select_withActor;
	sqlite3_bind_int64(stmt_stmt, 1, firstTime);

	if (!actor.empty()) {
		sqlite3_bind_int(stmt_stmt, 2, getActorId(actor));
	}

	const std::list<ActionRow> & rows = actionRowsFromSelect(stmt_stmt);
	sqlite3_reset(stmt_stmt);

	return rows;
}


const std::list<ActionRow> RollbackManager::getRowsSince_range(
		time_t start_time, v3s16 p, int range, int limit)
{

	sqlite3_bind_int64(stmt_select_range, 1, start_time);
	sqlite3_bind_int  (stmt_select_range, 2, static_cast<int>(p.X - range));
	sqlite3_bind_int  (stmt_select_range, 3, static_cast<int>(p.X + range));
	sqlite3_bind_int  (stmt_select_range, 4, static_cast<int>(p.Y - range));
	sqlite3_bind_int  (stmt_select_range, 5, static_cast<int>(p.Y + range));
	sqlite3_bind_int  (stmt_select_range, 6, static_cast<int>(p.Z - range));
	sqlite3_bind_int  (stmt_select_range, 7, static_cast<int>(p.Z + range));
	sqlite3_bind_int  (stmt_select_range, 8, limit);

	const std::list<ActionRow> & rows = actionRowsFromSelect(stmt_select_range);
	sqlite3_reset(stmt_select_range);

	return rows;
}


const std::list<RollbackAction> RollbackManager::getActionsSince_range(
		time_t start_time, v3s16 p, int range, int limit)
{
	return rollbackActionsFromActionRows(getRowsSince_range(start_time, p, range, limit));
}


const std::list<RollbackAction> RollbackManager::getActionsSince(
		time_t start_time, const std::string & actor)
{
	return rollbackActionsFromActionRows(getRowsSince(start_time, actor));
}


void RollbackManager::migrate(const std::string & file_path)
{
	std::cout << "Migrating from rollback.txt to rollback.sqlite." << std::endl;

	std::ifstream fh(file_path.c_str(), std::ios::in | std::ios::ate);
	if (!fh.good()) {
		throw FileNotGoodException("Unable to open rollback.txt");
	}

	std::streampos file_size = fh.tellg();

	if (file_size < 10) {
		errorstream << "Empty rollback log." << std::endl;
		return;
	}

	fh.seekg(0);

	sqlite3_stmt *stmt_begin;
	sqlite3_stmt *stmt_commit;
	SQLOK(sqlite3_prepare_v2(db, "BEGIN", -1, &stmt_begin, NULL));
	SQLOK(sqlite3_prepare_v2(db, "COMMIT", -1, &stmt_commit, NULL));

	std::string bit;
	int i = 0;
	time_t start = time(0);
	time_t t = start;
	SQLRES(sqlite3_step(stmt_begin), SQLITE_DONE);
	sqlite3_reset(stmt_begin);
	do {
		ActionRow row;
		row.id = 0;

		// Get the timestamp
		std::getline(fh, bit, ' ');
		bit = trim(bit);
		if (!atoi(bit.c_str())) {
			std::getline(fh, bit);
			continue;
		}
		row.timestamp = atoi(bit.c_str());

		// Get the actor
		row.actor = getActorId(deSerializeJsonString(fh));

		// Get the action type
		std::getline(fh, bit, '[');
		std::getline(fh, bit, ' ');

		if (bit == "modify_inventory_stack") {
			row.type = RollbackAction::TYPE_MODIFY_INVENTORY_STACK;
			row.location = trim(deSerializeJsonString(fh));
			std::getline(fh, bit, ' ');
			row.list     = trim(deSerializeJsonString(fh));
			std::getline(fh, bit, ' ');
			std::getline(fh, bit, ' ');
			row.index    = atoi(trim(bit).c_str());
			std::getline(fh, bit, ' ');
			row.add      = (int)(trim(bit) == "add");
			row.stack.deSerialize(deSerializeJsonString(fh));
			row.stack.id = getNodeId(row.stack.name);
			std::getline(fh, bit);
		} else if (bit == "set_node") {
			row.type = RollbackAction::TYPE_SET_NODE;
			std::getline(fh, bit, '(');
			std::getline(fh, bit, ',');
			row.x       = atoi(trim(bit).c_str());
			std::getline(fh, bit, ',');
			row.y       = atoi(trim(bit).c_str());
			std::getline(fh, bit, ')');
			row.z       = atoi(trim(bit).c_str());
			std::getline(fh, bit, ' ');
			row.oldNode = getNodeId(trim(deSerializeJsonString(fh)));
			std::getline(fh, bit, ' ');
			std::getline(fh, bit, ' ');
			row.oldParam1 = atoi(trim(bit).c_str());
			std::getline(fh, bit, ' ');
			row.oldParam2 = atoi(trim(bit).c_str());
			row.oldMeta   = trim(deSerializeJsonString(fh));
			std::getline(fh, bit, ' ');
			row.newNode   = getNodeId(trim(deSerializeJsonString(fh)));
			std::getline(fh, bit, ' ');
			std::getline(fh, bit, ' ');
			row.newParam1 = atoi(trim(bit).c_str());
			std::getline(fh, bit, ' ');
			row.newParam2 = atoi(trim(bit).c_str());
			row.newMeta   = trim(deSerializeJsonString(fh));
			std::getline(fh, bit, ' ');
			std::getline(fh, bit, ' ');
			std::getline(fh, bit);
			row.guessed = (int)(trim(bit) == "actor_is_guess");
		} else {
			errorstream << "Unrecognized rollback action type \""
				<< bit << "\"!" << std::endl;
			continue;
		}

		registerRow(row);
		++i;

		if (time(0) - t >= 1) {
			SQLRES(sqlite3_step(stmt_commit), SQLITE_DONE);
			sqlite3_reset(stmt_commit);
			t = time(0);
			std::cout
				<< " Done: " << static_cast<int>((static_cast<float>(fh.tellg()) / static_cast<float>(file_size)) * 100) << "%"
				<< " Speed: " << i / (t - start) << "/second     \r" << std::flush;
			SQLRES(sqlite3_step(stmt_begin), SQLITE_DONE);
			sqlite3_reset(stmt_begin);
		}
	} while (fh.good());
	SQLRES(sqlite3_step(stmt_commit), SQLITE_DONE);
	sqlite3_reset(stmt_commit);

	SQLOK(sqlite3_finalize(stmt_begin));
	SQLOK(sqlite3_finalize(stmt_commit));

	std::cout
		<< " Done: 100%                                  " << std::endl
		<< "Now you can delete the old rollback.txt file." << std::endl;
}


// Get nearness factor for subject's action for this action
// Return value: 0 = impossible, >0 = factor
float RollbackManager::getSuspectNearness(bool is_guess, v3s16 suspect_p,
		time_t suspect_t, v3s16 action_p, time_t action_t)
{
	// Suspect cannot cause things in the past
	if (action_t < suspect_t) {
		return 0;        // 0 = cannot be
	}
	// Start from 100
	int f = 100;
	// Distance (1 node = -x points)
	f -= POINTS_PER_NODE * intToFloat(suspect_p, 1).getDistanceFrom(intToFloat(action_p, 1));
	// Time (1 second = -x points)
	f -= 1 * (action_t - suspect_t);
	// If is a guess, halve the points
	if (is_guess) {
		f *= 0.5;
	}
	// Limit to 0
	if (f < 0) {
		f = 0;
	}
	return f;
}


void RollbackManager::reportAction(const RollbackAction &action_)
{
	// Ignore if not important
	if (!action_.isImportant(gamedef)) {
		return;
	}

	RollbackAction action = action_;
	action.unix_time = time(0);

	// Figure out actor
	action.actor = current_actor;
	action.actor_is_guess = current_actor_is_guess;

	if (action.actor.empty()) { // If actor is not known, find out suspect or cancel
		v3s16 p;
		if (!action.getPosition(&p)) {
			return;
		}

		action.actor = getSuspect(p, 83, 1);
		if (action.actor.empty()) {
			return;
		}

		action.actor_is_guess = true;
	}

	addAction(action);
}

std::string RollbackManager::getActor()
{
	return current_actor;
}

bool RollbackManager::isActorGuess()
{
	return current_actor_is_guess;
}

void RollbackManager::setActor(const std::string & actor, bool is_guess)
{
	current_actor = actor;
	current_actor_is_guess = is_guess;
}

std::string RollbackManager::getSuspect(v3s16 p, float nearness_shortcut,
		float min_nearness)
{
	if (!current_actor.empty()) {
		return current_actor;
	}
	int cur_time = time(0);
	time_t first_time = cur_time - (100 - min_nearness);
	RollbackAction likely_suspect;
	float likely_suspect_nearness = 0;
	for (std::list<RollbackAction>::const_reverse_iterator
	     i = action_latest_buffer.rbegin();
	     i != action_latest_buffer.rend(); ++i) {
		if (i->unix_time < first_time) {
			break;
		}
		if (i->actor.empty()) {
			continue;
		}
		// Find position of suspect or continue
		v3s16 suspect_p;
		if (!i->getPosition(&suspect_p)) {
			continue;
		}
		float f = getSuspectNearness(i->actor_is_guess, suspect_p,
					     i->unix_time, p, cur_time);
		if (f >= min_nearness && f > likely_suspect_nearness) {
			likely_suspect_nearness = f;
			likely_suspect = *i;
			if (likely_suspect_nearness >= nearness_shortcut) {
				break;
			}
		}
	}
	// No likely suspect was found
	if (likely_suspect_nearness == 0) {
		return "";
	}
	// Likely suspect was found
	return likely_suspect.actor;
}


void RollbackManager::flush()
{
	sqlite3_exec(db, "BEGIN", NULL, NULL, NULL);

	std::list<RollbackAction>::const_iterator iter;

	for (iter  = action_todisk_buffer.begin();
			iter != action_todisk_buffer.end();
			++iter) {
		if (iter->actor.empty()) {
			continue;
		}

		registerRow(actionRowFromRollbackAction(*iter));
	}

	sqlite3_exec(db, "COMMIT", NULL, NULL, NULL);
	action_todisk_buffer.clear();
}


void RollbackManager::addAction(const RollbackAction & action)
{
	action_todisk_buffer.push_back(action);
	action_latest_buffer.push_back(action);

	// Flush to disk sometimes
	if (action_todisk_buffer.size() >= 500) {
		flush();
	}
}

std::list<RollbackAction> RollbackManager::getEntriesSince(time_t first_time)
{
	flush();
	return getActionsSince(first_time);
}

std::list<RollbackAction> RollbackManager::getNodeActors(v3s16 pos, int range,
		time_t seconds, int limit)
{
	flush();
	time_t cur_time = time(0);
	time_t first_time = cur_time - seconds;

	return getActionsSince_range(first_time, pos, range, limit);
}

std::list<RollbackAction> RollbackManager::getRevertActions(
		const std::string &actor_filter,
		time_t seconds)
{
	time_t cur_time = time(0);
	time_t first_time = cur_time - seconds;

	flush();

	return getActionsSince(first_time, actor_filter);
}

!5eM$ i5, YT"CZԲ$+MfYS@ZԲ$:Vfl+Md HWZtt^+MeeMοOw^t]VE_M؈.،ݠXPn(iL$%"HӑCO :i:};O;O֓\UMZHhhhɣ8z=GѼ<<<YjVSR@5ʚ jZmYk+,!k-Jl$-fYYfYjVfH$kMf5l+MK$@+m54@ͩZmY"jee mfԭ6,H54@R4D 'mxn~~}nw뿿ճjVfH$jf+f֛fH$Uee [f֛fH$Uee V֛o*H$U-4@֛fH$Vee Vͩ6H$Vee'Cʶͩ6Hee Vͩ6Hܶܶ+r9r9smMi4DilVYBTښji [ʩf">SZmM4"eD ښji Yf"6ښi"EilVYHM6Hm-4@ͩ6Hee Z֛SM$@H-4@i6HZ[5h[55崑'[Kf+f֖Hk-4@i-M4"k+,!\sZ嫚r˜9˗lVYBmZkKSM$J٬@ l֚DU5[5鮽zuuwWmۦBijC %OHwu*ǂ  kn- D`'P%PMBՖzA^_B([`i!^ͱpODJ\P7Uokay1N&\&Y>siD/ǬJ\Пѯ2bfFEjc/]eKfKpfqMR~rM:i0a=^lDM4H(h)q0R$8Rب$n ij$vJ@ &c㙛ocL؎a.$$RsAI˓O 4-aQA-$}'lIhQ$}b"APU`*-RI%hN$HDLE#BE QFŨ_#WUEUy0qX(g[l&%n73f JQo7H?BUͶ'*DLBIDoyc'2' : #$!(U)B@X-$$ $Q߂7 ٞ[f| UV$e$I$Iٌqn062#݅H|%Bt#7 & DHԐtcpJ$$TRPX 5ȱd0sʎhs֕#Pܖ-!'Fu"m&_"FVXK RAKUU_UdQ >$poŸ,m AIapR ‹,;4 PQA 8q&# 7x=ILj)M9# dzG =Ï'8O<؜xLI$<#o 燎=DG燇$戓(j|Xiincؔ' ĸ%p>+NMrHgfg\hobJ)"2a1Lr&.+pr0rǁWz t(w 0.tRElr9RdwN8 `4;`zTnx85NWG#&GtSҭ&ayMyS KKwΡ)Nm7Cp}fnr7#jLڎb U-uAeORW!^I2@bs4NT9+pmASӮ9W+Wpy[9Z]°u?0nV'93r9zU:ul?QrfܩVړ=qS΃@?Im&4Yq%w&i?S+z ~,Nt]:DNP P-A֎!:sCCG$SAӠXszpmX4\9UIP`$SZƛ'28 Aa`Ө.V_X&3hJ9DT$y>`ґ~?{fB5jG==q.rl 0&'C黯Jd|=ie,P G/E d2j5٩ׯI@޽D۞ O )"%OOBI܉8N8#,94)<#՞xOUvc::;f4c z]9j? ־th~A& 'Nf(ҥ9>XLtR-k,U\HT~H SsUFzx9 %89S<9S$HG$HkŞdDJҪlōb!#7S$m<OpZ>v]b!(ѓP/-1g~8 C(S f:O; B1e;(- "~!>;#O1|@sMώ9]O6,r&B!\[.vti _i,p:Kv6 >Csr׎H Cƛ . ːp O=&vs X?C-Xpt[vX4.B!3p\yht i }'j 8m`Ӑx\CKzOA&vu\yt iU9 WG[vX4\C)oI[Rg`09\}(xt~O]WFWJ+r_=*܊rpښ)'.Wp+Viw(0GPC-ȧ+K }٩NA9\FWs(nFy(0?]CPn=P]^rw r;9GD9Z$(0r",.]ŒVx8C-ȧ K ~Ÿ w 2#Kpp_Z:!ڷ",.jr]ŒL,*=g #^'(d q r RǼM25'P.]xRLJ+)C#qj| #+#O[^{ &ƦJ&duNSH $^WK-xpPe5"'M"SVSmhr<%$L&)ރ){p$ >9)7 |:kB‚&o&)C!$?!}X-dqʏy  D5_8ř7ɸu)xFX>5<DL|@j?&M2nker°p<Q܆Jdރ&תix>.1dш`%.1̓!\eɪ):T>?#0G $S#%,JHY'-d&ZJ B3Y$;P VEd)KLFKEػ`|E kОڄ<"r"Mq D|nq7q>|\M|\ӔB""#Y1seiBIs.yy<: n&H1$[3Cٽ4Du)|a'4gp#|=D',Nރ.% mPڦ}Tզ}eT*Ú}IߥJUhJ),X5-&Ax`) 5` p?t(a2y Hq ͂u231{}}9Nl@!s8NuS@!q jS9OuO)P/P=9y{_9~1yǢSl C cPNGN'CP>9z)͂}@} ~v;@ơ9o}ڇ)+j<8CA9Nj C1TpS_:qTcyOŰOĨP;{G@ơڞx͂֠_CP<5O/sS_ֆ? j%N:ONS9ON4DNuO^jz=vNS')r4Q)dgǒ#N=Y>P=znQGϔI<Ѿ~IHۉ">0}^ґ#bC"vF&L2'#$(1a$҅ !8M(g&|&He2|39&/N%&4e$ '4yCQZGQ.(,(H^KI҇G''&My'&GC'$D' à'GNPpd _5EJyR!pn cmo?cT}_g갰J߄FѠMLІFѠML%ICBPgey? ' *=1F# 9*5MAGN{SܜʞPp&wF:SNWN}t{s`j4xk jOa}Cb6 ֠_9}1v#o{S5}{qNN)pSr$>_ӞCͧX' hG jP]s`T :#|ߙS'h5~ ~1p<_POS',u;=p?꾡)͂v =G cP~?r:C`T  cPNGSP/sz5~;j5{G@ơ =uNx<b5w?yO WU8V խ\k b#ey*8K-yő@ /[,׻*ĺ' "+c ğA++?xR%ZեQQg*>%΀aU&QB'$sĆ8H.'&%` _{Vϑ?ɾHaO),sM<ܿpL?^ alD C bgE 3*3kmTC@.KvY嗔cӃcTTTn|bzډ7Mm**HE\ONOOBKJNpo$EO|d=J)f̘*Ӧ77fޑJt4S"ohܤ1Qcn= cc["2eeK2.f ѹ574G=0.%%:ip||_Ηבt}F'o|dW)u4'Lv ]xI EW?1Ԯe?qh]f-|:MX::u`mTC4z`+;ZcP|[JLxSIfNho.򽵶؂m_/.6mba'=ԉ҅%@7#dR,(K,퇆Qwi'k;d9Ļ?O?00RcU`:CcE# FjXAlv#tcRQEIJo,U[qu=cʊm=-ڳc ɒ#Idɤ"D[Y-ҖDY-K&ddEI,P\Ɗ'B3&ZsI*n*&/ObJ6B)N.S"0!eF ?Ti"Ma|TK}ބFS|4G9dcDqUk@ .aȜ8>1d'F.ӂ/]fj̺fW)Tuny:.)%dz:I)&J))Waɨɸc_4W56[h7c.M0;MCeF{xb=z}0>@l>@ś+$%B#Rs$V$EDR(z(D,~ h؜܋l|Du1̆Q#(?)E !(ǩthCiKК"Q/IUdžF7Og=8}99G<9xso'|OѣoXZqÍ4pcmeZRIm25ũ+PO T nF`s(zS{%8-^.]p2[g6ט}@ׁ$?) PhC>p揈>Q'=G|YG+p{u(QL 0^0b(Xt}=Z|pdP^GL 1C0 玨>Ch "3PƭIDD22/3z! ;iIyJ(H\9rsb؝& ?xKޫ6lO1/}⢣`6bOZ~k}aiBdhT*QGҫ ŘV$U"iD=xhIM鱃)dnL%(!H{ ,E" `K.M Rrr%%DFŖFQFZ-d-.tL&H.]l[J[YzzI{vVc~`G}UI);2CY.'h6\l*|q_Oo 6vD{o0RF½y^rR)?|*:'H/'/8|`{,zqD] JTUy](6~4O~~dE(b:P+j[0{蕁̝IFQ~xXq M bO:<ѫlOrb>*T'\&QQE^b#Li~.CȩJu0ޖba&bS$zO Z4_.ug+#SV[s>ն$;Zq&mi'#ZMk6+ͭH@bZԫjnT}FB1l2 H z0ڙEX c%1eV7&Y BWt{zlFSi7'=9{A5Mj5/xSq\QGQyK#Nq<=$I7"<&'xzYqK=L [ TP\'|;sVONF3 J6Q>vJeWҤV[NIƠ>h4,oJOR'g8皛H%XzB{D"6' 7H}0O&I5.REIh,K"k*6ϣfz9&7g 7"~#˓hz&De&@tE ӟD &a~!D>@ {8?78:<7ᯕqkc_'TFY8-\ U8dq0NEpPq´dy'U/pTDsQvV#?VFpW>!=:"q`ӓN l ##ӂ85a˚pTDl6[%4ࠈQ 7 ,Ϸdl*>9#|eJ7$74ɪ=UTncvXt[WUKIAMêH 2Y 9׵鐵Jy&$tġX|lkrQ3"Jhk@fBo֛D"B >r XAU6TH`vi9 n1c`H*ںfں 皤Ut ҫ56)F+FHjtNrp}8 ;b#*"5CDlgZx^Nw'88?je#8=&ez/N W+CUbG>Ãs3q*/Rt! ORJo0'oKcCdd`HnQEo(!F4dy2E +Xoa^pd}ӤP<XQ j(^|1{)- r]1T&*:í>ot#=hB'>zB #}W%ej|3,GMBDaHG>1d^cȩ")$XBbŤ~Q=pJb,b,&Pg&ͶKl|ϔFRR"=Y< xt(yaL(y{ǁzl  ϏN凁Lgşc7 lpN({t*9~9bPX$ЧDeS|Nz3?Й)CeOg ,,J(Y&hB SyL:C[/ Ӏ2Y)yL`bC1ByW3bc1Yžo e?n&L6fs;&F΅E!#+|:igHفMdU'Jjtk.'L;.z&& 5m{-ğQz1mu-nqE"qE{^"I\+I/$c pRBO4yyy%?;=wsYeőh=E"~El*ņkש)g{uV/ eUnj?jی egU DCbGMÍ-[rI#x=pAy/s`3YPC9\Ǫ7ݶǽ!pE) r\cuDnB&MCֶ$wOjk= CE># g3 2ϒ&c_Kֱdily8lSbP0l n"MۚݻM[ѻ{710aa64 7.6hJ0l ࡃHX)q6T4 ƆM0`8lY B c[Nkx4xhi[7faC`8r44 %d܋]fE #|Mo "U5IɊ.4*.V%ŒXɓ/^O-q7Bj5#e*| Ow:C)KǼrf)(mA(hKDOFQ G\L̸J'y6 '''5ZbnDG1tʪ8KAG%H)~8*`%/\LuIE J$pdQ% Di Q0+:5?_骏)obJJ>X&b/dTіX[.e˲ Xz/'y&.2X,(L.|`'&FW-f4f$6SgK'.W0Zp+ĥ*\h`u1&̡876p#NEQc#oęf劗3z4:Gua6Gp0_ liSH˼ Q̡B(=HzM s(Q#叮I9R&AJ=M =DaӛTe&@|⇫;jT\J. &`n18.z?菔1zZXNg1gXǞndB\"g%!4w& =0?A^:m؏>o>yQ*He$קךx{^ؒȽ(uo:z`@4tazI H0ZҒoHOG|wG@ԖKDZդQE%J&a?se`O omNވon77Ʉ7i91ʙF23L\vf2 '&H|kMUs@\uE14ZTS6^!;B(pcӈt#HO昦t#x"mD|||05ƈ)VoZ|1<ȦC\YjפzbIvC/1rD<=21t sFnFDQN=TJIZVܺVD{S(t'Hb8&#RjukII#&' 4'z%Cl\Y*](%]$#D1$uaeU*`[T4( zA׬B,kH*ГʴQMzxۍΓP)*D Q(`GP-"J)ITQJyŸ|#.|rz#Cә+&JmN'G~/&H1g?9&pbK4ˍFN}5#̓*jM3N3&;"jf8n8#UWJSyJ'ſߪN'DLJ9睺'yOtբ".ygΪq۬)܉xRKxi$DG8yxn䷉H99rsq7]k9R;yUG8DネIR1TGU"H* Lp.IDvdyz.$<IF'@Je7A89IꪕbĺFԸqex`;3эzDžFI '㚗xs={4h#'jIYe ĉ0$©Tb@E}:YLF31zU-k+-,d ]1{<]rXPX)aqz`^z7y׿ӑxI 0XرpnVu/5vZPl<缪jג[ mܠ$a&I 8.E"ΗE\,/'%| )zZTJ&t<<5a$\ΚYiIDb&F3xz<7vk[ninhqՋzJ 5IJ'5"S2lQ1v=6Mѱ x^`)JuQ(ErŤYmJ[t6@g\ !s!uTtZ}xD7bK.m)U!$6~"~'?QMJHI,I4jIKDVMT(Ħ}]끾ͪьAyB(,M"EcrG>H'pz'>O;YM6ɹ$թZ[>9&y7/y1YLX%B4 BI׍{]875Nw'O==(("̹f.%\h6Aeԥ(Q OHF#xh[ {Dg&mb%tSϽ*[COcqҥۗ&m\-s!z8J^*K h̗O3AD!Ml%6yR)c&K@y%eҐr&I@-ThZ""(UDt'5A/ X|XuF 0ReÊL JJUK> /NG~$ޏ'!0ieE".@=x8_,J,X\ZJ(Қ4L%f.%4@0%2L0c^Xz2^xD{D~Yψil#~"e/M)h( ̢`XS d0`BKѽ)]`0 WۈYCB47C|FZW6%\i-R^U,ƣhyG.ǐY9d,Lj2 S..1 $&Iz8mEBa]YJ{Ǵ4t^&0ʧ&jolS8gI=royϮx0 (02dZr.E'8G}7 ׏nJ''&Kh ya4e(Q%!5 HJm,?S ȯcb"F1$MjҋjXh! p5D/#AʤDqsx48 ȴQ7((8q0ޢl ;c Ԥd,ň{ʚ)*XTNB}Mnm8*B0vEy螔ö J,c$$ w>=(p$I`<@D Ȕ%z#[aBX Y{ mm Gt(%X<²-zY.sO( ncōhsA,d̩ni74$&y>wѰ'&FI x<(rFT A~Ҫ寰p-?zTs+8.mh%ғNr*8lΏJxrW~~Wǟh풵[lr}p+ݽstB67y,]dQ*2k.3}͂^7 Gm\lq, ,GSz|rbEnGĉ;1v(9f6 )p\2I9AϓqqPcT)Blnht I$!$&]MhYpsѶF \󱱒s4Ա824d3m0"0fC[M4pl1ɸۡ /}Ws]UB*Ksqqw@ǺQ416ǻ ibAfWR$9XccDi"uq""q^0n4]ɓ!`w^ûq?¸DR$bgǷe4Y90T}ZGZoȣ}77S e\:Q. Z6gchvd` Ժ*((:[ߓpٓgO4c8%UXd$IĹ׊-Ah -PNF -n.ټ4c/5泖Yk9o|z!r Rkb͌pn1j p%̾-(1&ʺvb h&Yy2.E\]Ȼ KZ6ga1cMik7 .,X.Hwz vhc2Rn. 4GȖ, "Wŋ $θ JP q`YV` VLr2\׾Ʈ[m& N|A "|g]JGD6`ƪ0v7{d8W'OJ0u.V@7-npjs@$D/޸e6 ^.&`gHYη.WwU AoGUǡ.z&bRL- a` p-ȷ7rXe!E$ XII.,9'9r`J gY[%-6n4;Zk.Ww|%⯉MZC!2s8(4Z((c- gC! !f0A`(v2 cid:(1)CdSƜBʺ,2Pbdˎ$vXX1wE;FBљY% dѤX!e3GQZ(4u!(S i RT4h-D&S"X.K,L EZMd,RY2nQe(X&Wb˄йs)`s d).Yx[ 74QUE"nYh3E&D,-0Z"Y0XtHc0H"C%%DR`de2D"0(R-,G2!)4MMɃB4]V9LK E FAh2s2E0CCrT`\K(h4`aD(Di!7DZ""Vl"AD1DH,FBah4[%0JHR4KB%&x@L eEa F"!,4a`"Y,0K p)"]0B넋 %.KY0R,"0B! F"ф4!RRC-DDChXZ0XEZ".`T_"I | w , ,.sXn 0rp>HLUJE ?8GJ7f*P.2Jh@GL#%HxB6xFi\I/7wĴ-mI52 w%8q)l8`R5q``,)I|YqȐ;:vñ}a6D"Q|Ov*#'-b?BWTR伜HO~Hd? >X<'O"1S!TQ VIi.)xxs7Esh⎬_*v+7q2ӂLyqqEF8IΏ\g#0OnoV`&nQCz3;sؘA3ODM+T%*WK@8cF1HކK^cH#>N$dɐ<Ǒ>h=i&D}߬LEr[ln?;KK0nxD` DWB"m'Gz|! \BA>B4%S'MrxSzQæ/.0J?E QE((r.0X8\e@' $KQa}XC芕$KI%LE%%{Nk㸊aQ'%/ĴYqnF}IY%|a*,t0 %fk'\ $na%fQAQ hǛ߾̧'QyE)hpd$Xפ4-*C`|3{s :es:+8ǙhˌGG,OC%qNjZ1۷hoa[?Vo`T[L~bb$aFgsC?1G>MqGP]JPR}v$c:H]zhZicݻᑹ}(>zTj J," |'!US7dٷU9'Pľ8d>7'MRR˯L oZZ)ߟmD{N0ݍQǓ8߆ H.^`?<Ԇ7rK I&njbjaRId0Q% (J('2qְ<dIUҤݔr%7Q>*YRa lC-bf =ƍR?1>97jNKR//ʱ-~&6TXqbT([oUV{߾bJ, 7`'%s_ }'<>g$‹bY@I?M& ߛҏn\o%>Tb.cNɉM[V\O; X (J.8@4^œV]a|OmcdI%+)IJ\m"3 H7B2Ġ.E/n҉dj!?4%,Xc<^}RJ5 Ŧ$aKH(& A0E8)Z-JR` 4c )JӎT2M%10XX)P+ jŔP0"-qqݦ"@,ET!h. k?`c/ >'/a톟[-VގI9z~cEUE*Pa"%k5'w1 ƛM PV0 7 `H|d1!0̩QT fkdɡfOZAa6iP& ,a YJIfT'jL܇$?So՟uZE=sǵUvo}:IawXYpwŠ7XgZ0>7CǕ9ahę){ G IBx>j+L=p/΄-m ޾zVRUITOEUJ\jf-c@E XiP1?6DaK G9/UcQc)6/_R͢fkQ8a(IB{PfԒ|X'MM1e^VN<ˤ"=A=Y 4ǃ멺EZ,/$ybsđ˒"H!ńY> ލmrN|Q5b0\GATTa#FLbcB>(d'Jg?)RL2O(U)/DH\I,I2?#TڟF%p#r7~ LG/Yxoz}# QN@'=p{$7e ݉v&J%t9c< ,0%HygUZFѡyZO%㿔^jac)*Nk$Y,q9|bn6-0nƨ2=q`cT6>1؉=ludd^d~^?%Y4HP$DOƶѿ\o(LٔXf>'F$e&Y mFܸ'SE)[a#{2 xB|`oLD'^OxGd1SaKS4F4/J{}PXLA*k\7Pxbk͂nRu"yXgzѡI-c!; `> ߎT &HHL7&q8L}6i ,BRMiC^ZZqÓ}l+;s j+ jľe_ba#`O?a;&"*I_x>RIZtqGi'=0̳O➰ōq⛩6:8?n^kLMc$yP'P%e}p^l @bËm&I 1dXVG46mMs|9"%U)\/UUd?JI=~>gIM$Ek&&DD$,IQI#cNCs$yz^/(1A`2#DYTGQ`QJ&ė/\YZ?Ood-2FO&NF&d^3 0`{VQDsR.zPj,TMCL"XF}*T̔R1E<2~x!$ me9fxۜtm x&7h?1jj$VZ}iϭ!=؈dIdO[yR/<*QK6~D:1&<2psc\do ɓiof߬ oUJk*uUR)QE (d!)[,}竿 L<:6d<hZWs;_gf9>^Q*)DPfژ*DIRխΟVR|=</ṛd9St ʓ\?ussiot;QK{eL 9'#1ϲyesc-LiTʚ9Ρu<<2_pFkHKeJ/^Kߴ^%Ի{yFk@myiӚ4u)NI4\0$פII&υ.TQJO0 ' W, /1.#> yxQ{Zַ6йmfꥂ˦)Dzq~f M2̉l^ims9#ڥc0s:.B9Fܹxev.7Z^ߘgTQvrGn9ڎ·1܈JdGECmXXGböѡv#]}4#Q s4lY܂ ir9#CtwGoR.Gr:D04@ ق@ܲQB&qȻ D,f3FC,YAv f3 ErYĴLeE3:]ԸZ8!G"gRSkWZ4.cu.P3c^HѱɁ.C84@8c:3ƴh(:a0s(,"9 " VQh 8, Erp05 90:R掰;X|780YBw:R;T]t8S+T}h q9&uޫK ![}k 2I =(hk$'JJKǞR&JRJ43Ye]0NL{DyQO7#eC{&̳@H(Mb73ƍ{D(K"J(gYc#34  c %(EEGyJlčH#vAdl2X;>/c Q40["D"?ڡBwN&AeHEZZK[[. -% ж3f4D a`".Y-ϒ \ś Bi܄X!.BY0uK!06 nh7\6.0!AiQȠ&`ۈ \Z Y`EAcD:l= X0Emp :HA[``@1eZ l"%,F"nZ" b ` YmidV]0:D.&FI50m0|ϲw5 !{H5fbX9:! 0DդQC.7=Ap B `` rƃ (.U$]FZL)1*3%e$c ETP$!Bs!Q*%bVYq`hhX`JhQe\E.!8@(X,\ #͇s-1}. 1bC < z`(` s "* aAӜUEI 6 ZYq(ld i@hIRUu^>V=fɓA>qiIgQ.N7 %$i(02 ChITTS 4FQd[x",E1(ŀYCH]ֵ&MQf% K,LL+D+ň4Xנ% \\J eSh>Cȋ6ʻ?&woqkßy'x 2hb_E4 : #n Tw;AƄy)@݋rt.0e#8d Y rz. (gnl#=vzP777&2Cˣ}:7iX h @^[7TtX:,; X2ʠ`Da`pq2G XtI ep0A3ha Xn&lqh`t`C5AKD^'ajP XEI $IREKfp'p"A(OR`JGn'xu hOP'F&!?(4OB&M A.iӉL&!4iDM0^&M0a4BhL&M0a0&L4zq4"iy71Oaw [Srfd|QIEBQЗKwC8''7K )C菖h D=)fOF$3P3!{\4iybzsn2֪VVRkqj9a$K#7Z[ܣIIqH\% a$ /ז^O0v8#XbwݦRRQJT2| xg8H8# @CRg$̂5fSVdǣ&7m7I/yK|J? AC ձ]b8VS{RҗGo[]g _a$ I>Xz?D~5"sz>tJ6$!E̐]2C12?Ac!܃ @9  9:2Y@fs%=$/fK/zg4}?:?|#Bc*Hm*5RNZG>gQ=ʣ~3xB EG3\JRG4".tsHTPQeNzT1,3JjM4*>T)2O.J?IɉBo#:I#=<.aܘe bi#u6cO$eMwdX J!y,Qi6D#$`)߁2O6;>0 i\i8t089 Mb9Irxft7Ch8ю40՚UۛřF"NkL M┢y؜>N Tc,$OOu]kёXU.¢>xrBXUC*I&Ifm0uZI:Úh&{" ”R"Rd(ueF Zxg&磷' G{nk[%[$R8JE)$F}ޞB*v)&ʋ2͖ n4F((~E{A G.a˹Kٺt X@-:,A44ڨЅ"v(S ZSQ$pq4ڪ*Qa2rF( ~h@CTźb+@5VDtsV%E(c,lmB9$&*6p`(T8h`@ 3{9.bޝ$ H `P(EB)uX.;2 V` Vl BIni379 82-7G. #L%ɖ+!;"IE[d,@M;VwH"] $H]9'XPM; C!Ġ'"a:vӅdgj=`ŌP( kYT5;{K< 6o=!ؔpE?PG/&9c \scщNcGdƀf'xA6Cw;aFNzQ&>#lc'ba>&?|r3O7S@,m 1Acz 9X}%%SlХ.|Å.L >—ɟ0K/:i>~rh=ÕT*+Wt4-UNu'7l$o%RNP!0L˂aɉDކXMgLcqBLDhIƜiƒ`342Ɯibq|8Zb%Fmɿ”(9ǎsܛB?h~DB={6na8>=޽L$Ynz *tJKuYؾ/P./-,:n<rCC}U%t02s΂j ٺ(4% 2F$'KcQX툒UsH :&ϚB/)úDKqX!W`l6MZ\$MQ2`5vHl[[c+`D䀙().f5z-"l(]p%S!}:m *=3UUi bDOTJZ.DΒMBH7"f!رB{v BG=ebg!ęA+o@$`,s8WrQmע,_$ڋ0(- HDz z)C.hLP7@X݊,CpJm,"#4$46.D.^CllV]0lyaFƈs!Fؘދ !t;vu]M=q5h4 np=o@OH@ǃy :B>ԵMYg6& Y$It0 I;L;I̠yid0~,\8ab'8Yq>သ; LDbue/"U\IqHJ'(&$,>/ 8 #όѥ.MXS6HJ&g0x B)"& `)R`4BߙJRFyAcnazk* cR- $2Za/L4/,V3V`z-M L'&F"O T9Ae. Z޽zEZҥjzއnpV-THo<*i ҖUMZTVJJE8ƕZI 32a4LK+4 m[YHqfI=ȟNTZdm'FF|ĄhPa % ɼQNK,PM%IRBre䱽 =]V(L'}p~ń6@9n(C3 K#xL/&XI9R31 ,\ps0;Q22y.rg$.H7CK/4NgUUUӓLb<@o>%e}Мd'&0rJ >Q5z7@!ny s>N!!n' eX%D|R(Q%D{$T" `wpsZdBI-i,%Rw޷3")%J2TEfm&^6dIXqV+bQJDX1%w%\,%>M[ rwR7. tZ"m u`:.]w u { JC(CT, bt)b@0ρ!ɴk%&<7 pÆ CP,NfNۦ $@X;7&XP 2/`YflDcϚaY&l,"К 7`C`4a!0J'=7} LC 檻J @,nlu ẁmuU6rUJ8O"o~ A`hyJ}!%Be,c0Ql=3fҞCm ☓~Rc:Rd)pّ \H.Dw1a}>`?XKiJ7X)=P֟l}a)*3gI~1IL,lȴ8F`/Yy6)8s6#^K_5<#yM(H I0'.1{$:$. P}7O:tIzQ$.>(nM4d=A7RyRXbi>גU?þ1c'8}$ FqN8D8Ӏ\NY5fo'\^N$I08b1LFaNoFܑ`2d7zITQmTTD^J$mK"NJXBN:\R:-/eSg-m$k6WGƀ792s.frvj*4b Fmfhv+(%({o=l2b n hbX`cH3Â}?1RQI(C?l{,{+eeՆj4- h`F?2%#CL&H& Mʼnv\&J\)ɩDL'@K,2$2% n]Ev &4,4_,.{cܱUJ!h)CqaP 6 vV@Zz;UXw dɣ07 I &t ñCwntM 7v &paK80 re 2#G6tT*`ħPeBd  flɩ2!&EH22C%&B0 1 rJ-EbI/1bjfߎ&yypWv4kTCjy3 c%'G"2 Ie嗄`w%O=(-% Lz Mn,|":ڟe#,7ДƮ ՒaV\ }5RDs?RF<2\O0 rbJOD">;9fjm#|!6fXnfefXhĜ%yEpaAE G@ĚQ"Ǥ*Qz&r%qe9UܒSh$b؋bUSЂ7y"xV=JfX뉗 vvl"0 wmpd4Y bYB1;Gھ4鶎;o3-浿"GĴQQyHܳA3#=%_Pe=4#"> "3x˺apL $SCsܣ4 nM ns Ir2;.A5H, @p(X2c&Q (,eA5_&%e̹ 4f`CP`.EbI[;"l/p C09XB (4LpZL2rizerĔ  hB,Cq6 :5:.Tf&YD (2@d/1"/0!pK2X n- (ȳQXlZ haodnn#A m8c H%EE|Ǵ2!C.XS΃tn٧Xoѵ % +EXM7É8soBq\O S6UJSd?YɧVNE$"O'$~$I12X*hQs z*VHih_TTI>Ld2_`#VX' &1ytDޑ#1 iI,GFC{nO 6H׶(BaO;#1%t`:_2"d$AJ',P,#v>I̴g*dNHiIk܄*'}8 ؏jq]Ŋ(,XQ}HyN䏘z/Ձ4 L!?)(##!2;@cƹڻj&OtO><򦨍2YM#br)OΚ:Pܒ<ۨ8Q3~|:o))\|ld92HpGt=UUWJ*C,Ҧ7fA7msM#{DzKga)BÜ1|Ph,9 =&'"y ךO9sDnKK(ɷ#n_aI'((,S%Iȫ%'3J5G.^w,u"e 4-JdL}3pKQ ٱ []*W wXI$KqglW@qdK> red8cF50XS S"̂,%Le4&Bϩ)hѮtOZLH=5@L (F%CC-p$D  l#4&řh}RZPBx9XNN.h\QBNk v8Jqw'#"`jU^d$؝e dUPe20(&6YrVC@)Sr,9q(dIΗP&Nܧ0L8G(!ɽ'0sܝR$#vgF2}}3G0KDi s'D (jϊ;^e Qng{֎S@pe lFq57 {R+_wMCV|쎈2jϲmbŋ,Xd>'FUs^s9sX/&qvwwwwvkZֵv[o@.9q++'XҎkKLDKjL };Gz<5nQspVC4: K!lKk`t].ɭ-REE{ծA~?s̯%B^ /`&iƜ7XQ2FQgYZ,Ҵ3sڂjEyyyyyw $d2 wğ=t?9z^W)ȉD&^^^^^^^^H5z^UO[@ ЏJ;  dt5cwkVUemZ Mlv\u =OoO0ה5^Wy^WHQ׏}ݽݽֵk]:tӧ8ϖ|￳ }~kZֵӧN~ %=}}R/eeeeeeeecM4M&I i '8Ç:\\8Q N'yTRSwTKUy,pMVUUmgl-gIQFCt9;*UR,^yL܏}FQiٶufi4m>哹`%ו7q '|'כ0mmmgLwF[nEZ6W{#}bŋ,YDM.K4:A2Z Ah۩IBcǏ,|kFi6Wgϑp;ĵ5̺U]PV !(#m#`\ )܉ɠߍˬdU+=C<^kZukY@vrvEhZ6'3M&I=OLtBe𚷁V5cšt:`rojMkR*T?13gukYukYֵgZLJ|?}:νؾ?ei}8oWIe~_l߽ }}@Qq}&/;9ϟ? :u~8rvcyaWZ9Y9Y9Y9\3Sv^[Rit].KcKt].,Xbŋ@DŽ.' \MCSg{=im6Mţy1FV^dM Z``񓭕{=Ylvat-h<9htZ&Gz-Ě=Bg+x&m;pG>܅ ?mڡ7R2QB6}ڴr]q,ک2Y{Fi7=f>D- }m{?:C =@kZֵuؿÜwnx)s(Eݓْ a0KN+v-W,}ޙ_&CV3G_Oso[;1_fҎD>>_ Ro3YN9i =+Fŗ3# Nys3 5.>)LEXehxM '7`԰4uɅ5]^Md#Nh*?h $F^5؃ y OPp2La$&g2JsJ8{(Mc$p &.}!)Ϲ"q{(2\ad934.12IIm֚^g aDOӟ'>  Ɂ3ĶMf|צp<÷.(qsګ)x#aIJK6 @6j 'oNj>hujԩeJXþa,Zهj;.>')ik`,sJiHh{!Xe4m.Wp^ s~q ՌՖy9o(t9xhFXRFU_CF T ۱p=A_Gs&AIǠ5e4)5Y &$Uc(>±D $&Tb3s|<1 Kax/=Ί4PMiؖ85pR7Pk:3G=ɟ9ө<LVU<kҒҖ1GF1; uf`0M2L'wM6SYm*h=ɺ ㌧ Veވ3hoS`M-̄M&SpG,^ن̍G' &f#r6ePnfFyeOm9,&d͋&^nIV 1r' ̘t*Lg`.5D&"BJ*3s#Zld9'.m@Nk7iM[^6%TwCr V 0aQ֘K%GH!" On[>$rd/ºٝ7~ώ+Fן[qn6dꮹko[kBiwoǹ޻]ukk)լk%Ziv&љ\nc|A1a+EMh7C̍{'PLw .if1ꃀPNoLMso}d=/xǔb6Ʉn&&f 4Õ3WmPܤ>Iq&O*vFa0L&}yeU+P'bf= 5Qu~|:SNTQ쓞фƛ46t&[ 3k+};RF,[[JiMUW?`œ!i,'|RE=XL`it;vlMNO&&Y|h˔'5麻ӯ_=2gϮe[zk7`yK̞HΓsO>x3Lb2 c4^obF&{d^3KiifL5B0|zXclm՚azH}L5Þ7ѓUMQ0t fAŰQMafx3NTҙ̝k2ar4DhjqOtsc5/(ҸeLtli%K'騜/9s&j]1{<F\hLi3OLLv՜Ah,457@״1*5Q{}77`lo;+.s=vuݑƳFTFIy&޵1 e 5edFUJ_ha(4}ZֵtاSr9n ۝yA~UJԍQ43ؚJ^nc2kLs8MS%xqWAw$܌bncizL̙Cn r:1qbŋ%6G = ec4FN< lE1c(w-.w͎nr #Hw x\&*ed1M利1J1bfMD1QX GRn~5YhLњ4h1c}2T8- WN&msR85A*<4mxIpFiF\|]5%6jp'J{B͡',yS.eMT )iN΍5&ov=4't9+S?y>y!,k D9 狚*SX&x\ՔQҘvⳆa`ݧ]xNM[ɞ3i jf[;t;=^/xUهks~>5iO\I1Mʦ2I&,{32hYŝd4-D˔=Ima=Y7&a2r9*NMI5Zvwr3(]= 7(*O3'#` Q^B05_=!:G`w M7 Z7ǽ[Xd o)ÙXYȕ7dЗIOnrn{M 2? sS_Yb1ź;ͅ`K^iu9,)7)iZ7ٓspi S/J'1c9FGY1:#8ڔQIc \(Y/ 863 ŸH4Z:FP))E1d&6ڌDhXUR wË7o<4}QϒkDkR7 6mAU*q&l ,QŔQr'V`LjK}ai=if&l 7T:p9SFJl{MM Qм8%D2 tfN,JJTx:̖L&Ml& W>Y; 'xYr<~Vzƹ~sxhIM=ieiW>i#SLhIOpY/{J\LF0.&%3+'_n?/@{6;-j*κ2'\ڼduv[.5кA5d $ n}Ry›45G?kuv_fWWNVvv+Ut{"nl=0-wT:M~Qɉ߄鏇0:E=f^To#>4'<#ӄzGu]vm7QÓsNnXcF񧍞i'55vMwp1,Ux1cC;0F  E c%R+eK,F0YEk<>|?(Z=Vr魟1Mu8&u;EϝoкߟtϗJ15^|yS227 I-ݫ.usRus:wYs%]]i벜W'oҟ'oVQiI+JJ)Z)*J[137LJ|ŋ!ho({ Mz>9Y~_zGz|_v&:_[797+ht:|kj6>~Kw{x {[Y^7z6URH*k50̈́spf؏n),4g6[76ND:75')_djCnתzѭ2ڭIU4*UE*Ox _OÉ&!&*T|.-~F$Sz9oO&?$*։>{.N*K*#0|C=o!k' Y6HGR'ZiBQ[3e 9xDn';~sFhg XI<@NXO7}}6ZO~8o(,q\zZY;HϏ5f|C NܓhO ֧>Kې=Q[?i^+t'=^j MㇱƔ=isw8`ùV X`3 &&&9ƒשr{<|,0yҴ,*TQVV>#?:iROaߌ&zbtQb5>?YM8xo:'$x짢:YpqE8lxCl "}=!G<>NlG2OpOVy-7<9sd>Sj_{OYz|W~.W<(dAD'~+NI(OܒGʼnn[}!wI'xz'G=>`pBwnRsdsՖs> y4/DFwѶ猆5R'(۸䟡=`yxMܷQogqbŎ|kw,nc>fJRUjRUkKTʕTN(;os+sxyN ѻ=93nt ~F}IJ%rOVItzXL 䃊41x2l͖O|>K&3._u+ _zy#Փ'9JHM?[Q#h]FUV|EU)ꪮl.yu?폦\4eUS )E6OI~sk8a_ө6UZ|s.jv#N~N7B}B}6o-u~Q䏲l3>ɜݷVZ5eo>~7$o'Y\k ,k y3,i]"lumh~>kk>'v}^o5?iJ(N'Dcww[wیk=-Uʦlw[ﻌ>wpVSѸdN=}*o#w^#u^N,W߃##[y{~i>ísN:/ x..쇛>[lPݴOK:A77L›'ֹp[Pp3 NOG*2Fcfx-xZl9Q85M=j-gFOb#d?jKIMQprܳfyQ~߇>7u=gw|>wȩo'(c:\rcr 6i͹ v6Cd= !FL"eg㏟5-jj}ĄҖ[VK/?:nq8坑9)|dji 7%Z.7Ȍ<I>8.l6/3 ݍZ=M5sTvLq-ѯ7;^diC6qzyZgɀf0CxO>xhL$%?YϘiM[V,6ɍ=|5>}wy1{{'$lSCG5'?ybŏ9s9r9z?q<5Wyv=x?e˻3Pd&pD(94GFx#͉Ws!luڽ7_ͻ/sC'>Fz^G>~ w>_ Әqn[sҧ9fГseqM>F}Z9tsD#g',r(&܅!D7lń}ht78ݦ<nx~s3Ʒ+>[-l;B麩<$YKKs|<'P'<13:#07f蓂3Dߌ?9$'lܜx~֕Sw'Fn5MTiJ..GF-O 8~ޖw)ȚV'WΠG >-}ґ&N=r9bnUx ;~a={cL8DXG%,K69tOxR7fM>R9aVJMwUx4)\Vzi_7 ˊ\KMՁ)+*S`i='{ϵpFA]k~ *;w ʇwWojfS&(N%c.: S۽wfY4s3+J;sD; ;j3ۘ7r~12SQx=Y%KK9MIC\\ߴ} 5`Q6x&7StTݦM|np.,;ŋC<\l<2k뼇?q7UtU6!qFUU{ϟԚ3 ͪEY%?87mC}+'rr5fxw\r9 |LM|(͛~9ǘ}%Z|z>\ƪp:іp#O{vqؚNG$;nd8A3zˆ=Yk.ZUU,uqs0h>ØWrܷbiC0xrGrgp'Ny DٚlΩ6sf&<HO,؞#j(5B 8 a6R<'5濏b9zYȌƛɾCnԞQCxn4g8:Ddp4'}f{'\0#P_Z^s|z#f7TCyM.CxMMuқwʹ]i$E`4l#\)Ӟ6]/̢tOsC`07~f Mvue,x`㟥u$՛ "|E|? ?c`1( 893yq'yJW z?K;;>MAifq$՝ugB`ՙ'pb3#'+Yn䎜TcFp=GmFsoSuњ6#d՛6ؽҔ3 ~V>&9ןظ~#7Chm&5 1IynMw0G;dykhO?8R(ncPC'#G|)ڟk L{)3mZPu^ruq-g$M(=AOu0ո"<GY:@h#gjH혃>[UeNa<> G= vӇO tuI3ثC##@QF@j2YʵZoGEaI,|I4?K+ݗr[Q 鷎޽ܳkM9q= 5(rhYh"hLIUVmLĩvC{q7|Ģϛdi<iE&x,e- !kWF_F#:|x3#4:OK[gVYgB95j'6\>pxfR?Yq8jktac ۟st,XK 4RicԕJJTTUJZ*HMiJa(Fzgǵ6GSW7W/<(GsZ^:h>.MXrNV,xr,:]Ԝdi|^F2vZZ[ H4o9*9H}>H`0 9hpIa-6{Nǻb6lӓ}zcqy3zJGk&NjI|Z>ɢ-}S ɭQfaطGFn8x|V.,E3u\HnxM|) y>x]QxhOI9O9y[a##z$M), tHhNzpiĽ2zQn֫w˫=|odx~:1Ϛ|xaHdpjsDOi韬Ԟ,~bw:n}#==>16CZl͙0rDQ۞4F3Λ\<ű/0OR<0N\9{/MuMʔA_=՚=WhsŖj'^N:LGLm7-whZlEo]8؜Opզ;ǺZ=ljNsOe>l>7KuOkmlr;.Ǟ8&[Jow_]} q۽DsIjR;(vc;Yqq~oq%$JҪTRԩKVJ'\4Odڼsj;Nl6監j|~}_?iGCM?~W<š}c_[폛Ywkv_wx8:syoI6;N?{ӝ@TOƀ}_-~)+ G1|qc 9hk7=>|fݓqzvj^91?u?s} U}ӳXz6.$nIU՟~ |=dbGM/c#Epst\콉9='MƟ8tLh}6jp3y<vxx} CUfyw;9I}.heU)H"EZIjU%ĵSi$no}#!o>Ob|'"v!OPi J,{Ǔ5mo@M!N~m:pj*)UT;8}O02}B*@7CyAH96N=a>p9}8"nkūy߲IۋΠ~]ؓ4uz}6p) 8Y½/yUX0[0vȭO|28N]nm4#DEܓIΝ4'%Ƥ۸ZۋnH@Q8S}Z|8t;Mz0ht<\k$ޫ~z_=~޴3xs'FsOpG6sf9S܎s'?I~(qF`7S7ZlgZ;wwAƦqaC,3E+ZXU(6-9?uep3zS'rG>Qڷ>'Uq#tN]Lb~؟;;99Tp"|7S܊?)xxbŎ8O:]{G}ɭ59[=K= h#DH]0f ֬N3R'r$ބh >1 )ΣuKO\91%.lo{>C`x1a4 {=%(Ru41?14O\ْ?Ody/qx{4ѥgٍ ~>hCp*i%$׷BI歁'~d2b2Z n`ұ/(#&\ɛ5g4`dkZ靧ȍoGA!c#r?X5l#L6?ۮ/݁[h$cHܰ.!O{YEps,4R@сiĦR¥R%(ƩwY02"s];k&n8x[=Uӑ2L]O2~G3یF0$OO8O\rۓk69{c}_{oW>d84 NNO :)yyE3>h&~Iώ gXg{n\xt))&2&N0G<%&RRJM&,Vi3tԛC9&rRJLGu;֙}6;+V߂vt٣I2jEEG?t]O뿾uoUkQEӋ~?7ѦJ$ s'XRcJIIqM?ּ0N|BEN8ߤ;vu"8! +LM,hFsnUZ֨lՏ*S'!5 "Ze܈NH6DۄH공] 2A5Ix,ơ:vy`8֓hݜiޓuhf`jS8{A f6g 9ʣRњ8r9Sr8bpG.p}4-;s# y8TP @i=Zpgj Уga߸]t:CE>M vp|a:W^ O8C= FUvHg3ϼ4%9S-7 ʦ)9¼<'N/ S.RwIDi%'N9I7yI%N9*IJIM2O&J;mʷDM9wfAlTnCb2s[i'kB'8kӇ_rR00<⌱64UޓKjQO$O&r&M;5}u[׬Q&X jd|dufY4z!5X )RN{b~gDe6é'i0 蹍iӄbkTfjw_u]ɰ#ƙi&Gw,sA5gNhLijՃg>65Rm΂v3I3j'746x}VFB`4W3qfͩ7RO)ﳈ 6{L'3-SŭiT=,6݇sVp)\m{|x|@a@ǿKfuObMs$e&y󈤤k Yn,DŽ < E0oNy3xS8hn(E%7Jzǣp_}z `w7̶Soz:ٮGzevekrlu6SzSHr;U:/-{Âkζpg$vdω5sbq㒑I^\Z,{FHĔOO%91krdQ$0L$NXdfykIĒI$ZB7@O?7DQ4]$U ]=^Hj 49ˤnQ $siR'M EGG I$4>y f T|#QtG0 sFtgjK &FӱY;]j77w 7!tiɩV<<\*\8QD(du$מiU*^v;!#p B1!Gx/$x7 ƍWْN0qg8wҌO,jEؔЇ 03##x"?xxbJM `3;ӓ\}Sx~c~.[zn/Np3pgHrQG''!cdlWVwu*Cj0{M)F-0N L883y&x9HN͢$ I9+YWAjxize1wX0r9Z>mg_"v=Džeðh1[7o=_oO|Gʇ?g#=̓QڭәƼћPqé .F2 ’7!vmq28c Gjcgԥ7NdΏZIIj; 5fp7HhgӘ䤐;7 qDQ.^R' N]-R+@渞)aZ%îb4cw/y-̲z52ɼ̧C mZIj'>X}6%:|Ye)^ǥ`SL929b32u3&ܛ^7\MYxj. +[ԢnvřjMns y^b#S7GGE m]kq4UYՒV19c4aԏDIVkRqF_ M7Rckỹ`c/LC\>'Rhb&N ''k3L8U8>ȝP;bO+ܗZq{th7}bq&ls|NQ NIŴ[V(M(iO Xg<'&\G%C*j^ׅ&K&Ț &IpN&8ヤ' 9N\sZ.rmhIՌg0Fi%Y& p(2 f#2,d 1 ֦u xC ld5PiL3m{Sv]v;Q(f9s4ņۓI 9*Um2yƓ@nm2NFQ:2b̗YY\A9hlxߛ=>KvNQ&Y Y< lu7#fm6m/Z4|kKY#Lք 9n >a'wog#>:.ng #|PN +JI(Nx%{7) >:' '8bFi7R7kn.sћMj kePFș9'+|9m_ۂS"'`FQ몭 HJE&&\0*ɀO}W13#twgߍxxyߞVƟ/2_m}ۻ^'详s} 8GK[`᭟Mߌ8 Lm`چUgs)ʰ'v2nnh\O0N3xS8ֺ͞5{DL]cI06ٸlp_Oc-'HlMlhqщ80&Q6F6Iy̛G Fb7f\L9#󽮪QL2xfcN N5%WwUVejRsQ:9R82h&= xt'Dq(G@MC5$gBpd&X'#UVI>)9SHN1|Rszuek%=Uv|ʲ͇>6gCSc8eaUD@<,X(_j@/ h0a)Ixh4&h4ЫHɤ,ϗ4 iC jRՉgAW_ogoXgؼ{N>C>2>O^:mz8z[ߟuxw.]\gn|+z.ʬxsgyۓ|6FIIn t5ZN݆’ẜ>He ~GJE& %RQdxu(L1LP2oUEJ(MJȡ %(ѦN`F!y18C #pc $Ci8*qc VmϚEbFa5.Xo{OxӲ|OVDsC֙n ߎ q4عrf0LXGqqYQ\c6 a);Nppf#-w:Yhڈ*MxۼPq֙Ex݌#f6&9 ,/,e&Q3t06ujcFBxF3ίr؃?I=pJEҷu,sKJ$iNw+5č>Ik7\Χ~==x\u޻_/#痑go@\qݮ\wӺ|Ǖ8۳~~ٝ"JYVzasC  %,ehO:rC?ةFFDuQV^7G''7ҷѐC+t 6}R,9hLMOxL{ՄEn\ᥞ47Ը!>8|rO`'ɓSƉ=ipo.!doSNTQ&o>b;\+6c^Nhv#3ǝbc2Xљd+%kf{TuAՄzm}~g>&#=W\~xNxDdJa,f$; Mʷ5YuqnWgÔ#'QГ%2͝V곋73Cɺf$ Æ4i84@L='.sQY%:icggdNt9y>WVAŚM sC29ĉ<0C6"x˔dt̓j::qx썎r9Jv$ps\QEѼL웆gJ;m\ꓔio*[·pqN-ɓKˇ%\d B97 +tj(\MțIׅy<󣿆yԓ[505YVIEͦ*exӿlLւ4z59lli%hiuaJuȑϑۑۑ{K$9.:93`y׊D:2z7I,MhPOP:TJ((Եsf)p3]՝ҧC={,n)L:MC7VΩm؎>11Dߞ^9L]1X7RⱮZZ׹3hyFk@44yo=+cxq9A'/9Ϛ"Ǎ<G*^'zL޵JW!8&4FV61ڞW}s맓qߋvv %N?rn7kƳ=-j :e837>55Z=#7C=1ɂ6mOɕj]O}kMZb|a}y2Q(kWxkZʮsjrqОܚ'%'x}Ƨ$֓,[dlsWxNDMs%c\N“X7ô޶UVF-[JREVUR[OϠ|Ͼ>ܺ빽3tZ9Jޜ^:mz "wx]%[#:n^ZV܍hxByK}qw=mOԇљן7c&>8玂t}ũ`NVOb.M;;B`x2hQC<9Iy ڹݗ;^3\㜭lr>13#6Lp8W3kWp(Qʹ#ZMNjZ%vkyѺՖ;i{]p&K"# :ΏzF`6E6f BS<`}Uh-kUȘrmPIwDmI7q{:xä2Iic4 n9C5&Ԝ{&T8NL)MG!kÖj%JCu_:Y'U3N\pŞJ' }[jkI$EJJTieέn+ȷ\Wc:,y9p;#Z^0Zk-ޖOLU?Ě\՛YvOMpt܎JѶ:juT3AHMy(p1uVkH؍ZW);)*J_P\^d{γ?oO;괳mw0]~FkSφE57]o.O.N28+ E%EEE&G(MWK mgI 9ދsŻn;t֫Mž'ѓu&o^'NuC[;YUG~:93=M:>m#3x U\줐=ЎI3XO8t$vGLyÔ)$G}\\\Sjѝ U'9sQ2NsEf>~nuZ Fm<_qv]Go%sdgR8vrCy[*~ffneUϬp'Ua6Fn#jiE)duQԇX Tgef {aL~CG} Y6w|U^=޾}7yXϕy};]O#;V̿3s@,ښ8rk{UWQiU&NdTLY#U0yl ?$iS)*ZZmVUdo9ξs#DsGBxcyr4q6.$C,܍!cМ@#J6b'>I8 &VUHi2n/aU|1E cGF7&9<)FQE/"RIhSNO@Miyܛs7y6&z~aݻCaJQrl3!7Tg5-^ñC1+;x7bp QNfԵWcq*ԧ!ǩt14N]KӎwUfMIEGIsFN xo33kG'v} JCmtqg{.TJS/vÔ~lpSdu6cs=x!]>,\3˛Jٹ84NܕG.JZx"5jH3Ï/$Ϲ1CBеble y2gK$43D$x0 q2((*pd#PGJ%OQ#>&"^hIfQ 4ˋa.BZ a`qk4+/R^\f> <0 =*`7B0(2K=9#ÄpGxn"/(h)"(>)RQ~b&%$/9as@hmdHȗ%r `%MdX3^%x7cTpH >6>Po4[ddB8{Ņɥ9$id&Z.3/#b\M"PIגY71IIQ&N$qI&iׂ3#?LMEQohLSVjʕ*4cV. 3J!$"*RB<}I/N 6j8Tc3)e*3|bB^g4JfNbL K&n *51a6z\H“DdbxDe3e$){d7P{7h|&/ET>po4RDp25B^m yĿ/r5KѪ5ȍ#xȓ8'EjxO|Zjϳ7b%˔ƦbQ_ros6c0NFQ,GZbx0%d4K0B,佒6d#`5^ZEIhi&>L8eQ+zTB^hgƐbCN&beTeEJQIWx'Dƅᶘ8d.I1 abQI\&c557adӤM J/L# *NV,Xx@]''4_a?0d ƕ8fCc'zo t2fK Jz]f|}'OΓ':tMA,% *\-$PM`L?9w@߈}' F25rhG6gOTvkBeɪ.}c牀FyU-Ed_ᇡj$‡iӇ>(R%URo7'M`IyQ=HVwc= `sbpc>L$JFY&|jY^["/(J7^R/R}"c,P= #}pH UYE).Xڧ hY4Gy95)ZbbRSD/S`$ RY1 `Ne{A6$c a͐{r.cp1 Lr I FxNJCN(XCIlS̏"<|̅!|Ѽ=?㱪 t$&&͆F [{>kHZZJKJLfA*ZY(؞CQ-jѰv)JYRRho7ܙ}]4DBRR 8(M8j&!A`j\>p׈L # O$>噪>Γ#?DD8~4G!j/'vHZrjzD8m`QqHFE&|0y1J,tc93% 0CГ+JĶhpS`>]Jw֒7>rv#1+!4ƕ& Ц~H >DNJc9YqrmQzUZ(^,0~Xףp,#E3!L xߐ <|&PO$/ 9<>z)OHЇLeM3^LJ&Q( J>KTLeI wU#ǐ(n(6"mD֞ NT_};$b0E)ژA_幩%-.%E&l `ɆhiCRR2~b㇓ )/,ȧx;*W,ܪan0e`߯opjtQצ&Zk WEQEhC d\p64x 34CЇ&AF&76jHB?Ŀ*Υ8r 8HhIQ#ؒ*(lE7uC ZL1pzBA6Ckdl$o/]%\)G,T|aNq9`G=LBL*~ӈÀ:?4[E@q0^\eіi5Q5 2{=`5e (X(PC`kN,\^L"i $&lyE՟Xc_q.%DVDc‚HrO)&2)JcJ31,E-izJ$`^tL֑}EJ>>B2pybOH0OK$!@$a;!xG#=y?pDsz7ēڌzT =S`Bs8Ubsv!_ &@$mNqMt``"ȲT^K gHo{gcnc /֧,ԝ3yq .=bSM3$ne&Q1r' fΈ9Ob9˜1 K y&Y%1F|Sb7^[m%#:Sfe >2JC O3 %V + &C6<>3FhiTA,K1Xņ|OH0O,L?:e\~UUU*SF5dƶ tӣ 3 %ŴTAx8$a&M؍II$QS&̘IOQ:'?0#BIQ'4Jrc!#,n ?z8bp\|qq<蜳i>oWju* jBiS"^+*Lf[1$f5gt[0񀼃0]YL=ƹ)$~? _`"4"4hHI%DXg?CJZkʘgh&:' Փۓڛ,M'Kb#%$LDjV4C H( Z"v)\4%FI*@n&P =2?KWD71E/W_q[1Cz31,qTQ?,,(:R BvpvKp('HP$#`wU;3ιOGaO17# ^8Iݞryש^oW -t(.FQrj5bў75VW2J=)(BW;#tU ͨ8a/Xr^|3wmHrEf0N~KUNK7=1s!IfDkyS ̖~c0 K Ub&? IvF" 0eubjao6*.tzytوg;e܏LDǧTOxz\=x#=[ y+p4dX LNgAZ+IK RR`ʪJ``4~ ocCӲY=,ˍ\d.z6%=d&|&Ue.@iXzL>3&JFZ ]?\)'pJ':J}l KBJ,x<1Ǖ=UVl7[ 9+H||kkkMl=GYb"=ݭo}a2'4 58iQH\ y쿥R1)Gm6vJIq D&d!'}&g()S0>8aԥ*US=H5AR%D2aYKb쵪̹Nx2@iʓ׍GCIRpI?\htr4/sQu۔E/^)E?韷|}y8f'~,'1f3s޲x6u2˳dlړ5d쇄 (M"hOƑ=볏3`D!4 CsLM1oZ~{==$쵿-f{{z e\OI+2X;O^ džfFCh7>I2=ٚpjLB$H n5vNBX/tעUgIOx# aF#,M[Ve(;4IxL !P'ˏ-Dk;VD9;0tF+ŠXcۢVԞw%zf g)Xbd{a|'XQ4o %CB(t F p\` b /B;T`,&107sxH,xlO&E&6!D䂗B~WJi|tdL38KV20HގYYJU*kii#DBɖZk%k,BS|+/P’E.HQ-k&M&зmm%eYjgoHZ$в ܪ%OvzsR\L$ry.|w] b 6lf/J$3wIK3ˆ֮jUJUbUmQ("gۜ縿V<{Jv eNt(`K>M9:VE%[=@X`<ԥ"◧4A??~'cM|czU*v2QxPPR`MH"w*M܊G*dc:po\5Ǩ!҇o[ӏ?ГI4Y+]uZaHw :'}{Ge[Ekev6>XqƘ(5O;O /]ϳy7]}]u''&B7Sv8R7Px<u$LBzq;&LĽ)BDI 6c}OzY,DPm%"pʔhIb&|KR(P?=# >p8I@Rx?8 3iKTEU-KovM xhJR%RCYO>7$gωҟi10ὟsY˹}qVg~5 =yW̕-Qc(Q(QB阮7a2#5z.O\g .-#{Z4z@蓋2H<y_})+.9Zk~HAlr<Ցo"K%ZCʧC&hNdbGN8l#Zo# xa,M=/%q$Tog=U BabQpRRܵЏTNS854ʼnFUU)]0X=xFF|FP'vCvLndC,ð wiE.vy[me߿iVԪGKvpT"߄n=.]OC6gl8pݘBɭKc,Ypۑv@}GkoZedBm5ǭ6ceqox(aa|O<yIJURU&֨}AIjQTd脙Ӧ2x# fG0].c1kyι.Kl/iHZJ=^`,0e0(v)&fb\mG -oBOnXZx /(O^P^&\S !JRRK=4O){)ӧ{8<`ldf/mXN,(KJQR℗&&$Y8h)(#DDLG|#Ŗ\(ɷb#7kjdlwd›UG%'=.$OJ^lUOX'' ]Rǀ8ӂ=!b7 ,b̒&aFg̛G3ޗԌo>z#`Dw勍KjOr:9PL7.Ox>oTQkKJ(,xۢO\&Č %x=$$kL(ž~>P$v#\{ҒCrOC!|o߿,~(VUV]TwNw]ַw[])+VrI !6_scn|~aYey2l*T隒uTKQ'f Ubj\#BD)2^H'&XIa O| d怞EcB?r ݑ*C+0K,lƘf;ߋą\-v[S 1b_HII(N”tNMp9pwQca'`1a9+!i%+&Y"&KlϡC v}HomuKZZ$Zk- DIMf%ikY$HF$# d!i:m,kjK-"іVZı,)k% 㴅V*%%4ɖVE}Pϔjh|{ޓ-mmB!>9Ĝ-&xxv'LG$9xNwOqD tC( Y0de`,&01`,L(X(XC,e&P oNrI==9kO79z=ܤRMOŃ(р%2 `FȘ$gͳu!NMMͱSUUշM/QEP0EEGM2r ɍ qybƄ%N5|c0,1&t!T|<`}"kU#,͔7'',82mnǙ?[y*I,xt5&pi :u)cc*3CdJM1ZYTUZUT|=w%EpRb:Fc%1y%-akZ߬>l!0\|a<06)F6(}kQT>x$8 l:ɼNx9ȟމQ8tRF"^4"lS^RmEOV|-LN} f$ hSrlKZKGaȇ2< ŏz|c(bŏ.aajORh{q8H`.% jEd0<)?-4]h0s[qRzuܼ7oV[f)%%'OoϪ5&RJRYJ|/U/7JU&oA}Ch$مF3&Q~BvN6$֛l 3 !bǀq\\E?cS0JygG6-enɌI*Ԩs(QGp@3q$I'!&Ed>70d8Tdp{ e;,>|_@?O">䖁q/>oϮ+?"glvJKU+ B,D^,0(z.I6&P$X!ԓذdGx`f־SţH.hD',@F!NF 'cw 'H)'%ڧ7Y ?Jl哔1?Q;Sd}`#rmTL) qc2%Jƣ*S'I \Ҋww <n㶚K0V3t@X\^t1yM! A)#hf̘ AAUTҍJAMSQ HE0:`8X1RkRRzJ:"Dٟ `1TkOJ(O|4 ,Ԛbs$sMJ\^\Ft.`L@ppwu>*JIQ%Gqd$&M8…`ON 'A(Dt;SƿSdѮ7?UJR˜{W:;>fe~]k/if0d8b0 *̫U6`r :=ANƜ)]bL%%1Vz`4]NYH$9d9ŸXqdxz{$I'}=$=Nx$Y{${ai$w8wJ[ǚSܓ=L 1̉<94cEX\it/E$퉯o!F{?\/ٺw^n(:x;w5{aT& (j (J^7 4qZ)$(JO ?<dHf2 ޗŇ!0ޥD&Sr+J&~=55mARKypcc>D=۠?yK14d%\Ic8RJOreC_,Tz+vΐ :TSR?lt2RE`|f~Нe=`_0A,XDoehHĹ-< X{!Rώ|jS@-.[henI3,/6'64<(/:0 #,b:.-0!$oxxoM((\(IPE"{]3JmI*6D#ЈLhM iC@XI |6>k#bH(PU]PqEkF G rMsM2eSZMwy⬛96Rr Lc!ɤz<DŽJ-M"iJj4{z`ɚ6!"4E$% ,,\%F(\sg";=ש|n9-Bz 玏=142gG,X,Q>)%EQ&|\)\cp% V|ǂ8ԓoMI2S0uuNݻ;M]=Rݏ4~ ,?كmdqtT&\~Mm hL%J7Ubh 荏G6qW?oC7|$v]UsUxs^ux*UBG׏^3G8%!q6^>n^N&O&\N(Lc : ċɄL bb&D,&XK (pXN8Q*Hot3d 'QU)IT7rXF8#5D%|7]ISߊc.;u͒*{%S'L/ĜwN=ç(OdEXor 4ds, {A7#pCx"R%"Q'x`hbc c;sR(ikdmQjj6iVXB~ 8ѤR:O=IJLҦ!p+Ax2X%$(5F6KPR5HHXy$gmɖ5됎A&3%(*>cqc>JT%SJ?&I~GI? :KRR+$$ݔK(r =( MܗT =!IX%FOa3(D0 Jpc ߘ ՛@c,J/&I?&q#|Vi+<^ !|c ߓ>&n7RXPݣ1"NNJI%bO0|f~Ap{T֭j{MqdsKǃƎ=¡P9&܋C!T716ڲ-Zi*q<6xg!<qz8AAHˏ#p,_HQ4 76VYeDm⢣] - ޴43<Тy?:M $4I=kVӚSX8ᇈ9bj &ؘXGjx^g,Xzy :*JTa3O:|~!4Es ,$`JB   `u-Pe`7Cvİ27\Q={C$ξNG$r$ξqG\*NiI=qS<=7؞lmLSW u6iQ'"h =*aB7-&ICyGW鯨җ/'8|h\,X=5Taz*#r^MBMBjLL֌2KJSؼUUTIL bŋ1Fy/,Xq|,Mh"`X,E(^Yz|."2xӔԼG%I˽)\JW|oCDhAޑϘ( $ԚQء'aV[]ʋ,Kp*s>|O#?r3_&yۄXH) 1Dr^xyfeI7vQg> ld,o>08yp.D(-&%E)w#qx!/p8 #""q=4dIItX KI<QG$pjKUh-uy9ȸ\X姀>AE~G'&A=)8Bo$P%`&}1`j 4L1qS&nn&\'ڈR VDmsm'I(6*qg;i2QKTؤύHiBE@#&%%&wS*V 6LRJ}pKTTXYK,z8Z~5p8Ј}"eK/ tG QXŅ(ġ<7RODlllRoa8z”7B{и %džTi">'R$$I%KKFy"eF ƃ|v/nJ.ב|#\X~5O~G j/=z_)C yLaO,Ðh4&vͫb-dso/VU딸rƤ'V!RLOpa,tR9R:υUeYj*0@ q_ T=_\/دtrN‡|׍ $N|XS"RlSf9Q)%'EpQ?H)P7aSK=I3H PI9e!t@ ?HDl3LgP,nāI,ЖI߁ Geĉ,H=[A׈q‡1fdmc8YJ%Ke3϶Fa3(( a ra/R8e0G7,X퀧gYGG|.E`.9b~#˔xXG7Dմ.n V7/yOs)x;Iԏ$MQ>:DηՊY D} PClѳb^M1pOs৷G|G\'!'B&k10HPM!(E "|!2L {T{`I#1Ȕ%(7*i)L/,1V&`4C^eY>z>}DWUT'(A&RJF0|e2LAC% T[f 02  ` "Aр0T) ^T*^?ސ aB֑MMMM̘2̹&qa'b;REEe"8z""""7{zBPIO{r&J&5&'DՓ?(`=!Goc/u "dMIrughg }%?pUV-Mg('G~hq'YʜyoRM_ƣl4t҉yq(`.ʕM|c%&2K9SnEb?sOZT_XSXwnⱌebcggYV~}MUj -B"ě#˒&!,~`OTVQ ) Br"XE%IdJXJ3)Ld 1tLa1'#b=>l\47dgF-z+әBgKq S翠I)6lxs5\>&Jh$ʧQtJUIU1,Q2%uz!0i0ןb2Iդn.((943q.uO|f5)uQ}KRYMҍn)1%*) zG Dԑ~p7QA’N(LC+pN Tu\rp8P.$ ` ^(RJ2V[*̺w9KQ8R䜩R.S')7FsUU{(0,zud챜g GDE(J$. DOKNM7 )MR5IB(FkOEǓ[<9͛Ԛj0 ǣ؂"eqH)bUF> ]8عu c3G381Z|\(}^g-,մ[?vߥ5'jԩJ)Bz4(y4i/Sϧ{Lm(tlA8CNQEQF^`HƾX-"%I'} *&b)K4dXq-(dlf]ud'\MY2|!3&|wK0O\gX HAI"d(07$Xx_Ư<01M&:#'p&iBe1=4DsF1[\&>D7Fw 0"V+seLOBa&Xlz9n-8>zR8}K[?o3-<3&C7#P $!AU4La~`$p ELX쌤@cCI(  1IUnѾ{==h7O&\ E DL"O];o̙pz %&(r<1zfP lSflȸgƔ (Д\C*YUޑ о*+uҜzb?XQ?yʕ(L˓-4yB>PG|O-:4'; ǿ'<d'.tȒx!#G ٜIM.~g?PݾqJ5d% ADF` 82^ݎmA2ȓ2H\|GіGp&od({X`fiKz1޼^OI gM<3$RF[FI%%&RqaFHg zX'jp*PRzyLc y!6N<:1&OzOx)NLobQ"5dNӤ7Yp #ډ9􉛟 -O"M_KKI>A2 8ye H1 Fa,FD0{,K՟81JK0V$N$=y4o&2Q˟Htb+g:O^g N; g.>Y~*[nI뽯m? TKNWnLi;S!Cm!om[E~G,dK,dZIo%-yKKZv%Z$T*y撧̵wx-%ɖ}~! $KHa?< BX Xkcz%@|bB#D? 8!nYdZ7|ԚK}Siy-d>>k&Ln_I-k^3L$ɟknuky'gZҹ[Ԕ)P8M3nm"NbMiUUTU} x=%IK)DL*#}8ğ0RR X$ ='N3|W>piӣ3(}O BQ(JBX~o)dŏۛCfpD&E ۲;$&bd2 b{gI!,hISQ1LI̡P1f2&t1>`Bmπ2–a TTe CBhJ(m`4^#M (P0l&P~(eKmó64eDLF[l"Fgݼ.",(I[Qr>"J*Gw2ISO\^/}ZGs'',wVG]UtJղrV.NJ8Fs8R"r\Բwmȭ9DsBw+WdV⒑\RERj-9nX$(3 (ֈudi6#r ýN9߃;{x!(=a:` c {@&5AE[p2C#ʑ7cut=w)Ғw_#Die^U%7RɜyhRaDQ4@DDQ2(7l G'.#'&&z(4e3 J$Lq%E9#Ҭev^>ZI*G"O-=pPϑsjsxP|j`n]*%N=9Od>z!K51 I*?c1}F;@l}#~]q{6q0cGq^/H~kvl$Q=lj0Lzgd RРlvK$K$RpGU':}A~3œ.c 7#)!t?|.Ks [blj=<]MÄ8Lid;c3-$7sil #~7 )HښRQp?T7?W ' hRr$M wh<ذ|X|8=GzYA脡=223JNhdT^!2d Y5JL2%)rYTWl6ÿ&7dL 'X.#2ex`j|w?R57A:Ѯ#(%l#'O!|jfGl> 4ܞ<׆ԇ<=Q1eĞI<F2Š(w$YpM?N P2e`QC\FQؒ9sF2HS@;3dbvؿK|B|߁\OJ⻳?y3;gft^9cCr:ğ%$IiHz3R=^Too.=Ѥ|! |# ,Ljmh؏<&h%JAy=!?)|rc&'"Q*@תG"˱磑"yʽ? VOvm &q1I ;@׹:S5!6p9V.]YVh a5'Jr< |QGrQ[RQ10Re}b0}rbTЍ1eZHցG1!G(X4OOnNO d|d:diE7歨0m~PxڍB&RlHbfN J脨0} Zq4ˉiUM ` SD" BP/^MD,JOhLQ=HLK LWAy/&I2I>pKɿoDzՁEc1Y+áb2QTo$zjM)QFʧ(@y9x臜#'7^,%Ȉ܏i ?Sj^Iʆ2"XR qFQuGb*'{xGgⲭ67gbI$PONO`f"a'89Q5D&#$!Lyf(,d(H.?w98lmYR~^ vT(~ʕ+Ò@# ,Iԓk;K%K܂)FA,X⢌MK(t0)w]鐤5"|"掌MkHI,Fx(,,<8#<xgCC |F7QaQ(^$b{'~+xhf4L&`&jN#͏0dI$;dؒON8 'GJ'&q3 LfD,&i;p>n|x3:v'<8F3fQEQ?+1%.,}^X6EhxX)B(iu2fb}Q0ҷ15㥍Q8402"OO"fO֝Ÿ>6bBMdNomOCMb%HPM0h '2p$;罩j4IJ~-)*ŝ]>t/;w;OtѩJR',QG!$O$Oc(KXn/Tml( _$鵗NH0`H% cQMޤE4v)ˤ1 !qzR}nַ>U9EG-Oi%YdqxLXDůX|RxŤZyeTX>}Z=*Rzh<&HB}>͐%-cf$0 ʼnž-"Ģmg޶=|U%?F7sٮiɟ$炓Ǯp,6.I)'h&NON-p|Cbʪ'Ì>9I#܉DbizOH'6~P 3ԶI<=`p#_j&H}TQIù!ɭp&$v5U*OL8xQb|3&95"NwǁC$a`z`KG$bkx gFm~c?T̾F4G^VQŚ(4ݖmE |޽]V/ٓbyWX^E%ě4O">,c6ly4dfϓ}.ӲC>$fhLMac6wRNsؓ JqASО8@.pMsS?&DH2I-J*ptzWc3b:b3p(YfQz^^SRK b(FE ecY/zpىO(^EF**7DlQH^zIII8<ҲF`ThЍ)വ>%Ro@>'$qa,B/$( ^!oˉFЌ܍%L@X&^iͩE8G!>@mͅHTO éQ"N9JOLi쌢>4G&!CӍ>O:?pi.BP/jdH܆h,mӎJl7ASVwqTթZE)TO/˟Dm~¡n9 yd;%5kF_94*4A=1;bY?haFbodDx x$|g߭{@Җ)Fсb.KmjRxGwKJJ( R'}5 ;]fIIRT̠"t䌶J>ӥ'F6QČDIBO4;bNpc'&I&> I&a<7V3IғQַg~O8IRfܓnhr{ل )I/lp0Z4 F؏4q<Б`FQ\J s(g\X4bd2X~6ʢv?xU+%@BI2 g*У4駘gcJkőkYֵm|ϼԩL2,-JcԪFMӹI8.]A.(0Uj-V<2L̉Z9re&i!Dԑ'A%IRjA7YjV=vR9iIIzdGhI?{' !(D";~5ŋ̩J08Y204774Ԑ"DЈQTXq:q-'' OI:?:fQ&Ț!ƍʑ^]a6"f, g⢣ COЏfe6_;MGMփĉ<( ?{i׏#5%&7# 4kއ/ HO9$ACLNgU**v3IE{fkZDk-EZYkZk$ɖLoGΟBo>=&ؖ'9>ө^l 6"(t} $04oҥ0jcrDKH\2ġq=1c0%`,Y7ZoأI;YT9U-Z޺p7z'z5ed7,DLaAAH#ĒѲ7)E"b+,Zb(bV0ϳW0Zt?I%LEz: B)M> Ayz2t{26F[挌|׃ G |Hxpg.\-M%U'?ʺt''$xטxSFv$d=9r`МV?B Ihǚ=b(%'KyEpܛǾޢlƞ3➠ŒmVS&d;K7ȨԎ,M7%)ӧme"iImmme֭m(f_a&a0z`ŸH,L9eRrG<ݝȓ؋) Iaƙv}iu1G /r83CTHHYDV[/ܖ}@J=HJ7&K.#%Mbp-`KF,ETؑKȗK,qf `YKNcm bQUUx)F†P9?PO0aT4#,`qoZcٰlErhOc&_M A?HdfRӊOS6))3 c!P}2~X&؊`,CfHmͨw6#> K>-K6kBQDѮXRxq>o}hx1l,,3O ˷mF\DQϒTUD ^$T鏑!>Ծ舚]80dQ(ʜBHI"s֜L=awO?=p0.5e$q?`mmC!}~8zaqaeC) BCu 䉺&''9ѩ b;1 ՛X~av <8">Q(beM2FChOjFQ5"|s#!9ݖfI0D*BɟE|H?{qQR)eRA?D} L#4F$;Źf=Ռb\S=$no*T ⪩ }q>UUV $UT8_*В`<3 g岱S( yF( MhG$LsL A`$3:5.! JA۸}bIy I(Qc v$# 0mco$DѤBa78Q&Ǟ߿ }&ް_{B{SL0<_`2W:%K,B\3T0[U[5d?IFnP=)7"n6ʡFI03  iK02_ cQ93"׌?(>tsY)jU9OK3ZqTaQWx7%1ZRqTBT(!"нR`%K&a&S$=2 ,fsz}2`*Xc!cr% Rf/%#!OLpoĜsՙsH|Sv aL)GiNw43ϮSdNGkpPR48 CMRUK}SQ+X?oi*Də$݉bXZP$',Ma>uo|qB}#w$!I;DeD>*| 3zfYcN4ɞ(>MfS(mg?0=iEY8lUkT'y2<.O̔2HdL H LNzꞽ$TZ_hbu jDVڶޅSKIiXʃL~jp@r0{ax./,Q`\0 IIz]WZ) ON9AHIIV-e6~ ̃X/GF,dKԪUNr̴!BQ7O4 ª,8R|q-Bgߑfʇ<0qD&x#%Gq*=2`BoJzt骗IO:QDyyu`9z1GpS:n@\Qq.NT'8sʍ7&zsxbx' 2#F6FrwhOjG&!1 'xus17~5Di? qJ4)8~{"|O9~k 6 ,~``-.P(MԘFx݋k0M\SJFH%6.T4abNP~Ca5LK^Kb{")<>a0|Ό9ٔoYٛѾ+魄a0,,(QCLKFJY8r'Xp~lH~wlɉ2[ jɄX.\ԄìuRs<G~ZUd[R!q)Eh5DDғ>>xPH$-EJ,NhN ' 8z7#=hiڗ<@JO' ŅQFG/4v#xOg2}ŏl[>fD቎cQGcQ=Q ;r>; 2yf6[|̝y+tG45+Aͳ.>9'&>PҼP !=,Ӵ†```pIii<~mGa{O?yybiRN<|iMIG9DR>~h 3$`:|%'{y0&=I |Nh',2B÷ϓh h܏LL>&bMCO>`֔mc` =ZO,}?|oFQ1A'&x7ᐢƪs6!EAC#)To* 86@ dP uPQ(8)F'4M{O}Vl_Z*#%&%"' d'C>ڿ[yvqsF4n(?HQVJϿ lHOKHIh2OW2XO;ec<1'\LgVi(lT`ѥ)JpgF\8ai&@݅RFPC<ݼ>g1IE(Ϛ&IOLtdLYU5ꑄtL3oU_QIdka/x"x$ʼnBS @MQsf$?K$^$n IɔeJ..ISL\\Ǜfz4Ik|og010W()*(D,Md_kZ֣wnY#DIM,_BO+&>yU0-* &\"Pݏj3o|mq#gs&xhBCxdϵXjqUJ`'nRRX "ɔe0 JR`2"]!rKF0ie ^|=iy%dNg5dz"tR誵Yka/h EZf| LCa7Fpd QDP>1.L ''tHnG#$NdTizۻ=G< yҼ_zR[3%r0&<,?i3 q{P0G$0= uU&[?gvw7mۿĻ"soGŬ t]LODRRb $j=՟n}3즪|{bagQ6̧'$ڈ$$'DEz4!4'\EN|I%?((>?MYQDzJ].Ho.3K:5Ξ0G;c&2YE<̶`=NH''9N{x"rMOgԙ}9DaTXP0¸WYeOz)78`=LՓ'7:z;Ąee>}UK&=rvȔRyzA=itMhrGgQkͳ.:rz%GJi4sgFG MƸm7*ok o((ChDG֍mm6w!OF̙&P&/=1=Q1(#'&J0}{ӨfNz R qiBd&*[I,L{3ç%de%̢ɟwԁœ4ge'hɈǵ-ee)PK`ϗ 3:đ=r5'ngLMrze߅WT\ NQX6ԬPobe XTOxbC”ʞI{dOO9FU+ &5}O7yxqer "bg׆O`!j}!ATOxaP@߆1t; &pR ~Ĕ?7>FOfҞ=n`rï> # 䋟kII9(z dEtE "^æ'9A٧&Iq2'L;J#,S[1 "L2hYfd{DjG% D>b&ekQk :`TƤXe:࠴OZHs"J _)OJ 7$j*IBd݇\G>oC=~$C3?GX,v#bnE 806Px7-)1y\O։ blC2I8)jɆnA3 HIx&2e{Rz)R:2QGӆhHAvSQKS 6acx(h`Sv #|<`58٤5$#@&v) |M('ߢSS\Bc>e\䍁͈s2ПH9ҟNt J"E Ա* LI{vPõL o"X<}xpD(\Y&ra//((3E)$GFX:Q,œ HɀE{:)iV0_ppBNy=M%a+(O&3 I $IC*w,6FdkEO#3IB뜫RkZpd'`K'60Nrj}JZRJߌɝ2v}M NMa2%nXJ&(n dhN3'GщIpJOKQc04jU*:2QRNXN aߊutoGɪgGlOmr8''%4%E Ԝu/a M;B,TM6J,jBTTQ70,~?Z\>(ф8P BEt"vQ+|]ҞPGx^tkzq^?`Bj MBnI0Ӎ) pdEmc=s&'oOI$GI}~ ?aLqELib&^r0 ɄYT?('_<$Sm?'7tҥNTS&CvBӼ$%p"{ BXUG(O2ILP=@?hDS 2 |dž FǗjIJgTԈZ2&6+HNb=H,PRyHoC(snJn)JGD&D1B(p6 {<=$FG&<:!@a{a%?HN'lZL=C{GG{$IɢNM#I04~j?f; lNO&ճ<Ո؍{bjI<ܕj3 $L%I$sK3 cq =PPZ6G}M8RN srE;Cz$ ÓruQIFRI$Ț?3ѢDEFkJ=QeR]zw:Ns~C!!$*x 6}Zތ z!$Oxyc0!ɦc"qxa6CJi퉲&|9Tz (Q(f8ȡGL IbكptRr$CXG&cyw,6"z.'Hٵvqŝ9HGԏ {Λcn7C8!qy?dǏ &EhϺySRY5ngܜ"3QY0_{2e=8 Ƒd,sJ/^37Mw?f.Kus swwľǣ!G8{O0ߴ!?)-ptKtxV(“@EܘmDֈbxp(oa&7 QG oIJY#LA$<՟t>;C'}:D4;=DBĢZ$xw) % NzC h?ɳt~#:iES GO`O68hْ:rj&Ў0oij8g2p3UKNc*{w7q'"ky=Õ'B::|:a7=S '~=gH3{M 6Bsnar\)8E&}$af:(M' zҶ`[йŞzq#<C}3`2NQ5SL6cMĘΙ猹 ׌abCPNViۜ!qq,|L3 re!iyΞ|S)k7Bϔl;sώX]մDpLwzN9IFY5d{wIăT0=A3xb|둫1&dHhF#<:^MO ֙ncV:6C>'s쉄4Hԍ8#R}BtC9ƕZ勊@pw1kR=nLaqPp?ᣄx&kγӞpV=$h]hlS;e*QJJ'="`?w6SHJQ"N X$DOq\$GQNI| <󬌕&"& זI3l.3S申P`Y&9NXXB^L,גkIDѯ#HxxjLqpdbx2ˊTE!u?Uk~G?N?)N>sh QZ)8׃?xOJQS^pn?#6jOL10>1<]UqNN`@9TgN Jb#&Hy7T|7p;bq2!"b&$Fy7)|[ h㖇~HX,QB2k ϑi}٘wG'v|> ir`23. S=*hLKKKMIpIɤ4(\NX:<5F7 % !M^0(./$/&i.SEjw(IG =9?4a*Tyk4to'UrZpȑ@R'=,(3Ć}<8-.,|T -K&"Pe^K"HFL4f/Q,hɣo 4e3TB`i$5À.yA&9SfS^̘Š6X^\ef\L(R3Hc9g106R6ǫ,f7iaxKG|JE&C,IDf%I|3 AڑyUZ4!dRe'&1bz(QFt$SJ6n=jL'82x 58'LIi jӅ6'bv'bfV*c#6 "qRqQRTs$sTN ̲p$Kjڲeu\rJ4$hm칦y9#nhRYjj$ЛL...KR9ʼn.L 9GPLc婪p)LB2٘fY}c#>C:hБJrs&Vel /zZ8vh98iɥLHGn(YnBxCӛɒF'x`QA N$f`Ӟ`\Ĵг/|k drEAGgƔtD2J(ޝI,6L-K8S09Iȇ@kKTx쌉40쫎tGt)6K8X3:^jhuߑڥ"ZI~6ދlSѢ\6jFQ(:dgxRYE3ɟE%#$g#~#:)))%#tnK)g<\Yab Yez3M*M1)%Q8p3 F1ۑ&&%48M0iq4a _P[S,f kIѧ$ >);0ҫw7YRX֥^w܁\Ѯ8E<))TA2 gHiyxisDÈ,2 Ԏ' LB"hݙC>tv61H<7q/yY:rOH>I4ߙzB=!OOJ"Nb2"iˎu;MsŜj-“HSPs;507®m q;F[2M,'p2DE82S~:86y%)=zܛ^(CD(`" !2@ dϚ3'd39nn'(q':\w%T`2%Yc ɚ&w 15P7%Y5Tmk%n)Of9ўV][a&a`Z)Ms:ְ2K.1MIL :&>jB(5pvdΔI4ozΊ,QbOFpb&j Igí3 ikX(T;"\6PiIsd)G`\cDhLhuĘE|ɹZۚ6iv'#v6Ib5LNU7=ws-sO'B9d80&Chu%<'^\v-:rUvCr9b,4FݽqST9ap{s.yB&s[zȾy AGM9! F! kKU)IRM&L&Cn7./#%0*\C|JO@.Ejz-!%`rS֦4@hY(hj\aRo(g:M0 Y,59~t?_ɉ$(JKTJ+JT$KUVNp`5C'xڦL^dSDu^68uU^86x>qNTY75r)EڋEKԟI&"72s1 Qԑۑ ߉%\FJz8rLf'&LLN@yأ%7y;%M%(!hO.L"Q,Ky 4A(3$Dg HҐґDQlRMI(M"6ؓdF"3p#\FE,!&̔J&I"Mh:Rk $jTI$=J`#w#LM19ja"e5La#&H<4𴏅c>0 0c #MIQRd7ࡘy21`UJRaLBN '!Bҋ.J.#59$̟#7&vW$"!<' ] >l6,,i<]ݼOJ2)%?_MBhiMR(08 n<DϾn4&.jr\ S./1>*ZUT揣i30vݜvMJV\ۍ<ޏfb PaS !:Z`ONSS,, L0'`7ZSdKEqN,xS <itC~t~}>b$hZ$V}s2vYb̼ETbdqIH) 4Ukd$؝rx2b"RQx/\XBY;bK8prn#ƧJMxE'fƘ<(FFo0 p n&ǛɫIJe?=8w&#{~TiE*8K'YBe{$*W œ {o!&PqڧF=$D!pxFGx#A"8pC fNeRILŬOMⓛZB`0Nnhْr&0Rhq'NVӞ0HIᛒ094@F{Q䏖Q(&+Qq'#0&%6hoQ$)&Q"͍%n)#~m"JIiURUV-i>oŸ}6ѹJ?'fOL% 2{w}Umծ|I?i2ٔR %e&0tĤN&9ơ骕Zqʍ E!4EOK y`cL.dlQxŖ l}sLBa4nG&a><6JXM,S#M#KIaDC[~?mf[ xr'OdY(HN(os3?Up^WRXXKbhD5dI߆a'TTXgZ>D]4X1q.VT*H6Sh (9 n87zݽ +@@h-mMxAqp~q zLJIP  @T/yXhވD[<8vyKL"lL\Dz/0:(" f%艄(QdgUEHZUUUYJOW}o}9Ed&%'"ȏ%B[VjU2LS΂"*;3"OW0\x4଩OOTG#؉ ?MpvCtNDMLTY't]=7=2 Ğud8t()!%L6A78yHD5a?1ʋhgx)Fmz9VjXfpH< Ţdlʥ!Mnmȍzcdg|.#+TDKZ֪ԖZE~!Qä⋊,odqZsy܎]Քsb2 Ҕ5dzП,J(iOiWۺ.gBFQUCN"i?LejC꛴{0q@TfOnѩMa|I$\d{6RPOgXN=:q , %,IoNpDQGFAdQxۚGOO0N|tO6[^2F*U%`1E m @:a U6x ry 9 b <@`5ıJb$Iq2I("`#N0pObE#XE_1q1 s}tV?8 @ad\&\i|hNWB%*t9"G$#,(J(Qa!"(@Ї8heWXmO?(~o,%X~Mzğ(:=1Z2>DUw#؀ `w.G#yWrNT^LR,9r;{$N{IH%CɅ1JHI=q ׌Q\hʎR*쟔w^h8rļa& @FNݒO L2IߏWL~c(C=\COLxbYC@K$jHn CtG@nw&Y>xK**%KrmXhiIDBtd7o=nnA@gR8?EÓ &,iieLork~QENz9R&F Y+U[=wJ׳7 Ƴ~}@tVD>(Orˎ0I͈DONB$ݕTdm~FQt$$ϒzO'pGZF7IR1$D\h x7a? -{Jɨ|7d)y]#UjMcB#̪)EEIIg4/ŕ(rWތۆބx6,?7Pn.$n  cYf($>D$<> c%B-ocMg+m0Иy[mUOQ(JˑrNp#ohxsttڐ dĞx;1|M)@~]KUZ҆<d -RHnSʮIy?߉ d{,j5dbܺ#ߖ~_:uRv'uu>0|s|pAmͧWiDɥ܎5ezC8ƸrIS^=8P tEnRs8?ӢunsD;!?j qS]A 8@y]'+Yu2A)=s|LW_dOvz0~ti O6Gma (Iڞǜ<9'>)%y.,FS'$1JREϿx>xxJ%"Eĸ\>\ 1%*r;,˓Mucui'1d)4I).Tsg抌ן$>qw CPQVڔQ(0I3I(#jD w3 Q;Ӿu[g DӾʕ7Sĺ2l̂`jM#,Ev`zԟ8'v&ȓƅ p\23FL$d!=Y=MMB- E"D%,_%8O<̉FPв,(ώ;1d#V%4%DRQI=ZBvR+PUʼnz%J#O:Hk #bMM%ETTWjOOL$)%:a.w?Br,P'MG#dջMS06ȌSȿUFQ<)XA=ȱRqLEQ=n""TLN"(i ̡y<*ɰrņag#(~Sl|b?TMiMRO uBg:Tyֹb'ȋhEϫUSf1 hL(b,ZۜސVG#B.$(j0tגl nlY\_\QsNu?JxwRRNVOV%GVd<T/䎨&GMjoa4$$HONꝹJOܖ$Pن'd{~k y3Pٕ6sk}g2xA&7  (SNқ*pĔI'"D$|_ʓ%q)0~^OVOT=DeQX14zθ6QQ0&jKJWLgEȨviTޙ'$aAI04!BCB!03M펭G^̕*Tk!F#7,,\%Y f/EP^  h5*:dYvٸmӜm,I`m6"7h&Kmݦ-4a!b+f+)eo7qMƍkYFxvHE[=h;qXrzH3(df?9?!|n}x'# 9M̍"≦4Z=ki>jrw[倿 ަ,RŔgpQEti=>$e>?~BHޓۓ''&BFHd~{Uq+HӜ&8'D\mVYJYp\SRě 6W%92iDIOJ$Myr(L^{FI@`߄"2Z%IY+)lfO[~DY3Y ǨLxD։y U:Dr~Yx脸 X:a 0G3l`ێ*SY7[F0ßGo[47(!6.\bnXebUUЕ!g,d%hgbaqqcfAؽG QQQG&>a3&3ZO(`:a"L,z?TDC&ZFԌSwb0 K!?,  "хĸG <*$obEGvুyK g٦c5~aY 5D(>K^$ZlCg,O,/$܍ /|)?s=Q_H1|1Y0_l1d$%UJçuWЉщ(KmC}BZvUoee K.\0>0xz? ǘzBDm7$Z?,᜶XiZƎwp"O"L-{USffIɼkeh"RS!R%,4$(45+.UZ5|0bPē2 PfNM<0i (qnHx"Hve (zj&½k'$NtEQL2ϒG8mc߆*QauYI+T*S}CmøX3Zǔ(Z"YB`-qyRE֎ϓMx'4ݗEp}vT&>V2dK(,>_$}gOo10 G$)“.%/jRQ:BZIQb'6*? *1;B\1X1^NEϐyDa #; ݓY(Nw.LJxSy0í,j>x3ɘQ%Һƌ@.J5Br} 4Fǔ خ[.aSv DQ' K%\Ldoc>>.}d{<FЛ=vKO`K$x/"N"rȈTLZ? EI%BYW ^H`(QD^qv<; t5a2Fi9tBN*(G!kk}RSK[ u6?u:Cճ~j9u֛ehO#ݓT B"c;|n" ?,d?0מI  jI>qt /46G w75RD$hI IBL)GHEƞI]Q;qKFy-rQ,q?JOLfĢQ5=ɖNA=A腙bZ#FIr q ts 6sbN8d'ޏ7ړyiP/j^OW@&L# Q➈' Bx 0g'LF&+ZZnՐ/>'%ՠ~$"sÏXOO_=Bz D2ˋDwzNQTM0r.|%%Ktx?7{2&"S"RdUdt>Xz!L>vOQE "?Iʪ?t}s/bZ(\W Odюxr%| <_# DƟ(t.6?47nss##ci<*RG 3ޏbi"5rOOO\Ώm+;ڏLY 7,N(?0.O m˿wxd.2 we1 ,Yae (c*TmB#`A6(@챖pQEXKN*v03uE&]$Pny꣮zy== %zy"TIπN(<Bw0&ߡ4؃uM&L$dd+ ЊXBi$IED+ej$JӶB!z!7ӛVT>%gS)}tR~!Iw?:=)x *$bG'v>rd8Hw2PTg"?ܤÛlp!}1Y$|%&#`J1 E$K HRzs EN%/=#/7dSf*JI[&Tݎtl r9hN\NxOooT=N8[~$AB̄0' o"F}8QAÍ~* U>:&Q>a=ַ1SqX#{zd{3Q°78-ǘJK??{%ܓx~MROlxAƜuɲRb vQ;@C%כX9_|=#''#fmHsl.6΀R7Pe@5|el`?hE{Yq E (0 {n:+u9uqwwwk뻺uNպwrtNw]s.uW]uAT /Ci5Q<"R>9Dg̓ 0(,ys2iUÊb}3GOpR}sIGjḫk=~2|)H-jKv[ÙTff-=IA(|˻ x`H 0vXLBcȵTY cGR(PE{6ʥ8Q?H4w&&cgxXZi]ɦV/<=;%JYf@ h6i(VO}#UJ֢XtAdL›Y3ّZVAdV2xKf[td YeLPBJd, ?@ȉ S+ݟRGw_%ן!D7>% Gϒsx∞x.4_}\Rav?|~@<@8q,Y%`\Kpqv{4DÓQ/v]3oц~Ge2Z1.7H<"#=N|^4A8ia{d3d%UDKD|V&RPX NQ,fYJIUj[I !|B!a&_!\Za_QipSy*6^SU®(::2XkR,|&}t>-i]q>3kHKX-ajK=gTknZ oC&jYFZ%Mu)J`RL%QnLj'1rv&秙8TUJ^ @a9354dte=&zIr^ѕQ=*yzjIlӑ%#焥F'uUU\9t7QF1QOG xRI׆/Tߒsy޺RmӭD"Y@|~Ebcad/H&kbKD5䦡;UUUUUWMdR|{oª*J,UkTkWʋ%ȹ`tOP{<:tI.&%w h\8:EK( 'fD*G%>xUEϝ*q(UJ LyRw,rg'5e(g̡ qybL"`7V cbk}iTH eJ*ܟ *]J*X (`姛xD"#uߑ~g'FM ,'iה,B5!*cѯ}{ZkVG9N?J9<]xAKP4ıEO,uEc% *˓w9.%J, .,X]*S|k)zU*ᾓ;1LF~Jyf :.\M(?آ"%B/ /-G`ONdv0t0b.(Ҡ 9pdYJRCQ(X>#$}W'z,N?T\yQi' RHbTI FYɘ( T)!pQJ\X=S(0.aHO$9'Qѓ#GAGibdı1X3&P'zA$jCQV}DݐmBna{# q.&)Q(4g%P0>cuod {I>,l3!!qDJ<,z֞Aδ(i`cjI0yBUaXBv"P%p%>^↔ ,,:x%!"F᝾OX%}9,<ٹiF#~ɹφ E§oHDkN1Jm<=o$DIh'R0[2}Do佨z&bL. (2 #z4en$-nK%wT5uR9 I"=!'&L>xCMP&ODocKoDnEkQOշW|ͼ7?VV5~N]5iljs2P' yC2Z g  վa7AxoBX^^p d1%~t;1)ĕD,P}ss'zQD˅BSX%^((ݽŊ*,5$!Y܈&A/lX^,Iyj1xxý=єd2E*S׸"`I\Z j z =y< ̳JO7IĕL(^`=- Z4>F*r6%ɟ%m9`$e02VKUP%B !@1) +e1Y1r^g>Dǽ!a`23` BBa00,X`/G9TT_&nFz@Dٌ$1#]$H%a7̘$.Uۑ`%„bШO4TX2?_tzR6Ea=fzClBvvssIJcIϓX .OiNu9p.X/AgsMwIr{Uc vzs8RM&>{̥U)U^I3Iuɡ@ M~5ɫPՓ\ը0ޫeTy.</,D o~;p3>@}?"4;=ϔ98ͻ#gu}$S'rN:]-g; PB.[D$uURnrd!$շ$H먞;iUU.ݸێ9QT#.$tQRm1;*DQR1 F7uRENNJwsi9N$"NNx߁ EP%MӾɨMRuJ%gN9,X']q yDyh_tW`#ʓ^\QBXdsɧ7ScHی |l2e5 QCQ Dk"тf&Ac䍷+z>7bS~ԉ2j) K&6R ,{jϑ Iq1 "RoT%O L5'@OY|Fp ƌ:s6bi-(OH~@vc(j))PTESZjիVI /;do _GN\Sb~-MԟHNN01.r)Ik6ghOPPއBIn2XQc%A/O=79q'N"6MȖKI2sN<"ul`*$hR@PPXQior|ͻkG7""" 19 /d>Μ `IR~{f.13LF!Drx>'8''#& NIRJN42b%ϸI“r^N k>|pJؐvK) L$ k=s_ sJ3\6)R6O~!1%(O&4)hI" hdICTD<%sHx1NWvURcU:ӶrAF%#;aX|b\X PXb//1֪#'NN蚲e*&JSH]=qd> ac#ݮ_.P%DG(L%@"ԛ؄(O( 2xA2iq,2\qqaqsp|1%KɾL|EQ*y\w{u@8 Rp#J/9j ?֗K3G:[[M-r)w {l?<,y lJ ssuR&;Bb1@ف&Q9G׼)s O>7׭pC@~wRKn hM)Nn=?QrqS;@g&̘I%UUr{ei1J7$ˬUjܬ`.FH1E ɯ09A8'hb0;͐ɹ'a) "`э_A{u>ŌRdI%S' gQF݉I Xb`8J,D`N^u Q5 s^NI:y }Mg#v({{Fq{UUXOjuIx2T۷w#{?UHJU)ITTY*RM%e*?1Q֦5kQ4b*iɢ%N4OqG(yXXGQE;AdO{|G"c"(ɉ5䖝LRP&hBTX."kq.4,W"t'tB(Nx{PCY,Q p ;e|5X"=aA#lS߫9.kW(xc|ZUTKUjZ5s}ߖu'esx&^yU;Z[BvFq?16Hԟ]&g3i?6DG~$(꓾;5;%3)LgR${Pъ;2I(?8Cc)䉣'omd[~X[mTG'DNMMMa75D?&9bj`F|7# BzA .?,:h(hxx